diff --git a/package-lock.json b/package-lock.json index 05f8dfb..a87a576 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@agnosticeng/cache": "^0.0.3", - "@agnosticeng/dv": "^0.0.4", + "@agnosticeng/dv": "^0.0.5", "@agnosticeng/migrate": "^0.0.2", "@agnosticeng/sqlite": "^0.0.5", "@observablehq/plot": "^0.6.16", @@ -49,9 +49,9 @@ "integrity": "sha512-sSi8wX3UkcG/1rXcDPGi2PQc8SP9arFM2ycKmbFqIwR2cmaYaZjUXIphZLXf8XywGSqxSzbbr2AR62KM2MwctA==" }, "node_modules/@agnosticeng/dv": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@agnosticeng/dv/-/dv-0.0.4.tgz", - "integrity": "sha512-VZrA8mYrQpjNYVwysD6KOGIp7SQiTg6kSmKDcIjlCmGBufQm0PjUZClWkfUht1WuPJ2UT7URl6l2nTkWBwXFzw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@agnosticeng/dv/-/dv-0.0.5.tgz", + "integrity": "sha512-vcdZXbfPJQFeFqN/zaFb88sV9jUSOxYaNAv/AlEIDuX3J63FAiYkAFlU7HY3peXYtIUfBGRMaGSkzfEuIsmFuA==", "dependencies": { "@observablehq/plot": "^0.6.16", "d3": "^7.9.0" diff --git a/package.json b/package.json index a8aafd7..7f5cad8 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "license": "MIT", "dependencies": { "@agnosticeng/cache": "^0.0.3", - "@agnosticeng/dv": "^0.0.4", + "@agnosticeng/dv": "^0.0.5", "@agnosticeng/migrate": "^0.0.2", "@agnosticeng/sqlite": "^0.0.5", "@observablehq/plot": "^0.6.16", diff --git a/src/lib/components/Chart/Container.svelte b/src/lib/components/Chart/Container.svelte index 56aded6..265b02d 100644 --- a/src/lib/components/Chart/Container.svelte +++ b/src/lib/components/Chart/Container.svelte @@ -26,24 +26,24 @@ ); if (dateColumn && hasCandleColumns) { - settings.chartType = 'candle'; - settings.xAxis.series = [dateColumn]; - settings.yAxis.series = candleColumns; + settings.type = 'candle'; + settings.x = dateColumn; + settings.y = candleColumns; return; } if (dateColumn && otherColumns.length > 0) { - settings.chartType = 'line'; - settings.xAxis.series = [dateColumn]; - settings.yAxis.series = otherColumns; + settings.type = 'line'; + settings.x = dateColumn; + settings.y = otherColumns; return; } } let settings = $state({ - chartType: 'line', - xAxis: { series: [] }, - yAxis: { series: [] } + type: 'line', + x: '', + y: [] }); $effect(() => { @@ -53,7 +53,7 @@ }); $effect(() => { - if (settings.xAxis.series.length === 0 && settings.yAxis.series.length === 0) { + if (settings.x.length === 0 && settings.y.length === 0) { setDefaultSettings(); } }); diff --git a/src/lib/components/Chart/Settings.svelte b/src/lib/components/Chart/Settings.svelte index c274cf4..7394463 100644 --- a/src/lib/components/Chart/Settings.svelte +++ b/src/lib/components/Chart/Settings.svelte @@ -18,19 +18,29 @@ const handleChartTypeChange = (event: Event) => { const select = event.target as HTMLSelectElement; - settings.chartType = select.value as 'candle' | 'line'; + settings.type = select.value as 'candle' | 'line' | 'bar'; + if (settings.type !== 'bar') { + settings.z = undefined; + } }; const handleXAxisChange = (event: Event) => { const select = event.target as HTMLSelectElement; - const selectedOptions = Array.from(select.selectedOptions).map((option) => option.value); - settings.xAxis.series = selectedOptions; + const options = Array.from(select.options).map((o) => o.value); + settings.x = options[select.selectedIndex]; }; const handleYAxisChange = (event: Event) => { const select = event.target as HTMLSelectElement; const selectedOptions = Array.from(select.selectedOptions).map((option) => option.value); - settings.yAxis.series = selectedOptions; + settings.y = selectedOptions; + }; + + const handleZAxisChange = (event: Event) => { + const select = event.target as HTMLSelectElement; + const options = Array.from(select.options).map((o) => o.value); + settings.z = options[select.selectedIndex]; + if (!settings.z) settings.z = undefined; }; @@ -39,14 +49,16 @@
type - +
+
x-axis - {#each columns as column} {/each} @@ -58,10 +70,10 @@
+ +
+ z-axis +
+ +
+
{/if} @@ -94,7 +123,6 @@ position: absolute; top: 10px; right: 10px; - height: 170px; width: 200px; background: hsla(0, 0%, 5%, 0.8); border: 1px solid hsl(0deg 0% 20%);