Skip to content

Commit ea91714

Browse files
temp
1 parent 9e76edb commit ea91714

2 files changed

Lines changed: 25 additions & 15 deletions

File tree

lmfdb/static/graphs/graph.js

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ Graph = class {
8282
node.label = value[0];
8383
node.ccsize = value[3];
8484
node.level = order_lookup.get(value[4]); // a pair
85-
node.image = new Image();
86-
node.image.src = value[5];
8785
node.key = key;
8886

8987
node.posn = posnx;
@@ -239,26 +237,37 @@ class Renderer {
239237
}
240238

241239
draw() {
242-
this.ctx.clearRect(0,0, this.element.width, this.element.height);
243-
for (var i = 0; i < this.graph.nodes.length; i++) {
244-
this.drawNode(this.graph.nodes[i]);
245-
}
240+
this.clear();
246241
for (var i = 0; i < this.graph.edges.length; i++) {
247242
this.drawEdge(this.graph.edges[i]);
248243
}
244+
for (var i = 0; i < this.graph.nodes.length; i++) {
245+
this.drawNode(this.graph.nodes[i]);
246+
}
249247
}
250248

251249
drawNode(node) {
252250
var point = this.translate([node.layoutPosX, node.layoutPosY]);
253251

254-
node.style.position = 'absolute';
255-
node.style.top = point[1] + 'px';
256-
node.style.left = point[0] + 'px';
257-
258-
this.ctx.moveTo(0,0);
259-
this.ctx.strokeStyle = 'black';
260-
this.ctx.fillStyle = 'black';
261-
this.ctx.font = "10px Arial";
252+
// Use KaTeX to render the label to an SVG
253+
var katex_div = document.createElement('div');
254+
try {
255+
katex.render(node.label, katex_div, {
256+
throwOnError: false,
257+
output: "svg"
258+
});
259+
} catch (e) {
260+
console.error(e);
261+
katex_div.textContent = node.label;
262+
}
263+
var svg = katex_div.querySelector('svg');
264+
svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
265+
var svg_source = svg.outerHTML;
266+
267+
// Create a data URL from the SVG
268+
node.image = new Image();
269+
node.image.src = 'data:image/svg+xml;base64,' + window.btoa(svg_source);
270+
262271
var ctxt = this.ctx;
263272
var img = node.image;
264273

@@ -657,7 +666,7 @@ class EventHandler {
657666
renderer.element.dispatchEvent(mouseEvent);
658667
};
659668
var handlertouchend = function(event) {
660-
var touch = event.touches[0];
669+
var touch = event.changedTouches[0];
661670
var mouseEvent = new MouseEvent("mouseup", {
662671
clientX: touch.clientX,
663672
clientY: touch.clientY

lmfdb/static/groups.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ function make_sdiagram(canv, ambient, gdatalist, orderdata, num_layers) {
110110
});
111111
newheight(renderer, num_layers);
112112
renderer.setSize();
113+
renderer.draw();
113114
// The renderer is stored in sdiagram by the web page
114115
return [renderer,glist];
115116
}

0 commit comments

Comments
 (0)