Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor ReferenceLine/ReferenceArea to use a store, prop parity with ReferencePoint #2184

Merged
merged 40 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
97fc180
refactor: state -> value
zachstence Jul 2, 2024
108eed7
Merge branch 'feat/2073_reference-point' into references-refactor-and…
zachstence Jul 3, 2024
703d3a7
chore: pnpm i
zachstence Jul 3, 2024
467258a
docs: ReferenceLine stories
zachstence Jul 5, 2024
0d0c69d
Merge branch 'next' into references-refactor-and-prop-parity
zachstence Jul 5, 2024
20e2487
refactor: ReferenceLine uses store, more styling props
zachstence Jul 5, 2024
d7b60c9
fix: dont show value on sloped ReferenceLine label
zachstence Jul 5, 2024
85db5f6
fix: label for y line
zachstence Jul 5, 2024
b36c27e
refactor: clean up preset color handling in reference point/line
zachstence Jul 5, 2024
d761970
docs: ReferenceArea stories
zachstence Jul 5, 2024
e03605d
fix: condition typo
zachstence Jul 5, 2024
ed1aa68
docs: stories for references using missing columns
zachstence Jul 5, 2024
74c431e
fix: ReferenceArea required columns
zachstence Jul 10, 2024
bb2e3a9
docs: add swapXY story for ReferenceArea
zachstence Jul 10, 2024
d2799a8
refactor: ReferenceArea uses store, more styling props
zachstence Jul 10, 2024
731d0bb
chore: changeset
zachstence Jul 10, 2024
854f623
Merge branch 'next' into references-refactor-and-prop-parity
zachstence Jul 10, 2024
ff5d700
chore: remove non-functional symbol props from ReferenceLine
zachstence Jul 10, 2024
f8592f9
docs: ReferenceLine styling props
zachstence Jul 10, 2024
b978793
docs: ReferenceArea styling props
zachstence Jul 10, 2024
4e99969
docs: ReferenceArea outside chart error story
zachstence Jul 10, 2024
dd79a87
fix: ReferenceArea outside chart error label
zachstence Jul 10, 2024
b9d5a5f
fix: ReferencePoint outside of chart error
zachstence Jul 10, 2024
ab178a9
fix: ReferencePoint supports chart swapXY
zachstence Jul 10, 2024
17185f7
docs: ReferenceLine swapXY story
zachstence Jul 10, 2024
fb7ed70
fix: reference area has no label background by default
zachstence Jul 10, 2024
171b404
docs: reference area label background prop
zachstence Jul 10, 2024
ed2182e
docs: ReferenceArea story controls
zachstence Jul 10, 2024
7d178ee
docs: ReferenceLine story controls
zachstence Jul 10, 2024
b0b135c
chore: pnpm i
zachstence Jul 12, 2024
6e5ddf9
refactor: Color -> ReferenceColor
zachstence Jul 12, 2024
4dc833b
feat: toBoolean ignores case
zachstence Jul 12, 2024
123df19
Merge branch 'next' into references-refactor-and-prop-parity
zachstence Jul 12, 2024
694c305
refactor: use class for ReferenceLine store
zachstence Jul 15, 2024
b37c801
refactor: clean up ReferenceLine types
zachstence Jul 16, 2024
a9207a6
refactor: use class for ReferenceArea store
zachstence Jul 16, 2024
5167f81
refactor: use class for ReferencePoint store
zachstence Jul 16, 2024
39172e7
refactor: move prop conversion to store update
zachstence Jul 16, 2024
c91ba01
fix: support symbol for ReferenceLine
zachstence Jul 16, 2024
f94e6d4
Merge branch 'next' into references-refactor-and-prop-parity
zachstence Jul 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/lovely-hornets-deny.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@evidence-dev/core-components': minor
---

Refactor ReferenceLine and ReferenceArea to use a store, add additional styling props
Original file line number Diff line number Diff line change
@@ -0,0 +1,278 @@
<script context="module">
/** @type {import('@storybook/addon-svelte-csf').MetaProps}*/
export const meta = {
title: 'viz/references/ReferenceArea',
component: ReferenceArea,
argTypes: {
emptySet: {
control: 'select',
options: ['pass', 'warn', 'error']
},
emptyMessage: {
control: 'text'
},
color: {
control: 'color'
},
areaColor: {
control: 'color'
},
opacity: {
control: 'number'
},
border: {
control: 'boolean'
},
borderType: {
control: 'select',
options: ['solid', 'dotted', 'dashed']
},
borderColor: {
control: 'color'
},
borderWidth: {
control: 'number'
},
label: {
control: 'text'
},
labelColor: {
control: 'color'
},
labelPadding: {
control: 'number'
},
labelPosition: {
control: 'select',
options: [
'left',
'right',
'top',
'bottom',
'inside',
'insideLeft',
'insideRight',
'insideTop',
'insideBottom',
'insideTopLeft',
'insideTopRight',
'insideBottomLeft',
'insideBottomRight'
]
},
labelBackgroundColor: {
control: 'color'
},
labelBorderWidth: {
control: 'number'
},
labelBorderRadius: {
control: 'number'
},
labelBorderColor: {
control: 'color'
},
labelBorderType: {
control: 'select',
options: ['solid', 'dotted', 'dashed']
},
fontSize: {
control: 'number'
},
align: {
control: 'select',
options: ['left', 'center', 'right']
},
bold: {
control: 'boolean'
},
italic: {
control: 'boolean'
},
preserveWhitespace: {
control: 'boolean'
}
},
args: {
label: 'Reference Area'
}
};
</script>

<script>
import { Story } from '@storybook/addon-svelte-csf';
import { Query } from '@evidence-dev/sdk/usql';
import { query } from '@evidence-dev/universal-sql/client-duckdb';
import LineChart from '$lib/unsorted/viz/line/LineChart.svelte';
import BarChart from '../../bar/BarChart.svelte';
import QueryLoad from '../../../../atoms/query-load/QueryLoad.svelte';

import ReferenceArea from './ReferenceArea.svelte';

const data = Query.create(`select * FROM numeric_series WHERE series='pink'`, query);
</script>

<Story
name="Hardcoded: x"
argTypes={{
xMin: {
control: 'number'
},
xMax: {
control: 'number'
}
}}
args={{ xMin: 20, xMax: 40 }}
let:args
>
<LineChart x="x" y="y" {data}>
<ReferenceArea {...args} />
</LineChart>
</Story>

<Story
name="Hardcoded: y"
argTypes={{
yMin: {
control: 'number'
},
yMax: {
control: 'number'
}
}}
args={{ yMin: 450, yMax: 700 }}
let:args
>
<LineChart x="x" y="y" {data}>
<ReferenceArea {...args} />
</LineChart>
</Story>

<Story
name="Hardcoded: x/y"
argTypes={{
xMin: {
control: 'number'
},
xMax: {
control: 'number'
},
yMin: {
control: 'number'
},
yMax: {
control: 'number'
}
}}
args={{ xMin: 20, xMax: 40, yMin: 450, yMax: 700 }}
let:args
>
<LineChart x="x" y="y" {data}>
<ReferenceArea {...args} />
</LineChart>
</Story>

<Story name="Dynamic Data: x">
{@const referenceAreaData = Query.create(
`
select 30 as xMin, 40 as xMax, 'Area 1' as label union all
select 50, 60, 'Area 2' union all
select 70, 80, 'Area 3'
`,
query
)}
<LineChart x="x" y="y" {data}>
<QueryLoad data={referenceAreaData}>
<ReferenceArea data={referenceAreaData} xMin="xMin" xMax="xMax" label="label" />
</QueryLoad>
</LineChart>
</Story>

<Story name="Dynamic Data: y">
{@const referenceAreaData = Query.create(
`
select 100 as yMin, 150 as yMax, 'Area 1' as label union all
select 850, 1000, 'Area 2' union all
select 200, 400, 'Area 3'
`,
query
)}
<LineChart x="x" y="y" {data}>
<QueryLoad data={referenceAreaData}>
<ReferenceArea data={referenceAreaData} yMin="yMin" yMax="yMax" label="label" />
</QueryLoad>
</LineChart>
</Story>

<Story name="Dynamic Data: x/y">
{@const referenceAreaData = Query.create(
`
select 30 as xMin, 40 as xMax, 100 as yMin, 150 as yMax, 'Area 1' as label union all
select 50, 60, 850, 1000, 'Area 2' union all
select 70, 80, 200, 400, 'Area 3'
`,
query
)}
<LineChart x="x" y="y" {data}>
<QueryLoad data={referenceAreaData}>
<ReferenceArea
data={referenceAreaData}
xMin="xMin"
xMax="xMax"
yMin="yMin"
yMax="yMax"
label="label"
/>
</QueryLoad>
</LineChart>
</Story>

<Story name="Swap XY">
{@const data = Query.create(
`
select 'a' as x, 10 as y union all
select 'b', 20 union all
select 'c', 30
`,
query
)}
<BarChart x="x" y="y" swapXY {data}>
<ReferenceArea xMin="a" xMax="a" yMin={15} yMax={25} label="Reference Area" />
</BarChart>
</Story>

<Story name="Colors">
<LineChart x="x" y="y" {data}>
<ReferenceArea xMin="10" xMax="20" color="red" label="red" />
<ReferenceArea xMin="20" xMax="30" color="yellow" label="yellow" />
<ReferenceArea xMin="30" xMax="40" color="green" label="green" />
<ReferenceArea xMin="40" xMax="50" color="blue" label="blue" />
<ReferenceArea xMin="50" xMax="60" color="grey" label="grey" />
<ReferenceArea xMin="60" xMax="70" color="#f2dbff" labelColor="#4d1070" label="custom" />
</LineChart>
</Story>

<Story name="Error: Outside of a chart">
<ReferenceArea label="Reference Area" />
</Story>

<Story name="Error: Missing column">
{@const referenceAreaData = Query.create(
`
select 30 as xMin, 40 as xMax, 100 as yMin, 150 as yMax, 'Area 1' as label union all
select 50, 60, 850, 1000, 'Area 2' union all
select 70, 80, 200, 400, 'Area 3'
`,
query
)}
<LineChart x="x" y="y" {data}>
<QueryLoad data={referenceAreaData}>
<ReferenceArea
data={referenceAreaData}
xMin="xMin"
xMax="non-existent-column"
label="label"
/>
</QueryLoad>
</LineChart>
</Story>
Loading
Loading