Skip to content

Commit 35c6999

Browse files
williambdeanricardoV94
authored andcommitted
copy from aesara
1 parent e6098d5 commit 35c6999

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

pytensor/d3viz/html/template.html

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<link rel="stylesheet" href="%% CSS_DIR %%/d3viz.css"/>
5+
<link rel="stylesheet" href="%% CSS_DIR %%/d3-context-menu.css"/>
6+
<script type="text/javascript" src="%% JS_DIR %%/d3viz.js"></script>
7+
<script type="text/javascript" src="%% JS_DIR %%/d3.v3.min.js"></script>
8+
<script type="text/javascript" src="%% JS_DIR %%/dagre-d3.min.js"></script>
9+
<script type="text/javascript" src="%% JS_DIR %%/graphlib-dot.min.js"></script>
10+
<script type="text/javascript" src="%% JS_DIR %%/d3-context-menu.js"></script>
11+
</head>
12+
<body>
13+
<div id='menu' class='menuBar'>
14+
<input name="resetNodes"
15+
type="button"
16+
value="Reset nodes"
17+
onclick="resetNodes()"/>
18+
<input name="releaseNodes"
19+
type="button"
20+
value="Release nodes"
21+
onclick="releaseNodes()"/>
22+
</div>
23+
24+
<script type="text/javascript">
25+
// Backend graph in DOT format
26+
var dotGraph = graphlibDot.read(%% DOT_GRAPH %%);
27+
// Frontend graph for visualization
28+
var graph = {};
29+
30+
var forceLayout;
31+
var isProfiled = false; // true if profiling information available
32+
var useProfileColors = false;
33+
var fixOnInit = true; // fix nodes on initialization
34+
var maxProfilePer = 0;
35+
var profileColors = ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15"];
36+
var pad = 10;
37+
var isEditNode = false; // true if node is edited
38+
var menuItems = [
39+
{
40+
title: 'Edit',
41+
action: function(elm, d, i) { editNode(elm, d); }
42+
},
43+
{
44+
title: 'Release',
45+
action: function(elm, d, i) { releaseNode(d); }
46+
}
47+
];
48+
49+
// Create main panel
50+
d3.select('body').select('svg').remove();
51+
var svg = d3.select('body').append('svg')
52+
.attr('width', '100%')
53+
.attr('height', '95%');
54+
var pane = svg.append('g');
55+
56+
// Zoom behaviour
57+
var zoom = d3.behavior.zoom()
58+
.scaleExtent([0.2, 8])
59+
.on('zoom', function(d) {
60+
var trans = d3.event.translate;
61+
trans[0] += 300;
62+
trans[1] += 100;
63+
pane.attr('transform', 'translate(' + trans + ') scale(' + d3.event.scale + ')');
64+
});
65+
svg.call(zoom);
66+
zoom.event(svg);
67+
svg.on("dblclick.zoom", null);
68+
69+
// Edges
70+
var edgeDiv = d3.select('body').append('div')
71+
.attr('class', 'edgeTooltip')
72+
.style('opacity', 0.0);
73+
74+
// Div for node details
75+
var nodeInfo = d3.select('body').append('div')
76+
.attr('class', 'nodeInfo')
77+
.style('opacity', 0.0);
78+
79+
// Definition head of edges
80+
var markerData = [
81+
{'id': 'n', 'color': 'black'},
82+
{'id': 'r', 'color': 'red'},
83+
{'id': 'b', 'color': 'dodgerblue'}];
84+
svg.append("defs").selectAll('marker').data(markerData).enter().append("marker")
85+
.attr("id", function(d) { return 'edgeArrow_' + d.id;})
86+
.attr("markerWidth", 4)
87+
.attr("markerHeight", 4)
88+
.attr("refX", 2)
89+
.attr("refY", 2)
90+
.attr("orient", "auto")
91+
.append("path")
92+
.attr("d", "M0,0 L4,2 L0,4 Z")
93+
.attr('fill', function(d) { return d.color;});
94+
95+
// Initialize graph
96+
processDotGraph(dotGraph);
97+
graph = frontEndGraph(dotGraph);
98+
drawGraph();
99+
</script>
100+
</body>
101+
</html>

0 commit comments

Comments
 (0)