From 10aaee3931500baa2d39a49930941633ba92a417 Mon Sep 17 00:00:00 2001 From: george haff Date: Tue, 1 Apr 2025 17:16:47 -0400 Subject: [PATCH 1/6] dont overwrite 'title' with 'customtitle' to hopefully fix reshare --- src/components/Chart.svelte | 2 +- src/components/LeftMenu.svelte | 2 +- src/components/tree/TreeInnerNode.svelte | 4 ++-- src/components/tree/TreeLeafNode.svelte | 2 +- src/data/DataSet.ts | 8 ++++++++ src/deriveLinkDefaults.ts | 12 +++++++----- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/components/Chart.svelte b/src/components/Chart.svelte index 66dd4ef..e24a4a7 100644 --- a/src/components/Chart.svelte +++ b/src/components/Chart.svelte @@ -751,7 +751,7 @@ let labelOffset = 0; for (const ds of datasets) { ctx.fillStyle = ds.color; - const label = `— ${ds.title}`; + const label = `— ${ds.displayTitle()}`; drawText(ctx, label, width - 10, height - 10 - labelOffset, 0, Align.right, Align.bottom); labelOffset += 12; } diff --git a/src/components/LeftMenu.svelte b/src/components/LeftMenu.svelte index a4e5652..6bc6e1f 100644 --- a/src/components/LeftMenu.svelte +++ b/src/components/LeftMenu.svelte @@ -13,7 +13,7 @@
- {#each $datasetTree.datasets as child (child.title)} + {#each $datasetTree.datasets as child (child.displayTitle())} {#if child instanceof DataSet} {:else} diff --git a/src/components/tree/TreeInnerNode.svelte b/src/components/tree/TreeInnerNode.svelte index 82a5a4d..9cc2b5c 100644 --- a/src/components/tree/TreeInnerNode.svelte +++ b/src/components/tree/TreeInnerNode.svelte @@ -24,11 +24,11 @@ - {node.title} + {node.displayTitle()} {#if expanded} - {#each node.datasets as child (child.title)} + {#each node.datasets as child (child.displayTitle())} {#if child instanceof DataSet} {:else} diff --git a/src/components/tree/TreeLeafNode.svelte b/src/components/tree/TreeLeafNode.svelte index 43e6466..1899e3e 100644 --- a/src/components/tree/TreeLeafNode.svelte +++ b/src/components/tree/TreeLeafNode.svelte @@ -35,7 +35,7 @@ > - {node.title} + {node.displayTitle()}
diff --git a/src/data/DataSet.ts b/src/data/DataSet.ts index 261da90..ae8dd0e 100644 --- a/src/data/DataSet.ts +++ b/src/data/DataSet.ts @@ -34,6 +34,10 @@ export default class DataSet { this.gap = computeGap(data); } + displayTitle(): string { + return this.customTitle || this.title; + } + randomize(): void { this.color = getRandomColor(); } @@ -108,6 +112,10 @@ export class DataGroup { constructor(public readonly title: string, public readonly datasets: (DataSet | DataGroup)[]) {} + displayTitle(): string { + return this.title; + } + flat(arr: DataSet[]): void { for (const child of this.datasets) { if (child instanceof DataSet) { diff --git a/src/deriveLinkDefaults.ts b/src/deriveLinkDefaults.ts index 5256152..676c30c 100644 --- a/src/deriveLinkDefaults.ts +++ b/src/deriveLinkDefaults.ts @@ -182,9 +182,7 @@ export function initialLoader(datasets: ILinkConfig['datasets']) { return Promise.all(resolvedDataSets).then((data) => { const cleaned = data.filter((d): d is DataSet => d != null); cleaned.forEach((d) => { - if (d.customTitle) { - d.title = d.customTitle; - } + // TODO: is this necessary?? add(d); }); return cleaned; @@ -228,11 +226,15 @@ export function getDirectLinkImpl(state: SharedState): { url: URL; anySkipped: b let anySkipped = false; state.active.forEach((data) => { if (data.params) { - config.datasets.push({ + let ds = { color: data.color, title: data.title, params: data.params as unknown as Record, - }); + }; + if (data.customTitle) { + ds.params.custom_title = data.customTitle; + } + config.datasets.push(ds); } else { console.log('unable to get direct link to dataset:', data.title); anySkipped = true; From 4a611063c019f2aa6ecee62035e3600351f190f8 Mon Sep 17 00:00:00 2001 From: george haff Date: Tue, 1 Apr 2025 17:21:40 -0400 Subject: [PATCH 2/6] appease linter --- src/deriveLinkDefaults.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deriveLinkDefaults.ts b/src/deriveLinkDefaults.ts index 676c30c..aa6892d 100644 --- a/src/deriveLinkDefaults.ts +++ b/src/deriveLinkDefaults.ts @@ -226,7 +226,7 @@ export function getDirectLinkImpl(state: SharedState): { url: URL; anySkipped: b let anySkipped = false; state.active.forEach((data) => { if (data.params) { - let ds = { + const ds = { color: data.color, title: data.title, params: data.params as unknown as Record, From 174e7dd0d95a486ae9fd05f09ce9d28c277551fa Mon Sep 17 00:00:00 2001 From: george haff Date: Tue, 1 Apr 2025 17:34:50 -0400 Subject: [PATCH 3/6] comments --- src/data/DataSet.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/data/DataSet.ts b/src/data/DataSet.ts index ae8dd0e..03d08c7 100644 --- a/src/data/DataSet.ts +++ b/src/data/DataSet.ts @@ -35,6 +35,7 @@ export default class DataSet { } displayTitle(): string { + // for display to user; use custom title if available, otherwise default to title return this.customTitle || this.title; } @@ -113,6 +114,7 @@ export class DataGroup { constructor(public readonly title: string, public readonly datasets: (DataSet | DataGroup)[]) {} displayTitle(): string { + // for interface compatibility with `DataSet.displayTitle()` return this.title; } From 0455a66d8c276689ee9cc86ef343f979e4d7945b Mon Sep 17 00:00:00 2001 From: george haff Date: Tue, 1 Apr 2025 17:44:18 -0400 Subject: [PATCH 4/6] attempting removal of potentially superfluous add() call --- src/deriveLinkDefaults.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/deriveLinkDefaults.ts b/src/deriveLinkDefaults.ts index aa6892d..0b46930 100644 --- a/src/deriveLinkDefaults.ts +++ b/src/deriveLinkDefaults.ts @@ -179,14 +179,7 @@ export function initialLoader(datasets: ILinkConfig['datasets']) { } } - return Promise.all(resolvedDataSets).then((data) => { - const cleaned = data.filter((d): d is DataSet => d != null); - cleaned.forEach((d) => { - // TODO: is this necessary?? - add(d); - }); - return cleaned; - }); + return Promise.all(resolvedDataSets).then((data) => data.filter((d): d is DataSet => d != null)); }; } From 9032792587e2d4732e6b139f8b03306b8abc7b34 Mon Sep 17 00:00:00 2001 From: george haff Date: Tue, 1 Apr 2025 18:06:31 -0400 Subject: [PATCH 5/6] 'add()' call is indeed necessary (...to display signals in left menu, though they will show up on the canvas w/o it) --- src/deriveLinkDefaults.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/deriveLinkDefaults.ts b/src/deriveLinkDefaults.ts index 0b46930..7d389c8 100644 --- a/src/deriveLinkDefaults.ts +++ b/src/deriveLinkDefaults.ts @@ -180,6 +180,11 @@ export function initialLoader(datasets: ILinkConfig['datasets']) { } return Promise.all(resolvedDataSets).then((data) => data.filter((d): d is DataSet => d != null)); + return Promise.all(resolvedDataSets).then((data) => { + const cleaned = data.filter((d): d is DataSet => d != null); + cleaned.forEach((d) => add(d)); + return cleaned; + }); }; } From d340fec55334eecec364a57ddf4d21798ae9e38c Mon Sep 17 00:00:00 2001 From: george haff Date: Tue, 1 Apr 2025 18:13:48 -0400 Subject: [PATCH 6/6] lol oops --- src/deriveLinkDefaults.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/deriveLinkDefaults.ts b/src/deriveLinkDefaults.ts index 7d389c8..23ea337 100644 --- a/src/deriveLinkDefaults.ts +++ b/src/deriveLinkDefaults.ts @@ -179,7 +179,6 @@ export function initialLoader(datasets: ILinkConfig['datasets']) { } } - return Promise.all(resolvedDataSets).then((data) => data.filter((d): d is DataSet => d != null)); return Promise.all(resolvedDataSets).then((data) => { const cleaned = data.filter((d): d is DataSet => d != null); cleaned.forEach((d) => add(d));