allotaxonometer-ui 0.1.3 → 0.1.5
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.
- package/dist/index.js +659 -384
- package/dist/ssr/index.js +219 -168
- package/dist/style.css +37 -26
- package/package.json +5 -4
package/dist/index.js
CHANGED
|
@@ -1,23 +1,103 @@
|
|
|
1
1
|
import 'svelte/internal/disclose-version';
|
|
2
2
|
import * as $ from 'svelte/internal/client';
|
|
3
3
|
import * as d3 from 'd3';
|
|
4
|
-
import { map, extent, InternSet, range, rollup, scaleLinear, scaleBand, rgb, interpolateInferno, scaleOrdinal
|
|
4
|
+
import { map, extent, InternSet, range, rollup, scaleLinear, scaleBand, rgb, interpolateInferno, scaleOrdinal } from 'd3';
|
|
5
5
|
import { descending, sum, group, extent as extent$1 } from 'd3-array';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
// Helper: convert [0–1, 0–1, 0–1] → "rgb(R, G, B)"
|
|
8
|
+
function rgbArrayToCss(rgbArray) {
|
|
9
|
+
const [r, g, b] = rgbArray.map(v => Math.round(v * 255));
|
|
10
|
+
return `rgb(${r}, ${g}, ${b})`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function style(props) {
|
|
14
|
+
return Object.entries(props)
|
|
15
|
+
.map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value}`)
|
|
16
|
+
.join('; ');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// // imported from matlab version. Normalized RGB color definitions
|
|
20
|
+
const rawColors = {
|
|
21
|
+
blue: [43, 103, 198].map(v => v / 255),
|
|
22
|
+
red: [198, 43, 103].map(v => v / 255),
|
|
23
|
+
|
|
24
|
+
paleblue: [195, 230, 243].map(v => v / 255),
|
|
25
|
+
palered: [255, 204, 204].map(v => v / 255),
|
|
26
|
+
|
|
27
|
+
lightergrey: [1, 1, 1].map(v => v * 0.96),
|
|
28
|
+
lightishgrey: [1, 1, 1].map(v => v * 0.93),
|
|
29
|
+
lightgrey: [1, 1, 1].map(v => v * 0.90),
|
|
30
|
+
|
|
31
|
+
lightgreyer: [1, 1, 1].map(v => v * 0.85),
|
|
32
|
+
lightgreyish: [1, 1, 1].map(v => v * 0.80),
|
|
33
|
+
|
|
34
|
+
grey: [1, 1, 1].map(v => v * 0.75),
|
|
35
|
+
darkgrey: [1, 1, 1].map(v => v * 0.55),
|
|
36
|
+
darkergrey: [1, 1, 1].map(v => v * 0.35),
|
|
37
|
+
verydarkgrey: [1, 1, 1].map(v => v * 0.15),
|
|
38
|
+
superdarkgrey: [1, 1, 1].map(v => v * 0.10),
|
|
39
|
+
reallyverdarkgrey: [1, 1, 1].map(v => v * 0.05),
|
|
40
|
+
|
|
41
|
+
orange: [255, 116, 0].map(v => v / 255)
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Create CSS strings for each
|
|
45
|
+
const cssColors = {};
|
|
46
|
+
for (const [key, rgb] of Object.entries(rawColors)) {
|
|
47
|
+
cssColors[key] = rgbArrayToCss(rgb);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Export both raw RGB arrays and CSS strings
|
|
51
|
+
const alloColors = {
|
|
52
|
+
css: cssColors // e.g., colors.css.blue → "rgb(43, 103, 198)"
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
// System font stack in order of preference
|
|
56
|
+
const alloFonts = {
|
|
57
|
+
family: `"EB Garamond", "Garamond", "Century Schoolbook L", "URW Bookman L", "Bookman Old Style", "Times", serif`,
|
|
58
|
+
sizes: {
|
|
59
|
+
xs: "10px",
|
|
60
|
+
sm: "12px",
|
|
61
|
+
md: "14px",
|
|
62
|
+
lg: "16px",
|
|
63
|
+
xl: "18px"
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var root_1$7 = $.from_svg(`<g><line x1="0" x2="0" y1="0" y2="6" stroke-width="0.5"></line></g><g><text dx="5" dy="13" text-anchor="start"> </text></g>`, 1);
|
|
69
|
+
var root$8 = $.from_svg(`<g class="axis x"><!><g class="xlab"><text dy="45">Rank r</text><text dy="63">for</text><text dy="80"> </text><text dy="60">more →</text><text dy="75">frequent</text><text dy="60">← less</text><text dy="75">frequent</text></g></g>`);
|
|
9
70
|
|
|
10
71
|
function AxisX($$anchor, $$props) {
|
|
11
72
|
$.push($$props, true);
|
|
12
73
|
|
|
13
|
-
let logFormat10 = $$props.scale.tickFormat();
|
|
14
|
-
let xTicks = $$props.scale.ticks();
|
|
74
|
+
let logFormat10 = $.derived(() => $$props.scale.tickFormat());
|
|
75
|
+
let xTicks = $.derived(() => $$props.scale.ticks().filter((t) => t >= 1 && Number.isInteger(Math.log10(t))));
|
|
76
|
+
|
|
77
|
+
let axisStyles = () => style({
|
|
78
|
+
fontFamily: alloFonts.family,
|
|
79
|
+
fontSize: alloFonts.sizes.lg,
|
|
80
|
+
fill: alloColors.css.darkergrey,
|
|
81
|
+
textAnchor: "middle"
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
let helperText = () => style({
|
|
85
|
+
fontFamily: alloFonts.family,
|
|
86
|
+
fontSize: alloFonts.sizes.sm,
|
|
87
|
+
fill: alloColors.css.darkergrey,
|
|
88
|
+
textAnchor: "middle"
|
|
89
|
+
});
|
|
90
|
+
|
|
15
91
|
var g = root$8();
|
|
16
92
|
var node = $.child(g);
|
|
17
93
|
|
|
18
|
-
$.each(node, 17, () => xTicks, $.index, ($$anchor, tick) => {
|
|
94
|
+
$.each(node, 17, () => $.get(xTicks), $.index, ($$anchor, tick) => {
|
|
19
95
|
var fragment = root_1$7();
|
|
20
96
|
var g_1 = $.first_child(fragment);
|
|
97
|
+
var line = $.child(g_1);
|
|
98
|
+
|
|
99
|
+
$.reset(g_1);
|
|
100
|
+
|
|
21
101
|
var g_2 = $.sibling(g_1);
|
|
22
102
|
var text = $.child(g_2);
|
|
23
103
|
var text_1 = $.child(text, true);
|
|
@@ -28,13 +108,17 @@ function AxisX($$anchor, $$props) {
|
|
|
28
108
|
$.template_effect(
|
|
29
109
|
($0, $1, $2) => {
|
|
30
110
|
$.set_attribute(g_1, 'transform', `translate(${$0 ?? ''}, 0)`);
|
|
111
|
+
$.set_attribute(line, 'stroke', alloColors.css.darkergreyy);
|
|
31
112
|
$.set_attribute(g_2, 'transform', `translate(${$1 ?? ''}, 0) scale(-1,1) rotate(45)`);
|
|
113
|
+
$.set_attribute(text, 'font-family', alloFonts.family);
|
|
114
|
+
$.set_attribute(text, 'font-size', alloFonts.sizes.md);
|
|
115
|
+
$.set_attribute(text, 'fill', alloColors.css.darkergrey);
|
|
32
116
|
$.set_text(text_1, $2);
|
|
33
117
|
},
|
|
34
118
|
[
|
|
35
119
|
() => $$props.scale($.get(tick)),
|
|
36
120
|
() => $$props.scale($.get(tick)),
|
|
37
|
-
() => logFormat10($.get(tick))
|
|
121
|
+
() => $.get(logFormat10)($.get(tick))
|
|
38
122
|
]
|
|
39
123
|
);
|
|
40
124
|
|
|
@@ -61,35 +145,78 @@ function AxisX($$anchor, $$props) {
|
|
|
61
145
|
$.reset(g_3);
|
|
62
146
|
$.reset(g);
|
|
63
147
|
|
|
64
|
-
$.template_effect(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
148
|
+
$.template_effect(
|
|
149
|
+
($0, $1, $2, $3, $4, $5, $6) => {
|
|
150
|
+
$.set_attribute(g, 'transform', `translate(0, ${$$props.innerHeight ?? ''})`);
|
|
151
|
+
$.set_attribute(text_2, 'x', $$props.innerHeight / 2);
|
|
152
|
+
$.set_attribute(text_2, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
153
|
+
$.set_style(text_2, $0);
|
|
154
|
+
$.set_attribute(text_3, 'x', $$props.innerHeight / 2);
|
|
155
|
+
$.set_attribute(text_3, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
156
|
+
$.set_style(text_3, $1);
|
|
157
|
+
$.set_attribute(text_4, 'x', $$props.innerHeight / 2);
|
|
158
|
+
$.set_attribute(text_4, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
159
|
+
$.set_style(text_4, $2);
|
|
160
|
+
$.set_text(text_5, $$props.title[1]);
|
|
161
|
+
$.set_attribute(text_6, 'x', $$props.innerHeight - 40);
|
|
162
|
+
$.set_attribute(text_6, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
163
|
+
$.set_style(text_6, $3);
|
|
164
|
+
$.set_attribute(text_7, 'x', $$props.innerHeight - 40);
|
|
165
|
+
$.set_attribute(text_7, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
166
|
+
$.set_style(text_7, $4);
|
|
167
|
+
$.set_attribute(text_8, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
168
|
+
$.set_style(text_8, $5);
|
|
169
|
+
$.set_attribute(text_9, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
|
|
170
|
+
$.set_style(text_9, $6);
|
|
171
|
+
},
|
|
172
|
+
[
|
|
173
|
+
axisStyles,
|
|
174
|
+
axisStyles,
|
|
175
|
+
axisStyles,
|
|
176
|
+
helperText,
|
|
177
|
+
helperText,
|
|
178
|
+
helperText,
|
|
179
|
+
helperText
|
|
180
|
+
]
|
|
181
|
+
);
|
|
74
182
|
|
|
75
183
|
$.append($$anchor, g);
|
|
76
184
|
$.pop();
|
|
77
185
|
}
|
|
78
186
|
|
|
79
|
-
var root_1$6 = $.from_svg(`<g
|
|
80
|
-
var root$7 = $.from_svg(`<g class="axis y"><!><g class="ylab
|
|
187
|
+
var root_1$6 = $.from_svg(`<g><line x1="0" x2="-6" y1="0" y2="0" stroke-width="0.5"></line></g><g><text dx="-5" dy="13" text-anchor="end"> </text></g>`, 1);
|
|
188
|
+
var root$7 = $.from_svg(`<g class="axis y"><!><g class="ylab" transform="rotate(90)"><text dy="45">Rank r</text><text dy="63">for</text><text dy="80"> </text><text dy="60">less →</text><text dy="75">frequent</text><text dy="60">← more</text><text dy="75">frequent</text></g></g>`);
|
|
81
189
|
|
|
82
190
|
function AxisY($$anchor, $$props) {
|
|
83
191
|
$.push($$props, true);
|
|
84
192
|
|
|
85
|
-
let logFormat10 = $$props.scale.tickFormat();
|
|
86
|
-
let yTicks = $.derived(() => $$props.scale.ticks());
|
|
193
|
+
let logFormat10 = $.derived(() => $$props.scale.tickFormat());
|
|
194
|
+
let yTicks = $.derived(() => $$props.scale.ticks().filter((t) => t >= 1 && Number.isInteger(Math.log10(t))));
|
|
195
|
+
|
|
196
|
+
let axisStyles = () => style({
|
|
197
|
+
fontFamily: alloFonts.family,
|
|
198
|
+
fontSize: alloFonts.sizes.lg,
|
|
199
|
+
fill: alloColors.css.darkergrey,
|
|
200
|
+
textAnchor: "middle"
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
let helperText = () => style({
|
|
204
|
+
fontFamily: alloFonts.family,
|
|
205
|
+
fontSize: alloFonts.sizes.sm,
|
|
206
|
+
fill: alloColors.css.darkergrey,
|
|
207
|
+
textAnchor: "middle"
|
|
208
|
+
});
|
|
209
|
+
|
|
87
210
|
var g = root$7();
|
|
88
211
|
var node = $.child(g);
|
|
89
212
|
|
|
90
213
|
$.each(node, 17, () => $.get(yTicks), $.index, ($$anchor, tick) => {
|
|
91
214
|
var fragment = root_1$6();
|
|
92
215
|
var g_1 = $.first_child(fragment);
|
|
216
|
+
var line = $.child(g_1);
|
|
217
|
+
|
|
218
|
+
$.reset(g_1);
|
|
219
|
+
|
|
93
220
|
var g_2 = $.sibling(g_1);
|
|
94
221
|
var text = $.child(g_2);
|
|
95
222
|
var text_1 = $.child(text, true);
|
|
@@ -100,13 +227,17 @@ function AxisY($$anchor, $$props) {
|
|
|
100
227
|
$.template_effect(
|
|
101
228
|
($0, $1, $2) => {
|
|
102
229
|
$.set_attribute(g_1, 'transform', `translate(0, ${$0 ?? ''})`);
|
|
230
|
+
$.set_attribute(line, 'stroke', alloColors.css.darkergreyy);
|
|
103
231
|
$.set_attribute(g_2, 'transform', `translate(0, ${$1 ?? ''}) rotate(45)`);
|
|
232
|
+
$.set_attribute(text, 'font-family', alloFonts.family);
|
|
233
|
+
$.set_attribute(text, 'font-size', alloFonts.sizes.md);
|
|
234
|
+
$.set_attribute(text, 'fill', alloColors.css.darkergrey);
|
|
104
235
|
$.set_text(text_1, $2);
|
|
105
236
|
},
|
|
106
237
|
[
|
|
107
238
|
() => $$props.scale($.get(tick)),
|
|
108
239
|
() => $$props.scale($.get(tick)),
|
|
109
|
-
() => logFormat10($.get(tick))
|
|
240
|
+
() => $.get(logFormat10)($.get(tick))
|
|
110
241
|
]
|
|
111
242
|
);
|
|
112
243
|
|
|
@@ -133,21 +264,39 @@ function AxisY($$anchor, $$props) {
|
|
|
133
264
|
$.reset(g_3);
|
|
134
265
|
$.reset(g);
|
|
135
266
|
|
|
136
|
-
$.template_effect(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
267
|
+
$.template_effect(
|
|
268
|
+
($0, $1, $2, $3, $4, $5, $6) => {
|
|
269
|
+
$.set_attribute(g, 'transform', `translate(${$$props.innerHeight ?? ''}, 0) scale(-1, 1)`);
|
|
270
|
+
$.set_attribute(text_2, 'x', $$props.innerHeight / 2);
|
|
271
|
+
$.set_style(text_2, $0);
|
|
272
|
+
$.set_attribute(text_3, 'x', $$props.innerHeight / 2);
|
|
273
|
+
$.set_style(text_3, $1);
|
|
274
|
+
$.set_attribute(text_4, 'x', $$props.innerHeight / 2);
|
|
275
|
+
$.set_style(text_4, $2);
|
|
276
|
+
$.set_text(text_5, $$props.title[0]);
|
|
277
|
+
$.set_attribute(text_6, 'x', $$props.innerHeight - 40);
|
|
278
|
+
$.set_style(text_6, $3);
|
|
279
|
+
$.set_attribute(text_7, 'x', $$props.innerHeight - 40);
|
|
280
|
+
$.set_style(text_7, $4);
|
|
281
|
+
$.set_style(text_8, $5);
|
|
282
|
+
$.set_style(text_9, $6);
|
|
283
|
+
},
|
|
284
|
+
[
|
|
285
|
+
axisStyles,
|
|
286
|
+
axisStyles,
|
|
287
|
+
axisStyles,
|
|
288
|
+
helperText,
|
|
289
|
+
helperText,
|
|
290
|
+
helperText,
|
|
291
|
+
helperText
|
|
292
|
+
]
|
|
293
|
+
);
|
|
145
294
|
|
|
146
295
|
$.append($$anchor, g);
|
|
147
296
|
$.pop();
|
|
148
297
|
}
|
|
149
298
|
|
|
150
|
-
var root_1$5 = $.from_svg(`<g><line y2="0" stroke="#d3d3d3" stroke-dasharray="
|
|
299
|
+
var root_1$5 = $.from_svg(`<g><line y2="0" stroke="#d3d3d3" stroke-dasharray="1,3"></line></g><g><line x2="0" stroke="#d3d3d3" stroke-dasharray="1,3"></line></g>`, 1);
|
|
151
300
|
var root$6 = $.from_svg(`<g class="grid"></g>`);
|
|
152
301
|
|
|
153
302
|
function Grid($$anchor, $$props) {
|
|
@@ -191,7 +340,7 @@ function Grid($$anchor, $$props) {
|
|
|
191
340
|
$.pop();
|
|
192
341
|
}
|
|
193
342
|
|
|
194
|
-
var root_1$4 = $.from_svg(`<path fill="none" stroke="grey" stroke-width="0.
|
|
343
|
+
var root_1$4 = $.from_svg(`<path fill="none" stroke="grey" stroke-width="0.55" stroke-opacity="0.9"></path>`);
|
|
195
344
|
var root$5 = $.from_svg(`<g class="contours"></g>`);
|
|
196
345
|
|
|
197
346
|
function Contours($$anchor, $$props) {
|
|
@@ -298,9 +447,18 @@ function Contours($$anchor, $$props) {
|
|
|
298
447
|
$.pop();
|
|
299
448
|
}
|
|
300
449
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
450
|
+
function updateTooltipPosition(event, tooltipVisible, tooltipX, tooltipY) {
|
|
451
|
+
if ($.get(tooltipVisible)) {
|
|
452
|
+
$.set(tooltipX, event.clientX + 15);
|
|
453
|
+
$.set(tooltipY, event.clientY - 10);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
var root_1$3 = $.from_svg(`<rect class="diamond-cell"></rect>`);
|
|
458
|
+
var root_2$3 = $.from_svg(`<rect></rect>`);
|
|
459
|
+
var root_3$1 = $.from_svg(`<text dy="5"> </text>`);
|
|
460
|
+
var root_4$1 = $.from_html(`<div><!></div>`);
|
|
461
|
+
var root$4 = $.from_html(`<div style="position: relative;"><svg xmlns="http://www.w3.org/2000/svg" style="overflow: visible; display: block;"><polygon class="diamond-background grey-triangle" fill-opacity="0.8" stroke="black" stroke-width="0.5"></polygon><polygon class="diamond-background blue-triangle" fill-opacity="0.8" stroke="black" stroke-width="0.5"></polygon><!><!><!><!><!><!><line x1="0" y1="0"></line><!></svg> <!></div>`);
|
|
304
462
|
|
|
305
463
|
function Diamond($$anchor, $$props) {
|
|
306
464
|
$.push($$props, true);
|
|
@@ -312,12 +470,11 @@ function Diamond($$anchor, $$props) {
|
|
|
312
470
|
// Extract data from dat object
|
|
313
471
|
let diamond_dat = $.derived(() => $$props.dat.counts);
|
|
314
472
|
$.derived(() => $$props.dat.deltas);
|
|
315
|
-
// Calculate derived dimensions (matching D3 version)
|
|
473
|
+
// Calculate derived dimensions (matching D3 version exactly)
|
|
316
474
|
let innerHeight = $.derived(() => DiamondHeight() - marginInner());
|
|
317
475
|
let diamondHeight = $.derived(() => $.get(innerHeight) - marginDiamond());
|
|
318
476
|
|
|
319
477
|
function get_relevant_types(diamond_dat) {
|
|
320
|
-
// Use the logic from your D3 version instead
|
|
321
478
|
const ncells = d3.max(diamond_dat, (d) => d.x1);
|
|
322
479
|
const cumbin = d3.range(0, ncells, 1.5);
|
|
323
480
|
const relevant_types = [];
|
|
@@ -330,7 +487,6 @@ function Diamond($$anchor, $$props) {
|
|
|
330
487
|
const cos_dists = filtered_dat.map((d) => d.cos_dist);
|
|
331
488
|
const max_dist = cos_dists.reduce((a, b) => Math.max(a, b));
|
|
332
489
|
const max_dist_idx = cos_dists.indexOf(max_dist);
|
|
333
|
-
// SSR-safe random selection
|
|
334
490
|
const types = filtered_dat[max_dist_idx]['types'].split(",");
|
|
335
491
|
const name = types[Math.floor(Math.random() * types.length)];
|
|
336
492
|
|
|
@@ -346,7 +502,7 @@ function Diamond($$anchor, $$props) {
|
|
|
346
502
|
return Array.from(arr1, (x) => arr2.indexOf(x) !== -1);
|
|
347
503
|
}
|
|
348
504
|
|
|
349
|
-
// Wrangling data
|
|
505
|
+
// Wrangling data
|
|
350
506
|
let relevant_types = $.derived(() => get_relevant_types($.get(diamond_dat)));
|
|
351
507
|
let ncells = $.derived(() => d3.max($.get(diamond_dat), (d) => d.x1));
|
|
352
508
|
let max_rank = $.derived(() => d3.max($.get(diamond_dat), (d) => d.rank_L[1]));
|
|
@@ -359,7 +515,7 @@ function Diamond($$anchor, $$props) {
|
|
|
359
515
|
let wxy = $.derived(() => d3.scaleBand().domain(d3.range($.get(ncells))).range([0, $.get(innerHeight)]));
|
|
360
516
|
let color_scale = d3.scaleSequentialLog().domain([$.get(rounded_max_rank), 1]).interpolator(d3.interpolateInferno);
|
|
361
517
|
|
|
362
|
-
// Background triangles
|
|
518
|
+
// Background triangles
|
|
363
519
|
let blue_triangle = $.derived(() => [
|
|
364
520
|
[
|
|
365
521
|
$.get(innerHeight),
|
|
@@ -382,13 +538,39 @@ function Diamond($$anchor, $$props) {
|
|
|
382
538
|
return rin(relevant_types, d.types.split(",")).some((x) => x === true);
|
|
383
539
|
}
|
|
384
540
|
|
|
385
|
-
|
|
386
|
-
|
|
541
|
+
// TOOLTIP
|
|
542
|
+
let tooltipVisible = $.state(false);
|
|
543
|
+
let tooltipContent = $.state('');
|
|
544
|
+
let tooltipX = $.state(0);
|
|
545
|
+
let tooltipY = $.state(0);
|
|
546
|
+
|
|
547
|
+
function showTooltip(event, d) {
|
|
548
|
+
if (d.value === 0) return;
|
|
549
|
+
|
|
550
|
+
const tokens = d.types.split(",");
|
|
551
|
+
const displayTokens = tokens.length < 50 ? tokens.slice(0, 8).join(", ") : tokens.slice(0, 8).join(", ") + " ...";
|
|
552
|
+
|
|
553
|
+
$.set(tooltipContent, `
|
|
554
|
+
<div style="color: rgb(89, 89, 89); font-size: 11px;">Types: ${displayTokens}</div>
|
|
555
|
+
`);
|
|
556
|
+
|
|
557
|
+
$.set(tooltipX, event.clientX + 15);
|
|
558
|
+
$.set(tooltipY, event.clientY - 10);
|
|
559
|
+
$.set(tooltipVisible, true);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
function hideTooltip() {
|
|
563
|
+
$.set(tooltipVisible, false);
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
var div = root$4();
|
|
567
|
+
var svg = $.child(div);
|
|
568
|
+
var polygon = $.child(svg);
|
|
387
569
|
var polygon_1 = $.sibling(polygon);
|
|
388
570
|
var node = $.sibling(polygon_1);
|
|
389
571
|
|
|
390
572
|
AxisX(node, {
|
|
391
|
-
get
|
|
573
|
+
get innerHeight() {
|
|
392
574
|
return $.get(innerHeight);
|
|
393
575
|
},
|
|
394
576
|
get scale() {
|
|
@@ -402,7 +584,7 @@ function Diamond($$anchor, $$props) {
|
|
|
402
584
|
var node_1 = $.sibling(node);
|
|
403
585
|
|
|
404
586
|
AxisY(node_1, {
|
|
405
|
-
get
|
|
587
|
+
get innerHeight() {
|
|
406
588
|
return $.get(innerHeight);
|
|
407
589
|
},
|
|
408
590
|
get scale() {
|
|
@@ -442,16 +624,13 @@ function Diamond($$anchor, $$props) {
|
|
|
442
624
|
$.set_attribute(rect, 'width', $2);
|
|
443
625
|
$.set_attribute(rect, 'height', $3);
|
|
444
626
|
$.set_attribute(rect, 'fill', $4);
|
|
445
|
-
$.set_attribute(rect, 'opacity', $.get(d).value === 0 ? 0 : 1);
|
|
446
|
-
$.set_attribute(rect, 'stroke-width', $.get(d).value === 0 ? 0 : 0.1);
|
|
447
|
-
$.set_attribute(rect, 'stroke-opacity', $.get(d).value === 0 ? 0 : 0.9);
|
|
448
627
|
},
|
|
449
628
|
[
|
|
450
629
|
() => $.get(xy)($.get(d).x1),
|
|
451
630
|
() => $.get(xy)($.get(d).y1),
|
|
452
631
|
() => $.get(xy).bandwidth(),
|
|
453
632
|
() => $.get(xy).bandwidth(),
|
|
454
|
-
() => color_scale($.get(d).value)
|
|
633
|
+
() => $.get(d).value === 0 ? "none" : color_scale($.get(d).value)
|
|
455
634
|
]
|
|
456
635
|
);
|
|
457
636
|
|
|
@@ -460,44 +639,76 @@ function Diamond($$anchor, $$props) {
|
|
|
460
639
|
|
|
461
640
|
var node_4 = $.sibling(node_3);
|
|
462
641
|
|
|
463
|
-
$.each(node_4, 17, () => $.get(diamond_dat)
|
|
464
|
-
var
|
|
465
|
-
|
|
642
|
+
$.each(node_4, 17, () => $.get(diamond_dat), $.index, ($$anchor, d) => {
|
|
643
|
+
var rect_1 = root_2$3();
|
|
644
|
+
|
|
645
|
+
rect_1.__mousemove = [
|
|
646
|
+
updateTooltipPosition,
|
|
647
|
+
tooltipVisible,
|
|
648
|
+
tooltipX,
|
|
649
|
+
tooltipY
|
|
650
|
+
];
|
|
651
|
+
|
|
652
|
+
$.template_effect(
|
|
653
|
+
($0, $1, $2, $3) => {
|
|
654
|
+
$.set_attribute(rect_1, 'x', $0);
|
|
655
|
+
$.set_attribute(rect_1, 'y', $1);
|
|
656
|
+
$.set_attribute(rect_1, 'width', $2);
|
|
657
|
+
$.set_attribute(rect_1, 'height', $3);
|
|
658
|
+
$.set_attribute(rect_1, 'fill', $.get(d).value > 0 ? 'rgba(255,255,255,0.001)' : 'none');
|
|
659
|
+
$.set_attribute(rect_1, 'stroke', $.get(d).value > 0 ? alloColors.css.darkergrey : 'none');
|
|
660
|
+
$.set_attribute(rect_1, 'stroke-width', $.get(d).value > 0 ? '1.18' : '0');
|
|
661
|
+
$.set_attribute(rect_1, 'stroke-opacity', $.get(d).value > 0 ? '0.4' : '0');
|
|
662
|
+
$.set_style(rect_1, `cursor: ${$.get(d).value > 0 ? 'pointer' : 'default'};`);
|
|
663
|
+
},
|
|
664
|
+
[
|
|
665
|
+
() => $.get(xy)($.get(d).x1),
|
|
666
|
+
() => $.get(xy)($.get(d).y1),
|
|
667
|
+
() => $.get(xy).bandwidth(),
|
|
668
|
+
() => $.get(xy).bandwidth()
|
|
669
|
+
]
|
|
670
|
+
);
|
|
671
|
+
|
|
672
|
+
$.event('mouseenter', rect_1, (e) => showTooltip(e, $.get(d)));
|
|
673
|
+
$.event('mouseleave', rect_1, hideTooltip);
|
|
674
|
+
$.append($$anchor, rect_1);
|
|
675
|
+
});
|
|
676
|
+
|
|
677
|
+
var node_5 = $.sibling(node_4);
|
|
678
|
+
|
|
679
|
+
$.each(node_5, 17, () => $.get(diamond_dat).filter((d) => filter_labs(d, $.get(relevant_types))), $.index, ($$anchor, d) => {
|
|
680
|
+
var text = root_3$1();
|
|
466
681
|
var text_1 = $.child(text, true);
|
|
467
682
|
|
|
468
683
|
$.reset(text);
|
|
469
|
-
$.reset(g_1);
|
|
470
684
|
|
|
471
685
|
$.template_effect(
|
|
472
686
|
($0, $1, $2, $3, $4, $5) => {
|
|
473
|
-
$.set_attribute(
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
rotate(-45, ${$0 ?? ''}, ${$1 ?? ''})
|
|
477
|
-
translate(${$2 ?? ''}, 0)
|
|
478
|
-
`);
|
|
479
|
-
|
|
480
|
-
$.set_attribute(text, 'x', $3);
|
|
481
|
-
$.set_attribute(text, 'y', $4);
|
|
687
|
+
$.set_attribute(text, 'x', $0);
|
|
688
|
+
$.set_attribute(text, 'y', $1);
|
|
689
|
+
$.set_attribute(text, 'dx', $.get(d).x1 - $.get(d).y1 <= 0 ? 5 : -5);
|
|
482
690
|
$.set_attribute(text, 'text-anchor', $.get(d).x1 - $.get(d).y1 <= 0 ? "start" : "end");
|
|
691
|
+
$.set_attribute(text, 'transform', `scale(1,-1) rotate(-90) rotate(-45, ${$2 ?? ''}, ${$3 ?? ''}) translate(${$4 ?? ''}, 0)`);
|
|
692
|
+
$.set_style(text, `font-family: ${alloFonts ?? ''}; font-size: 12px; fill: ${alloColors.css.darkergrey ?? ''};`);
|
|
483
693
|
$.set_text(text_1, $5);
|
|
484
694
|
},
|
|
485
695
|
[
|
|
696
|
+
() => $.get(xy)($.get(d).x1),
|
|
697
|
+
() => Number.isInteger($.get(d).coord_on_diag) ? $.get(xy)($.get(d).y1) : $.get(xy)($.get(d).y1) - 1,
|
|
486
698
|
() => $.get(xy)($.get(d).x1),
|
|
487
699
|
() => $.get(xy)($.get(d).y1),
|
|
488
700
|
() => $.get(d).which_sys === "right" ? $.get(xy)(Math.sqrt($.get(d).cos_dist)) * 1.5 : -$.get(xy)(Math.sqrt($.get(d).cos_dist)) * 1.5,
|
|
489
|
-
() => $.get(xy)($.get(d).x1),
|
|
490
|
-
() => Number.isInteger($.get(d).coord_on_diag) ? $.get(xy)($.get(d).y1) : $.get(xy)($.get(d).y1) - 1,
|
|
491
701
|
() => $.get(d).types.split(",")[0]
|
|
492
702
|
]
|
|
493
703
|
);
|
|
494
704
|
|
|
495
|
-
$.append($$anchor,
|
|
705
|
+
$.append($$anchor, text);
|
|
496
706
|
});
|
|
497
707
|
|
|
498
|
-
var
|
|
708
|
+
var line = $.sibling(node_5);
|
|
709
|
+
var node_6 = $.sibling(line);
|
|
499
710
|
|
|
500
|
-
Contours(
|
|
711
|
+
Contours(node_6, {
|
|
501
712
|
get alpha() {
|
|
502
713
|
return $$props.alpha;
|
|
503
714
|
},
|
|
@@ -512,57 +723,111 @@ function Diamond($$anchor, $$props) {
|
|
|
512
723
|
}
|
|
513
724
|
});
|
|
514
725
|
|
|
515
|
-
$.reset(
|
|
726
|
+
$.reset(svg);
|
|
727
|
+
|
|
728
|
+
var node_7 = $.sibling(svg, 2);
|
|
729
|
+
|
|
730
|
+
{
|
|
731
|
+
var consequent = ($$anchor) => {
|
|
732
|
+
var div_1 = root_4$1();
|
|
733
|
+
var node_8 = $.child(div_1);
|
|
734
|
+
|
|
735
|
+
$.html(node_8, () => $.get(tooltipContent));
|
|
736
|
+
$.reset(div_1);
|
|
737
|
+
|
|
738
|
+
$.template_effect(() => $.set_style(div_1, `
|
|
739
|
+
position: fixed;
|
|
740
|
+
left: ${$.get(tooltipX) ?? ''}px;
|
|
741
|
+
top: ${$.get(tooltipY) ?? ''}px;
|
|
742
|
+
background: white;
|
|
743
|
+
border: 1px solid rgb(200, 200, 200);
|
|
744
|
+
border-radius: 6px;
|
|
745
|
+
padding: 10px 12px;
|
|
746
|
+
font-family: 'EB Garamond', serif;
|
|
747
|
+
font-size: 12px;
|
|
748
|
+
line-height: 1.5;
|
|
749
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
750
|
+
pointer-events: none;
|
|
751
|
+
z-index: 1000;
|
|
752
|
+
max-width: 280px;
|
|
753
|
+
`));
|
|
754
|
+
|
|
755
|
+
$.append($$anchor, div_1);
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
$.if(node_7, ($$render) => {
|
|
759
|
+
if ($.get(tooltipVisible)) $$render(consequent);
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
$.reset(div);
|
|
516
764
|
|
|
517
765
|
$.template_effect(() => {
|
|
518
|
-
$.set_attribute(
|
|
519
|
-
$.set_attribute(
|
|
520
|
-
$.set_attribute(
|
|
766
|
+
$.set_attribute(svg, 'width', DiamondHeight());
|
|
767
|
+
$.set_attribute(svg, 'height', DiamondHeight());
|
|
768
|
+
$.set_attribute(svg, 'viewBox', `0 0 ${DiamondHeight() ?? ''} ${DiamondHeight() ?? ''}`);
|
|
769
|
+
$.set_attribute(svg, 'transform', `scale(-1,1) rotate(45) translate(${$.get(innerHeight) / 4}, ${$.get(innerHeight) / 4})`);
|
|
770
|
+
$.set_attribute(polygon, 'points', $.get(grey_triangle));
|
|
771
|
+
$.set_attribute(polygon, 'fill', alloColors.css.lightgrey);
|
|
772
|
+
$.set_attribute(polygon_1, 'points', $.get(blue_triangle));
|
|
773
|
+
$.set_attribute(polygon_1, 'fill', alloColors.css.paleblue);
|
|
774
|
+
$.set_attribute(line, 'x2', $.get(innerHeight) - 7);
|
|
775
|
+
$.set_attribute(line, 'y2', $.get(innerHeight) - 7);
|
|
776
|
+
$.set_style(line, `stroke: ${alloColors.css.verydarkgrey ?? ''}; stroke-width: 0.5;`);
|
|
521
777
|
});
|
|
522
778
|
|
|
523
|
-
$.append($$anchor,
|
|
779
|
+
$.append($$anchor, div);
|
|
524
780
|
$.pop();
|
|
525
781
|
}
|
|
526
782
|
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
var
|
|
530
|
-
var
|
|
783
|
+
$.delegate(['mousemove']);
|
|
784
|
+
|
|
785
|
+
var root_1$2 = $.from_svg(`<line y1="0" y2="6" style="stroke: currentColor; stroke-width: 1;"></line><line class="wordshift-grid-line" y1="0"></line><text y="-12" text-anchor="middle"> </text>`, 1);
|
|
786
|
+
var root_2$2 = $.from_svg(`<rect class="wordshift-bar" style="mix-blend-mode: multiply;"></rect>`);
|
|
787
|
+
var root_4 = $.from_svg(`<text dy="0.32em"> </text>`);
|
|
788
|
+
var root_3 = $.from_svg(`<g class="wordshift-label-group"><text dy="0.32em"> </text><!></g>`);
|
|
789
|
+
var root$3 = $.from_svg(`<svg style="overflow: visible; display: block;"><g class="wordshift-container"><g class="wordshift-axis x"><!><text y="-35" text-anchor="middle"> </text></g><!><g class="wordshift-y-axis"></g></g></svg>`);
|
|
531
790
|
|
|
532
791
|
function Wordshift($$anchor, $$props) {
|
|
533
792
|
$.push($$props, true);
|
|
534
793
|
|
|
535
794
|
let x = $.prop($$props, 'x', 3, (d) => d.metric),
|
|
536
795
|
y = $.prop($$props, 'y', 3, (d) => d.type),
|
|
537
|
-
marginTop = $.prop($$props, 'marginTop', 3,
|
|
538
|
-
marginRight = $.prop($$props, 'marginRight', 3,
|
|
539
|
-
marginBottom = $.prop($$props, 'marginBottom', 3,
|
|
540
|
-
marginLeft = $.prop($$props, 'marginLeft', 3,
|
|
541
|
-
width = $.prop($$props, 'width', 3,
|
|
542
|
-
$.prop($$props, '
|
|
543
|
-
let xFormat = $.prop($$props, 'xFormat', 3, '%'),
|
|
796
|
+
marginTop = $.prop($$props, 'marginTop', 3, 50),
|
|
797
|
+
marginRight = $.prop($$props, 'marginRight', 3, 60),
|
|
798
|
+
marginBottom = $.prop($$props, 'marginBottom', 3, 40),
|
|
799
|
+
marginLeft = $.prop($$props, 'marginLeft', 3, 70),
|
|
800
|
+
width = $.prop($$props, 'width', 3, 360),
|
|
801
|
+
xFormat = $.prop($$props, 'xFormat', 3, '%'),
|
|
544
802
|
xLabel = $.prop($$props, 'xLabel', 3, '← System 1 · Divergence contribution · System 2 →'),
|
|
545
|
-
yPadding = $.prop($$props, 'yPadding', 3, 0
|
|
546
|
-
colors = $.prop($$props, 'colors', 19, () => [
|
|
803
|
+
yPadding = $.prop($$props, 'yPadding', 3, 0),
|
|
804
|
+
colors = $.prop($$props, 'colors', 19, () => [
|
|
805
|
+
alloColors.css.lightgrey,
|
|
806
|
+
alloColors.css.paleblue
|
|
807
|
+
]),
|
|
808
|
+
barHeightFactor = $.prop($$props, 'barHeightFactor', 3, 0.7);
|
|
547
809
|
|
|
548
|
-
// Compute values (matching D3 version)
|
|
810
|
+
// Compute values (matching D3 version exactly)
|
|
549
811
|
let X = $.derived(() => d3.map($$props.barData, x()));
|
|
550
812
|
let Y = $.derived(() => d3.map($$props.barData, y()));
|
|
551
813
|
// Compute domains
|
|
552
814
|
let computedXDomain = $.derived(() => $$props.xDomain || d3.extent($.get(X)));
|
|
553
815
|
let yDomain = $.derived(() => new d3.InternSet($.get(Y)));
|
|
554
|
-
|
|
555
|
-
//
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
let
|
|
816
|
+
// Match D3 dimensions exactly
|
|
817
|
+
const xAxisYOffset = 10; // Space below x-axis (from original)
|
|
818
|
+
const bandHeight = 18; // Fixed band height (from original)
|
|
819
|
+
const shiftSvgBy = 12; // shift svg up to align with system titles
|
|
820
|
+
const barYOffset = 10; // Additional offset just for bars
|
|
821
|
+
let compactHeight = $.derived(() => $.get(yDomain).size * bandHeight);
|
|
822
|
+
let innerWidth = $.derived(() => width() - marginLeft() - marginRight());
|
|
823
|
+
let innerHeight = $.derived(() => $.get(compactHeight) + xAxisYOffset);
|
|
824
|
+
let computedHeight = $.derived(() => $.get(innerHeight) + marginTop() + marginBottom());
|
|
825
|
+
// Compute ranges exactly like D3
|
|
826
|
+
let xRange = $.derived(() => [0, $.get(innerWidth)]);
|
|
562
827
|
|
|
563
828
|
let yRange = $.derived(() => [
|
|
564
|
-
|
|
565
|
-
$.get(
|
|
829
|
+
xAxisYOffset + barYOffset,
|
|
830
|
+
xAxisYOffset + barYOffset + $.get(compactHeight)
|
|
566
831
|
]);
|
|
567
832
|
|
|
568
833
|
// Filter indices and create lookup
|
|
@@ -573,31 +838,61 @@ function Wordshift($$anchor, $$props) {
|
|
|
573
838
|
let yScale = $.derived(() => d3.scaleBand().domain($.get(yDomain)).range($.get(yRange)).padding(yPadding()));
|
|
574
839
|
let format = $.derived(() => $.get(xScale).tickFormat(100, xFormat()));
|
|
575
840
|
let xTicks = $.derived(() => $.get(xScale).ticks(width() / 80));
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
841
|
+
|
|
842
|
+
// Helper function matching D3 logic exactly
|
|
843
|
+
function parseLabelData(label) {
|
|
844
|
+
const splitIndex = label.indexOf(' ');
|
|
845
|
+
let name_y, numbers_y;
|
|
846
|
+
|
|
847
|
+
if (splitIndex === -1) {
|
|
848
|
+
name_y = label;
|
|
849
|
+
numbers_y = "";
|
|
850
|
+
} else {
|
|
851
|
+
name_y = label.slice(0, splitIndex);
|
|
852
|
+
numbers_y = label.slice(splitIndex + 1).trim();
|
|
853
|
+
|
|
854
|
+
// Strip first and last characters from numbers_y if possible
|
|
855
|
+
if (numbers_y.length > 2) {
|
|
856
|
+
numbers_y = numbers_y.slice(1, numbers_y.length - 1);
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
return { name_y, numbers_y };
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
let finalHeight = $.derived(() => $$props.height || $.get(computedHeight));
|
|
864
|
+
var svg = root$3();
|
|
865
|
+
var g = $.child(svg);
|
|
580
866
|
var g_1 = $.child(g);
|
|
867
|
+
|
|
868
|
+
$.set_attribute(g_1, 'transform', 'translate(0, 10)');
|
|
869
|
+
|
|
581
870
|
var node = $.child(g_1);
|
|
582
871
|
|
|
583
872
|
$.each(node, 17, () => $.get(xTicks), $.index, ($$anchor, tick) => {
|
|
584
|
-
var
|
|
585
|
-
var line = $.
|
|
586
|
-
var
|
|
873
|
+
var fragment = root_1$2();
|
|
874
|
+
var line = $.first_child(fragment);
|
|
875
|
+
var line_1 = $.sibling(line);
|
|
876
|
+
var text = $.sibling(line_1);
|
|
587
877
|
var text_1 = $.child(text, true);
|
|
588
878
|
|
|
589
879
|
$.reset(text);
|
|
590
|
-
$.reset(g_2);
|
|
591
880
|
|
|
592
881
|
$.template_effect(
|
|
593
|
-
($0, $1, $2, $3) => {
|
|
882
|
+
($0, $1, $2, $3, $4, $5) => {
|
|
594
883
|
$.set_attribute(line, 'x1', $0);
|
|
595
884
|
$.set_attribute(line, 'x2', $1);
|
|
596
|
-
$.set_attribute(
|
|
597
|
-
$.set_attribute(
|
|
598
|
-
$.
|
|
885
|
+
$.set_attribute(line_1, 'x1', $2);
|
|
886
|
+
$.set_attribute(line_1, 'x2', $3);
|
|
887
|
+
$.set_attribute(line_1, 'y2', $.get(innerHeight) - xAxisYOffset + barYOffset);
|
|
888
|
+
$.set_style(line_1, $.get(tick) === 0 ? `stroke: ${alloColors.css.verydarkgrey}; stroke-width: 1; stroke-opacity: 0.8;` : `stroke: currentColor; stroke-opacity: 0.1;`);
|
|
889
|
+
$.set_attribute(text, 'x', $4);
|
|
890
|
+
$.set_style(text, `font-family: ${alloFonts ?? ''}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''};`);
|
|
891
|
+
$.set_text(text_1, $5);
|
|
599
892
|
},
|
|
600
893
|
[
|
|
894
|
+
() => $.get(xScale)($.get(tick)),
|
|
895
|
+
() => $.get(xScale)($.get(tick)),
|
|
601
896
|
() => $.get(xScale)($.get(tick)),
|
|
602
897
|
() => $.get(xScale)($.get(tick)),
|
|
603
898
|
() => $.get(xScale)($.get(tick)),
|
|
@@ -605,7 +900,7 @@ function Wordshift($$anchor, $$props) {
|
|
|
605
900
|
]
|
|
606
901
|
);
|
|
607
902
|
|
|
608
|
-
$.append($$anchor,
|
|
903
|
+
$.append($$anchor, fragment);
|
|
609
904
|
});
|
|
610
905
|
|
|
611
906
|
var text_2 = $.sibling(node);
|
|
@@ -629,50 +924,82 @@ function Wordshift($$anchor, $$props) {
|
|
|
629
924
|
},
|
|
630
925
|
[
|
|
631
926
|
() => Math.min($.get(xScale)(0), $.get(xScale)($.get(X)[$.get(i)])),
|
|
632
|
-
() => $.get(yScale)($.get(Y)[$.get(i)]),
|
|
927
|
+
() => $.get(yScale)($.get(Y)[$.get(i)]) + ($.get(yScale).bandwidth() - $.get(yScale).bandwidth() * barHeightFactor()) / 2,
|
|
633
928
|
() => Math.abs($.get(xScale)($.get(X)[$.get(i)]) - $.get(xScale)(0)),
|
|
634
|
-
() => $.get(yScale).bandwidth()
|
|
929
|
+
() => $.get(yScale).bandwidth() * barHeightFactor()
|
|
635
930
|
]
|
|
636
931
|
);
|
|
637
932
|
|
|
638
933
|
$.append($$anchor, rect);
|
|
639
934
|
});
|
|
640
935
|
|
|
641
|
-
var
|
|
936
|
+
var g_2 = $.sibling(node_1);
|
|
642
937
|
|
|
643
|
-
$.each(
|
|
644
|
-
var
|
|
938
|
+
$.each(g_2, 21, () => $.get(yScale).domain(), $.index, ($$anchor, label) => {
|
|
939
|
+
var g_3 = root_3();
|
|
940
|
+
const labelData = $.derived(() => parseLabelData($.get(label)));
|
|
941
|
+
const xValue = $.derived(() => $.get(YX).get($.get(label)));
|
|
942
|
+
var text_4 = $.child(g_3);
|
|
645
943
|
var text_5 = $.child(text_4, true);
|
|
646
944
|
|
|
647
945
|
$.reset(text_4);
|
|
648
946
|
|
|
947
|
+
var node_2 = $.sibling(text_4);
|
|
948
|
+
|
|
949
|
+
{
|
|
950
|
+
var consequent = ($$anchor) => {
|
|
951
|
+
var text_6 = root_4();
|
|
952
|
+
var text_7 = $.child(text_6, true);
|
|
953
|
+
|
|
954
|
+
$.reset(text_6);
|
|
955
|
+
|
|
956
|
+
$.template_effect(() => {
|
|
957
|
+
$.set_attribute(text_6, 'x', $.get(xValue) > 0 ? -6 : 6);
|
|
958
|
+
$.set_attribute(text_6, 'text-anchor', $.get(xValue) > 0 ? "end" : "start");
|
|
959
|
+
$.set_style(text_6, `font-family: ${alloFonts ?? ''}; font-size: 14px; fill: ${alloColors.css.darkergrey ?? ''}; opacity: 0.5;`);
|
|
960
|
+
$.set_text(text_7, $.get(labelData).numbers_y);
|
|
961
|
+
});
|
|
962
|
+
|
|
963
|
+
$.append($$anchor, text_6);
|
|
964
|
+
};
|
|
965
|
+
|
|
966
|
+
$.if(node_2, ($$render) => {
|
|
967
|
+
if ($.get(labelData).numbers_y) $$render(consequent);
|
|
968
|
+
});
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
$.reset(g_3);
|
|
972
|
+
|
|
649
973
|
$.template_effect(
|
|
650
|
-
($0
|
|
651
|
-
$.set_attribute(
|
|
652
|
-
$.set_attribute(text_4, '
|
|
653
|
-
$.set_attribute(text_4, 'text-anchor',
|
|
654
|
-
$.
|
|
974
|
+
($0) => {
|
|
975
|
+
$.set_attribute(g_3, 'transform', `translate(0, ${$0 ?? ''})`);
|
|
976
|
+
$.set_attribute(text_4, 'x', $.get(xValue) > 0 ? 6 : -6);
|
|
977
|
+
$.set_attribute(text_4, 'text-anchor', $.get(xValue) > 0 ? "start" : "end");
|
|
978
|
+
$.set_style(text_4, `font-family: ${alloFonts ?? ''}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''};`);
|
|
979
|
+
$.set_text(text_5, $.get(labelData).name_y);
|
|
655
980
|
},
|
|
656
981
|
[
|
|
657
|
-
() => $.get(
|
|
658
|
-
() => $.get(yScale)($.get(label)) + $.get(yScale).bandwidth() / 2,
|
|
659
|
-
() => $.get(YX).get($.get(label)) > 0 ? "start" : "end"
|
|
982
|
+
() => $.get(yScale)($.get(label)) + $.get(yScale).bandwidth() / 2
|
|
660
983
|
]
|
|
661
984
|
);
|
|
662
985
|
|
|
663
|
-
$.append($$anchor,
|
|
986
|
+
$.append($$anchor, g_3);
|
|
664
987
|
});
|
|
665
988
|
|
|
666
|
-
$.reset(
|
|
989
|
+
$.reset(g_2);
|
|
667
990
|
$.reset(g);
|
|
991
|
+
$.reset(svg);
|
|
668
992
|
|
|
669
993
|
$.template_effect(
|
|
670
994
|
($0, $1) => {
|
|
671
|
-
$.set_attribute(
|
|
672
|
-
$.set_attribute(
|
|
995
|
+
$.set_attribute(svg, 'width', width());
|
|
996
|
+
$.set_attribute(svg, 'height', $.get(finalHeight));
|
|
997
|
+
$.set_attribute(svg, 'viewBox', `0 0 ${width() ?? ''} ${$.get(finalHeight) ?? ''}`);
|
|
998
|
+
$.set_attribute(g, 'transform', `translate(${marginLeft() ?? ''}, ${marginTop() - shiftSvgBy})`);
|
|
673
999
|
$.set_attribute(text_2, 'x', $0);
|
|
1000
|
+
$.set_style(text_2, `font-family: ${alloFonts ?? ''}; font-size: 16px; fill: ${alloColors.css.verydarkgrey ?? ''};`);
|
|
674
1001
|
$.set_text(text_3, xLabel());
|
|
675
|
-
$.set_attribute(
|
|
1002
|
+
$.set_attribute(g_2, 'transform', `translate(${$1 ?? ''}, 0)`);
|
|
676
1003
|
},
|
|
677
1004
|
[
|
|
678
1005
|
() => $.get(xScale)(0),
|
|
@@ -680,14 +1007,13 @@ function Wordshift($$anchor, $$props) {
|
|
|
680
1007
|
]
|
|
681
1008
|
);
|
|
682
1009
|
|
|
683
|
-
$.append($$anchor,
|
|
1010
|
+
$.append($$anchor, svg);
|
|
684
1011
|
$.pop();
|
|
685
1012
|
}
|
|
686
1013
|
|
|
687
|
-
var root_1$1 = $.from_svg(`<
|
|
688
|
-
var root_2$1 = $.from_svg(`<
|
|
689
|
-
var
|
|
690
|
-
var root$2 = $.from_svg(`<g class="balance-chart"><g class="grid"></g><!><g class="y-axis"></g></g>`);
|
|
1014
|
+
var root_1$1 = $.from_svg(`<rect></rect><text dy="0.35em"> </text>`, 1);
|
|
1015
|
+
var root_2$1 = $.from_svg(`<text x="0" dy="0.35em" text-anchor="middle"> </text>`);
|
|
1016
|
+
var root$2 = $.from_svg(`<svg style="overflow: visible; display: block;"><g class="balance-chart"><!><g class="y-axis"></g></g></svg>`);
|
|
691
1017
|
|
|
692
1018
|
function DivergingBarChart($$anchor, $$props) {
|
|
693
1019
|
$.push($$props, true);
|
|
@@ -700,7 +1026,10 @@ function DivergingBarChart($$anchor, $$props) {
|
|
|
700
1026
|
marginLeft = $.prop($$props, 'marginLeft', 3, 40),
|
|
701
1027
|
width = $.prop($$props, 'width', 3, 200),
|
|
702
1028
|
yPadding = $.prop($$props, 'yPadding', 3, 0.5),
|
|
703
|
-
colors = $.prop($$props, 'colors', 19, () => [
|
|
1029
|
+
colors = $.prop($$props, 'colors', 19, () => [
|
|
1030
|
+
alloColors.css.lightgrey,
|
|
1031
|
+
alloColors.css.paleblue
|
|
1032
|
+
]);
|
|
704
1033
|
|
|
705
1034
|
// Compute values (matching D3 version exactly)
|
|
706
1035
|
let X = $.derived(() => map($$props.data, x()));
|
|
@@ -729,33 +1058,12 @@ function DivergingBarChart($$anchor, $$props) {
|
|
|
729
1058
|
let xScale = $.derived(() => scaleLinear($.get(xDomain), $.get(xRange)));
|
|
730
1059
|
let yScale = $.derived(() => scaleBand().domain($.get(yDomain)).range($.get(yRange)).padding(yPadding()));
|
|
731
1060
|
let format = $.derived(() => $.get(xScale).tickFormat(100, "%"));
|
|
732
|
-
var
|
|
733
|
-
var
|
|
734
|
-
|
|
735
|
-
$.each(g_1, 21, () => $.get(xScale).ticks(width() / 80), $.index, ($$anchor, tick) => {
|
|
736
|
-
var line = root_1$1();
|
|
737
|
-
|
|
738
|
-
$.template_effect(
|
|
739
|
-
($0, $1) => {
|
|
740
|
-
$.set_attribute(line, 'x1', $0);
|
|
741
|
-
$.set_attribute(line, 'x2', $1);
|
|
742
|
-
$.set_attribute(line, 'y2', $.get(height) - marginTop() - marginBottom());
|
|
743
|
-
},
|
|
744
|
-
[
|
|
745
|
-
() => $.get(xScale)($.get(tick)),
|
|
746
|
-
() => $.get(xScale)($.get(tick))
|
|
747
|
-
]
|
|
748
|
-
);
|
|
749
|
-
|
|
750
|
-
$.append($$anchor, line);
|
|
751
|
-
});
|
|
752
|
-
|
|
753
|
-
$.reset(g_1);
|
|
754
|
-
|
|
755
|
-
var node = $.sibling(g_1);
|
|
1061
|
+
var svg = root$2();
|
|
1062
|
+
var g = $.child(svg);
|
|
1063
|
+
var node = $.child(g);
|
|
756
1064
|
|
|
757
1065
|
$.each(node, 17, () => $.get(I), $.index, ($$anchor, i) => {
|
|
758
|
-
var fragment =
|
|
1066
|
+
var fragment = root_1$1();
|
|
759
1067
|
var rect = $.first_child(fragment);
|
|
760
1068
|
var text = $.sibling(rect);
|
|
761
1069
|
var text_1 = $.child(text, true);
|
|
@@ -772,6 +1080,7 @@ function DivergingBarChart($$anchor, $$props) {
|
|
|
772
1080
|
$.set_attribute(text, 'x', $4);
|
|
773
1081
|
$.set_attribute(text, 'y', $5);
|
|
774
1082
|
$.set_attribute(text, 'text-anchor', $.get(X)[$.get(i)] < 0 ? "end" : "start");
|
|
1083
|
+
$.set_style(text, `font-family: ${alloFonts ?? ''}; font-size: 10px; fill: ${alloColors.css.darkergrey ?? ''}; opacity: 0.5;`);
|
|
775
1084
|
$.set_text(text_1, $6);
|
|
776
1085
|
},
|
|
777
1086
|
[
|
|
@@ -788,10 +1097,10 @@ function DivergingBarChart($$anchor, $$props) {
|
|
|
788
1097
|
$.append($$anchor, fragment);
|
|
789
1098
|
});
|
|
790
1099
|
|
|
791
|
-
var
|
|
1100
|
+
var g_1 = $.sibling(node);
|
|
792
1101
|
|
|
793
|
-
$.each(
|
|
794
|
-
var text_2 =
|
|
1102
|
+
$.each(g_1, 21, () => $.get(yScale).domain(), $.index, ($$anchor, label) => {
|
|
1103
|
+
var text_2 = root_2$1();
|
|
795
1104
|
var text_3 = $.child(text_2, true);
|
|
796
1105
|
|
|
797
1106
|
$.reset(text_2);
|
|
@@ -800,6 +1109,7 @@ function DivergingBarChart($$anchor, $$props) {
|
|
|
800
1109
|
($0, $1) => {
|
|
801
1110
|
$.set_attribute(text_2, 'y', $0);
|
|
802
1111
|
$.set_attribute(text_2, 'opacity', $1);
|
|
1112
|
+
$.set_style(text_2, `font-family: ${alloFonts ?? ''}; font-size: 14px; fill: ${alloColors.css.darkergrey ?? ''};`);
|
|
803
1113
|
$.set_text(text_3, $.get(label));
|
|
804
1114
|
},
|
|
805
1115
|
[
|
|
@@ -811,60 +1121,61 @@ function DivergingBarChart($$anchor, $$props) {
|
|
|
811
1121
|
$.append($$anchor, text_2);
|
|
812
1122
|
});
|
|
813
1123
|
|
|
814
|
-
$.reset(
|
|
1124
|
+
$.reset(g_1);
|
|
815
1125
|
$.reset(g);
|
|
1126
|
+
$.reset(svg);
|
|
816
1127
|
|
|
817
1128
|
$.template_effect(
|
|
818
1129
|
($0) => {
|
|
819
|
-
$.set_attribute(
|
|
820
|
-
$.set_attribute(
|
|
821
|
-
$.set_attribute(
|
|
1130
|
+
$.set_attribute(svg, 'width', width());
|
|
1131
|
+
$.set_attribute(svg, 'height', $.get(height));
|
|
1132
|
+
$.set_attribute(svg, 'viewBox', `0 0 ${width() ?? ''} ${$.get(height) ?? ''}`);
|
|
1133
|
+
$.set_attribute(g_1, 'transform', `translate(${$0 ?? ''}, -12)`);
|
|
822
1134
|
},
|
|
823
1135
|
[() => $.get(xScale)(0)]
|
|
824
1136
|
);
|
|
825
1137
|
|
|
826
|
-
$.append($$anchor,
|
|
1138
|
+
$.append($$anchor, svg);
|
|
827
1139
|
$.pop();
|
|
828
1140
|
}
|
|
829
1141
|
|
|
830
|
-
var root_1 = $.from_svg(`<rect
|
|
831
|
-
var
|
|
832
|
-
var
|
|
833
|
-
var root$1 = $.from_svg(`<g class="legend-container"></g><!>`, 1);
|
|
1142
|
+
var root_1 = $.from_svg(`<rect transform="rotate(-90) translate(-70,0)" style="stroke: black; stroke-width: 0.65; shape-rendering: crispEdges;"></rect>`);
|
|
1143
|
+
var root_2 = $.from_svg(`<g class="tick"><text dx="30" dy="-30" transform="rotate(90)"> </text></g>`);
|
|
1144
|
+
var root$1 = $.from_svg(`<svg style="overflow: visible; display: block;"><!><g transform="rotate(-90) translate(-60,5)"><!><text class="title" dx="30" dy="-5" transform="rotate(90)">Counts per cell</text></g></svg>`);
|
|
834
1145
|
|
|
835
1146
|
function Legend($$anchor, $$props) {
|
|
836
1147
|
$.push($$props, true);
|
|
837
1148
|
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
let
|
|
849
|
-
let
|
|
850
|
-
|
|
851
|
-
var
|
|
852
|
-
var g = $.first_child(fragment);
|
|
853
|
-
|
|
854
|
-
$.each(g, 21, () => color.domain(), $.index, ($$anchor, d) => {
|
|
855
|
-
var rect = root_1();
|
|
1149
|
+
let tickSize = $.prop($$props, 'tickSize', 3, 0),
|
|
1150
|
+
height = $.prop($$props, 'height', 19, () => 44 + tickSize()),
|
|
1151
|
+
width = $.prop($$props, 'width', 3, 300),
|
|
1152
|
+
marginTop = $.prop($$props, 'marginTop', 3, 13),
|
|
1153
|
+
marginBottom = $.prop($$props, 'marginBottom', 19, () => 16 + tickSize()),
|
|
1154
|
+
marginLeft = $.prop($$props, 'marginLeft', 3, 0),
|
|
1155
|
+
N_CATEGO = $.prop($$props, 'N_CATEGO', 3, 20);
|
|
1156
|
+
|
|
1157
|
+
const myramp = range(N_CATEGO()).map((i) => rgb(interpolateInferno(i / (N_CATEGO() - 1))).hex());
|
|
1158
|
+
const color = scaleOrdinal(range(N_CATEGO()), myramp);
|
|
1159
|
+
let x = $.derived(() => scaleBand().domain(color.domain()).rangeRound([marginLeft(), width() - 100]));
|
|
1160
|
+
let x2 = $.derived(() => scaleBand().domain(range($$props.max_count_log).map((i) => 10 ** i).sort((a, b) => b - a)).rangeRound([marginLeft() - 40, width() - 90]));
|
|
1161
|
+
var svg = root$1();
|
|
1162
|
+
var node = $.child(svg);
|
|
856
1163
|
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
$.set_attribute(rect, 'height', 13);
|
|
1164
|
+
$.each(node, 17, () => color.domain(), $.index, ($$anchor, d) => {
|
|
1165
|
+
var rect = root_1();
|
|
860
1166
|
|
|
861
1167
|
$.template_effect(
|
|
862
|
-
($0, $1) => {
|
|
863
|
-
$.set_attribute(rect, '
|
|
864
|
-
$.set_attribute(rect, '
|
|
1168
|
+
($0, $1, $2, $3) => {
|
|
1169
|
+
$.set_attribute(rect, 'x', $0);
|
|
1170
|
+
$.set_attribute(rect, 'y', marginTop());
|
|
1171
|
+
$.set_attribute(rect, 'width', $1);
|
|
1172
|
+
$.set_attribute(rect, 'height', $2);
|
|
1173
|
+
$.set_attribute(rect, 'fill', $3);
|
|
865
1174
|
},
|
|
866
1175
|
[
|
|
867
|
-
() => $.get(
|
|
1176
|
+
() => $.get(x)($.get(d)),
|
|
1177
|
+
() => Math.max(0, $.get(x).bandwidth()),
|
|
1178
|
+
() => $.get(x).bandwidth(),
|
|
868
1179
|
() => color($.get(d))
|
|
869
1180
|
]
|
|
870
1181
|
);
|
|
@@ -872,62 +1183,48 @@ function Legend($$anchor, $$props) {
|
|
|
872
1183
|
$.append($$anchor, rect);
|
|
873
1184
|
});
|
|
874
1185
|
|
|
875
|
-
$.
|
|
1186
|
+
var g = $.sibling(node);
|
|
1187
|
+
var node_1 = $.child(g);
|
|
876
1188
|
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
$.each(node, 17, () => $.get(yTicks), $.index, ($$anchor, tick, i) => {
|
|
880
|
-
var fragment_1 = root_2();
|
|
881
|
-
var g_1 = $.first_child(fragment_1);
|
|
1189
|
+
$.each(node_1, 17, () => $.get(x2).domain(), $.index, ($$anchor, tick) => {
|
|
1190
|
+
var g_1 = root_2();
|
|
882
1191
|
var text = $.child(g_1);
|
|
883
1192
|
var text_1 = $.child(text, true);
|
|
884
1193
|
|
|
885
1194
|
$.reset(text);
|
|
886
1195
|
$.reset(g_1);
|
|
887
1196
|
|
|
888
|
-
var node_1 = $.sibling(g_1);
|
|
889
|
-
|
|
890
|
-
{
|
|
891
|
-
var consequent = ($$anchor) => {
|
|
892
|
-
var g_2 = root_3();
|
|
893
|
-
var text_2 = $.child(g_2);
|
|
894
|
-
|
|
895
|
-
$.set_attribute(text_2, 'dy', "9");
|
|
896
|
-
$.reset(g_2);
|
|
897
|
-
|
|
898
|
-
$.template_effect(($0) => $.set_attribute(g_2, 'transform', `translate(${margin.left}, ${$0 ?? ''})`), [
|
|
899
|
-
() => $$props.DiamondHeight + $.get(logY)($.get(tick)) - margin.top
|
|
900
|
-
]);
|
|
901
|
-
|
|
902
|
-
$.append($$anchor, g_2);
|
|
903
|
-
};
|
|
904
|
-
|
|
905
|
-
$.if(node_1, ($$render) => {
|
|
906
|
-
if (i === $.get(yTicks).length - 1) $$render(consequent);
|
|
907
|
-
});
|
|
908
|
-
}
|
|
909
|
-
|
|
910
1197
|
$.template_effect(
|
|
911
|
-
($0
|
|
912
|
-
$.set_attribute(g_1, 'transform', `translate(${
|
|
913
|
-
$.
|
|
914
|
-
$.set_text(text_1,
|
|
1198
|
+
($0) => {
|
|
1199
|
+
$.set_attribute(g_1, 'transform', `translate(${$0 ?? ''}, 0)`);
|
|
1200
|
+
$.set_style(text, `font-family: ${alloFonts ?? ''}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''}; text-anchor: start;`);
|
|
1201
|
+
$.set_text(text_1, $.get(tick));
|
|
915
1202
|
},
|
|
916
|
-
[
|
|
917
|
-
() => $$props.DiamondHeight + $.get(logY)($.get(tick)) - margin.top,
|
|
918
|
-
() => $.get(logFormat10)($.get(tick))
|
|
919
|
-
]
|
|
1203
|
+
[() => $.get(x2)($.get(tick))]
|
|
920
1204
|
);
|
|
921
1205
|
|
|
922
|
-
$.append($$anchor,
|
|
1206
|
+
$.append($$anchor, g_1);
|
|
1207
|
+
});
|
|
1208
|
+
|
|
1209
|
+
var text_2 = $.sibling(node_1);
|
|
1210
|
+
|
|
1211
|
+
$.reset(g);
|
|
1212
|
+
$.reset(svg);
|
|
1213
|
+
|
|
1214
|
+
$.template_effect(() => {
|
|
1215
|
+
$.set_attribute(svg, 'width', width());
|
|
1216
|
+
$.set_attribute(svg, 'height', height());
|
|
1217
|
+
$.set_attribute(svg, 'viewBox', `0 0 ${width() ?? ''} ${height() ?? ''}`);
|
|
1218
|
+
$.set_attribute(text_2, 'x', marginLeft() - 25);
|
|
1219
|
+
$.set_attribute(text_2, 'y', marginTop() + marginBottom());
|
|
1220
|
+
$.set_style(text_2, `font-family: ${alloFonts ?? ''}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''}; text-anchor: start;`);
|
|
923
1221
|
});
|
|
924
1222
|
|
|
925
|
-
$.
|
|
926
|
-
$.append($$anchor, fragment);
|
|
1223
|
+
$.append($$anchor, svg);
|
|
927
1224
|
$.pop();
|
|
928
1225
|
}
|
|
929
1226
|
|
|
930
|
-
var root = $.from_html(`<div
|
|
1227
|
+
var root = $.from_html(`<div id="allotaxonometer-dashboard" style="position: relative; margin: 0; padding: 0;"><div style="display:flex; flex-wrap: wrap; align-items:center; justify-content: center; row-gap: 50px;"><div id="diamond-group" style="margin-top:20px; margin-right: -50px;"><div style="display:flex; gap: 10em; justify-content: center; margin-bottom: -70px; margin-right: 70px; position: relative;"><div style="position: relative;"><div> </div> <div><div style="margin-bottom: 0.5em;"> </div> <div> </div></div></div> <div> </div></div> <div id="diamondplot"><!></div> <div style="display: flex; gap: 13em; justify-content: center;"><div id="legend" style="margin-left: -50px;"><!></div> <div id="balance"><!></div></div></div> <div style="margin-top:60px; overflow: visible;"><div id="wordshift" style="overflow: visible;"><!></div></div></div></div>`);
|
|
931
1228
|
|
|
932
1229
|
function Dashboard($$anchor, $$props) {
|
|
933
1230
|
$.push($$props, true);
|
|
@@ -938,51 +1235,24 @@ function Dashboard($$anchor, $$props) {
|
|
|
938
1235
|
barData = $.prop($$props, 'barData', 19, () => []),
|
|
939
1236
|
balanceData = $.prop($$props, 'balanceData', 19, () => []),
|
|
940
1237
|
xDomain = $.prop($$props, 'xDomain', 3, undefined),
|
|
1238
|
+
instrumentText = $.prop($$props, 'instrumentText', 3, 'Instrument: Rank-Turbulence Divergence'),
|
|
941
1239
|
title = $.prop($$props, 'title', 19, () => ['System 1', 'System 2']),
|
|
942
|
-
maxlog10 = $.prop($$props, 'maxlog10', 3, 0)
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
DashboardHeight = $.prop($$props, 'DashboardHeight', 3, 815),
|
|
1240
|
+
maxlog10 = $.prop($$props, 'maxlog10', 3, 0);
|
|
1241
|
+
$.prop($$props, 'height', 3, 815);
|
|
1242
|
+
$.prop($$props, 'width', 3, 1200);
|
|
1243
|
+
let DashboardHeight = $.prop($$props, 'DashboardHeight', 3, 815),
|
|
946
1244
|
DashboardWidth = $.prop($$props, 'DashboardWidth', 3, 1200),
|
|
947
1245
|
DiamondHeight = $.prop($$props, 'DiamondHeight', 3, 600),
|
|
948
1246
|
DiamondWidth = $.prop($$props, 'DiamondWidth', 3, 600),
|
|
949
1247
|
marginInner = $.prop($$props, 'marginInner', 3, 160),
|
|
950
1248
|
marginDiamond = $.prop($$props, 'marginDiamond', 3, 40),
|
|
951
|
-
max_count_log = $.prop($$props, 'max_count_log', 3, undefined)
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
restProps = $.rest_props($$props, [
|
|
959
|
-
'$$slots',
|
|
960
|
-
'$$events',
|
|
961
|
-
'$$legacy',
|
|
962
|
-
'dat',
|
|
963
|
-
'alpha',
|
|
964
|
-
'divnorm',
|
|
965
|
-
'barData',
|
|
966
|
-
'balanceData',
|
|
967
|
-
'xDomain',
|
|
968
|
-
'title',
|
|
969
|
-
'maxlog10',
|
|
970
|
-
'height',
|
|
971
|
-
'width',
|
|
972
|
-
'DashboardHeight',
|
|
973
|
-
'DashboardWidth',
|
|
974
|
-
'DiamondHeight',
|
|
975
|
-
'DiamondWidth',
|
|
976
|
-
'marginInner',
|
|
977
|
-
'marginDiamond',
|
|
978
|
-
'max_count_log',
|
|
979
|
-
'class',
|
|
980
|
-
'style',
|
|
981
|
-
'showDiamond',
|
|
982
|
-
'showWordshift',
|
|
983
|
-
'showDivergingBar',
|
|
984
|
-
'showLegend'
|
|
985
|
-
]);
|
|
1249
|
+
max_count_log = $.prop($$props, 'max_count_log', 3, undefined);
|
|
1250
|
+
$.prop($$props, 'class', 3, '');
|
|
1251
|
+
$.prop($$props, 'style', 3, '');
|
|
1252
|
+
$.prop($$props, 'showDiamond', 3, true);
|
|
1253
|
+
$.prop($$props, 'showWordshift', 3, true);
|
|
1254
|
+
$.prop($$props, 'showDivergingBar', 3, true);
|
|
1255
|
+
$.prop($$props, 'showLegend', 3, true);
|
|
986
1256
|
|
|
987
1257
|
let max_shift = $.derived(() => barData().length > 0 ? Math.max(...barData().map((d) => Math.abs(d.metric))) : 1);
|
|
988
1258
|
|
|
@@ -992,133 +1262,138 @@ function Dashboard($$anchor, $$props) {
|
|
|
992
1262
|
]);
|
|
993
1263
|
|
|
994
1264
|
var div = root();
|
|
1265
|
+
var div_1 = $.child(div);
|
|
1266
|
+
var div_2 = $.child(div_1);
|
|
1267
|
+
var div_3 = $.child(div_2);
|
|
1268
|
+
var div_4 = $.child(div_3);
|
|
1269
|
+
var div_5 = $.child(div_4);
|
|
1270
|
+
var text = $.child(div_5, true);
|
|
995
1271
|
|
|
996
|
-
$.
|
|
997
|
-
div,
|
|
998
|
-
() => ({
|
|
999
|
-
class: `allotaxonometer-dashboard ${className() ?? ''}`,
|
|
1000
|
-
style: style(),
|
|
1001
|
-
...restProps
|
|
1002
|
-
}),
|
|
1003
|
-
undefined,
|
|
1004
|
-
'svelte-n6o6ey'
|
|
1005
|
-
);
|
|
1272
|
+
$.reset(div_5);
|
|
1006
1273
|
|
|
1007
|
-
var
|
|
1008
|
-
var
|
|
1274
|
+
var div_6 = $.sibling(div_5, 2);
|
|
1275
|
+
var div_7 = $.child(div_6);
|
|
1276
|
+
var text_1 = $.child(div_7, true);
|
|
1009
1277
|
|
|
1010
|
-
|
|
1011
|
-
var consequent = ($$anchor) => {
|
|
1012
|
-
Diamond($$anchor, {
|
|
1013
|
-
get dat() {
|
|
1014
|
-
return dat();
|
|
1015
|
-
},
|
|
1016
|
-
get alpha() {
|
|
1017
|
-
return alpha();
|
|
1018
|
-
},
|
|
1019
|
-
get divnorm() {
|
|
1020
|
-
return divnorm();
|
|
1021
|
-
},
|
|
1022
|
-
get title() {
|
|
1023
|
-
return title();
|
|
1024
|
-
},
|
|
1025
|
-
get maxlog10() {
|
|
1026
|
-
return maxlog10();
|
|
1027
|
-
},
|
|
1028
|
-
get DiamondHeight() {
|
|
1029
|
-
return DiamondHeight();
|
|
1030
|
-
},
|
|
1031
|
-
get marginInner() {
|
|
1032
|
-
return marginInner();
|
|
1033
|
-
},
|
|
1034
|
-
get marginDiamond() {
|
|
1035
|
-
return marginDiamond();
|
|
1036
|
-
}
|
|
1037
|
-
});
|
|
1038
|
-
};
|
|
1278
|
+
$.reset(div_7);
|
|
1039
1279
|
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
});
|
|
1043
|
-
}
|
|
1280
|
+
var div_8 = $.sibling(div_7, 2);
|
|
1281
|
+
var text_2 = $.child(div_8);
|
|
1044
1282
|
|
|
1045
|
-
|
|
1283
|
+
$.reset(div_8);
|
|
1284
|
+
$.reset(div_6);
|
|
1285
|
+
$.reset(div_4);
|
|
1046
1286
|
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
Wordshift($$anchor, {
|
|
1050
|
-
get barData() {
|
|
1051
|
-
return barData();
|
|
1052
|
-
},
|
|
1053
|
-
get DashboardHeight() {
|
|
1054
|
-
return DashboardHeight();
|
|
1055
|
-
},
|
|
1056
|
-
get DashboardWidth() {
|
|
1057
|
-
return DashboardWidth();
|
|
1058
|
-
},
|
|
1059
|
-
get xDomain() {
|
|
1060
|
-
return $.get(wordshiftXDomain);
|
|
1061
|
-
},
|
|
1062
|
-
width: 640,
|
|
1063
|
-
marginLeft: 140
|
|
1064
|
-
});
|
|
1065
|
-
};
|
|
1287
|
+
var div_9 = $.sibling(div_4, 2);
|
|
1288
|
+
var text_3 = $.child(div_9, true);
|
|
1066
1289
|
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
});
|
|
1070
|
-
}
|
|
1290
|
+
$.reset(div_9);
|
|
1291
|
+
$.reset(div_3);
|
|
1071
1292
|
|
|
1072
|
-
var
|
|
1293
|
+
var div_10 = $.sibling(div_3, 2);
|
|
1294
|
+
var node = $.child(div_10);
|
|
1073
1295
|
|
|
1074
|
-
{
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1296
|
+
Diamond(node, {
|
|
1297
|
+
get dat() {
|
|
1298
|
+
return dat();
|
|
1299
|
+
},
|
|
1300
|
+
get alpha() {
|
|
1301
|
+
return alpha();
|
|
1302
|
+
},
|
|
1303
|
+
get divnorm() {
|
|
1304
|
+
return divnorm();
|
|
1305
|
+
},
|
|
1306
|
+
get title() {
|
|
1307
|
+
return title();
|
|
1308
|
+
},
|
|
1309
|
+
get maxlog10() {
|
|
1310
|
+
return maxlog10();
|
|
1311
|
+
},
|
|
1312
|
+
get DiamondHeight() {
|
|
1313
|
+
return DiamondHeight();
|
|
1314
|
+
},
|
|
1315
|
+
get marginInner() {
|
|
1316
|
+
return marginInner();
|
|
1317
|
+
},
|
|
1318
|
+
get marginDiamond() {
|
|
1319
|
+
return marginDiamond();
|
|
1320
|
+
}
|
|
1321
|
+
});
|
|
1088
1322
|
|
|
1089
|
-
|
|
1090
|
-
if (showDivergingBar() && balanceData().length > 0) $$render(consequent_2);
|
|
1091
|
-
});
|
|
1092
|
-
}
|
|
1323
|
+
$.reset(div_10);
|
|
1093
1324
|
|
|
1094
|
-
var
|
|
1325
|
+
var div_11 = $.sibling(div_10, 2);
|
|
1326
|
+
var div_12 = $.child(div_11);
|
|
1327
|
+
var node_1 = $.child(div_12);
|
|
1328
|
+
const expression = $.derived(() => max_count_log() || 5);
|
|
1095
1329
|
|
|
1096
|
-
{
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
}
|
|
1108
|
-
});
|
|
1109
|
-
};
|
|
1330
|
+
Legend(node_1, {
|
|
1331
|
+
get diamond_dat() {
|
|
1332
|
+
return dat().counts;
|
|
1333
|
+
},
|
|
1334
|
+
get DiamondHeight() {
|
|
1335
|
+
return DiamondHeight();
|
|
1336
|
+
},
|
|
1337
|
+
get max_count_log() {
|
|
1338
|
+
return $.get(expression);
|
|
1339
|
+
}
|
|
1340
|
+
});
|
|
1110
1341
|
|
|
1111
|
-
|
|
1112
|
-
if (showLegend() && dat()) $$render(consequent_3);
|
|
1113
|
-
});
|
|
1114
|
-
}
|
|
1342
|
+
$.reset(div_12);
|
|
1115
1343
|
|
|
1116
|
-
$.
|
|
1344
|
+
var div_13 = $.sibling(div_12, 2);
|
|
1345
|
+
var node_2 = $.child(div_13);
|
|
1346
|
+
|
|
1347
|
+
DivergingBarChart(node_2, {
|
|
1348
|
+
get data() {
|
|
1349
|
+
return balanceData();
|
|
1350
|
+
},
|
|
1351
|
+
get DiamondHeight() {
|
|
1352
|
+
return DiamondHeight();
|
|
1353
|
+
},
|
|
1354
|
+
get DiamondWidth() {
|
|
1355
|
+
return DiamondWidth();
|
|
1356
|
+
}
|
|
1357
|
+
});
|
|
1358
|
+
|
|
1359
|
+
$.reset(div_13);
|
|
1360
|
+
$.reset(div_11);
|
|
1361
|
+
$.reset(div_2);
|
|
1362
|
+
|
|
1363
|
+
var div_14 = $.sibling(div_2, 2);
|
|
1364
|
+
var div_15 = $.child(div_14);
|
|
1365
|
+
var node_3 = $.child(div_15);
|
|
1366
|
+
|
|
1367
|
+
Wordshift(node_3, {
|
|
1368
|
+
get barData() {
|
|
1369
|
+
return barData();
|
|
1370
|
+
},
|
|
1371
|
+
get DashboardHeight() {
|
|
1372
|
+
return DashboardHeight();
|
|
1373
|
+
},
|
|
1374
|
+
get DashboardWidth() {
|
|
1375
|
+
return DashboardWidth();
|
|
1376
|
+
},
|
|
1377
|
+
get xDomain() {
|
|
1378
|
+
return $.get(wordshiftXDomain);
|
|
1379
|
+
},
|
|
1380
|
+
width: 640,
|
|
1381
|
+
marginLeft: 110
|
|
1382
|
+
});
|
|
1383
|
+
|
|
1384
|
+
$.reset(div_15);
|
|
1385
|
+
$.reset(div_14);
|
|
1386
|
+
$.reset(div_1);
|
|
1117
1387
|
$.reset(div);
|
|
1118
1388
|
|
|
1119
1389
|
$.template_effect(() => {
|
|
1120
|
-
$.
|
|
1121
|
-
$.
|
|
1390
|
+
$.set_style(div_5, `font-family: ${alloFonts ?? ''}; font-size: 16px; color: ${alloColors.css.superdarkgrey ?? ''};`);
|
|
1391
|
+
$.set_text(text, title()[0]);
|
|
1392
|
+
$.set_style(div_6, `position: absolute; top: 100%; left: -14em; margin-top: 2.5em; font-family: ${alloFonts ?? ''}; font-size: 14px; color: ${alloColors.css.darkgrey ?? ''}; width: 300px; line-height: 1;`);
|
|
1393
|
+
$.set_text(text_1, instrumentText());
|
|
1394
|
+
$.set_text(text_2, `α = ${alpha() ?? ''}`);
|
|
1395
|
+
$.set_style(div_9, `font-family: ${alloFonts ?? ''}; font-size: 16px; color: ${alloColors.css.superdarkgrey ?? ''};`);
|
|
1396
|
+
$.set_text(text_3, title()[1]);
|
|
1122
1397
|
});
|
|
1123
1398
|
|
|
1124
1399
|
$.append($$anchor, div);
|