@operato/scene-chartjs 9.1.1 → 10.0.0-beta.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config-converter.js","sourceRoot":"","sources":["../src/config-converter.ts"],"names":[],"mappings":"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","sourcesContent":["import { TinyColor } from '@ctrl/tinycolor'\nimport { format as formatText } from '@operato/utils/format.js'\n\nexport function convertConfigure(chart: SceneChart.ChartConfig) {\n if (!chart) return\n\n var data = chart.data || {}\n var datasets = data.datasets || []\n var options = chart.options || {}\n var scales = options.scales || {}\n var xAxes: Array<SceneChart.ChartXAxe>\n var yAxes: Array<SceneChart.ChartYAxe>\n var scale\n var legend = options.legend || {}\n var tooltips = options.tooltip === false ? undefined : (options.tooltips = options.tooltips || {})\n var multiAxis = options.multiAxis\n var stacked = false\n var yStacked = [false, false]\n var fontSize = Number(options.defaultFontSize)\n var fontFamily = options.defaultFontFamily\n var fontColor = options.defaultFontColor\n var theme = options.theme\n\n // backward compatible\n _configureBackwardsCompatible(chart.type, options)\n\n // setup series configure\n for (let i in datasets) {\n let series = datasets[i]\n\n if (options.stacked && !series.stack) {\n series.stack = 'A'\n }\n\n /*\n * TODO from chartjs 2.9, categoryPercentage, barPercentage properties move to dataset.\n * so need to move related properties - categorySpacing, barSpacing should be moved to series.\n */\n if (chart.type == 'bar') {\n let categorySpacing = (scales.xAxes && scales.xAxes[0].categorySpacing) || 0\n let barSpacing = (scales.xAxes && scales.xAxes[0].barSpacing) || 0\n\n series.categoryPercentage = 1 - categorySpacing || 1\n series.barPercentage = 1 - barSpacing || 0.8\n } else if (chart.type == 'horizontalBar') {\n let categorySpacing = (scales.yAxes && scales.yAxes[0].categorySpacing) || 0\n let barSpacing = (scales.yAxes && scales.yAxes[0].barSpacing) || 0\n\n series.categoryPercentage = 1 - categorySpacing || 1\n series.barPercentage = 1 - barSpacing || 0.8\n }\n\n _setSeriesConfigures(series, chart)\n\n if (!multiAxis) {\n if (series.yAxisID == 'right') series.yAxisID = 'left'\n }\n }\n\n delete options.stacked\n\n var leftSeries = datasets.filter(d => d.yAxisID == 'left')\n var rightSeries = datasets.filter(d => d.yAxisID == 'right')\n\n leftSeries.forEach(s => {\n var filtered = leftSeries.filter(ss => s.stack == ss.stack)\n if (filtered.length > 1) {\n yStacked[0] = true\n return\n }\n })\n\n rightSeries.forEach(s => {\n var filtered = rightSeries.filter(ss => s.stack == ss.stack)\n if (filtered.length > 1) {\n yStacked[1] = true\n return\n }\n })\n\n stacked = yStacked[0] || yStacked[1]\n\n // setup options\n // 1. setup scales\n switch (chart.type) {\n case 'line':\n case 'bar':\n case 'horizontalBar':\n xAxes = scales.xAxes || []\n yAxes = scales.yAxes || []\n\n if (chart.type == 'horizontalBar') {\n xAxes = scales.yAxes || []\n yAxes = scales.xAxes || []\n }\n\n // 1-1. setup xAxes\n for (let i in xAxes) {\n let axis = xAxes[i]\n _setStacked(axis, stacked)\n _setScalesFont(axis, {\n fontSize,\n fontFamily\n })\n _setScalesAutoMinMax(axis)\n _setScalesTickRotation(axis)\n _setAxisTitle(axis)\n _setScalesTheme(axis, theme, fontColor)\n _appendTickCallback(axis.ticks)\n\n axis.gridLines!.display = options.xGridLine\n }\n\n // 1-2. setup yAxes\n for (let i in yAxes) {\n let axis = yAxes[i]\n\n //@ts-ignore\n if (i == 1) {\n _setMultiAxis(axis, multiAxis)\n }\n _setStacked(axis, yStacked[i])\n _setScalesFont(axis, {\n fontSize,\n fontFamily\n })\n _setScalesAutoMinMax(axis)\n _setAxisTitle(axis)\n _setScalesTheme(axis, theme, fontColor)\n _appendTickCallback(axis.ticks)\n\n //@ts-ignore\n if (i == 0) axis.gridLines.display = options.yGridLine\n\n //@ts-ignore\n if (i == 1) axis.gridLines.display = options.y2ndGridLine\n }\n\n break\n case 'pie':\n case 'doughnut':\n break\n default:\n scale = options.scale || {}\n _setScalesFont(scale, {\n fontSize,\n fontFamily\n })\n break\n }\n\n // 2. setup legend\n _setLegendFont(legend, {\n fontSize,\n fontFamily\n })\n legend.labels && (legend.labels.boxWidth = 15)\n _setLegendTheme(legend, theme, fontColor)\n\n // 3. setup tooltips\n options.tooltip &&\n _setTooltipFont(tooltips!, {\n fontSize,\n fontFamily\n })\n options.tooltip && _setTooltipCallback(tooltips!)\n}\n\nfunction _configureBackwardsCompatible(type: string, options: SceneChart.ChartOptions) {\n switch (type) {\n case 'horizontalBar':\n if (!options.scales) options.scales = {}\n break\n case 'radar':\n case 'polarArea':\n if (options.defaultFontColor) {\n options.scale!.ticks!.fontColor = options.defaultFontColor\n if (options.scale.pointLabels) {\n options.scale.pointLabels.fontColor = options.defaultFontColor\n } else {\n options.scale.pointLabels = { fontColor: options.defaultFontColor }\n }\n }\n options.scale!.ticks!.backdropColor = options.fillStyle ? options.fillStyle : '#00ff0000'\n break\n case 'line':\n case 'bar':\n if (!options.scales) options.scales = {}\n if (!options.scales.yAxes) options.scales.yAxes = []\n\n if (options.scales.yAxes.length === 1) {\n let yAxes = options.scales.yAxes\n yAxes.push({\n position: 'right',\n id: 'right',\n display: options.multiAxis || false,\n gridLines: {\n display: (yAxes[0] && yAxes[0].gridLines && yAxes[0].gridLines.display) || false\n },\n ticks: {\n beginAtZero: false,\n callback: function (value: any, index: number, values: any[]) {\n var returnValue = value\n if (typeof returnValue == 'number') {\n returnValue = returnValue.toLocaleString()\n }\n\n return returnValue\n }\n }\n })\n }\n break\n case 'pie':\n case 'doughnut':\n break\n default:\n if (!options.scale) options.scale = {}\n\n break\n }\n}\n\nfunction _setStacked(axis: SceneChart.ChartXAxe, stacked: boolean) {\n axis.stacked = stacked\n}\n\nfunction _setMultiAxis(axis: SceneChart.ChartXAxe, multiAxis: boolean) {\n axis.display = multiAxis\n}\n\nfunction _setAxisTitle(axis: SceneChart.ChartXAxe) {\n if (!axis.scaleLabel) axis.scaleLabel = {}\n axis.scaleLabel.labelString = axis.axisTitle\n axis.scaleLabel.display = axis.axisTitle ? true : false\n}\n\nfunction _setScalesFont(\n axis: SceneChart.ChartXAxe | SceneChart.RadialLinearScale,\n { fontSize, fontFamily }: { fontSize: number; fontFamily: string }\n) {\n axis.ticks = axis.ticks ? axis.ticks : {}\n axis.ticks.fontSize = fontSize\n\n if (fontFamily) {\n axis.ticks.fontFamily = fontFamily\n }\n\n ;(axis as SceneChart.RadialLinearScale).pointLabels = {\n fontSize,\n fontFamily\n }\n}\n\nfunction _setScalesAutoMinMax(axis: SceneChart.ChartXAxe) {\n axis.ticks = axis.ticks ? axis.ticks : {}\n\n let autoMin = axis.ticks.autoMin\n let autoMax = axis.ticks.autoMax\n\n if (autoMin === true) {\n delete axis.ticks.min\n }\n if (autoMax === true) {\n delete axis.ticks.max\n }\n}\n\nfunction _setScalesTickRotation(axis: SceneChart.ChartXAxe) {\n axis.ticks = axis.ticks ? axis.ticks : {}\n // axis.ticks.maxRotation = 0\n}\n\nfunction _setScalesTheme(axis: SceneChart.ChartXAxe, theme: SceneChart.Theme, fontColor: string) {\n var baseColor = _getBaseColorFromTheme(theme)\n\n axis.gridLines = axis.gridLines ? axis.gridLines : {}\n if (axis.gridLines) {\n axis.gridLines.zeroLineColor = baseColor.clone().setAlpha(0.5).toString()\n axis.gridLines.color = baseColor.clone().setAlpha(0.1).toString()\n }\n\n axis.ticks = axis.ticks ? axis.ticks : {}\n axis.ticks.fontColor = fontColor ? fontColor : baseColor.clone().setAlpha(0.5).toString()\n}\n\nfunction _setLegendFont(\n legend: SceneChart.ChartLegendOptions,\n { fontFamily, fontSize }: { fontFamily: string; fontSize: number }\n) {\n legend.labels = legend.labels ? legend.labels : {}\n legend.labels.fontSize = fontSize\n if (fontFamily) legend.labels.fontFamily = fontFamily\n}\n\nfunction _setLegendTheme(legend: SceneChart.ChartLegendOptions, theme: SceneChart.Theme, fontColor: string) {\n var baseColor = _getBaseColorFromTheme(theme)\n\n legend.labels = legend.labels ? legend.labels : {}\n legend.labels.fontColor = fontColor ? fontColor : baseColor.clone().setAlpha(0.5).toString()\n}\n\nfunction _getBaseColorFromTheme(theme: SceneChart.Theme) {\n let darkColor = '#000'\n let lightColor = '#fff'\n\n var baseColor\n\n switch (theme) {\n case 'light':\n baseColor = lightColor\n break\n case 'dark':\n default:\n baseColor = darkColor\n break\n }\n\n baseColor = new TinyColor(baseColor)\n\n return baseColor\n}\n\nfunction _setSeriesConfigures(series: SceneChart.ChartDataSets, chart: SceneChart.ChartConfig) {\n var type = series.type || chart.type\n var stackGroup = `${type} ${series.yAxisID} ${series.stack || series.dataKey}`\n var color = series.color ? series.color : series.backgroundColor\n\n var dataLabelAnchor = series.dataLabelAnchor || 'center'\n var dataLabelOffset = series.dataLabelOffset || 0\n var dataLabelRotation = series.dataLabelRotation || 0\n\n switch (type) {\n case 'bar':\n case 'horizontalBar':\n series.borderColor = series.backgroundColor = color\n break\n\n case 'line':\n case 'radar':\n color = series.color ? series.color : series.borderColor\n series.pointBackgroundColor = series.pointBorderColor = series.borderColor = series.backgroundColor = color\n series.pointBorderWidth = (series.borderWidth as number) * 0.5\n series.pointHoverRadius = series.pointRadius\n if (series.fill == undefined) series.fill = false\n break\n\n default:\n series.borderColor = series.backgroundColor = color\n break\n }\n\n series.stack = stackGroup\n\n series.dataLabelAnchor = dataLabelAnchor\n series.dataLabelOffset = dataLabelOffset\n series.dataLabelRotation = dataLabelRotation\n}\n\nfunction _appendTickCallback(ticks: SceneChart.TickOptions | undefined) {\n if (!ticks) {\n return\n }\n\n ticks.callback = function (value, index, values) {\n var returnValue\n if (!Number.isNaN(Number(value))) {\n returnValue = Number(value).toLocaleString()\n } else {\n returnValue = value\n }\n\n if (returnValue) return returnValue\n }\n}\n\nfunction _setTooltipFont(\n tooltips: SceneChart.ChartTooltipOptions,\n { fontSize, fontFamily }: { fontSize: number; fontFamily: string }\n) {\n tooltips.titleFontSize = tooltips.bodyFontSize = tooltips.footerFontSize = fontSize\n if (fontFamily) tooltips.titleFontFamily = tooltips.bodyFontFamily = tooltips.footerFontFamily = fontFamily\n}\n\nfunction _setTooltipCallback(tooltips: SceneChart.ChartTooltipOptions) {\n tooltips.callbacks = tooltips.callbacks || {}\n\n tooltips.intersect = false\n tooltips.mode = 'index'\n\n tooltips.callbacks.label = function (tooltipItem: SceneChart.ChartTooltipItem, data: SceneChart.ChartData) {\n var value: any = data.datasets?.[tooltipItem.datasetIndex || 0].data?.[tooltipItem.index || 0]\n var datasetLabel = data.datasets?.[tooltipItem.datasetIndex || 0].label\n var label = datasetLabel || data.labels?.[tooltipItem.index || 0]\n\n var format = data.datasets?.[tooltipItem.datasetIndex || 0].valueFormat || ''\n var prefix = data.datasets?.[tooltipItem.datasetIndex || 0].valuePrefix || ''\n var suffix = data.datasets?.[tooltipItem.datasetIndex || 0].valueSuffix || ''\n\n var stringValue = format ? formatText(format, Number(value)) : Number(value).toLocaleString()\n\n return `${label}: ${prefix + stringValue + suffix}`\n }\n}\n"]}
1
+ {"version":3,"file":"config-converter.js","sourceRoot":"","sources":["../src/config-converter.ts"],"names":[],"mappings":"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","sourcesContent":["import { TinyColor } from '@ctrl/tinycolor'\nimport { format as formatText } from '@operato/utils/format.js'\n\n/**\n * v2 형식의 scene-chart config를 Chart.js v4 형식으로 변환한다.\n * 기존 보드 설정(v2 형식)을 입력받아 v4 호환 config를 새 객체로 반환.\n */\nexport function convertConfigure(chart: SceneChart.ChartConfig): SceneChart.ChartConfig {\n if (!chart) return chart\n\n const { type: chartType, data: fromData, options: fromOptions } = chart\n const options = fromOptions || ({} as SceneChart.ChartOptions)\n const datasets = fromData?.datasets || []\n\n const fontSize = Number(options.defaultFontSize) || undefined\n const fontFamily = options.defaultFontFamily\n const fontColor = options.defaultFontColor\n const theme = options.theme\n const multiAxis = options.multiAxis\n const stacked = options.stacked\n const xGridLine = options.xGridLine\n const yGridLine = options.yGridLine\n const y2ndGridLine = options.y2ndGridLine\n const showTooltip = options.tooltip !== false\n\n // backward compatible: ensure scales/scale exist\n _ensureBackwardsCompatible(chartType, options)\n\n const scales = options.scales || {}\n const { xAxes = [], yAxes = [] } = scales\n\n // --- Build v4 scales object ---\n const toScales: Record<string, any> = {}\n const isCartesian = ['line', 'bar', 'horizontalBar'].includes(chartType)\n\n if (isCartesian) {\n // Determine actual xAxes/yAxes depending on horizontalBar swap\n const actualXAxes = chartType === 'horizontalBar' ? yAxes : xAxes\n const actualYAxes = chartType === 'horizontalBar' ? xAxes : yAxes\n\n actualXAxes.forEach((xAxis, index) => {\n const id = actualXAxes.length > 1 ? `x${index + 1}` : 'x'\n toScales[id] = _buildScale(\n {\n axis: 'x',\n id,\n position: 'bottom',\n display: xAxis.display !== false,\n title: {\n display: !!xAxis.axisTitle,\n text: xAxis.axisTitle\n },\n grid: {\n display: chartType === 'horizontalBar' ? yGridLine : xGridLine\n },\n ticks: xAxis.ticks,\n stacked: stacked || false\n },\n { fontSize, fontFamily, fontColor, theme }\n )\n })\n\n actualYAxes.forEach((yAxis, index) => {\n const id = yAxis.id || (index === 0 ? 'left' : 'right')\n const isSecondary = index > 0 || id === 'right'\n const display = isSecondary ? (multiAxis || false) : (yAxis.display !== false)\n\n toScales[id] = _buildScale(\n {\n axis: 'y',\n id,\n position: yAxis.position || id,\n display,\n title: {\n display: !!yAxis.axisTitle,\n text: yAxis.axisTitle\n },\n grid: {\n display: isSecondary ? y2ndGridLine : yGridLine\n },\n ticks: yAxis.ticks,\n stacked: stacked || false\n },\n { fontSize, fontFamily, fontColor, theme }\n )\n })\n }\n\n // radar/polarArea: handle scale (radial)\n if (chartType === 'radar' || chartType === 'polarArea') {\n const scale = options.scale || {}\n toScales['r'] = {\n type: 'radialLinear',\n ticks: {\n ...(scale.ticks || {}),\n backdropColor: options.fillStyle || '#00ff0000'\n },\n pointLabels: {\n font: { size: fontSize, family: fontFamily },\n ...(fontColor ? { color: fontColor } : {})\n }\n }\n if (fontColor) {\n toScales['r'].ticks.color = fontColor\n }\n }\n\n // --- Build v4 datasets ---\n // axis → dataset 속성 마이그레이션 (bar thickness 등)\n let barCategoryPercentage: number | undefined\n let barPercentage: number | undefined\n let barThickness: number | undefined\n\n if (chartType === 'bar' || chartType === 'horizontalBar') {\n const barAxis = chartType === 'bar' ? xAxes[0] : yAxes[0]\n if (barAxis) {\n barCategoryPercentage = barAxis.categorySpacing != null ? 1 - barAxis.categorySpacing : undefined\n barPercentage = barAxis.barSpacing != null ? 1 - barAxis.barSpacing : undefined\n barThickness = (barAxis as any).barThickness\n }\n }\n\n const toDatasets = datasets.map((dataset, index) => {\n const series = { ...dataset }\n\n // horizontalBar series type → bar\n if (series.type === 'horizontalBar') {\n series.type = 'bar'\n }\n\n // multiAxis off: all series to left axis\n if (!multiAxis && series.yAxisID === 'right') {\n series.yAxisID = 'left'\n }\n\n // bar spacing properties (moved from axis to dataset in v4)\n if (chartType === 'bar' || chartType === 'horizontalBar') {\n if (barCategoryPercentage != null) series.categoryPercentage = barCategoryPercentage\n if (barPercentage != null) series.barPercentage = barPercentage\n if (barThickness != null) series.barThickness = barThickness\n }\n\n // stack: v4 format\n const isPieType = chartType === 'pie' || chartType === 'doughnut'\n if (!isPieType) {\n if (stacked && !dataset.stack) {\n series.stack = '__all__'\n } else {\n const type = series.type || chartType\n series.stack = `__${type}_${series.yAxisID || 'left'}_${index}__`\n }\n }\n\n // series visual setup\n _setupSeriesVisuals(series, chartType)\n\n return series\n })\n\n // --- Build converted config ---\n const converted: SceneChart.ChartConfig = {\n type: chartType === 'horizontalBar' ? 'bar' : chartType,\n data: {\n labels: fromData?.labels || [],\n datasets: toDatasets as any,\n labelDataKey: fromData?.labelDataKey\n },\n options: {\n maintainAspectRatio: false,\n animation: options.animation,\n indexAxis: chartType === 'horizontalBar' ? 'y' : undefined,\n scales: isCartesian || chartType === 'radar' || chartType === 'polarArea' ? toScales : undefined,\n plugins: {\n legend: _buildLegend(options.legend || {}, { fontSize, fontFamily, fontColor, theme }),\n tooltip: showTooltip\n ? _buildTooltip({ fontSize, fontFamily })\n : { enabled: false },\n },\n // preserve custom properties for datalabels font callback\n defaultFontFamily: fontFamily,\n defaultFontSize: fontSize,\n defaultFontColor: fontColor\n }\n }\n\n return converted\n}\n\n// --- Helper functions ---\n\nfunction _ensureBackwardsCompatible(type: string, options: SceneChart.ChartOptions) {\n switch (type) {\n case 'horizontalBar':\n if (!options.scales) options.scales = {}\n break\n case 'radar':\n case 'polarArea':\n if (!options.scale) options.scale = {}\n if (!options.scale.ticks) options.scale.ticks = {}\n break\n case 'line':\n case 'bar':\n if (!options.scales) options.scales = {}\n if (!options.scales.yAxes) options.scales.yAxes = []\n\n if (options.scales.yAxes.length === 1) {\n options.scales.yAxes.push({\n position: 'right',\n id: 'right',\n display: options.multiAxis || false,\n gridLines: {\n display: (options.scales.yAxes[0]?.gridLines?.display) || false\n },\n ticks: {\n beginAtZero: false\n }\n })\n }\n break\n case 'pie':\n case 'doughnut':\n break\n default:\n if (!options.scale) options.scale = {}\n break\n }\n}\n\nfunction _buildScale(\n axis: any,\n { fontSize, fontFamily, fontColor, theme }: { fontSize?: number; fontFamily?: string; fontColor?: string; theme?: string }\n): any {\n const ticks = axis.ticks ? { ...axis.ticks } : {}\n const baseColor = _getBaseColorFromTheme(theme)\n\n // v4: min/max moved from ticks to scale level\n const result: any = {\n axis: axis.axis,\n position: axis.position,\n display: axis.display,\n stacked: axis.stacked,\n title: axis.title || {},\n grid: {\n display: axis.grid?.display,\n tickColor: baseColor.clone().setAlpha(0.5).toString(),\n color: baseColor.clone().setAlpha(0.1).toString()\n },\n ticks: {\n display: ticks.display !== false,\n color: fontColor || baseColor.clone().setAlpha(0.5).toString(),\n font: { size: fontSize, family: fontFamily },\n callback: function (value: any) {\n if (!Number.isNaN(Number(value))) {\n return Number(value).toLocaleString()\n }\n return value\n }\n }\n }\n\n // autoMin/autoMax handling\n if (ticks.autoMin !== true && ticks.min != null) {\n result.min = ticks.min\n }\n if (ticks.autoMax !== true && ticks.max != null) {\n result.max = ticks.max\n }\n if (ticks.beginAtZero) {\n result.beginAtZero = true\n }\n\n return result\n}\n\nfunction _buildLegend(\n legend: SceneChart.ChartLegendOptions,\n { fontSize, fontFamily, fontColor, theme }: { fontSize?: number; fontFamily?: string; fontColor?: string; theme?: string }\n): SceneChart.ChartLegendOptions {\n const baseColor = _getBaseColorFromTheme(theme)\n const color = fontColor || baseColor.clone().setAlpha(0.5).toString()\n\n return {\n display: legend.display,\n position: legend.position,\n labels: {\n boxWidth: 15,\n color,\n font: { size: fontSize, family: fontFamily }\n }\n }\n}\n\nfunction _buildTooltip({ fontSize, fontFamily }: { fontSize?: number; fontFamily?: string }): SceneChart.ChartTooltipOptions {\n return {\n enabled: true,\n mode: 'index',\n intersect: false,\n titleFont: { size: fontSize, family: fontFamily },\n bodyFont: { size: fontSize, family: fontFamily },\n footerFont: { size: fontSize, family: fontFamily },\n callbacks: {\n label: function (context: any) {\n const dataset = context.dataset\n const value = context.parsed?.y ?? context.parsed ?? context.raw\n const label = dataset.label || context.label || ''\n const format = dataset.valueFormat || ''\n const prefix = dataset.valuePrefix || ''\n const suffix = dataset.valueSuffix || ''\n const stringValue = format ? formatText(format, Number(value)) : Number(value).toLocaleString()\n return `${label}: ${prefix + stringValue + suffix}`\n }\n }\n }\n}\n\nfunction _setupSeriesVisuals(series: SceneChart.ChartDataSets, chartType: string) {\n const type = series.type || chartType\n const color = (() => {\n switch (type) {\n case 'line':\n case 'radar':\n return series.color || series.borderColor\n default:\n return series.color || series.backgroundColor\n }\n })()\n\n switch (type) {\n case 'bar':\n case 'horizontalBar':\n series.borderColor = series.backgroundColor = color as string\n break\n case 'line':\n case 'radar':\n series.pointBackgroundColor = series.pointBorderColor = series.borderColor = series.backgroundColor = color as string\n series.pointBorderWidth = ((series.borderWidth as number) || 0) * 0.5\n series.pointHoverRadius = series.pointRadius\n if (series.fill == undefined) series.fill = false\n // v2 lineTension → v4 tension\n if ((series as any).lineTension != null && series.tension == null) {\n series.tension = (series as any).lineTension\n }\n break\n default:\n series.borderColor = series.backgroundColor = color as string\n break\n }\n\n series.dataLabelAnchor = series.dataLabelAnchor || 'center'\n series.dataLabelOffset = series.dataLabelOffset || 0\n series.dataLabelRotation = series.dataLabelRotation || 0\n}\n\nfunction _getBaseColorFromTheme(theme?: string) {\n return new TinyColor(theme === 'light' ? '#fff' : '#000')\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import 'core-js/stable/index.js';
2
- import 'regenerator-runtime/runtime.js';
3
1
  import './chartjs.js';
4
2
  declare const _default: "./chartjs.js";
5
3
  export default _default;
package/dist/index.js CHANGED
@@ -1,5 +1,3 @@
1
- import 'core-js/stable/index.js';
2
- import 'regenerator-runtime/runtime.js';
3
1
  import './chartjs.js';
4
2
  export default './chartjs.js';
5
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA;AAChC,OAAO,gCAAgC,CAAA;AACvC,OAAO,cAAc,CAAA;AAErB,eAAe,cAAc,CAAA","sourcesContent":["import 'core-js/stable/index.js'\nimport 'regenerator-runtime/runtime.js'\nimport './chartjs.js'\n\nexport default './chartjs.js'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,eAAe,cAAc,CAAA","sourcesContent":["import './chartjs.js'\n\nexport default './chartjs.js'\n"]}
@@ -1,5 +1,3 @@
1
- import 'chartjs-plugin-datalabels';
2
- import 'chartjs-plugin-style';
3
1
  import { LitElement, PropertyValues } from 'lit';
4
2
  export declare class OxChart extends LitElement {
5
3
  width: number;
@@ -8,10 +6,12 @@ export declare class OxChart extends LitElement {
8
6
  data: SceneChart.ChartData;
9
7
  private _chart?;
10
8
  _canvas: HTMLCanvasElement;
9
+ static styles: import("lit").CSSResult;
11
10
  firstUpdated(): void;
12
11
  render(): import("lit-html").TemplateResult<1>;
13
12
  dispose(): void;
14
13
  updated(changes: PropertyValues<this>): void;
14
+ private _createChart;
15
15
  initChart(): void;
16
16
  updateChartSize(): void;
17
17
  updateChartConfig(): void;
package/dist/ox-chart.js CHANGED
@@ -1,14 +1,59 @@
1
1
  import { __decorate } from "tslib";
2
- import 'chartjs-plugin-datalabels';
3
- import 'chartjs-plugin-style';
4
- import { LitElement, html } from 'lit';
2
+ import ChartDataLabels from 'chartjs-plugin-datalabels';
3
+ import { LitElement, html, css } from 'lit';
5
4
  import { customElement, property, query } from 'lit/decorators.js';
6
- import { Chart } from 'chart.js';
5
+ import { Chart } from 'chart.js/auto';
7
6
  import { format as formatText } from '@operato/utils/format.js';
8
7
  import DataBinderPlugin from './plugins/chartjs-plugin-data-binder.js';
8
+ import SeriesHighlightPlugin from './plugins/chart-series-highlight.js';
9
9
  import { convertConfigure } from './config-converter.js';
10
- Chart.plugins.register(DataBinderPlugin);
10
+ /**
11
+ * Chart.js v4의 CSS transform 좌표 보정 플러그인.
12
+ *
13
+ * v4는 offsetX / chart.width로 마우스 좌표를 계산하는데,
14
+ * offsetX(unscaled)와 chart.width(때에 따라 scaled/unscaled)의
15
+ * 좌표계가 불일치할 수 있다.
16
+ *
17
+ * v2는 (clientX - rect.left) / rect.width로 계산했으므로
18
+ * 둘 다 getBoundingClientRect 기반(= 항상 같은 좌표계)이어서
19
+ * CSS transform과 무관하게 정확했다.
20
+ *
21
+ * 이 플러그인은 beforeEvent에서 v2 방식으로 좌표를 재계산한다.
22
+ */
23
+ const V2CoordPlugin = {
24
+ id: 'v2coord',
25
+ beforeEvent(chart, args) {
26
+ const nativeEvent = args.event.native;
27
+ if (!nativeEvent)
28
+ return;
29
+ const canvas = chart.canvas;
30
+ const rect = canvas.getBoundingClientRect();
31
+ if (!rect.width || !rect.height)
32
+ return;
33
+ const touches = nativeEvent.touches;
34
+ const clientX = touches?.length ? touches[0].clientX : nativeEvent.clientX;
35
+ const clientY = touches?.length ? touches[0].clientY : nativeEvent.clientY;
36
+ if (clientX === undefined)
37
+ return;
38
+ const dpr = chart.currentDevicePixelRatio;
39
+ // v2 공식: clientX와 rect.width 모두 visual(scaled) 좌표계 → 비율 항상 정확
40
+ args.event.x = Math.round((clientX - rect.left) / rect.width * canvas.width / dpr);
41
+ args.event.y = Math.round((clientY - rect.top) / rect.height * canvas.height / dpr);
42
+ args.inChartArea = chart.isPointInArea(args.event);
43
+ }
44
+ };
45
+ Chart.register(ChartDataLabels, DataBinderPlugin, SeriesHighlightPlugin, V2CoordPlugin);
11
46
  let OxChart = class OxChart extends LitElement {
47
+ _chart;
48
+ static styles = css `
49
+ :host {
50
+ display: block;
51
+ }
52
+ canvas {
53
+ width: 100%;
54
+ height: 100%;
55
+ }
56
+ `;
12
57
  firstUpdated() {
13
58
  this.initChart();
14
59
  }
@@ -16,8 +61,7 @@ let OxChart = class OxChart extends LitElement {
16
61
  return html ` <canvas></canvas> `;
17
62
  }
18
63
  dispose() {
19
- var _a;
20
- (_a = this._chart) === null || _a === void 0 ? void 0 : _a.destroy();
64
+ this._chart?.destroy();
21
65
  this._chart = null;
22
66
  }
23
67
  updated(changes) {
@@ -27,54 +71,40 @@ let OxChart = class OxChart extends LitElement {
27
71
  if (changes.has('options')) {
28
72
  this.updateChartConfig();
29
73
  }
30
- if (changes.has('data')) {
74
+ if (changes.has('data') && this._chart) {
31
75
  this._chart.data.rawData = this.data;
32
76
  this._chart.update();
33
77
  }
34
78
  }
35
- initChart() {
36
- var _a;
37
- const { data, options, type } = this.options;
38
- this.options.options.tooltip = (_a = this.options.options.tooltip) !== null && _a !== void 0 ? _a : true;
39
- options.maintainAspectRatio = false;
40
- this.attachPluginOptions(options);
41
- convertConfigure(this.options);
42
- this._chart = new Chart(this._canvas, {
43
- type,
44
- data,
45
- options
79
+ _createChart(converted) {
80
+ this.style.width = `${Math.floor(this.width)}px`;
81
+ this.style.height = `${Math.floor(this.height)}px`;
82
+ const chart = new Chart(this._canvas, {
83
+ type: converted.type,
84
+ data: converted.data,
85
+ options: converted.options
46
86
  });
47
- this.updateChartSize();
87
+ return chart;
88
+ }
89
+ initChart() {
90
+ const converted = convertConfigure(this.options);
91
+ this.attachPluginOptions(converted.options);
92
+ this._chart = this._createChart(converted);
48
93
  }
49
94
  updateChartSize() {
50
- const width = Math.floor(this.width);
51
- const height = Math.floor(this.height);
52
- this._canvas.style.width = `${width}px`;
53
- this._canvas.style.height = `${height}px`;
54
- const _ = () => {
55
- if (this._canvas.offsetWidth == 0 || this._canvas.offsetHeight == 0) {
56
- requestAnimationFrame(_);
57
- }
58
- else {
59
- /*
60
- 주의 : chart.resize() 내에서 pixel ratio를 감안해서, canvas 의 width, height를 설정하기때문에,
61
- 별도 처리가 필요하지 않다.
62
- */
63
- this._chart.resize();
64
- }
65
- };
66
- requestAnimationFrame(_);
95
+ this.style.width = `${Math.floor(this.width)}px`;
96
+ this.style.height = `${Math.floor(this.height)}px`;
97
+ if (!this._chart)
98
+ return;
99
+ this._chart.resize();
67
100
  }
68
101
  updateChartConfig() {
69
102
  if (!this._chart)
70
103
  return;
71
- const { data, options, type } = this.options;
72
- options.maintainAspectRatio = false;
73
- this.attachPluginOptions(options);
74
- convertConfigure(this.options);
75
- this._chart.type = type;
76
- this._chart.data = data;
77
- this._chart.options = options;
104
+ const converted = convertConfigure(this.options);
105
+ this.attachPluginOptions(converted.options);
106
+ this._chart.destroy();
107
+ this._chart = this._createChart(converted);
78
108
  this._chart.data.rawData = this.data;
79
109
  this._chart.update();
80
110
  }
@@ -88,54 +118,38 @@ let OxChart = class OxChart extends LitElement {
88
118
  pluginOptions.datalabels = {
89
119
  ...pluginOptions.datalabels,
90
120
  display: function (context) {
91
- // 기존 boolean type 을 string으로 바꾸면서 T, F, auto 추가 (실제 타입은 true, false, 'auto')
92
- //@ts-ignore
93
121
  const displayValue = context.dataset.displayValue || false;
94
122
  return displayValue === 'T' ? true : displayValue === 'F' ? false : displayValue;
95
123
  },
96
124
  anchor: function (context) {
97
- //@ts-ignore
98
125
  return context.dataset.dataLabelAnchor || 'center';
99
126
  },
100
127
  offset: function (context) {
101
- //@ts-ignore
102
128
  return context.dataset.dataLabelOffset || 0;
103
129
  },
104
- //@ts-ignore
105
130
  align: function (context) {
106
- //@ts-ignore
107
131
  return context.dataset.dataLabelAnchor || 'center';
108
132
  },
109
- //@ts-ignore
110
133
  rotation: function (context) {
111
- //@ts-ignore
112
134
  return context.dataset.dataLabelRotation || 0;
113
135
  },
114
136
  color: function (context) {
115
- var _a;
116
- //@ts-ignore
117
- return ((_a = context.dataset) === null || _a === void 0 ? void 0 : _a.defaultFontColor) || '#000';
137
+ return context.dataset?.defaultFontColor || '#000';
118
138
  },
119
139
  font: function (context) {
120
- var _a, _b;
121
140
  return {
122
- //@ts-ignore
123
- size: (_a = context.dataset) === null || _a === void 0 ? void 0 : _a.defaultFontSize,
124
- //@ts-ignore
125
- family: (_b = context.chart.options) === null || _b === void 0 ? void 0 : _b.defaultFontFamily
141
+ size: context.dataset?.defaultFontSize,
142
+ family: context.chart.options?.defaultFontFamily
126
143
  };
127
144
  },
128
145
  clamp: true,
129
146
  formatter: function (value, context) {
130
- //@ts-ignore
131
- var format = context.dataset.valueFormat || '';
132
- //@ts-ignore
133
- var prefix = context.dataset.valuePrefix || '';
134
- //@ts-ignore
135
- var suffix = context.dataset.valueSuffix || '';
147
+ const format = context.dataset.valueFormat || '';
148
+ const prefix = context.dataset.valuePrefix || '';
149
+ const suffix = context.dataset.valueSuffix || '';
136
150
  if (value == undefined)
137
151
  return value;
138
- var stringValue = format ? formatText(format, Number(value)) : Number(value).toLocaleString();
152
+ const stringValue = format ? formatText(format, Number(value)) : Number(value).toLocaleString();
139
153
  return prefix + stringValue + suffix;
140
154
  }
141
155
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ox-chart.js","sourceRoot":"","sources":["../src/ox-chart.ts"],"names":[],"mappings":"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","sourcesContent":["import 'chartjs-plugin-datalabels'\nimport 'chartjs-plugin-style'\n\nimport { LitElement, PropertyValues, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { Chart } from 'chart.js'\nimport { format as formatText } from '@operato/utils/format.js'\nimport DataBinderPlugin from './plugins/chartjs-plugin-data-binder.js'\nimport { convertConfigure } from './config-converter.js'\n\nChart.plugins.register(DataBinderPlugin)\n\n@customElement('ox-chart')\nexport class OxChart extends LitElement {\n @property({ type: Number }) width!: number\n @property({ type: Number }) height!: number\n @property({ type: Object }) options!: SceneChart.ChartConfig\n @property({ type: Object }) data!: SceneChart.ChartData\n\n private _chart?: SceneChart | null\n\n @query('canvas') _canvas!: HTMLCanvasElement\n\n firstUpdated() {\n this.initChart()\n }\n\n render() {\n return html` <canvas></canvas> `\n }\n\n dispose() {\n this._chart?.destroy()\n this._chart = null\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('width') || changes.has('height')) {\n this.updateChartSize()\n }\n\n if (changes.has('options')) {\n this.updateChartConfig()\n }\n\n if (changes.has('data')) {\n this._chart!.data.rawData = this.data\n this._chart!.update()\n }\n }\n\n initChart() {\n const { data, options, type } = this.options\n this.options.options.tooltip = this.options.options.tooltip ?? true\n options!.maintainAspectRatio = false\n\n this.attachPluginOptions(options)\n convertConfigure(this.options as SceneChart.ChartConfig)\n\n this._chart = new Chart(this._canvas, {\n type,\n data,\n options\n }) as SceneChart\n\n this.updateChartSize()\n }\n\n updateChartSize() {\n const width = Math.floor(this.width)\n const height = Math.floor(this.height)\n\n this._canvas.style.width = `${width}px`\n this._canvas.style.height = `${height}px`\n\n const _ = () => {\n if (this._canvas.offsetWidth == 0 || this._canvas.offsetHeight == 0) {\n requestAnimationFrame(_)\n } else {\n /*\n 주의 : chart.resize() 내에서 pixel ratio를 감안해서, canvas 의 width, height를 설정하기때문에,\n 별도 처리가 필요하지 않다.\n */\n this._chart!.resize()\n }\n }\n\n requestAnimationFrame(_)\n }\n\n updateChartConfig() {\n if (!this._chart) return\n\n const { data, options, type } = this.options\n options!.maintainAspectRatio = false\n\n this.attachPluginOptions(options)\n convertConfigure(this.options as SceneChart.ChartConfig)\n\n this._chart.type = type\n this._chart.data = data\n this._chart.options = options\n this._chart.data.rawData = this.data\n this._chart.update()\n }\n\n attachPluginOptions(options: SceneChart.ChartOptions) {\n if (!options.plugins) {\n options.plugins = {}\n }\n\n this.attachDatalabelPluginOptions(options.plugins)\n }\n\n attachDatalabelPluginOptions(pluginOptions: SceneChart.ChartPluginsOptions) {\n pluginOptions.datalabels = {\n ...pluginOptions.datalabels,\n display: function (context) {\n // 기존 boolean type 을 string으로 바꾸면서 T, F, auto 추가 (실제 타입은 true, false, 'auto')\n //@ts-ignore\n const displayValue = context.dataset.displayValue || false\n return displayValue === 'T' ? true : displayValue === 'F' ? false : displayValue\n },\n anchor: function (context) {\n //@ts-ignore\n return context.dataset.dataLabelAnchor || 'center'\n },\n offset: function (context) {\n //@ts-ignore\n return context.dataset.dataLabelOffset || 0\n },\n //@ts-ignore\n align: function (context) {\n //@ts-ignore\n return context.dataset.dataLabelAnchor || 'center'\n },\n //@ts-ignore\n rotation: function (context) {\n //@ts-ignore\n return context.dataset.dataLabelRotation || 0\n },\n color: function (context) {\n //@ts-ignore\n return context.dataset?.defaultFontColor || '#000'\n },\n font: function (context) {\n return {\n //@ts-ignore\n size: context.dataset?.defaultFontSize,\n //@ts-ignore\n family: context.chart.options?.defaultFontFamily\n }\n },\n clamp: true,\n formatter: function (value, context) {\n //@ts-ignore\n var format = context.dataset.valueFormat || ''\n //@ts-ignore\n var prefix = context.dataset.valuePrefix || ''\n //@ts-ignore\n var suffix = context.dataset.valueSuffix || ''\n if (value == undefined) return value\n\n var stringValue = format ? formatText(format, Number(value)) : Number(value).toLocaleString()\n return prefix + stringValue + suffix\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ox-chart.js","sourceRoot":"","sources":["../src/ox-chart.ts"],"names":[],"mappings":"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","sourcesContent":["import ChartDataLabels from 'chartjs-plugin-datalabels'\n\nimport { LitElement, PropertyValues, html, css } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { Chart } from 'chart.js/auto'\nimport { format as formatText } from '@operato/utils/format.js'\nimport DataBinderPlugin from './plugins/chartjs-plugin-data-binder.js'\nimport SeriesHighlightPlugin from './plugins/chart-series-highlight.js'\nimport { convertConfigure } from './config-converter.js'\n\n/**\n * Chart.js v4의 CSS transform 좌표 보정 플러그인.\n *\n * v4는 offsetX / chart.width로 마우스 좌표를 계산하는데,\n * offsetX(unscaled)와 chart.width(때에 따라 scaled/unscaled)의\n * 좌표계가 불일치할 수 있다.\n *\n * v2는 (clientX - rect.left) / rect.width로 계산했으므로\n * 둘 다 getBoundingClientRect 기반(= 항상 같은 좌표계)이어서\n * CSS transform과 무관하게 정확했다.\n *\n * 이 플러그인은 beforeEvent에서 v2 방식으로 좌표를 재계산한다.\n */\nconst V2CoordPlugin = {\n id: 'v2coord',\n beforeEvent(chart: any, args: any) {\n const nativeEvent = args.event.native\n if (!nativeEvent) return\n\n const canvas = chart.canvas\n const rect = canvas.getBoundingClientRect()\n if (!rect.width || !rect.height) return\n\n const touches = nativeEvent.touches\n const clientX = touches?.length ? touches[0].clientX : nativeEvent.clientX\n const clientY = touches?.length ? touches[0].clientY : nativeEvent.clientY\n if (clientX === undefined) return\n\n const dpr = chart.currentDevicePixelRatio\n\n // v2 공식: clientX와 rect.width 모두 visual(scaled) 좌표계 → 비율 항상 정확\n args.event.x = Math.round((clientX - rect.left) / rect.width * canvas.width / dpr)\n args.event.y = Math.round((clientY - rect.top) / rect.height * canvas.height / dpr)\n args.inChartArea = chart.isPointInArea(args.event)\n }\n}\n\nChart.register(ChartDataLabels, DataBinderPlugin, SeriesHighlightPlugin, V2CoordPlugin)\n\n@customElement('ox-chart')\nexport class OxChart extends LitElement {\n @property({ type: Number }) declare width: number\n @property({ type: Number }) declare height: number\n @property({ type: Object }) declare options: SceneChart.ChartConfig\n @property({ type: Object }) declare data: SceneChart.ChartData\n\n private _chart?: SceneChart | null\n\n @query('canvas') declare _canvas: HTMLCanvasElement\n\n static styles = css`\n :host {\n display: block;\n }\n canvas {\n width: 100%;\n height: 100%;\n }\n `\n\n firstUpdated() {\n this.initChart()\n }\n\n render() {\n return html` <canvas></canvas> `\n }\n\n dispose() {\n this._chart?.destroy()\n this._chart = null\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('width') || changes.has('height')) {\n this.updateChartSize()\n }\n\n if (changes.has('options')) {\n this.updateChartConfig()\n }\n\n if (changes.has('data') && this._chart) {\n this._chart.data.rawData = this.data\n this._chart.update()\n }\n }\n\n private _createChart(converted: SceneChart.ChartConfig): SceneChart {\n this.style.width = `${Math.floor(this.width)}px`\n this.style.height = `${Math.floor(this.height)}px`\n\n const chart = new Chart(this._canvas, {\n type: converted.type as any,\n data: converted.data as any,\n options: converted.options as any\n }) as unknown as SceneChart\n\n return chart\n }\n\n initChart() {\n const converted = convertConfigure(this.options as SceneChart.ChartConfig)\n this.attachPluginOptions(converted.options)\n\n this._chart = this._createChart(converted)\n }\n\n updateChartSize() {\n this.style.width = `${Math.floor(this.width)}px`\n this.style.height = `${Math.floor(this.height)}px`\n\n if (!this._chart) return\n\n this._chart.resize()\n }\n\n updateChartConfig() {\n if (!this._chart) return\n\n const converted = convertConfigure(this.options as SceneChart.ChartConfig)\n this.attachPluginOptions(converted.options)\n\n this._chart.destroy()\n\n this._chart = this._createChart(converted)\n this._chart.data.rawData = this.data\n this._chart.update()\n }\n\n attachPluginOptions(options: SceneChart.ChartOptions) {\n if (!options.plugins) {\n options.plugins = {}\n }\n\n this.attachDatalabelPluginOptions(options.plugins)\n }\n\n attachDatalabelPluginOptions(pluginOptions: SceneChart.ChartPluginsOptions) {\n pluginOptions.datalabels = {\n ...pluginOptions.datalabels,\n display: function (context: any) {\n const displayValue = context.dataset.displayValue || false\n return displayValue === 'T' ? true : displayValue === 'F' ? false : displayValue\n },\n anchor: function (context: any) {\n return context.dataset.dataLabelAnchor || 'center'\n },\n offset: function (context: any) {\n return context.dataset.dataLabelOffset || 0\n },\n align: function (context: any) {\n return context.dataset.dataLabelAnchor || 'center'\n },\n rotation: function (context: any) {\n return context.dataset.dataLabelRotation || 0\n },\n color: function (context: any) {\n return context.dataset?.defaultFontColor || '#000'\n },\n font: function (context: any) {\n return {\n size: context.dataset?.defaultFontSize,\n family: context.chart.options?.defaultFontFamily\n }\n },\n clamp: true,\n formatter: function (value: any, context: any) {\n const format = context.dataset.valueFormat || ''\n const prefix = context.dataset.valuePrefix || ''\n const suffix = context.dataset.valueSuffix || ''\n if (value == undefined) return value\n\n const stringValue = format ? formatText(format, Number(value)) : Number(value).toLocaleString()\n return prefix + stringValue + suffix\n }\n }\n }\n}\n"]}
@@ -1,4 +1,3 @@
1
- import 'ses';
2
1
  declare const _default: {
3
2
  id: string;
4
3
  beforeDraw: (chartInstance: SceneChart) => void;
@@ -1,24 +1,28 @@
1
- import 'ses';
2
1
  function seriesHighlight(chartInstance, seriesData) {
3
- var _a;
4
- (_a = chartInstance.data.datasets) === null || _a === void 0 ? void 0 : _a.forEach(dataset => {
2
+ chartInstance.data.datasets?.forEach(dataset => {
5
3
  let highlight = dataset.highlight;
6
4
  if (!highlight) {
7
5
  return;
8
6
  }
9
7
  let highlightColor = highlight.color;
10
8
  let highlightCondition = highlight.condition;
11
- const c = new Compartment();
12
9
  seriesData.forEach((sdata, sIndex) => {
13
10
  sdata.forEach((data, i) => {
14
- if (!c.evaluate(highlightCondition)) {
11
+ try {
12
+ if (!new Function('return ' + highlightCondition)()) {
13
+ return;
14
+ }
15
+ }
16
+ catch {
15
17
  return;
16
18
  }
17
19
  let meta = chartInstance.getDatasetMeta(sIndex);
18
- meta.data[i]._model.backgroundColor = highlightColor;
19
- //@ts-ignore
20
- meta.data[i]._model.hoverBackgroundColor = highlightColor;
21
- // dataset.backgroundColor = highlightColor
20
+ // v4: use element options instead of removed _model
21
+ const element = meta.data[i];
22
+ if (element) {
23
+ element.options = element.options || {};
24
+ element.options.backgroundColor = highlightColor;
25
+ }
22
26
  });
23
27
  });
24
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"chart-series-highlight.js","sourceRoot":"","sources":["../../src/plugins/chart-series-highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAA;AAEZ,SAAS,eAAe,CAAC,aAAyB,EAAE,UAAiC;;IACnF,MAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7C,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAA;QACpC,IAAI,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAA;QAC5C,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,CAAA;QAE3B,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,CAAS,EAAE,EAAE;gBACjD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACpC,OAAM;gBACR,CAAC;gBAED,IAAI,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;gBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,GAAG,cAAc,CAAA;gBACpD,YAAY;gBACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,GAAG,cAAc,CAAA;gBAEzD,2CAA2C;YAC7C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,eAAe;IACb,EAAE,EAAE,wBAAwB;IAC5B,UAAU,EAAE,UAAU,aAAyB;QAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAM;QACR,CAAC;QAED,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;QACtD,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IAC5C,CAAC;CACF,CAAA","sourcesContent":["import 'ses'\n\nfunction seriesHighlight(chartInstance: SceneChart, seriesData: SceneChart.DataSeries) {\n chartInstance.data.datasets?.forEach(dataset => {\n let highlight = dataset.highlight\n if (!highlight) {\n return\n }\n\n let highlightColor = highlight.color\n let highlightCondition = highlight.condition\n const c = new Compartment()\n\n seriesData.forEach((sdata, sIndex) => {\n sdata.forEach((data: SceneChart.Data, i: number) => {\n if (!c.evaluate(highlightCondition)) {\n return\n }\n\n let meta = chartInstance.getDatasetMeta(sIndex)\n meta.data[i]._model.backgroundColor = highlightColor\n //@ts-ignore\n meta.data[i]._model.hoverBackgroundColor = highlightColor\n\n // dataset.backgroundColor = highlightColor\n })\n })\n })\n}\n\nexport default {\n id: 'chart-series-highlight',\n beforeDraw: function (chartInstance: SceneChart) {\n if (!chartInstance.data.rawData) {\n return\n }\n\n let seriesData = chartInstance.data.rawData.seriesData\n seriesHighlight(chartInstance, seriesData)\n }\n}\n"]}
1
+ {"version":3,"file":"chart-series-highlight.js","sourceRoot":"","sources":["../../src/plugins/chart-series-highlight.ts"],"names":[],"mappings":"AAAA,SAAS,eAAe,CAAC,aAAyB,EAAE,UAAiC;IACnF,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7C,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAA;QACpC,IAAI,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAA;QAE5C,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,CAAS,EAAE,EAAE;gBACjD,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,kBAAkB,CAAC,EAAE,EAAE,CAAC;wBACpD,OAAM;oBACR,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAM;gBACR,CAAC;gBAED,IAAI,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;gBAC/C,oDAAoD;gBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAQ,CAAA;gBACnC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;oBACvC,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,cAAc,CAAA;gBAClD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,eAAe;IACb,EAAE,EAAE,wBAAwB;IAC5B,UAAU,EAAE,UAAU,aAAyB;QAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAM;QACR,CAAC;QAED,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;QACtD,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IAC5C,CAAC;CACF,CAAA","sourcesContent":["function seriesHighlight(chartInstance: SceneChart, seriesData: SceneChart.DataSeries) {\n chartInstance.data.datasets?.forEach(dataset => {\n let highlight = dataset.highlight\n if (!highlight) {\n return\n }\n\n let highlightColor = highlight.color\n let highlightCondition = highlight.condition\n\n seriesData.forEach((sdata, sIndex) => {\n sdata.forEach((data: SceneChart.Data, i: number) => {\n try {\n if (!new Function('return ' + highlightCondition)()) {\n return\n }\n } catch {\n return\n }\n\n let meta = chartInstance.getDatasetMeta(sIndex)\n // v4: use element options instead of removed _model\n const element = meta.data[i] as any\n if (element) {\n element.options = element.options || {}\n element.options.backgroundColor = highlightColor\n }\n })\n })\n })\n}\n\nexport default {\n id: 'chart-series-highlight',\n beforeDraw: function (chartInstance: SceneChart) {\n if (!chartInstance.data.rawData) {\n return\n }\n\n let seriesData = chartInstance.data.rawData.seriesData\n seriesHighlight(chartInstance, seriesData)\n }\n}\n"]}
@@ -62,7 +62,7 @@ function toObjectArrayValue(array) {
62
62
  for (let key in array[0]) {
63
63
  indexKeyMap[key] = array[0][key];
64
64
  }
65
- for (var i = 1; i < array.length; i++) {
65
+ for (let i = 1; i < array.length; i++) {
66
66
  let object = {};
67
67
  let thisObject = array[i];
68
68
  for (let key in indexKeyMap) {
@@ -1 +1 @@
1
- {"version":3,"file":"chartjs-plugin-data-binder.js","sourceRoot":"","sources":["../../src/plugins/chartjs-plugin-data-binder.ts"],"names":[],"mappings":"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","sourcesContent":["function convertObject(\n dataArray: string | SceneChart.DataSeries | Object,\n chartInstance: SceneChart\n): null | Object | SceneChart.DataSeries {\n if (!dataArray) {\n return null\n }\n\n if (typeof dataArray == 'string') {\n try {\n dataArray = JSON.parse(dataArray)\n } catch (e) {\n console.warn('invalid chart data format', e)\n return null\n }\n }\n\n if (!(dataArray instanceof Array)) {\n // is not Array\n if (dataArray instanceof Object) {\n return dataArray\n }\n return null\n }\n\n if (dataArray.length === 0) {\n return null\n }\n\n // modeling중 변수 기본값에 대한 처리\n if (dataArray[0].hasOwnProperty('__field1')) {\n dataArray = toObjectArrayValue(dataArray) as SceneChart.DataSeries\n }\n\n let label = chartInstance.data.labelDataKey\n let seriesKeys = []\n\n for (let i in chartInstance.data.datasets) {\n seriesKeys.push(chartInstance.data.datasets[Number(i)].dataKey)\n }\n\n let seriesData: SceneChart.DataSeries = []\n let labelData: SceneChart.DataSeries = []\n\n let convertedObject = {\n seriesData,\n labelData\n }\n\n for (let i = 0; i < (dataArray as Array<any>).length; i++) {\n let currData: SceneChart.Data = (dataArray as SceneChart.DataSeries)[Number(i)]\n labelData.push(currData[label!])\n\n for (let i in seriesKeys) {\n if (!seriesKeys[i]) continue\n\n if (!seriesData[i]) seriesData[i] = []\n\n // 값이 NaN 경우엔 차트를 그리지 않음\n if (isNaN(currData[seriesKeys[i]])) {\n currData[seriesKeys[i]] = NaN\n }\n\n seriesData[i].push(currData[seriesKeys[i]])\n }\n }\n\n return convertedObject\n}\n\nfunction toObjectArrayValue(array: SceneChart.DataSeries): SceneChart.DataSeries | null {\n if (!array || array.length === 0) {\n return null\n }\n\n let indexKeyMap: SceneChart.Data = {}\n let value = []\n\n for (let key in array[0]) {\n indexKeyMap[key] = array[0][key]\n }\n\n for (var i = 1; i < array.length; i++) {\n let object: SceneChart.Data = {}\n let thisObject = array[i]\n\n for (let key in indexKeyMap) {\n let k = indexKeyMap[key]\n let v = thisObject[key]\n object[k] = v\n }\n\n value.push(object)\n }\n\n return value\n}\n\nfunction updateSeriesDatas(chartInstance: SceneChart) {\n if (!chartInstance.data.rawData) {\n return\n }\n\n let seriesData = chartInstance.data.rawData.seriesData\n\n if (!seriesData || seriesData.length === 0) seriesData = [null]\n\n for (let key in chartInstance.data.datasets) {\n chartInstance.data.datasets[Number(key)].data = seriesData[key] || []\n }\n}\n\nfunction updateLabelDatas(chartInstance: SceneChart) {\n let labelData = chartInstance.data.rawData.labelData\n chartInstance.config.data!.labels = labelData || []\n}\n\nexport default {\n id: 'data-binder',\n beforeUpdate: function (chartInstance: SceneChart) {\n if (!chartInstance.data) return\n\n if (!chartInstance.data.rawData) chartInstance.data.rawData = []\n\n chartInstance.data.rawData = convertObject(chartInstance.data.rawData, chartInstance) || {\n seriesData: [],\n labelData: []\n }\n\n let seriesData = chartInstance.data.rawData.seriesData\n updateLabelDatas(chartInstance)\n updateSeriesDatas(chartInstance)\n }\n}\n"]}
1
+ {"version":3,"file":"chartjs-plugin-data-binder.js","sourceRoot":"","sources":["../../src/plugins/chartjs-plugin-data-binder.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,CACpB,SAAkD,EAClD,aAAyB;IAEzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,EAAE,CAAC;QAClC,eAAe;QACf,IAAI,SAAS,YAAY,MAAM,EAAE,CAAC;YAChC,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0BAA0B;IAC1B,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAA0B,CAAA;IACpE,CAAC;IAED,IAAI,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAA;IAC3C,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,UAAU,GAA0B,EAAE,CAAA;IAC1C,IAAI,SAAS,GAA0B,EAAE,CAAA;IAEzC,IAAI,eAAe,GAAG;QACpB,UAAU;QACV,SAAS;KACV,CAAA;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAI,SAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1D,IAAI,QAAQ,GAAqB,SAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAM,CAAC,CAAC,CAAA;QAEhC,KAAK,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,SAAQ;YAE5B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YAEtC,wBAAwB;YACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YAC/B,CAAC;YAED,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA4B;IACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,WAAW,GAAoB,EAAE,CAAA;IACrC,IAAI,KAAK,GAAG,EAAE,CAAA;IAEd,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,MAAM,GAAoB,EAAE,CAAA;QAChC,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAEzB,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YACxB,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;YACvB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACf,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAyB;IAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,OAAM;IACR,CAAC;IAED,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;IAEtD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,UAAU,GAAG,CAAC,IAAI,CAAC,CAAA;IAE/D,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5C,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACvE,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAyB;IACjD,IAAI,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;IACpD,aAAa,CAAC,MAAM,CAAC,IAAK,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,CAAA;AACrD,CAAC;AAED,eAAe;IACb,EAAE,EAAE,aAAa;IACjB,YAAY,EAAE,UAAU,aAAyB;QAC/C,IAAI,CAAC,aAAa,CAAC,IAAI;YAAE,OAAM;QAE/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEhE,aAAa,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI;YACvF,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,EAAE;SACd,CAAA;QAED,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;QACtD,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAC/B,iBAAiB,CAAC,aAAa,CAAC,CAAA;IAClC,CAAC;CACF,CAAA","sourcesContent":["function convertObject(\n dataArray: string | SceneChart.DataSeries | Object,\n chartInstance: SceneChart\n): null | Object | SceneChart.DataSeries {\n if (!dataArray) {\n return null\n }\n\n if (typeof dataArray == 'string') {\n try {\n dataArray = JSON.parse(dataArray)\n } catch (e) {\n console.warn('invalid chart data format', e)\n return null\n }\n }\n\n if (!(dataArray instanceof Array)) {\n // is not Array\n if (dataArray instanceof Object) {\n return dataArray\n }\n return null\n }\n\n if (dataArray.length === 0) {\n return null\n }\n\n // modeling중 변수 기본값에 대한 처리\n if (dataArray[0].hasOwnProperty('__field1')) {\n dataArray = toObjectArrayValue(dataArray) as SceneChart.DataSeries\n }\n\n let label = chartInstance.data.labelDataKey\n let seriesKeys = []\n\n for (let i in chartInstance.data.datasets) {\n seriesKeys.push(chartInstance.data.datasets[Number(i)].dataKey)\n }\n\n let seriesData: SceneChart.DataSeries = []\n let labelData: SceneChart.DataSeries = []\n\n let convertedObject = {\n seriesData,\n labelData\n }\n\n for (let i = 0; i < (dataArray as Array<any>).length; i++) {\n let currData: SceneChart.Data = (dataArray as SceneChart.DataSeries)[Number(i)]\n labelData.push(currData[label!])\n\n for (let i in seriesKeys) {\n if (!seriesKeys[i]) continue\n\n if (!seriesData[i]) seriesData[i] = []\n\n // 값이 NaN 경우엔 차트를 그리지 않음\n if (isNaN(currData[seriesKeys[i]])) {\n currData[seriesKeys[i]] = NaN\n }\n\n seriesData[i].push(currData[seriesKeys[i]])\n }\n }\n\n return convertedObject\n}\n\nfunction toObjectArrayValue(array: SceneChart.DataSeries): SceneChart.DataSeries | null {\n if (!array || array.length === 0) {\n return null\n }\n\n let indexKeyMap: SceneChart.Data = {}\n let value = []\n\n for (let key in array[0]) {\n indexKeyMap[key] = array[0][key]\n }\n\n for (let i = 1; i < array.length; i++) {\n let object: SceneChart.Data = {}\n let thisObject = array[i]\n\n for (let key in indexKeyMap) {\n let k = indexKeyMap[key]\n let v = thisObject[key]\n object[k] = v\n }\n\n value.push(object)\n }\n\n return value\n}\n\nfunction updateSeriesDatas(chartInstance: SceneChart) {\n if (!chartInstance.data.rawData) {\n return\n }\n\n let seriesData = chartInstance.data.rawData.seriesData\n\n if (!seriesData || seriesData.length === 0) seriesData = [null]\n\n for (let key in chartInstance.data.datasets) {\n chartInstance.data.datasets[Number(key)].data = seriesData[key] || []\n }\n}\n\nfunction updateLabelDatas(chartInstance: SceneChart) {\n let labelData = chartInstance.data.rawData.labelData\n chartInstance.config.data!.labels = labelData || []\n}\n\nexport default {\n id: 'data-binder',\n beforeUpdate: function (chartInstance: SceneChart) {\n if (!chartInstance.data) return\n\n if (!chartInstance.data.rawData) chartInstance.data.rawData = []\n\n chartInstance.data.rawData = convertObject(chartInstance.data.rawData, chartInstance) || {\n seriesData: [],\n labelData: []\n }\n\n let seriesData = chartInstance.data.rawData.seriesData\n updateLabelDatas(chartInstance)\n updateSeriesDatas(chartInstance)\n }\n}\n"]}
@@ -12,7 +12,7 @@ export default {
12
12
  width: 200,
13
13
  height: 200,
14
14
  chart: {
15
- type: 'horizontalBar',
15
+ type: 'bar',
16
16
  data: {
17
17
  labels: [],
18
18
  datasets: [
@@ -1 +1 @@
1
- {"version":3,"file":"horizontal-bar-chart.js","sourceRoot":"","sources":["../../src/templates/horizontal-bar-chart.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAElF,eAAe;IACb,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,+BAA+B;IAC5C,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,eAAe;IACtB,gGAAgG;IAChG,KAAK,EAAE;QACL,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,KAAK,EAAE;YACL,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE;gBACJ,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,EAAE;wBACR,eAAe,EAAE,mBAAmB;wBACpC,WAAW,EAAE,mBAAmB;wBAChC,WAAW,EAAE,CAAC;wBACd,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,MAAM;qBAChB;oBACD;wBACE,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,EAAE;wBACR,eAAe,EAAE,mBAAmB;wBACpC,WAAW,EAAE,mBAAmB;wBAChC,WAAW,EAAE,CAAC;wBACd,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,MAAM;qBAChB;iBACF;gBACD,YAAY,EAAE,OAAO;aACtB;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE;wBACL;4BACE,SAAS,EAAE;gCACT,OAAO,EAAE,IAAI;6BACd;4BACD,UAAU,EAAE;gCACV,WAAW,EAAE,EAAE;gCACf,OAAO,EAAE,KAAK;6BACf;4BACD,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;6BACd;yBACF;qBACF;oBACD,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,MAAM;4BACV,QAAQ,EAAE,MAAM;4BAChB,SAAS,EAAE;gCACT,OAAO,EAAE,KAAK;6BACf;4BACD,UAAU,EAAE;gCACV,WAAW,EAAE,EAAE;gCACf,OAAO,EAAE,KAAK;6BACf;4BACD,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;6BACd;yBACF;qBACF;iBACF;aACF;SACF;QACD,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;aACX;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;SACF;KACF;CACF,CAAA","sourcesContent":["const icon = new URL('../../icons/horizontal-bar-chart.png', import.meta.url).href\n\nexport default {\n type: 'horizontal-bar-chart',\n description: 'ChartJS - horizontal barchart',\n icon: icon,\n group: 'chartAndGauge',\n /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */\n model: {\n type: 'chartjs',\n top: 200,\n left: 300,\n width: 200,\n height: 200,\n chart: {\n type: 'horizontalBar',\n data: {\n labels: [],\n datasets: [\n {\n label: 'series 1',\n data: [],\n backgroundColor: 'rgb(66, 110, 164)',\n borderColor: 'rgb(66, 110, 164)',\n borderWidth: 0,\n dataKey: 'value1',\n yAxisID: 'left'\n },\n {\n label: 'series 2',\n data: [],\n backgroundColor: 'rgb(62, 196, 221)',\n borderColor: 'rgb(62, 196, 221)',\n borderWidth: 0,\n dataKey: 'value2',\n yAxisID: 'left'\n }\n ],\n labelDataKey: 'color'\n },\n options: {\n theme: 'dark',\n xGridLine: true,\n yGridLine: false,\n legend: {\n display: true,\n position: 'top'\n },\n scales: {\n xAxes: [\n {\n gridLines: {\n display: true\n },\n scaleLabel: {\n labelString: '',\n display: false\n },\n ticks: {\n autoMin: true,\n autoMax: true,\n display: true\n }\n }\n ],\n yAxes: [\n {\n id: 'left',\n position: 'left',\n gridLines: {\n display: false\n },\n scaleLabel: {\n labelString: '',\n display: false\n },\n ticks: {\n autoMin: true,\n autoMax: true,\n display: true\n }\n }\n ]\n }\n }\n },\n data: [\n {\n color: 'Red',\n value1: 12,\n value2: 24\n },\n {\n color: 'Blue',\n value1: 19,\n value2: 9\n },\n {\n color: 'Yellow',\n value1: 3,\n value2: 6\n },\n {\n color: 'Green',\n value1: 5,\n value2: 2\n },\n {\n color: 'Purple',\n value1: 2,\n value2: 4\n },\n {\n color: 'Orange',\n value1: 3,\n value2: 1\n }\n ]\n }\n}\n"]}
1
+ {"version":3,"file":"horizontal-bar-chart.js","sourceRoot":"","sources":["../../src/templates/horizontal-bar-chart.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAElF,eAAe;IACb,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,+BAA+B;IAC5C,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,eAAe;IACtB,gGAAgG;IAChG,KAAK,EAAE;QACL,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,KAAK,EAAE;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,EAAE;wBACR,eAAe,EAAE,mBAAmB;wBACpC,WAAW,EAAE,mBAAmB;wBAChC,WAAW,EAAE,CAAC;wBACd,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,MAAM;qBAChB;oBACD;wBACE,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,EAAE;wBACR,eAAe,EAAE,mBAAmB;wBACpC,WAAW,EAAE,mBAAmB;wBAChC,WAAW,EAAE,CAAC;wBACd,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,MAAM;qBAChB;iBACF;gBACD,YAAY,EAAE,OAAO;aACtB;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE;wBACL;4BACE,SAAS,EAAE;gCACT,OAAO,EAAE,IAAI;6BACd;4BACD,UAAU,EAAE;gCACV,WAAW,EAAE,EAAE;gCACf,OAAO,EAAE,KAAK;6BACf;4BACD,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;6BACd;yBACF;qBACF;oBACD,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,MAAM;4BACV,QAAQ,EAAE,MAAM;4BAChB,SAAS,EAAE;gCACT,OAAO,EAAE,KAAK;6BACf;4BACD,UAAU,EAAE;gCACV,WAAW,EAAE,EAAE;gCACf,OAAO,EAAE,KAAK;6BACf;4BACD,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,IAAI;6BACd;yBACF;qBACF;iBACF;aACF;SACF;QACD,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;aACX;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;aACV;SACF;KACF;CACF,CAAA","sourcesContent":["const icon = new URL('../../icons/horizontal-bar-chart.png', import.meta.url).href\n\nexport default {\n type: 'horizontal-bar-chart',\n description: 'ChartJS - horizontal barchart',\n icon: icon,\n group: 'chartAndGauge',\n /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */\n model: {\n type: 'chartjs',\n top: 200,\n left: 300,\n width: 200,\n height: 200,\n chart: {\n type: 'bar',\n data: {\n labels: [],\n datasets: [\n {\n label: 'series 1',\n data: [],\n backgroundColor: 'rgb(66, 110, 164)',\n borderColor: 'rgb(66, 110, 164)',\n borderWidth: 0,\n dataKey: 'value1',\n yAxisID: 'left'\n },\n {\n label: 'series 2',\n data: [],\n backgroundColor: 'rgb(62, 196, 221)',\n borderColor: 'rgb(62, 196, 221)',\n borderWidth: 0,\n dataKey: 'value2',\n yAxisID: 'left'\n }\n ],\n labelDataKey: 'color'\n },\n options: {\n theme: 'dark',\n xGridLine: true,\n yGridLine: false,\n legend: {\n display: true,\n position: 'top'\n },\n scales: {\n xAxes: [\n {\n gridLines: {\n display: true\n },\n scaleLabel: {\n labelString: '',\n display: false\n },\n ticks: {\n autoMin: true,\n autoMax: true,\n display: true\n }\n }\n ],\n yAxes: [\n {\n id: 'left',\n position: 'left',\n gridLines: {\n display: false\n },\n scaleLabel: {\n labelString: '',\n display: false\n },\n ticks: {\n autoMin: true,\n autoMax: true,\n display: true\n }\n }\n ]\n }\n }\n },\n data: [\n {\n color: 'Red',\n value1: 12,\n value2: 24\n },\n {\n color: 'Blue',\n value1: 19,\n value2: 9\n },\n {\n color: 'Yellow',\n value1: 3,\n value2: 6\n },\n {\n color: 'Green',\n value1: 5,\n value2: 2\n },\n {\n color: 'Purple',\n value1: 2,\n value2: 4\n },\n {\n color: 'Orange',\n value1: 3,\n value2: 1\n }\n ]\n }\n}\n"]}