@webviz/group-tree-plot 1.3.24 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/GroupTreePlot.d.ts +6 -1
  2. package/dist/GroupTreePlot.js +43 -43
  3. package/dist/GroupTreePlot.js.map +1 -1
  4. package/dist/components/PlotErrorOverlay.d.ts +5 -0
  5. package/dist/components/PlotErrorOverlay.js +7 -0
  6. package/dist/components/PlotErrorOverlay.js.map +1 -0
  7. package/dist/components/TreePlotRenderer/TreePlotRenderer.d.ts +11 -0
  8. package/dist/components/TreePlotRenderer/TreePlotRenderer.js +85 -0
  9. package/dist/components/TreePlotRenderer/TreePlotRenderer.js.map +1 -0
  10. package/dist/components/TreePlotRenderer/index.d.ts +1 -0
  11. package/dist/components/TreePlotRenderer/index.js +2 -0
  12. package/dist/components/TreePlotRenderer/index.js.map +1 -0
  13. package/dist/components/TreePlotRenderer/privateComponents/HiddenChildren.d.ts +6 -0
  14. package/dist/components/TreePlotRenderer/privateComponents/HiddenChildren.js +13 -0
  15. package/dist/components/TreePlotRenderer/privateComponents/HiddenChildren.js.map +1 -0
  16. package/dist/components/TreePlotRenderer/privateComponents/TransitionTreeEdge.d.ts +10 -0
  17. package/dist/components/TreePlotRenderer/privateComponents/TransitionTreeEdge.js +30 -0
  18. package/dist/components/TreePlotRenderer/privateComponents/TransitionTreeEdge.js.map +1 -0
  19. package/dist/components/TreePlotRenderer/privateComponents/TransitionTreeNode.d.ts +11 -0
  20. package/dist/components/TreePlotRenderer/privateComponents/TransitionTreeNode.js +37 -0
  21. package/dist/components/TreePlotRenderer/privateComponents/TransitionTreeNode.js.map +1 -0
  22. package/dist/hooks/useCollapseMotionProps.d.ts +15 -0
  23. package/dist/hooks/useCollapseMotionProps.js +46 -0
  24. package/dist/hooks/useCollapseMotionProps.js.map +1 -0
  25. package/dist/types.d.ts +3 -0
  26. package/dist/types.js.map +1 -1
  27. package/dist/utils/DataAssembler.d.ts +74 -0
  28. package/dist/utils/DataAssembler.js +179 -0
  29. package/dist/utils/DataAssembler.js.map +1 -0
  30. package/dist/utils/treePlot.d.ts +36 -0
  31. package/dist/utils/treePlot.js +85 -0
  32. package/dist/utils/treePlot.js.map +1 -0
  33. package/package.json +3 -2
  34. package/dist/GroupTreeAssembler/groupTreeAssembler.d.ts +0 -64
  35. package/dist/GroupTreeAssembler/groupTreeAssembler.js +0 -579
  36. package/dist/GroupTreeAssembler/groupTreeAssembler.js.map +0 -1
  37. /package/dist/{GroupTreeAssembler/group_tree.css → group_tree.css} +0 -0
@@ -1,579 +0,0 @@
1
- /** This code is copied directly from
2
- * https://github.com/anders-kiaer/webviz-subsurface-components/blob/dynamic_tree/src/lib/components/DynamicTree/group_tree.js
3
- * This needs to be refactored to develop further
4
- *
5
- * 9 july 2021: refactored to use new format.
6
- */
7
- import * as d3 from "d3";
8
- import "./group_tree.css";
9
- import { cloneDeep } from "lodash";
10
- /* eslint camelcase: "off" */
11
- /* eslint array-callback-return: "off" */
12
- /* eslint no-return-assign: "off" */
13
- /* eslint no-use-before-define: "off" */
14
- /* eslint no-useless-concat: "off" */
15
- /* Fix this lint when rewriting the whole file */
16
- /**
17
- * Class to assemble Group tree visualization. Creates an _svg, and appends to the
18
- * assigned HTML element. Draws the tree provided in datedTrees with the current flow rate,
19
- * node info and date time.
20
- *
21
- * Provides methods to update selected date time, and change flow rate and node info.
22
- */
23
- export default class GroupTreeAssembler {
24
- /**
25
- *
26
- * @param dom_element_id - id of the HTML element to append the _svg to
27
- * @param datedTrees - List of dated tree data structure containing the trees to visualize
28
- * @param initialFlowRate - key identifying the initial selected flow rate for the tree edges
29
- * @param initialNodeInfo - key identifying the initial selected node info for the tree nodes
30
- * @param currentDateTime - the initial/current date time
31
- * @param edgeMetadataList - List of metadata for the edge keys in the tree data structure
32
- * @param nodeMetadataList - List of metadata for the node keys in the tree data structure
33
- */
34
- constructor(dom_element_id, datedTrees, initialFlowRate, initialNodeInfo, currentDateTime, edgeMetadataList, nodeMetadataList) {
35
- // Cloned as it is mutated within class
36
- let clonedDatedTrees = cloneDeep(datedTrees);
37
- // Add "#" if missing.
38
- if (dom_element_id.charAt(0) !== "#") {
39
- dom_element_id = "#" + dom_element_id;
40
- }
41
- // Map from property to [label/name, unit]
42
- const metadataList = [...edgeMetadataList, ...nodeMetadataList];
43
- this._propertyToLabelMap = new Map();
44
- metadataList.forEach((elm) => {
45
- var _a, _b;
46
- this._propertyToLabelMap.set(elm.key, [
47
- (_a = elm.label) !== null && _a !== void 0 ? _a : "",
48
- (_b = elm.unit) !== null && _b !== void 0 ? _b : "",
49
- ]);
50
- });
51
- // Represent possible empty data by single empty node.
52
- if (clonedDatedTrees.length === 0) {
53
- currentDateTime = "";
54
- clonedDatedTrees = [
55
- {
56
- dates: [currentDateTime],
57
- tree: {
58
- node_label: "NO DATA",
59
- edge_label: "NO DATA",
60
- node_data: {},
61
- edge_data: {},
62
- },
63
- },
64
- ];
65
- }
66
- this._currentFlowRate = initialFlowRate;
67
- this._currentNodeInfo = initialNodeInfo;
68
- this._currentDateTime = currentDateTime;
69
- this._transitionTime = 200;
70
- const tree_values = {};
71
- clonedDatedTrees.map((datedTree) => {
72
- let tree = datedTree.tree;
73
- d3.hierarchy(tree, (d) => d.children).each((node) => {
74
- // edge_data
75
- Object.keys(node.data.edge_data).forEach((key) => {
76
- if (!tree_values[key]) {
77
- tree_values[key] = [];
78
- }
79
- tree_values[key].push(node.data.edge_data[key]);
80
- });
81
- });
82
- });
83
- this._path_scale = new Map();
84
- Object.keys(tree_values).forEach((key) => {
85
- const extent = [0, d3.max(tree_values[key].flat())];
86
- this._path_scale[key] = d3
87
- .scaleLinear()
88
- .domain(extent)
89
- .range([2, 100]);
90
- });
91
- const margin = {
92
- top: 10,
93
- right: 90,
94
- bottom: 30,
95
- left: 90,
96
- };
97
- const select = d3.select(dom_element_id);
98
- // Svg bounding client rect
99
- this._rectWidth = select.node().getBoundingClientRect().width;
100
- this._rectHeight = 700;
101
- this._rectLeftMargin = -margin.left;
102
- this._rectTopMargin = -margin.top;
103
- const treeHeight = this._rectHeight - margin.top - margin.bottom;
104
- this._treeWidth = this._rectWidth - margin.left - margin.right;
105
- // Clear possible existing svg's.
106
- d3.select(dom_element_id).selectAll("svg").remove();
107
- this._svg = d3
108
- .select(dom_element_id)
109
- .append("svg")
110
- .attr("width", this._treeWidth + margin.right + margin.left)
111
- .attr("height", treeHeight + margin.top + margin.bottom)
112
- .append("g")
113
- .attr("transform", `translate(${margin.left},${margin.top})`);
114
- this._textpaths = this._svg.append("g");
115
- this._renderTree = d3.tree().size([treeHeight, this._treeWidth]);
116
- this._data = GroupTreeAssembler.initHierarchies(clonedDatedTrees, treeHeight);
117
- this._currentTree = {};
118
- this.update(currentDateTime);
119
- }
120
- /**
121
- * Initialize all trees in the group tree datastructure, once for the entire visualization.
122
- *
123
- */
124
- static initHierarchies(tree_data, height) {
125
- // generate the node-id used to match in the enter, update and exit selections
126
- const getId = (d) => d.parent === null
127
- ? d.data.node_label
128
- : `${d.parent.id}_${d.data.node_label}`;
129
- tree_data.map((datedTree) => {
130
- let tree = datedTree.tree;
131
- tree = d3.hierarchy(tree, (dd) => dd.children);
132
- tree.descendants().map((n) => (n.id = getId(n)));
133
- tree.x0 = height / 2;
134
- tree.y0 = 0;
135
- datedTree.tree = tree;
136
- });
137
- return tree_data;
138
- }
139
- /**
140
- * @returns {*} -The initialized hierarchical group tree data structure
141
- */
142
- get data() {
143
- return this._data;
144
- }
145
- /**
146
- * Set the flowrate and update display of all edges accordingly.
147
- *
148
- * @param flowrate - key identifying the flowrate of the incoming edge
149
- */
150
- set flowrate(flowrate) {
151
- this._currentFlowRate = flowrate;
152
- const current_tree_index = this._data.findIndex((e) => {
153
- return e.dates.includes(this._currentDateTime);
154
- });
155
- if (current_tree_index === -1) {
156
- this._svg.selectAll("path.link").remove();
157
- return;
158
- }
159
- const date_index = this._data[current_tree_index].dates.indexOf(this._currentDateTime);
160
- if (date_index === -1) {
161
- this._svg.selectAll("path.link").remove();
162
- return;
163
- }
164
- this._svg
165
- .selectAll("path.link")
166
- .transition()
167
- .duration(this._transitionTime)
168
- .attr("class", () => `link grouptree_link grouptree_link__${flowrate}`)
169
- .style("stroke-width", (d) => {
170
- var _a, _b;
171
- return this.getEdgeStrokeWidth(flowrate, (_b = (_a = d.data.edge_data[flowrate]) === null || _a === void 0 ? void 0 : _a[date_index]) !== null && _b !== void 0 ? _b : 0);
172
- })
173
- .style("stroke-dasharray", (d) => {
174
- var _a, _b;
175
- return ((_b = (_a = d.data.edge_data[flowrate]) === null || _a === void 0 ? void 0 : _a[date_index]) !== null && _b !== void 0 ? _b : 0) > 0
176
- ? "none"
177
- : "5,5";
178
- });
179
- }
180
- get flowrate() {
181
- return this._currentFlowRate;
182
- }
183
- set nodeinfo(nodeinfo) {
184
- this._currentNodeInfo = nodeinfo;
185
- const current_tree_index = this._data.findIndex((e) => {
186
- return e.dates.includes(this._currentDateTime);
187
- });
188
- if (current_tree_index === -1) {
189
- this._svg.selectAll("path.link").remove();
190
- return;
191
- }
192
- const date_index = this._data[current_tree_index].dates.indexOf(this._currentDateTime);
193
- if (date_index === -1) {
194
- this._svg.selectAll("path.link").remove();
195
- return;
196
- }
197
- this._svg
198
- .selectAll(".grouptree__pressurelabel")
199
- .text((d) => {
200
- var _a, _b, _c, _d;
201
- return (_d = (_c = (_b = (_a = d.data.node_data) === null || _a === void 0 ? void 0 : _a[nodeinfo]) === null || _b === void 0 ? void 0 : _b[date_index]) === null || _c === void 0 ? void 0 : _c.toFixed(0)) !== null && _d !== void 0 ? _d : "NA";
202
- });
203
- this._svg.selectAll(".grouptree__pressureunit").text(() => {
204
- var _a;
205
- const t = (_a = this._propertyToLabelMap.get(nodeinfo)) !== null && _a !== void 0 ? _a : ["", ""];
206
- return t[1];
207
- });
208
- }
209
- get nodeinfo() {
210
- return this._currentNodeInfo;
211
- }
212
- getEdgeStrokeWidth(key, val) {
213
- const normalized = this._path_scale[key] !== undefined
214
- ? this._path_scale[key](val !== null && val !== void 0 ? val : 0)
215
- : 2;
216
- return `${normalized}px`;
217
- }
218
- /**
219
- * Sets the state of the current tree, and updates the tree visualization accordingly.
220
- * The state is changed either due to a branch open/close, or that the tree is entirely changed
221
- * when moving back and fourth in time.
222
- *
223
- * @param root
224
- */
225
- update(newDateTime) {
226
- var _a;
227
- const self = this;
228
- const new_tree_index = self._data.findIndex((e) => {
229
- return e.dates.includes(newDateTime);
230
- });
231
- const root = self._data[new_tree_index];
232
- const date_index = (_a = root === null || root === void 0 ? void 0 : root.dates.indexOf(newDateTime)) !== null && _a !== void 0 ? _a : -1;
233
- // Invalid date gives invalid indices
234
- const hasInvalidDate = !root || date_index === -1 || new_tree_index === -1;
235
- if (hasInvalidDate) {
236
- self._currentDateTime = newDateTime;
237
- }
238
- /**
239
- * Assigns y coordinates to all tree nodes in the rendered tree.
240
- * @param t - a rendered tree
241
- * @param {int} width - the
242
- * @returns a rendered tree width coordinates for all nodes.
243
- */
244
- function growNewTree(t, width) {
245
- t.descendants().forEach((d) => {
246
- d.y = (d.depth * width) / (t.height + 1);
247
- });
248
- return t;
249
- }
250
- function doPostUpdateOperations(tree) {
251
- setEndPositions(tree.descendants());
252
- setNodeVisibility(tree.descendants(), true);
253
- return tree;
254
- }
255
- function findClosestVisibleParent(d) {
256
- let c = d;
257
- while (c.parent && !c.isvisible) {
258
- c = c.parent;
259
- }
260
- return c;
261
- }
262
- function getClosestVisibleParentStartCoordinates(d) {
263
- var _a, _b;
264
- const p = findClosestVisibleParent(d);
265
- return { x: (_a = p.x0) !== null && _a !== void 0 ? _a : 0, y: (_b = p.y0) !== null && _b !== void 0 ? _b : 0 };
266
- }
267
- function getClosestVisibleParentEndCoordinates(d) {
268
- const p = findClosestVisibleParent(d);
269
- return { x: p.x, y: p.y };
270
- }
271
- /**
272
- * Implicitly alter the state of a node, by hiding its children
273
- * @param node
274
- */
275
- function toggleBranch(node) {
276
- if (node.children) {
277
- node._children = node.children;
278
- node.children = null;
279
- }
280
- else {
281
- node.children = node._children;
282
- node._children = null;
283
- }
284
- self.update(self._currentDateTime);
285
- }
286
- /**
287
- * Toggles visibility of a node. This state determines if the node, and its children
288
- * @param nodes
289
- * @param visibility
290
- */
291
- function setNodeVisibility(nodes, visibility) {
292
- nodes.forEach((d) => {
293
- d.isvisible = visibility;
294
- });
295
- }
296
- /**
297
- * After node translation transition, save end position
298
- * @param nodes
299
- */
300
- function setEndPositions(nodes) {
301
- nodes.forEach((d) => {
302
- d.x0 = d.x;
303
- d.y0 = d.y;
304
- });
305
- }
306
- function getToolTipText(data, date_index) {
307
- if (data === undefined || date_index === undefined) {
308
- return "";
309
- }
310
- const propNames = Object.keys(data);
311
- let text = "";
312
- propNames.forEach(function (s) {
313
- var _a, _b, _c, _d;
314
- const t = (_a = self._propertyToLabelMap.get(s)) !== null && _a !== void 0 ? _a : [s, ""];
315
- const pre = t[0];
316
- const unit = t[1];
317
- text +=
318
- pre +
319
- " " +
320
- ((_d = (_c = (_b = data[s]) === null || _b === void 0 ? void 0 : _b[date_index]) === null || _c === void 0 ? void 0 : _c.toFixed(0)) !== null && _d !== void 0 ? _d : "") +
321
- " " +
322
- unit +
323
- "\n";
324
- });
325
- return text;
326
- }
327
- /**
328
- * Clone old node start position to new node start position.
329
- * Clone new node end position to old node end position.
330
- * Clone old visibility to new.
331
- *
332
- * @param newRoot
333
- * @param oldRoot
334
- */
335
- function cloneExistingNodeStates(newRoot, oldRoot) {
336
- if (Object.keys(oldRoot).length > 0) {
337
- oldRoot.descendants().forEach((oldNode) => {
338
- newRoot.descendants().forEach((newNode) => {
339
- if (oldNode.id === newNode.id) {
340
- newNode.x0 = oldNode.x0;
341
- newNode.y0 = oldNode.y0;
342
- oldNode.x = newNode.x;
343
- oldNode.y = newNode.y;
344
- newNode.isvisible = oldNode.isvisible;
345
- }
346
- });
347
- });
348
- }
349
- return newRoot;
350
- }
351
- /**
352
- * Merge the existing tree, with nodes from a new tree.
353
- * New nodes fold out from the closest visible parent.
354
- * Old nodes are removed.
355
- *
356
- * @param nodes - list of nodes in a tree
357
- */
358
- function updateNodes(nodes, nodeinfo) {
359
- const node = self._svg.selectAll("g.node").data(nodes, (d) => d.id);
360
- const nodeEnter = node
361
- .enter()
362
- .append("g")
363
- .attr("class", "node")
364
- .attr("id", (d) => d.id)
365
- .attr("transform", (d) => {
366
- const c = getClosestVisibleParentStartCoordinates(d);
367
- return `translate(${c.y},${c.x})`;
368
- })
369
- .on("click", toggleBranch);
370
- nodeEnter
371
- .append("circle")
372
- .attr("id", (d) => d.id)
373
- .attr("r", 6)
374
- .transition()
375
- .duration(self._transitionTime)
376
- .attr("x", (d) => d.x)
377
- .attr("y", (d) => d.y);
378
- nodeEnter
379
- .append("text")
380
- .attr("class", "grouptree__nodelabel")
381
- .attr("dy", ".35em")
382
- .style("fill-opacity", 1)
383
- .attr("x", (d) => (d.children || d._children ? -21 : 21))
384
- .attr("text-anchor", (d) => d.children || d._children ? "end" : "start")
385
- .text((d) => d.data.node_label);
386
- nodeEnter
387
- .append("text")
388
- .attr("class", "grouptree__pressurelabel")
389
- .attr("x", 0)
390
- .attr("dy", "-.05em")
391
- .attr("text-anchor", "middle")
392
- .text((d) => {
393
- var _a, _b, _c;
394
- return (_c = (_b = (_a = d.data.node_data[nodeinfo]) === null || _a === void 0 ? void 0 : _a[date_index]) === null || _b === void 0 ? void 0 : _b.toFixed(0)) !== null && _c !== void 0 ? _c : "NA";
395
- });
396
- nodeEnter
397
- .append("text")
398
- .attr("class", "grouptree__pressureunit")
399
- .attr("x", 0)
400
- .attr("dy", ".04em")
401
- .attr("dominant-baseline", "text-before-edge")
402
- .attr("text-anchor", "middle")
403
- .text(() => {
404
- var _a;
405
- const t = (_a = self._propertyToLabelMap.get(nodeinfo)) !== null && _a !== void 0 ? _a : [
406
- "",
407
- "",
408
- ];
409
- return t[1];
410
- });
411
- nodeEnter
412
- .append("title")
413
- .text((d) => getToolTipText(d.data.node_data, date_index));
414
- const nodeUpdate = nodeEnter.merge(node);
415
- // Nodes from earlier exit selection may reenter if transition is interupted. Restore state.
416
- nodeUpdate
417
- .filter(".exiting")
418
- .interrupt()
419
- .classed("exiting", false)
420
- .attr("opacity", 1);
421
- nodeUpdate
422
- .select("text.grouptree__pressurelabel")
423
- .text((d) => {
424
- var _a, _b, _c;
425
- return (_c = (_b = (_a = d.data.node_data[nodeinfo]) === null || _a === void 0 ? void 0 : _a[date_index]) === null || _b === void 0 ? void 0 : _b.toFixed(0)) !== null && _c !== void 0 ? _c : "NA";
426
- });
427
- nodeUpdate
428
- .transition()
429
- .duration(self._transitionTime)
430
- .attr("transform", (d) => `translate(${d.y},${d.x})`);
431
- nodeUpdate
432
- .select("circle")
433
- .attr("class", (d) => `${"grouptree__node" + " "}${d.children || d._children
434
- ? "grouptree__node--withchildren"
435
- : "grouptree__node"}`)
436
- .transition()
437
- .duration(self._transitionTime)
438
- .attr("r", 15);
439
- nodeUpdate
440
- .select("title")
441
- .text((d) => getToolTipText(d.data.node_data, date_index));
442
- node.exit()
443
- .classed("exiting", true)
444
- .attr("opacity", 1)
445
- .transition()
446
- .duration(self._transitionTime)
447
- .attr("opacity", 1e-6)
448
- .attr("transform", (d) => {
449
- d.isvisible = false;
450
- const c = getClosestVisibleParentEndCoordinates(d);
451
- return `translate(${c.y},${c.x})`;
452
- })
453
- .remove();
454
- }
455
- /**
456
- * Draw new edges, and update existing ones.
457
- *
458
- * @param edges -list of edges in a tree
459
- * @param flowrate - key identifying the flowrate of the incoming edge
460
- */
461
- function updateEdges(edges, flowrate) {
462
- const link = self._svg
463
- .selectAll("path.link")
464
- .data(edges, (d) => d.id);
465
- const linkEnter = link
466
- .enter()
467
- .insert("path", "g")
468
- .attr("id", (d) => `path ${d.id}`)
469
- .attr("d", (d) => {
470
- const c = getClosestVisibleParentStartCoordinates(d);
471
- return diagonal(c, c);
472
- });
473
- linkEnter
474
- .append("title")
475
- .text((d) => getToolTipText(d.data.edge_data, date_index));
476
- const linkUpdate = linkEnter.merge(link);
477
- linkUpdate
478
- .attr("class", () => `link grouptree_link grouptree_link__${flowrate}`)
479
- .transition()
480
- .duration(self._transitionTime)
481
- .attr("d", (d) => diagonal(d, d.parent))
482
- .style("stroke-width", (d) => {
483
- var _a, _b;
484
- return self.getEdgeStrokeWidth(flowrate, (_b = (_a = d.data.edge_data[flowrate]) === null || _a === void 0 ? void 0 : _a[date_index]) !== null && _b !== void 0 ? _b : 0);
485
- })
486
- .style("stroke-dasharray", (d) => {
487
- var _a, _b;
488
- return ((_b = (_a = d.data.edge_data[flowrate]) === null || _a === void 0 ? void 0 : _a[date_index]) !== null && _b !== void 0 ? _b : 0) > 0
489
- ? "none"
490
- : "5,5";
491
- });
492
- linkUpdate
493
- .select("title")
494
- .text((d) => getToolTipText(d.data.edge_data, date_index));
495
- link.exit()
496
- .transition()
497
- .duration(self._transitionTime)
498
- .attr("d", (d) => {
499
- d.isvisible = false;
500
- const c = getClosestVisibleParentEndCoordinates(d);
501
- return diagonal(c, c);
502
- })
503
- .remove();
504
- /**
505
- * Create the curve definition for the edge between node s and node d.
506
- * @param s - source node
507
- * @param d - destination node
508
- */
509
- function diagonal(s, d) {
510
- return `M ${d.y} ${d.x}
511
- C ${(d.y + s.y) / 2} ${d.x},
512
- ${(d.y + s.y) / 2} ${s.x},
513
- ${s.y} ${s.x}`;
514
- }
515
- }
516
- /**
517
- * Add new and update existing texts/textpaths on edges.
518
- *
519
- * @param edges - list of edges in a tree
520
- */
521
- function updateEdgeTexts(edges) {
522
- const textpath = self._textpaths
523
- .selectAll(".edge_info_text")
524
- .data(edges, (d) => d.id);
525
- const enter = textpath
526
- .enter()
527
- .insert("text")
528
- .attr("dominant-baseline", "central")
529
- .attr("text-anchor", "middle")
530
- .append("textPath")
531
- .attr("class", "edge_info_text")
532
- .attr("startOffset", "50%")
533
- .attr("xlink:href", (d) => `#path ${d.id}`);
534
- enter
535
- .merge(textpath)
536
- .attr("fill-opacity", 1e-6)
537
- .transition()
538
- .duration(self._transitionTime)
539
- .attr("fill-opacity", 1)
540
- .text((d) => d.data.edge_label);
541
- textpath.exit().remove();
542
- }
543
- // Clear any existing error overlay
544
- this._svg
545
- .selectAll(".error-overlay-background, .error-overlay")
546
- .remove();
547
- if (hasInvalidDate) {
548
- // // Add opacity to overlay background
549
- this._svg
550
- .append("rect")
551
- .attr("class", "error-overlay-background")
552
- .attr("width", this._rectWidth)
553
- .attr("height", this._rectHeight)
554
- .attr("x", this._rectLeftMargin)
555
- .attr("y", this._rectTopMargin)
556
- .attr("fill", "rgba(255, 255, 255, 0.8)");
557
- // Show overlay text with error message
558
- this._svg
559
- .append("text")
560
- .attr("class", "error-overlay")
561
- .attr("x", this._rectWidth / 2 + 2 * this._rectLeftMargin)
562
- .attr("y", this._rectHeight / 2 + 2 * this._rectTopMargin)
563
- .style("fill", "red")
564
- .style("font-size", "16px")
565
- .text("Date not found in data");
566
- }
567
- else {
568
- // Grow new tree
569
- const newTree = cloneExistingNodeStates(growNewTree(this._renderTree(root.tree), this._treeWidth), this._currentTree);
570
- // execute visualization operations on enter, update and exit selections
571
- updateNodes(newTree.descendants(), this.nodeinfo);
572
- updateEdges(newTree.descendants().slice(1), this.flowrate);
573
- updateEdgeTexts(newTree.descendants().slice(1));
574
- // save the state of the now current tree, before next update
575
- this._currentTree = doPostUpdateOperations(newTree);
576
- }
577
- }
578
- }
579
- //# sourceMappingURL=groupTreeAssembler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"groupTreeAssembler.js","sourceRoot":"","sources":["../../src/GroupTreeAssembler/groupTreeAssembler.js"],"names":[],"mappings":"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"}