@embeddable.com/remarkable-pro 0.3.15 → 0.3.16
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/dist/AreaChartPro.js +1 -1
- package/dist/BarChartDefaultHorizontalPro.js +1 -1
- package/dist/BarChartDefaultPro.js +1 -1
- package/dist/BarChartGroupedHorizontalPro.js +1 -1
- package/dist/BarChartGroupedPro.js +1 -1
- package/dist/BarChartStackedHorizontalPro.js +1 -1
- package/dist/BarChartStackedPro.js +1 -1
- package/dist/BarLineChartPro.js +1 -1
- package/dist/BubbleChartPro.js +1 -1
- package/dist/{ChartCard-C4MndGoP.js → ChartCard-C72rw1Ya.js} +2 -2
- package/dist/{ChartCard-C4MndGoP.js.map → ChartCard-C72rw1Ya.js.map} +1 -1
- package/dist/ComparisonPeriodSelectFieldPro.js +1 -1
- package/dist/DateRangePickerCustomPro.js +1 -1
- package/dist/DateRangeSelectFieldPro.js +1 -1
- package/dist/{DimensionAndMeasureSingleSelectField-YgZIeOad.js → DimensionAndMeasureSingleSelectField-D2dx-AOV.js} +2 -2
- package/dist/{DimensionAndMeasureSingleSelectField-YgZIeOad.js.map → DimensionAndMeasureSingleSelectField-D2dx-AOV.js.map} +1 -1
- package/dist/DimensionMeasureMultiSelectFieldPro.js +1 -1
- package/dist/DimensionSingleSelectFieldPro.js +1 -1
- package/dist/DonutChartPro.js +1 -1
- package/dist/DonutLabelChartPro.js +1 -1
- package/dist/{EditorCard-BVtdJ04L.js → EditorCard-C5VwkYTO.js} +2 -2
- package/dist/{EditorCard-BVtdJ04L.js.map → EditorCard-C5VwkYTO.js.map} +1 -1
- package/dist/FilterBuilderPro.js +1 -1
- package/dist/{GranularitySelectField-DvrniLCq.js → GranularitySelectField-B7bPGvIp.js} +2 -2
- package/dist/{GranularitySelectField-DvrniLCq.js.map → GranularitySelectField-B7bPGvIp.js.map} +1 -1
- package/dist/GranularitySelectFieldPro.js +1 -1
- package/dist/HeatMapPro.js +1 -1
- package/dist/KpiChartNumberComparisonPro.js +1 -1
- package/dist/KpiChartNumberPro.js +1 -1
- package/dist/LineChartComparisonDefaultPro.js +1 -1
- package/dist/LineChartComparisonWithKpiTabsPro.js +1 -1
- package/dist/LineChartDefaultPro.js +1 -1
- package/dist/LineChartGroupedPro.js +1 -1
- package/dist/LineChartWithKpiTabsPro.js +1 -1
- package/dist/MarkdownPro.js +1 -1
- package/dist/MeasureMultiSelectFieldPro.js +1 -1
- package/dist/MeasureSingleSelectFieldPro.js +1 -1
- package/dist/MultiSelectFieldPro.js +1 -1
- package/dist/PieChartPro.js +1 -1
- package/dist/PivotTablePro.js +1 -1
- package/dist/ScatterChartPro.js +1 -1
- package/dist/SingleSelectFieldPro.js +1 -1
- package/dist/TableChartPaginated.js +1 -1
- package/dist/TableScrollable.js +1 -1
- package/dist/TextFieldPro.js +1 -1
- package/dist/{bars.loadData.utils-AVsNPNMZ.js → bars.loadData.utils-qHyrp6mu.js} +2 -2
- package/dist/{bars.loadData.utils-AVsNPNMZ.js.map → bars.loadData.utils-qHyrp6mu.js.map} +1 -1
- package/dist/{bars.utils-ZwBz0eSf.js → bars.utils-4Vu_6Vwr.js} +4 -4
- package/dist/{bars.utils-ZwBz0eSf.js.map → bars.utils-4Vu_6Vwr.js.map} +1 -1
- package/dist/{charts.utils-DL-pzVG-.js → charts.utils-Czfl880z.js} +2 -2
- package/dist/{charts.utils-DL-pzVG-.js.map → charts.utils-Czfl880z.js.map} +1 -1
- package/dist/{component.utils-oQMZT7TK.js → component.utils-B7tQ4cCT.js} +4 -4
- package/dist/{component.utils-oQMZT7TK.js.map → component.utils-B7tQ4cCT.js.map} +1 -1
- package/dist/components/component.utils.d.ts.map +1 -1
- package/dist/{definition-CRvMDjRB.js → definition-B6NctClA.js} +4 -4
- package/dist/{definition-CRvMDjRB.js.map → definition-B6NctClA.js.map} +1 -1
- package/dist/{definition-CaV4qPYQ.js → definition-B9eClP6I.js} +5 -5
- package/dist/{definition-CaV4qPYQ.js.map → definition-B9eClP6I.js.map} +1 -1
- package/dist/{definition-Deq5jKVy.js → definition-BQZkjNaI.js} +5 -5
- package/dist/{definition-Deq5jKVy.js.map → definition-BQZkjNaI.js.map} +1 -1
- package/dist/{definition-D_ryo6q7.js → definition-BSQcRRwQ.js} +3 -3
- package/dist/{definition-D_ryo6q7.js.map → definition-BSQcRRwQ.js.map} +1 -1
- package/dist/{definition-DyCXYPmd.js → definition-Bid9fwVS.js} +4 -4
- package/dist/{definition-DyCXYPmd.js.map → definition-Bid9fwVS.js.map} +1 -1
- package/dist/{definition-BtNKq3Zv.js → definition-BjdbEoCH.js} +7 -7
- package/dist/{definition-BtNKq3Zv.js.map → definition-BjdbEoCH.js.map} +1 -1
- package/dist/{definition-DlGVdRtS.js → definition-BnZSlj8x.js} +4 -4
- package/dist/{definition-DlGVdRtS.js.map → definition-BnZSlj8x.js.map} +1 -1
- package/dist/{definition-So9tZlMi.js → definition-BopXgBSc.js} +6 -6
- package/dist/{definition-So9tZlMi.js.map → definition-BopXgBSc.js.map} +1 -1
- package/dist/{definition-atfrMsXT.js → definition-Bsh6Toao.js} +7 -7
- package/dist/{definition-atfrMsXT.js.map → definition-Bsh6Toao.js.map} +1 -1
- package/dist/{definition-CBUbQZvZ.js → definition-C0VyzJWX.js} +7 -7
- package/dist/{definition-CBUbQZvZ.js.map → definition-C0VyzJWX.js.map} +1 -1
- package/dist/{definition-_zJ7wlgc.js → definition-C6YKs0rc.js} +3 -3
- package/dist/{definition-_zJ7wlgc.js.map → definition-C6YKs0rc.js.map} +1 -1
- package/dist/{definition-DoM-A1nT.js → definition-CF-FBr4a.js} +4 -4
- package/dist/{definition-DoM-A1nT.js.map → definition-CF-FBr4a.js.map} +1 -1
- package/dist/{definition-DQeqVfK6.js → definition-CS_f89ly.js} +4 -4
- package/dist/{definition-DQeqVfK6.js.map → definition-CS_f89ly.js.map} +1 -1
- package/dist/{definition-CSA_9QtD.js → definition-CfJRkeoi.js} +4 -4
- package/dist/{definition-CSA_9QtD.js.map → definition-CfJRkeoi.js.map} +1 -1
- package/dist/{definition-Dw72pLmB.js → definition-CifvR_ce.js} +4 -4
- package/dist/{definition-Dw72pLmB.js.map → definition-CifvR_ce.js.map} +1 -1
- package/dist/{definition-DOZHDhbP.js → definition-Cj20ajOq.js} +4 -4
- package/dist/{definition-DOZHDhbP.js.map → definition-Cj20ajOq.js.map} +1 -1
- package/dist/{definition-C3aFGWw-.js → definition-CjdvxkC_.js} +3 -3
- package/dist/{definition-C3aFGWw-.js.map → definition-CjdvxkC_.js.map} +1 -1
- package/dist/{definition-DCvpurgC.js → definition-CoEAmgPz.js} +7 -7
- package/dist/{definition-DCvpurgC.js.map → definition-CoEAmgPz.js.map} +1 -1
- package/dist/{definition-rgPq6VPL.js → definition-D-7fCnK5.js} +3 -3
- package/dist/{definition-rgPq6VPL.js.map → definition-D-7fCnK5.js.map} +1 -1
- package/dist/{definition-DaGw0pa5.js → definition-D46_JOLS.js} +2 -2
- package/dist/{definition-DaGw0pa5.js.map → definition-D46_JOLS.js.map} +1 -1
- package/dist/{definition-DVzvnrBf.js → definition-D5V_UP9I.js} +7 -7
- package/dist/{definition-DVzvnrBf.js.map → definition-D5V_UP9I.js.map} +1 -1
- package/dist/{definition-DZ4_Wg8R.js → definition-DJOxJUDL.js} +4 -4
- package/dist/{definition-DZ4_Wg8R.js.map → definition-DJOxJUDL.js.map} +1 -1
- package/dist/{definition-DKM3Mx4Z.js → definition-DV3XAemq.js} +6 -6
- package/dist/{definition-DKM3Mx4Z.js.map → definition-DV3XAemq.js.map} +1 -1
- package/dist/{definition-BcsHRDkv.js → definition-DZSXXY3i.js} +5 -5
- package/dist/{definition-BcsHRDkv.js.map → definition-DZSXXY3i.js.map} +1 -1
- package/dist/{definition-DuNVn_Zv.js → definition-Dj2fOcLJ.js} +4 -4
- package/dist/{definition-DuNVn_Zv.js.map → definition-Dj2fOcLJ.js.map} +1 -1
- package/dist/{definition-BqQJmkId.js → definition-DnLCl6jI.js} +4 -4
- package/dist/{definition-BqQJmkId.js.map → definition-DnLCl6jI.js.map} +1 -1
- package/dist/{definition-BPosaTH4.js → definition-DrRXfegd.js} +4 -4
- package/dist/{definition-BPosaTH4.js.map → definition-DrRXfegd.js.map} +1 -1
- package/dist/{definition-Du-gOi0o.js → definition-Dvm9tY5Y.js} +7 -7
- package/dist/{definition-Du-gOi0o.js.map → definition-Dvm9tY5Y.js.map} +1 -1
- package/dist/{definition-Bco3wav-.js → definition-Dw4388wt.js} +4 -4
- package/dist/{definition-Bco3wav-.js.map → definition-Dw4388wt.js.map} +1 -1
- package/dist/{definition-CnCQc4Ds.js → definition-GY2DJJ7u.js} +7 -7
- package/dist/{definition-CnCQc4Ds.js.map → definition-GY2DJJ7u.js.map} +1 -1
- package/dist/{definition-BshhnH_Q.js → definition-KHcLAKES.js} +6 -6
- package/dist/{definition-BshhnH_Q.js.map → definition-KHcLAKES.js.map} +1 -1
- package/dist/{definition-C2k5NhdG.js → definition-R6w8d-nt.js} +4 -4
- package/dist/{definition-C2k5NhdG.js.map → definition-R6w8d-nt.js.map} +1 -1
- package/dist/{definition-NVrrC9Aq.js → definition-jPJunkuw.js} +5 -5
- package/dist/{definition-NVrrC9Aq.js.map → definition-jPJunkuw.js.map} +1 -1
- package/dist/{definition-BXJSlAhg.js → definition-m71Whuy4.js} +4 -4
- package/dist/{definition-BXJSlAhg.js.map → definition-m71Whuy4.js.map} +1 -1
- package/dist/{definition-DoSFbUU_.js → definition-tN-Rlh_R.js} +7 -7
- package/dist/{definition-DoSFbUU_.js.map → definition-tN-Rlh_R.js.map} +1 -1
- package/dist/{definition-J-vD12mT.js → definition-wZGQYPSO.js} +4 -4
- package/dist/{definition-J-vD12mT.js.map → definition-wZGQYPSO.js.map} +1 -1
- package/dist/{definition-rnayY6ub.js → definition-zCln3iQl.js} +6 -6
- package/dist/{definition-rnayY6ub.js.map → definition-zCln3iQl.js.map} +1 -1
- package/dist/{dimensionsAndMeasures.utils-D6wqLAjd.js → dimensionsAndMeasures.utils-mGymNq3G.js} +2 -2
- package/dist/{dimensionsAndMeasures.utils-D6wqLAjd.js.map → dimensionsAndMeasures.utils-mGymNq3G.js.map} +1 -1
- package/dist/embeddable-components.json +56 -56
- package/dist/embeddable-theme-0137e.js +3 -3
- package/dist/{formatter.utils-CNK7r1DQ.js → formatter.utils-Wcc93V-N.js} +2 -2
- package/dist/{formatter.utils-CNK7r1DQ.js.map → formatter.utils-Wcc93V-N.js.map} +1 -1
- package/dist/{granularity.utils-BreNR3T1.js → granularity.utils-BidDuinr.js} +2 -2
- package/dist/{granularity.utils-BreNR3T1.js.map → granularity.utils-BidDuinr.js.map} +1 -1
- package/dist/index.js +51 -51
- package/dist/{pies.utils-DAWVYwtx.js → pies.utils-eVQYLyQD.js} +5 -5
- package/dist/{pies.utils-DAWVYwtx.js.map → pies.utils-eVQYLyQD.js.map} +1 -1
- package/dist/{tables.utils-BcfzBmXp.js → tables.utils-yPdd41i1.js} +2 -2
- package/dist/{tables.utils-BcfzBmXp.js.map → tables.utils-yPdd41i1.js.map} +1 -1
- package/dist/{theme.constants-CVAIAY_P.js → theme.constants-DrhAyRBp.js} +3 -3
- package/dist/{theme.constants-CVAIAY_P.js.map → theme.constants-DrhAyRBp.js.map} +1 -1
- package/dist/{timeRange.utils-kK6r26ZO.js → timeRange.utils-rEuTaidc.js} +2 -2
- package/dist/{timeRange.utils-kK6r26ZO.js.map → timeRange.utils-rEuTaidc.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as F } from "./theme.constants-
|
|
2
|
-
import { g as f, a as v } from "./formatter.utils-
|
|
3
|
-
import { g as M, a as h, b as P } from "./charts.utils-
|
|
1
|
+
import { r as F } from "./theme.constants-DrhAyRBp.js";
|
|
2
|
+
import { g as f, a as v } from "./formatter.utils-Wcc93V-N.js";
|
|
3
|
+
import { g as M, a as h, b as P } from "./charts.utils-Czfl880z.js";
|
|
4
4
|
import { g } from "./styles.utils-C8CnV0SB.js";
|
|
5
5
|
import { p as $ } from "./index-BCG-LNTx.js";
|
|
6
6
|
const q = (n, i) => {
|
|
@@ -168,4 +168,4 @@ export {
|
|
|
168
168
|
z as c,
|
|
169
169
|
x as g
|
|
170
170
|
};
|
|
171
|
-
//# sourceMappingURL=bars.utils-
|
|
171
|
+
//# sourceMappingURL=bars.utils-4Vu_6Vwr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bars.utils-ZwBz0eSf.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport {\n getDatalabelPercentage,\n getDimensionWithoutTruncation,\n groupTailAsOther,\n} from '../charts.utils';\nimport { getDimensionFieldName } from '../../../utils/data.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n axisOrder?: string[];\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const uniqueAxis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))];\n uniqueAxis.sort();\n\n const axis = props.axisOrder ? props.axisOrder.filter((v) => uniqueAxis.includes(v)) : uniqueAxis;\n const groupDimensionName = getDimensionFieldName(groupDimension);\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(\n Number(value),\n context.dataset.data,\n measure.inputs?.decimalPlaces,\n );\n }\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(getDimensionWithoutTruncation(dimension), label);\n },\n\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data, measure.inputs?.decimalPlaces)})`;\n }\n\n return `${context.dataset.label}: ${measureValue} ${percentage}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n };\n};\n\nexport const getBarStackedChartProOptions = (\n options: {\n measures: Measure[];\n dimension: Dimension;\n groupDimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { measures, groupDimension } = options;\n const themeFormatter = getThemeFormatter(theme);\n const base = getBarChartProOptions(options, theme);\n\n base.plugins!.tooltip = {\n callbacks: {\n ...base.plugins!.tooltip!.callbacks,\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data, measure.inputs?.decimalPlaces)})`;\n }\n\n const label = themeFormatter.data(\n getDimensionWithoutTruncation(groupDimension),\n (context.dataset as { rawLabel?: string }).rawLabel,\n );\n return `${label}: ${measureValue} ${percentage}`;\n },\n },\n };\n\n return base;\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","uniqueAxis","d","axis","v","groupDimensionName","getDimensionFieldName","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","measures","horizontal","_value","value","_a","getDatalabelPercentage","_b","label","getDimensionWithoutTruncation","raw","measureValue","percentage","getBarStackedChartProOptions","base"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bars.utils-4Vu_6Vwr.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport {\n getDatalabelPercentage,\n getDimensionWithoutTruncation,\n groupTailAsOther,\n} from '../charts.utils';\nimport { getDimensionFieldName } from '../../../utils/data.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n axisOrder?: string[];\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const uniqueAxis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))];\n uniqueAxis.sort();\n\n const axis = props.axisOrder ? props.axisOrder.filter((v) => uniqueAxis.includes(v)) : uniqueAxis;\n const groupDimensionName = getDimensionFieldName(groupDimension);\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(\n Number(value),\n context.dataset.data,\n measure.inputs?.decimalPlaces,\n );\n }\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(getDimensionWithoutTruncation(dimension), label);\n },\n\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data, measure.inputs?.decimalPlaces)})`;\n }\n\n return `${context.dataset.label}: ${measureValue} ${percentage}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n };\n};\n\nexport const getBarStackedChartProOptions = (\n options: {\n measures: Measure[];\n dimension: Dimension;\n groupDimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { measures, groupDimension } = options;\n const themeFormatter = getThemeFormatter(theme);\n const base = getBarChartProOptions(options, theme);\n\n base.plugins!.tooltip = {\n callbacks: {\n ...base.plugins!.tooltip!.callbacks,\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data, measure.inputs?.decimalPlaces)})`;\n }\n\n const label = themeFormatter.data(\n getDimensionWithoutTruncation(groupDimension),\n (context.dataset as { rawLabel?: string }).rawLabel,\n );\n return `${label}: ${measureValue} ${percentage}`;\n },\n },\n };\n\n return base;\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","uniqueAxis","d","axis","v","groupDimensionName","getDimensionFieldName","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","measures","horizontal","_value","value","_a","getDatalabelPercentage","_b","label","getDimensionWithoutTruncation","raw","measureValue","percentage","getBarStackedChartProOptions","base"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { g } from "./dimension.utils-CQAdVGip.js";
|
|
2
|
-
import { a as h } from "./component.utils-
|
|
2
|
+
import { a as h } from "./component.utils-B7tQ4cCT.js";
|
|
3
3
|
const v = (e) => ({
|
|
4
4
|
...e,
|
|
5
5
|
inputs: { ...e.inputs, maxCharacters: null }
|
|
@@ -76,4 +76,4 @@ export {
|
|
|
76
76
|
F as d,
|
|
77
77
|
x as g
|
|
78
78
|
};
|
|
79
|
-
//# sourceMappingURL=charts.utils-
|
|
79
|
+
//# sourceMappingURL=charts.utils-Czfl880z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.utils-
|
|
1
|
+
{"version":3,"file":"charts.utils-Czfl880z.js","sources":["../src/components/charts/charts.utils.ts"],"sourcesContent":["import { ChartClickArgs } from '@embeddable.com/remarkable-ui';\nimport { DataResponse, Dimension, Granularity, Measure } from '@embeddable.com/core';\nimport { getTimeRangeFromDimensionValue } from '../utils/dimension.utils';\nimport { i18n } from '../../theme/i18n/i18n';\nimport { GroupedClickArg, SimpleClickArg } from './charts.types';\nimport { ChartData } from 'chart.js';\n\nexport const getDimensionWithoutTruncation = (dimension: Dimension): Dimension => ({\n ...dimension,\n inputs: { ...dimension.inputs, maxCharacters: null },\n});\n\nexport const groupTailAsOther = (\n data: DataResponse['data'] = [],\n dimension: Dimension,\n measures: Measure[],\n maxItems?: number,\n) => {\n if (!maxItems || data.length <= maxItems) return data;\n\n const head = data.slice(0, maxItems - 1);\n const tail = data.slice(maxItems - 1);\n\n const aggregatedRow: Record<string, unknown> = {\n [dimension.name]: i18n.t('common.other'),\n };\n\n for (const measure of measures) {\n const vals = tail.map((row) => Number.parseFloat(row[measure.name] ?? '0'));\n const aggType = (measure.meta as Record<string, unknown> | undefined)?.aggType;\n\n switch (aggType) {\n case 'avg':\n aggregatedRow[measure.name] = vals.reduce((s, v) => s + v, 0) / (vals.length || 1);\n break;\n case 'min':\n aggregatedRow[measure.name] = Math.min(...vals);\n break;\n case 'max':\n aggregatedRow[measure.name] = Math.max(...vals);\n break;\n default:\n aggregatedRow[measure.name] = vals.reduce((s, v) => s + v, 0);\n }\n }\n\n return [...head, aggregatedRow];\n};\n\nexport const getDatalabelPercentage = (\n value: number,\n data: unknown[],\n decimalPlaces = 2,\n): string => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const total = data.reduce((sum: number, v: any) => sum + Number.parseFloat(v), 0);\n if (total === 0) return '0%';\n return `${Number.parseFloat(((value / total) * 100).toFixed(decimalPlaces))}%`;\n};\n\nexport const createSimpleClickHandler = ({\n data,\n dimension,\n granularity,\n onClicked,\n}: {\n data: ChartData;\n dimension: Dimension;\n granularity?: Granularity;\n onClicked?: (args: SimpleClickArg) => void;\n}): ((args: ChartClickArgs) => void) => {\n return ({ elementAtEvent }) => {\n const element = elementAtEvent[0];\n if (!element) return;\n const dimensionValue = data?.labels?.[element.index] as string | undefined;\n const dimensionTimeRange = getTimeRangeFromDimensionValue({\n value: dimensionValue,\n stateGranularity: granularity,\n dimension,\n });\n onClicked?.({ dimensionValue, dimensionTimeRange });\n };\n};\n\nexport const createGroupedClickHandler = ({\n data,\n dimension,\n groupBy,\n granularity,\n onClicked,\n}: {\n data: ChartData;\n dimension: Dimension;\n groupBy: Dimension;\n granularity?: Granularity;\n onClicked?: (args: GroupedClickArg) => void;\n}): ((args: ChartClickArgs) => void) => {\n return ({ elementAtEvent }) => {\n const element = elementAtEvent[0];\n if (!element) return;\n const dimensionValue = data?.labels?.[element.index] as string | undefined;\n const groupingDimensionValue = (\n data?.datasets?.[element.datasetIndex] as { rawLabel?: string } | undefined\n )?.rawLabel;\n const dimensionTimeRange = getTimeRangeFromDimensionValue({\n value: dimensionValue,\n stateGranularity: granularity,\n dimension,\n });\n const groupingDimensionTimeRange = getTimeRangeFromDimensionValue({\n value: groupingDimensionValue,\n dimension: groupBy,\n });\n onClicked?.({\n dimensionValue,\n dimensionTimeRange,\n groupingDimensionValue,\n groupingDimensionTimeRange,\n });\n };\n};\n"],"names":["getDimensionWithoutTruncation","dimension","groupTailAsOther","data","measures","maxItems","head","tail","aggregatedRow","i18n","measure","vals","row","_a","s","v","getDatalabelPercentage","value","decimalPlaces","total","sum","createSimpleClickHandler","granularity","onClicked","elementAtEvent","element","dimensionValue","dimensionTimeRange","getTimeRangeFromDimensionValue","createGroupedClickHandler","groupBy","groupingDimensionValue","_c","_b","groupingDimensionTimeRange"],"mappings":"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"}
|
|
@@ -1391,12 +1391,12 @@ const _e = (a) => {
|
|
|
1391
1391
|
}
|
|
1392
1392
|
});
|
|
1393
1393
|
}, Je = (a, e) => {
|
|
1394
|
-
if (!a
|
|
1394
|
+
if (!(a != null && a.includes("|"))) return a;
|
|
1395
1395
|
const [t, s] = a.split("|", 2).map((i) => i.trim());
|
|
1396
|
-
return y.t(
|
|
1396
|
+
return y.isInitialized ? y.t(
|
|
1397
1397
|
[t, s].filter((i) => !!i),
|
|
1398
1398
|
e
|
|
1399
|
-
);
|
|
1399
|
+
) : s || t;
|
|
1400
1400
|
}, We = (a) => {
|
|
1401
1401
|
const e = {};
|
|
1402
1402
|
return Object.keys(a).forEach((t) => {
|
|
@@ -1410,4 +1410,4 @@ export {
|
|
|
1410
1410
|
_e as i,
|
|
1411
1411
|
We as r
|
|
1412
1412
|
};
|
|
1413
|
-
//# sourceMappingURL=component.utils-
|
|
1413
|
+
//# sourceMappingURL=component.utils-B7tQ4cCT.js.map
|