@graphenedata/cli 0.0.1
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/LICENSE.md +100 -0
- package/THIRD_PARTY_NOTICES.md +12 -0
- package/cli.ts +157 -0
- package/dist/cli/cli.js +43 -0
- package/dist/docs/data_apps/components/charts/annotations.md +673 -0
- package/dist/docs/data_apps/components/charts/area-chart.md +202 -0
- package/dist/docs/data_apps/components/charts/bar-chart.md +317 -0
- package/dist/docs/data_apps/components/charts/box-plot.md +190 -0
- package/dist/docs/data_apps/components/charts/bubble-chart.md +151 -0
- package/dist/docs/data_apps/components/charts/calendar-heatmap.md +112 -0
- package/dist/docs/data_apps/components/charts/custom-echarts.md +308 -0
- package/dist/docs/data_apps/components/charts/echarts-options.md +217 -0
- package/dist/docs/data_apps/components/charts/funnel-chart.md +106 -0
- package/dist/docs/data_apps/components/charts/heatmap.md +180 -0
- package/dist/docs/data_apps/components/charts/histogram.md +107 -0
- package/dist/docs/data_apps/components/charts/line-chart.md +265 -0
- package/dist/docs/data_apps/components/charts/mixed-type-charts.md +240 -0
- package/dist/docs/data_apps/components/charts/sankey-diagram.md +301 -0
- package/dist/docs/data_apps/components/charts/scatter-plot.md +134 -0
- package/dist/docs/data_apps/components/charts/sparkline.md +68 -0
- package/dist/docs/data_apps/components/data/big-value.md +153 -0
- package/dist/docs/data_apps/components/data/delta.md +89 -0
- package/dist/docs/data_apps/components/data/table.md +470 -0
- package/dist/docs/data_apps/components/data/value.md +97 -0
- package/dist/docs/data_apps/components/inputs/button-group.md +154 -0
- package/dist/docs/data_apps/components/inputs/checkbox.md +52 -0
- package/dist/docs/data_apps/components/inputs/date-input.md +131 -0
- package/dist/docs/data_apps/components/inputs/date-range.md +124 -0
- package/dist/docs/data_apps/components/inputs/dimension-grid.md +67 -0
- package/dist/docs/data_apps/components/inputs/dropdown.md +199 -0
- package/dist/docs/data_apps/components/inputs/index.md +3 -0
- package/dist/docs/data_apps/components/inputs/slider.md +126 -0
- package/dist/docs/data_apps/components/inputs/text-input.md +86 -0
- package/dist/docs/data_apps/components/maps/area-map.md +397 -0
- package/dist/docs/data_apps/components/maps/base-map.md +269 -0
- package/dist/docs/data_apps/components/maps/bubble-map.md +361 -0
- package/dist/docs/data_apps/components/maps/point-map.md +326 -0
- package/dist/docs/data_apps/components/maps/us-map.md +167 -0
- package/dist/docs/data_apps/components/ui/accordion.md +116 -0
- package/dist/docs/data_apps/components/ui/alert.md +37 -0
- package/dist/docs/data_apps/components/ui/big-link.md +19 -0
- package/dist/docs/data_apps/components/ui/details.md +58 -0
- package/dist/docs/data_apps/components/ui/download-data.md +41 -0
- package/dist/docs/data_apps/components/ui/embed.md +47 -0
- package/dist/docs/data_apps/components/ui/grid.md +45 -0
- package/dist/docs/data_apps/components/ui/image.md +61 -0
- package/dist/docs/data_apps/components/ui/info.md +47 -0
- package/dist/docs/data_apps/components/ui/last-refreshed.md +28 -0
- package/dist/docs/data_apps/components/ui/link-button.md +20 -0
- package/dist/docs/data_apps/components/ui/link.md +40 -0
- package/dist/docs/data_apps/components/ui/modal.md +57 -0
- package/dist/docs/data_apps/components/ui/note.md +32 -0
- package/dist/docs/data_apps/components/ui/print-format-components.md +85 -0
- package/dist/docs/data_apps/components/ui/tabs.md +122 -0
- package/dist/docs/graphene.md +129 -0
- package/dist/ui/app.css +332 -0
- package/dist/ui/assets/favicon.ico +0 -0
- package/dist/ui/component-utilities/autoFormatting.js +301 -0
- package/dist/ui/component-utilities/builtInFormats.js +482 -0
- package/dist/ui/component-utilities/chartContext.js +12 -0
- package/dist/ui/component-utilities/chartWindowDebug.js +21 -0
- package/dist/ui/component-utilities/checkInputs.js +95 -0
- package/dist/ui/component-utilities/convert.js +15 -0
- package/dist/ui/component-utilities/dateParsing.js +57 -0
- package/dist/ui/component-utilities/dropdownContext.ts +1 -0
- package/dist/ui/component-utilities/echarts.js +262 -0
- package/dist/ui/component-utilities/echartsThemes.js +453 -0
- package/dist/ui/component-utilities/formatTitle.js +24 -0
- package/dist/ui/component-utilities/formatting.js +258 -0
- package/dist/ui/component-utilities/getColumnExtents.js +79 -0
- package/dist/ui/component-utilities/getColumnSummary.js +67 -0
- package/dist/ui/component-utilities/getCompletedData.js +114 -0
- package/dist/ui/component-utilities/getDistinctCount.js +7 -0
- package/dist/ui/component-utilities/getDistinctValues.js +15 -0
- package/dist/ui/component-utilities/getSeriesConfig.js +236 -0
- package/dist/ui/component-utilities/getSortedData.js +7 -0
- package/dist/ui/component-utilities/getStackPercentages.js +43 -0
- package/dist/ui/component-utilities/getStackedData.js +17 -0
- package/dist/ui/component-utilities/getYAxisIndex.js +15 -0
- package/dist/ui/component-utilities/globalContexts.js +1 -0
- package/dist/ui/component-utilities/helpers/getCompletedData.helpers.js +119 -0
- package/dist/ui/component-utilities/inputUtils.ts +25 -0
- package/dist/ui/component-utilities/replaceNulls.js +14 -0
- package/dist/ui/component-utilities/tableUtils.ts +120 -0
- package/dist/ui/component-utilities/themeStores.ts +116 -0
- package/dist/ui/components/Area.svelte +174 -0
- package/dist/ui/components/AreaChart.svelte +150 -0
- package/dist/ui/components/Bar.svelte +326 -0
- package/dist/ui/components/BarChart.svelte +194 -0
- package/dist/ui/components/BigValue.svelte +69 -0
- package/dist/ui/components/Chart.svelte +1070 -0
- package/dist/ui/components/Column.svelte +172 -0
- package/dist/ui/components/DateRange.svelte +324 -0
- package/dist/ui/components/Dropdown.svelte +738 -0
- package/dist/ui/components/DropdownOption.svelte +21 -0
- package/dist/ui/components/ECharts.svelte +77 -0
- package/dist/ui/components/ErrorChart.svelte +54 -0
- package/dist/ui/components/GrapheneQuery.svelte +12 -0
- package/dist/ui/components/InlineDelta.svelte +150 -0
- package/dist/ui/components/Line.svelte +210 -0
- package/dist/ui/components/LineChart.svelte +178 -0
- package/dist/ui/components/PieChart.svelte +36 -0
- package/dist/ui/components/QueryLoad.svelte +82 -0
- package/dist/ui/components/Row.svelte +14 -0
- package/dist/ui/components/SortIcon.svelte +32 -0
- package/dist/ui/components/Table.svelte +19 -0
- package/dist/ui/components/TableCell.svelte +75 -0
- package/dist/ui/components/TableGroupRow.svelte +136 -0
- package/dist/ui/components/TableGroupToggle.svelte +42 -0
- package/dist/ui/components/TableHeader.svelte +242 -0
- package/dist/ui/components/TableRow.svelte +283 -0
- package/dist/ui/components/TableSubtotalRow.svelte +62 -0
- package/dist/ui/components/TableTotalRow.svelte +88 -0
- package/dist/ui/components/TextInput.svelte +92 -0
- package/dist/ui/components/_Table.svelte +516 -0
- package/dist/ui/internal/clientCache.ts +43 -0
- package/dist/ui/internal/queryEngine.ts +169 -0
- package/dist/ui/internal/telemetry.ts +28 -0
- package/dist/ui/internal/theme.ts +88 -0
- package/dist/ui/layout.svelte +3 -0
- package/dist/ui/playwright.config.ts +30 -0
- package/dist/ui/web.js +106 -0
- package/package.json +71 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import {getContext, setContext} from 'svelte'
|
|
2
|
+
import {readable, type Readable} from 'svelte/store'
|
|
3
|
+
|
|
4
|
+
type Appearance = 'light'
|
|
5
|
+
|
|
6
|
+
type Theme = {
|
|
7
|
+
colors: Record<string, string>
|
|
8
|
+
colorPalettes: Record<string, string[]>
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type ThemeStores = {
|
|
12
|
+
activeAppearance: Readable<Appearance>
|
|
13
|
+
theme: Readable<Theme>
|
|
14
|
+
resolveColor: <T>(input: T) => Readable<T | string | undefined>
|
|
15
|
+
resolveColorsObject: (input: Record<string, unknown> | undefined) => Readable<Record<string, string | undefined> | undefined>
|
|
16
|
+
resolveColorPalette: (input: unknown) => Readable<string[] | undefined>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const THEME_CONTEXT = Symbol('GrapheneThemeStores')
|
|
20
|
+
|
|
21
|
+
const DEFAULT_PALETTE = [
|
|
22
|
+
'#4C78A8',
|
|
23
|
+
'#F58518',
|
|
24
|
+
'#E45756',
|
|
25
|
+
'#72B7B2',
|
|
26
|
+
'#54A24B',
|
|
27
|
+
'#EECA3B',
|
|
28
|
+
'#B279A2',
|
|
29
|
+
'#FF9DA6',
|
|
30
|
+
'#9D755D',
|
|
31
|
+
'#BAB0AC',
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
const DEFAULT_THEME: Theme = {
|
|
35
|
+
colors: {
|
|
36
|
+
'base-100': '#ffffff',
|
|
37
|
+
'base-200': '#f6f6f6',
|
|
38
|
+
'base-300': '#e5e7eb',
|
|
39
|
+
'base-content': '#1f2937',
|
|
40
|
+
'base-content-muted': '#6b7280',
|
|
41
|
+
primary: '#2563eb',
|
|
42
|
+
positive: '#16a34a',
|
|
43
|
+
negative: '#dc2626',
|
|
44
|
+
warning: '#d97706',
|
|
45
|
+
},
|
|
46
|
+
colorPalettes: {
|
|
47
|
+
default: DEFAULT_PALETTE,
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const activeAppearance = readable<Appearance>('light')
|
|
52
|
+
const theme = readable<Theme>(DEFAULT_THEME)
|
|
53
|
+
|
|
54
|
+
const isReadable = <T>(value: unknown): value is Readable<T> => {
|
|
55
|
+
return Boolean(value && typeof value === 'object' && 'subscribe' in (value as any))
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const normalizeColor = (value: unknown): string | undefined => {
|
|
59
|
+
if (value == null) return undefined
|
|
60
|
+
if (Array.isArray(value)) return normalizeColor(value[0])
|
|
61
|
+
if (typeof value !== 'string') return String(value)
|
|
62
|
+
|
|
63
|
+
let trimmed = value.trim()
|
|
64
|
+
if (!trimmed) return undefined
|
|
65
|
+
if (trimmed === 'true' || trimmed === 'false') return trimmed
|
|
66
|
+
if (DEFAULT_THEME.colors[trimmed]) return DEFAULT_THEME.colors[trimmed]
|
|
67
|
+
if (trimmed.startsWith('#') || trimmed.startsWith('rgb') || trimmed.startsWith('hsl') || trimmed.startsWith('var(')) return trimmed
|
|
68
|
+
if (/^[a-zA-Z0-9_-]+$/.test(trimmed)) return `var(--color-${trimmed})`
|
|
69
|
+
return trimmed
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const resolveColor = <T>(input: T): Readable<T | string | undefined> => {
|
|
73
|
+
if (isReadable<T | string | undefined>(input)) return input
|
|
74
|
+
return readable(normalizeColor(input) as T | string | undefined)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const resolveColorsObject = (input: Record<string, unknown> | undefined): Readable<Record<string, string | undefined> | undefined> => {
|
|
78
|
+
if (isReadable<Record<string, string | undefined> | undefined>(input)) return input
|
|
79
|
+
if (!input) return readable(undefined)
|
|
80
|
+
|
|
81
|
+
let entries = Object.entries(input).map(([key, value]) => [key, normalizeColor(value)] as const)
|
|
82
|
+
return readable(Object.fromEntries(entries))
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const resolveColorPalette = (input: unknown): Readable<string[] | undefined> => {
|
|
86
|
+
if (isReadable<string[] | undefined>(input)) return input
|
|
87
|
+
if (input == null) return readable(DEFAULT_PALETTE)
|
|
88
|
+
|
|
89
|
+
if (typeof input === 'string') {
|
|
90
|
+
let key = input.trim()
|
|
91
|
+
if (!key || key === 'default') return readable(DEFAULT_PALETTE)
|
|
92
|
+
if (DEFAULT_THEME.colorPalettes[key]) return readable(DEFAULT_THEME.colorPalettes[key])
|
|
93
|
+
if (key.includes(',')) {
|
|
94
|
+
let values = key.split(',').map(part => normalizeColor(part)).filter(Boolean) as string[]
|
|
95
|
+
return readable(values.length ? values : DEFAULT_PALETTE)
|
|
96
|
+
}
|
|
97
|
+
let normalized = normalizeColor(key)
|
|
98
|
+
return readable(normalized ? [normalized] : DEFAULT_PALETTE)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (Array.isArray(input)) {
|
|
102
|
+
let values = input.map(item => normalizeColor(item)).filter(Boolean) as string[]
|
|
103
|
+
return readable(values.length ? values : DEFAULT_PALETTE)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return readable(DEFAULT_PALETTE)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export const getThemeStores = (): ThemeStores => {
|
|
110
|
+
let stores = getContext<ThemeStores | undefined>(THEME_CONTEXT)
|
|
111
|
+
if (!stores) {
|
|
112
|
+
stores = {activeAppearance, theme, resolveColor, resolveColorsObject, resolveColorPalette}
|
|
113
|
+
setContext(THEME_CONTEXT, stores)
|
|
114
|
+
}
|
|
115
|
+
return stores
|
|
116
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import {beforeUpdate, getContext} from 'svelte'
|
|
3
|
+
import {propKey, configKey} from '../component-utilities/chartContext.js'
|
|
4
|
+
import getSeriesConfig from '../component-utilities/getSeriesConfig.js'
|
|
5
|
+
import formatTitle from '../component-utilities/formatTitle.js'
|
|
6
|
+
import replaceNulls from '../component-utilities/replaceNulls.js'
|
|
7
|
+
import getCompletedData from '../component-utilities/getCompletedData.js'
|
|
8
|
+
import {
|
|
9
|
+
formatValue,
|
|
10
|
+
getFormatObjectFromString,
|
|
11
|
+
} from '../component-utilities/formatting.js'
|
|
12
|
+
import {getThemeStores} from '../component-utilities/themeStores'
|
|
13
|
+
|
|
14
|
+
const {resolveColor} = getThemeStores()
|
|
15
|
+
const props = getContext(propKey)
|
|
16
|
+
const config = getContext(configKey)
|
|
17
|
+
|
|
18
|
+
export let y = undefined
|
|
19
|
+
const ySet = !!y
|
|
20
|
+
export let series = undefined
|
|
21
|
+
const seriesSet = !!series
|
|
22
|
+
export let options = undefined
|
|
23
|
+
export let name = undefined
|
|
24
|
+
export let type = 'stacked'
|
|
25
|
+
export let fillColor = undefined
|
|
26
|
+
$: fillColorStore = resolveColor(fillColor)
|
|
27
|
+
export let lineColor = undefined
|
|
28
|
+
$: lineColorStore = resolveColor(lineColor)
|
|
29
|
+
export let fillOpacity = undefined
|
|
30
|
+
export let line = true
|
|
31
|
+
$: line = line === 'true' || line === true
|
|
32
|
+
export let markers = false
|
|
33
|
+
$: markers = markers === 'true' || markers === true
|
|
34
|
+
export let markerShape = 'circle'
|
|
35
|
+
export let markerSize = 8
|
|
36
|
+
export let handleMissing = 'gap'
|
|
37
|
+
export let step = false
|
|
38
|
+
$: step = step === 'true' || step === true
|
|
39
|
+
export let stepPosition = 'end'
|
|
40
|
+
export let labels = false
|
|
41
|
+
$: labels = labels === 'true' || labels === true
|
|
42
|
+
export let labelSize = 11
|
|
43
|
+
export let labelPosition = 'top'
|
|
44
|
+
export let labelColor = undefined
|
|
45
|
+
$: labelColorStore = resolveColor(labelColor)
|
|
46
|
+
export let labelFmt = undefined
|
|
47
|
+
export let showAllLabels = false
|
|
48
|
+
export let seriesOrder = undefined
|
|
49
|
+
export let seriesLabelFmt = undefined
|
|
50
|
+
|
|
51
|
+
let labelFormat
|
|
52
|
+
let data
|
|
53
|
+
let x
|
|
54
|
+
let swapXY
|
|
55
|
+
let yFormat
|
|
56
|
+
let xType
|
|
57
|
+
let xMismatch
|
|
58
|
+
let columnSummary
|
|
59
|
+
let seriesConfig
|
|
60
|
+
let chartOverrides
|
|
61
|
+
let defaultLabelPosition
|
|
62
|
+
let resolvedY
|
|
63
|
+
let stackName
|
|
64
|
+
|
|
65
|
+
if (labelFmt) labelFormat = getFormatObjectFromString(labelFmt)
|
|
66
|
+
|
|
67
|
+
$: data = $props.data
|
|
68
|
+
$: x = $props.x
|
|
69
|
+
$: swapXY = $props.swapXY
|
|
70
|
+
$: yFormat = $props.yFormat
|
|
71
|
+
$: xType = $props.xType
|
|
72
|
+
$: xMismatch = $props.xMismatch
|
|
73
|
+
$: columnSummary = $props.columnSummary
|
|
74
|
+
$: series = seriesSet ? series : $props.series
|
|
75
|
+
$: resolvedY = ySet ? y : $props.y
|
|
76
|
+
|
|
77
|
+
$: {
|
|
78
|
+
if (!series && typeof resolvedY !== 'object') {
|
|
79
|
+
stackName = undefined
|
|
80
|
+
if (columnSummary?.[resolvedY]) name = name ?? formatTitle(resolvedY, columnSummary[resolvedY].title)
|
|
81
|
+
} else {
|
|
82
|
+
stackName = 'area'
|
|
83
|
+
data = getCompletedData(data, x, resolvedY, series, false, xType === 'value')
|
|
84
|
+
data = replaceNulls(data, resolvedY)
|
|
85
|
+
xType = xType === 'value' ? 'category' : xType
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
$: if (handleMissing === 'zero') data = replaceNulls(data, resolvedY)
|
|
90
|
+
|
|
91
|
+
const labelPositions = {above: 'top', below: 'bottom', middle: 'inside'}
|
|
92
|
+
const swapXYLabelPositions = {above: 'right', below: 'left', middle: 'inside'}
|
|
93
|
+
|
|
94
|
+
$: {
|
|
95
|
+
defaultLabelPosition = swapXY ? 'right' : 'top'
|
|
96
|
+
labelPosition = (swapXY ? swapXYLabelPositions[labelPosition] : labelPositions[labelPosition]) ?? defaultLabelPosition
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
$: baseConfig = {
|
|
100
|
+
type: 'line',
|
|
101
|
+
stack: stackName,
|
|
102
|
+
areaStyle: {color: $fillColorStore, opacity: fillOpacity},
|
|
103
|
+
connectNulls: handleMissing === 'connect',
|
|
104
|
+
lineStyle: {width: line ? 1 : 0, color: $lineColorStore},
|
|
105
|
+
label: {
|
|
106
|
+
show: labels,
|
|
107
|
+
formatter: (params) =>
|
|
108
|
+
params.value[swapXY ? 0 : 1] === 0
|
|
109
|
+
? ''
|
|
110
|
+
: formatValue(params.value[swapXY ? 0 : 1], labelFormat ?? yFormat),
|
|
111
|
+
fontSize: labelSize,
|
|
112
|
+
color: $labelColorStore,
|
|
113
|
+
position: labelPosition,
|
|
114
|
+
padding: 3,
|
|
115
|
+
},
|
|
116
|
+
labelLayout: {hideOverlap: showAllLabels ? false : true},
|
|
117
|
+
emphasis: {focus: 'series'},
|
|
118
|
+
showSymbol: labels || markers,
|
|
119
|
+
symbol: markerShape,
|
|
120
|
+
symbolSize: labels && !markers ? 0 : markerSize,
|
|
121
|
+
step: step ? stepPosition : false,
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
$: seriesConfig = getSeriesConfig(
|
|
125
|
+
data,
|
|
126
|
+
x,
|
|
127
|
+
resolvedY,
|
|
128
|
+
series,
|
|
129
|
+
swapXY,
|
|
130
|
+
baseConfig,
|
|
131
|
+
name,
|
|
132
|
+
xMismatch,
|
|
133
|
+
columnSummary,
|
|
134
|
+
seriesOrder,
|
|
135
|
+
undefined,
|
|
136
|
+
undefined,
|
|
137
|
+
undefined,
|
|
138
|
+
seriesLabelFmt,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
$: config.update((value) => {
|
|
142
|
+
value.series.push(...seriesConfig)
|
|
143
|
+
value.legend.data.push(...seriesConfig.map((entry) => entry.name.toString()))
|
|
144
|
+
return value
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
$: if (options) {
|
|
148
|
+
config.update((value) => ({...value, ...options}))
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
$: chartOverrides = {
|
|
152
|
+
yAxis: {boundaryGap: ['0%', '1%']},
|
|
153
|
+
xAxis: {boundaryGap: ['4%', '4%'], type: xType},
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
beforeUpdate(() => {
|
|
157
|
+
config.update((value) => {
|
|
158
|
+
value.tooltip = {...value.tooltip, order: 'seriesDesc'}
|
|
159
|
+
if (swapXY) {
|
|
160
|
+
value.yAxis = {...value.yAxis, ...chartOverrides.xAxis}
|
|
161
|
+
value.xAxis = {...value.xAxis, ...chartOverrides.yAxis}
|
|
162
|
+
} else {
|
|
163
|
+
value.yAxis[0] = {...value.yAxis[0], ...chartOverrides.yAxis}
|
|
164
|
+
value.xAxis = {...value.xAxis, ...chartOverrides.xAxis}
|
|
165
|
+
}
|
|
166
|
+
if (type === 'stacked100') {
|
|
167
|
+
if (swapXY) value.xAxis = {...value.xAxis, max: 1}
|
|
168
|
+
else value.yAxis[0] = {...value.yAxis[0], max: 1}
|
|
169
|
+
}
|
|
170
|
+
if (labels) value.axisPointer = {triggerEmphasis: false}
|
|
171
|
+
return value
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
</script>
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Chart from './Chart.svelte'
|
|
3
|
+
import Area from './Area.svelte'
|
|
4
|
+
import QueryLoad from './QueryLoad.svelte'
|
|
5
|
+
import {getThemeStores} from '../component-utilities/themeStores'
|
|
6
|
+
|
|
7
|
+
const {resolveColor, resolveColorsObject, resolveColorPalette} = getThemeStores()
|
|
8
|
+
|
|
9
|
+
export let data = undefined
|
|
10
|
+
export let x = undefined
|
|
11
|
+
export let y = undefined
|
|
12
|
+
export let series = undefined
|
|
13
|
+
export let xType = undefined
|
|
14
|
+
export let yLog = undefined
|
|
15
|
+
export let yLogBase = undefined
|
|
16
|
+
|
|
17
|
+
export let yFmt = undefined
|
|
18
|
+
export let xFmt = undefined
|
|
19
|
+
|
|
20
|
+
export let title = undefined
|
|
21
|
+
export let subtitle = undefined
|
|
22
|
+
export let legend = undefined
|
|
23
|
+
export let xAxisTitle = undefined
|
|
24
|
+
export let yAxisTitle = undefined
|
|
25
|
+
export let xGridlines = undefined
|
|
26
|
+
export let yGridlines = undefined
|
|
27
|
+
export let xAxisLabels = undefined
|
|
28
|
+
export let yAxisLabels = undefined
|
|
29
|
+
export let xBaseline = undefined
|
|
30
|
+
export let yBaseline = undefined
|
|
31
|
+
export let xTickMarks = undefined
|
|
32
|
+
export let yTickMarks = undefined
|
|
33
|
+
export let yMin = undefined
|
|
34
|
+
export let yMax = undefined
|
|
35
|
+
export let yScale = undefined
|
|
36
|
+
export let sort = undefined
|
|
37
|
+
|
|
38
|
+
export let line = undefined
|
|
39
|
+
|
|
40
|
+
export let fillColor = undefined
|
|
41
|
+
$: fillColorStore = resolveColor(fillColor)
|
|
42
|
+
|
|
43
|
+
export let lineColor = undefined
|
|
44
|
+
$: lineColorStore = resolveColor(lineColor)
|
|
45
|
+
|
|
46
|
+
export let fillOpacity = undefined
|
|
47
|
+
export let chartAreaHeight = undefined
|
|
48
|
+
export let markers = undefined
|
|
49
|
+
export let markerShape = undefined
|
|
50
|
+
export let markerSize = undefined
|
|
51
|
+
export let handleMissing = undefined
|
|
52
|
+
export let step = undefined
|
|
53
|
+
export let stepPosition = undefined
|
|
54
|
+
|
|
55
|
+
export let type = 'stacked'
|
|
56
|
+
let stacked100 = type === 'stacked100'
|
|
57
|
+
|
|
58
|
+
export let colorPalette = 'default'
|
|
59
|
+
$: colorPaletteStore = resolveColorPalette(colorPalette)
|
|
60
|
+
|
|
61
|
+
export let labels = undefined
|
|
62
|
+
export let labelSize = undefined
|
|
63
|
+
export let labelPosition = undefined
|
|
64
|
+
|
|
65
|
+
export let labelColor = undefined
|
|
66
|
+
$: labelColorStore = resolveColor(labelColor)
|
|
67
|
+
|
|
68
|
+
export let labelFmt = undefined
|
|
69
|
+
export let showAllLabels = undefined
|
|
70
|
+
|
|
71
|
+
export let echartsOptions = undefined
|
|
72
|
+
export let seriesOptions = undefined
|
|
73
|
+
|
|
74
|
+
export let seriesColors = undefined
|
|
75
|
+
$: seriesColorsStore = resolveColorsObject(seriesColors)
|
|
76
|
+
|
|
77
|
+
export let seriesOrder = undefined
|
|
78
|
+
export let connectGroup = undefined
|
|
79
|
+
export let seriesLabelFmt = undefined
|
|
80
|
+
|
|
81
|
+
export let leftPadding = undefined
|
|
82
|
+
export let rightPadding = undefined
|
|
83
|
+
export let xLabelWrap = undefined
|
|
84
|
+
</script>
|
|
85
|
+
|
|
86
|
+
<QueryLoad data={data} fields={[x, y, series]} let:loaded>
|
|
87
|
+
<Chart
|
|
88
|
+
data={loaded}
|
|
89
|
+
{x}
|
|
90
|
+
{y}
|
|
91
|
+
{xFmt}
|
|
92
|
+
{yFmt}
|
|
93
|
+
{series}
|
|
94
|
+
{xType}
|
|
95
|
+
{yLog}
|
|
96
|
+
{yLogBase}
|
|
97
|
+
{legend}
|
|
98
|
+
{xAxisTitle}
|
|
99
|
+
{yAxisTitle}
|
|
100
|
+
{xGridlines}
|
|
101
|
+
{yGridlines}
|
|
102
|
+
{xAxisLabels}
|
|
103
|
+
{yAxisLabels}
|
|
104
|
+
{xBaseline}
|
|
105
|
+
{yBaseline}
|
|
106
|
+
{xTickMarks}
|
|
107
|
+
{yTickMarks}
|
|
108
|
+
{yMin}
|
|
109
|
+
{yMax}
|
|
110
|
+
{yScale}
|
|
111
|
+
{title}
|
|
112
|
+
{subtitle}
|
|
113
|
+
chartType="Area Chart"
|
|
114
|
+
stackType={type}
|
|
115
|
+
{stacked100}
|
|
116
|
+
{sort}
|
|
117
|
+
{chartAreaHeight}
|
|
118
|
+
colorPalette={colorPaletteStore}
|
|
119
|
+
{echartsOptions}
|
|
120
|
+
{seriesOptions}
|
|
121
|
+
{connectGroup}
|
|
122
|
+
seriesColors={seriesColorsStore}
|
|
123
|
+
{leftPadding}
|
|
124
|
+
{rightPadding}
|
|
125
|
+
{xLabelWrap}
|
|
126
|
+
>
|
|
127
|
+
<Area
|
|
128
|
+
{line}
|
|
129
|
+
fillColor={fillColorStore}
|
|
130
|
+
lineColor={lineColorStore}
|
|
131
|
+
{fillOpacity}
|
|
132
|
+
{handleMissing}
|
|
133
|
+
{type}
|
|
134
|
+
{step}
|
|
135
|
+
{stepPosition}
|
|
136
|
+
{markers}
|
|
137
|
+
{markerShape}
|
|
138
|
+
{markerSize}
|
|
139
|
+
{labels}
|
|
140
|
+
{labelSize}
|
|
141
|
+
{labelPosition}
|
|
142
|
+
labelColor={labelColorStore}
|
|
143
|
+
{labelFmt}
|
|
144
|
+
{showAllLabels}
|
|
145
|
+
{seriesOrder}
|
|
146
|
+
{seriesLabelFmt}
|
|
147
|
+
/>
|
|
148
|
+
<slot />
|
|
149
|
+
</Chart>
|
|
150
|
+
</QueryLoad>
|