@embeddable.com/remarkable-pro 0.0.4 → 0.0.5
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/BarChartDefaultHorizontalPro.js +25 -85
- package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
- package/dist/BarChartDefaultPro.js +25 -84
- package/dist/BarChartDefaultPro.js.map +1 -1
- package/dist/BarChartGroupedHorizontalPro.js +33 -102
- package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
- package/dist/BarChartGroupedPro.js +27 -95
- package/dist/BarChartGroupedPro.js.map +1 -1
- package/dist/BarChartStackedHorizontalPro.js +28 -98
- package/dist/BarChartStackedHorizontalPro.js.map +1 -1
- package/dist/BarChartStackedPro.js +28 -97
- package/dist/BarChartStackedPro.js.map +1 -1
- package/dist/{ChartCard-C7c2rTst.js → ChartCard-DPqhmLst.js} +19 -19
- package/dist/{ChartCard-C7c2rTst.js.map → ChartCard-DPqhmLst.js.map} +1 -1
- package/dist/{Color.type.emb-CSPAaucR.js → Color.type.emb-WlORCMYm.js} +2 -2
- package/dist/{Color.type.emb-CSPAaucR.js.map → Color.type.emb-WlORCMYm.js.map} +1 -1
- package/dist/ColorEditor.js +2 -2
- package/dist/{ComparisonPeriod.type.emb-DOpJ1iWj.js → ComparisonPeriod.type.emb-2GetmOu1.js} +2 -2
- package/dist/{ComparisonPeriod.type.emb-DOpJ1iWj.js.map → ComparisonPeriod.type.emb-2GetmOu1.js.map} +1 -1
- package/dist/ComparisonPeriodSelectFieldPro.js +17 -58
- package/dist/ComparisonPeriodSelectFieldPro.js.map +1 -1
- package/dist/DateRangeSelectFieldPro.js +3 -3
- package/dist/DonutChartPro.js +3 -3
- package/dist/DonutLabelChartPro.js +3 -3
- package/dist/EditorCard-BaL9GbQ9.js +32 -0
- package/dist/{EditorCard-BtlvgP9q.js.map → EditorCard-BaL9GbQ9.js.map} +1 -1
- package/dist/HeatMapPro.js +26 -93
- package/dist/HeatMapPro.js.map +1 -1
- package/dist/KpiChartNumberComparisonPro.js +25 -94
- package/dist/KpiChartNumberComparisonPro.js.map +1 -1
- package/dist/KpiChartNumberPro.js +14 -31
- package/dist/KpiChartNumberPro.js.map +1 -1
- package/dist/LineChartComparisonDefaultPro.js +59 -370
- package/dist/LineChartComparisonDefaultPro.js.map +1 -1
- package/dist/LineChartDefaultPro.js +31 -179
- package/dist/LineChartDefaultPro.js.map +1 -1
- package/dist/LineChartGroupedPro.js +30 -174
- package/dist/LineChartGroupedPro.js.map +1 -1
- package/dist/MultiSelectFieldPro.js +3 -3
- package/dist/PieChartPro.js +3 -3
- package/dist/PivotTablePro.js +23 -145
- package/dist/PivotTablePro.js.map +1 -1
- package/dist/SingleSelectFieldPro.js +3 -3
- package/dist/TableChartPaginated.js +37 -172
- package/dist/TableChartPaginated.js.map +1 -1
- package/dist/{bars.utils-JRnFN04m.js → bars.utils-aO0eZx5e.js} +7 -7
- package/dist/{bars.utils-JRnFN04m.js.map → bars.utils-aO0eZx5e.js.map} +1 -1
- package/dist/{charts.utils-DAkS2VK1.js → charts.utils-CZnXoUqF.js} +4 -4
- package/dist/{charts.utils-DAkS2VK1.js.map → charts.utils-CZnXoUqF.js.map} +1 -1
- package/dist/{component.constants-h6et83ck.js → component.constants-C7cqSNbp.js} +2 -2
- package/dist/{component.constants-h6et83ck.js.map → component.constants-C7cqSNbp.js.map} +1 -1
- package/dist/components/charts/tables/HeatMapPro/index.d.ts.map +1 -1
- package/dist/components/charts/tables/PivotTablePro/PivotPro.utils.d.ts +1 -4
- package/dist/components/charts/tables/PivotTablePro/PivotPro.utils.d.ts.map +1 -1
- package/dist/components/charts/tables/PivotTablePro/index.d.ts.map +1 -1
- package/dist/components/charts/tables/tables.hooks.d.ts +17 -0
- package/dist/components/charts/tables/tables.hooks.d.ts.map +1 -0
- package/dist/embeddable-components.json +12 -12
- package/dist/{formatter.utils-DXzI4Hz_.js → formatter.utils-CfrcSyDX.js} +2 -2
- package/dist/{formatter.utils-DXzI4Hz_.js.map → formatter.utils-CfrcSyDX.js.map} +1 -1
- package/dist/{index-QOVQo6ZK.js → index-2EH0Voxh.js} +5 -5
- package/dist/{index-QOVQo6ZK.js.map → index-2EH0Voxh.js.map} +1 -1
- package/dist/index-85Nzu6wl.js +95 -0
- package/dist/index-85Nzu6wl.js.map +1 -0
- package/dist/index-9GEogpMN.js +82 -0
- package/dist/index-9GEogpMN.js.map +1 -0
- package/dist/{index-Czj-HZH9.js → index-BAomPP89.js} +5 -5
- package/dist/{index-Czj-HZH9.js.map → index-BAomPP89.js.map} +1 -1
- package/dist/{index-B4S34Z5S.js → index-BQf2W8Zn.js} +6 -6
- package/dist/{index-B4S34Z5S.js.map → index-BQf2W8Zn.js.map} +1 -1
- package/dist/index-BSc_Axva.js +326 -0
- package/dist/index-BSc_Axva.js.map +1 -0
- package/dist/index-BjdJeBiT.js +73 -0
- package/dist/index-BjdJeBiT.js.map +1 -0
- package/dist/index-C1EIos9z.js +159 -0
- package/dist/index-C1EIos9z.js.map +1 -0
- package/dist/index-C_F-ZHJz.js +163 -0
- package/dist/index-C_F-ZHJz.js.map +1 -0
- package/dist/index-Cc-mtCkt.js +83 -0
- package/dist/index-Cc-mtCkt.js.map +1 -0
- package/dist/index-CvmifdRS.js +72 -0
- package/dist/index-CvmifdRS.js.map +1 -0
- package/dist/index-D1L8EF47.js +82 -0
- package/dist/index-D1L8EF47.js.map +1 -0
- package/dist/{index-BR6dp5RX.js → index-D8D1R5YG.js} +12 -12
- package/dist/{index-BR6dp5RX.js.map → index-D8D1R5YG.js.map} +1 -1
- package/dist/index-DGz1wzRd.js +81 -0
- package/dist/index-DGz1wzRd.js.map +1 -0
- package/dist/index-DORMEL0e.js +82 -0
- package/dist/index-DORMEL0e.js.map +1 -0
- package/dist/index-DTuHmdil.js +89 -0
- package/dist/index-DTuHmdil.js.map +1 -0
- package/dist/index-DZU1PTjb.js +148 -0
- package/dist/index-DZU1PTjb.js.map +1 -0
- package/dist/index-DaeSYZkv.js +30 -0
- package/dist/index-DaeSYZkv.js.map +1 -0
- package/dist/{index-CWYH2gE2.js → index-Dhwlo6sD.js} +5 -5
- package/dist/{index-CWYH2gE2.js.map → index-Dhwlo6sD.js.map} +1 -1
- package/dist/{index-C8O2asSv.js → index-L9ViZuWi.js} +5 -5
- package/dist/{index-C8O2asSv.js.map → index-L9ViZuWi.js.map} +1 -1
- package/dist/{index-DF-AuKua.js → index-WCMGd0_l.js} +15 -14
- package/dist/{index-DF-AuKua.js.map → index-WCMGd0_l.js.map} +1 -1
- package/dist/index-wy7P41uG.js +56 -0
- package/dist/index-wy7P41uG.js.map +1 -0
- package/dist/index.d.ts +27 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +117 -74
- package/dist/index.js.map +1 -1
- package/dist/{pies.utils-Bl8jquyV.js → pies.utils-DlK4ABKU.js} +5 -5
- package/dist/{pies.utils-Bl8jquyV.js.map → pies.utils-DlK4ABKU.js.map} +1 -1
- package/dist/tables.hooks-BQdyUxau.js +45 -0
- package/dist/tables.hooks-BQdyUxau.js.map +1 -0
- package/dist/{timeRange.utils-CslTQiVA.js → timeRange.utils-CWl9EGOR.js} +2 -2
- package/dist/{timeRange.utils-CslTQiVA.js.map → timeRange.utils-CWl9EGOR.js.map} +1 -1
- package/package.json +1 -1
- package/dist/EditorCard-BtlvgP9q.js +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChartGroupedPro.js","sources":["../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.ts","../src/components/charts/lines/LineChartGroupedPro/index.tsx","../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.emb.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { mergician } from 'mergician';\nimport { getObjectStableKey } from '../../../../utils.ts/object.utils';\nimport { getColor } from '../../../../theme/styles/styles.utils';\nimport { setColorAlpha } from '../../../../utils.ts/color.utils';\nimport { getChartContrastColors } from '@embeddable.com/remarkable-ui';\nimport { getLineChartProOptions, LineChartProOptionsClick } from '../lines.utils';\n\nexport const getLineChartGroupedProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n hasMinMaxYAxisRange: boolean;\n },\n theme: Theme,\n): ChartData<'line'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure, hasMinMaxYAxisRange } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupBy = [...new Set(data.map((d) => d[groupDimension.name]))].filter((d) => d != null);\n\n const themeKey = getObjectStableKey(theme);\n const chartContrastColors = getChartContrastColors();\n const datasets: ChartData<'line'>['datasets'] = groupBy.map((groupByItem, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.backgroundColors ?? chartContrastColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.borderColors ?? chartContrastColors,\n index,\n );\n\n const dataset = {\n clip: hasMinMaxYAxisRange,\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor: setColorAlpha(backgroundColor, 0.5),\n pointBackgroundColor: backgroundColor,\n fill: measure.inputs?.['fillUnderLine'],\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimension.name] === groupByItem && d[dimension.name] === axisItem,\n );\n return record?.[measure.name] ?? (measure.inputs?.['connectGaps'] ? 0 : null);\n }),\n } as ChartData<'line'>['datasets'][number];\n\n return dataset;\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getLineChartGroupedProOptions = (\n options: {\n dimension: Dimension;\n measure: Measure;\n data: ChartData<'line'>;\n onLineClicked: LineChartProOptionsClick;\n },\n theme: Theme,\n): ChartOptions<'line'> => {\n const { dimension, data, measure, onLineClicked } = options;\n const themeFormatter = getThemeFormatter(theme);\n\n const lineChartOptions: ChartOptions<'line'> = {\n plugins: {\n datalabels: {\n labels: {\n value: {\n formatter: (value: string | number) => {\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(dimension, label);\n },\n label: (context) => {\n const raw = context.raw as number;\n return `${context.dataset.label}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n };\n\n return mergician(\n getLineChartProOptions({ onLineClicked }),\n lineChartOptions,\n theme.charts?.lineChartGroupedPro?.options || {},\n );\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport {\n getLineChartGroupedProData,\n getLineChartGroupedProOptions,\n} from './LineChartGroupedPro.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport { LineChartProOptionsClick } from '../lines.utils';\nimport { LineChart } from '@embeddable.com/remarkable-ui';\n\nexport type LineChartGroupedProPropsOnLineClicked = {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n};\n\ntype LineChartGroupedProProp = {\n description: string;\n xAxis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n results: DataResponse;\n reverseXAxis: boolean;\n showLegend: boolean;\n showLogarithmicScale: boolean;\n showTooltips: boolean;\n showValueLabels: boolean;\n title: string;\n xAxisLabel: string;\n yAxisLabel: string;\n yAxisRangeMax?: number;\n yAxisRangeMin?: number;\n onLineClicked: LineChartProOptionsClick;\n};\n\nconst LineChartGroupedPro = (props: LineChartGroupedProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\n onLineClicked,\n } = props;\n\n const results = useFillGaps({\n results: props.results,\n dimension: props.xAxis,\n });\n\n const data = getLineChartGroupedProData(\n {\n data: results.data,\n dimension: xAxis,\n groupDimension: groupBy,\n measure,\n hasMinMaxYAxisRange: Boolean(yAxisRangeMin != null || yAxisRangeMax != null),\n },\n\n theme,\n );\n const options = getLineChartGroupedProOptions(\n { data, dimension: xAxis, measure, onLineClicked },\n theme,\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <LineChart\n data={data}\n reverseXAxis={reverseXAxis}\n showLegend={showLegend}\n showLogarithmicScale={showLogarithmicScale}\n showTooltips={showTooltips}\n showValueLabels={showValueLabels}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n yAxisRangeMax={yAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n options={options}\n />\n </ChartCard>\n );\n};\n\nexport default LineChartGroupedPro;\n","import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimension,\n dimensionWithDateBounds,\n genericBoolean,\n maxResults,\n measure,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n title,\n xAxisLabel,\n yAxisLabel,\n yAxisRangeMax,\n yAxisRangeMin,\n} from '../../../component.constants';\nimport LineChartGroupedPro from './index';\nimport { loadData, Value } from '@embeddable.com/core';\nimport { LineChartProOptionsClickArg } from '../lines.utils';\n\nexport const meta = {\n name: 'LineChartGroupedPro',\n label: 'Line Chart - Grouped',\n category: 'Line Charts',\n inputs: [\n dataset,\n {\n ...measure,\n inputs: [\n ...measure.inputs,\n { ...genericBoolean, name: 'fillUnderLine', label: 'Fill under line' },\n { ...genericBoolean, name: 'connectGaps', label: 'Connect gaps', defaultValue: true },\n ],\n },\n { ...dimensionWithDateBounds, name: 'xAxis', label: 'X-axis' },\n { ...dimension, name: 'groupBy', label: 'Group by' },\n title,\n description,\n maxResults,\n showLegend,\n showTooltips,\n showValueLabels,\n showLogarithmicScale,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n ],\n events: [\n {\n name: 'onLineClicked',\n label: 'A line is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked Axis Dimension Value',\n type: 'string',\n },\n {\n name: 'groupingDimensionValue',\n label: 'Clicked Grouping Dimension Value',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(LineChartGroupedPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [inputs.xAxis, inputs.groupBy, inputs.measure],\n }),\n };\n },\n events: {\n onLineClicked: (value: LineChartProOptionsClickArg) => {\n return {\n axisDimensionValue: value.dimensionValue || Value.noFilter(),\n groupingDimensionValue: value.groupingDimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["getLineChartGroupedProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","hasMinMaxYAxisRange","axis","d","groupBy","themeKey","getObjectStableKey","chartContrastColors","getChartContrastColors","datasets","groupByItem","index","backgroundColor","getColor","borderColor","setColorAlpha","_a","axisItem","record","getLineChartGroupedProOptions","options","onLineClicked","lineChartOptions","value","context","label","raw","mergician","getLineChartProOptions","_b","LineChartGroupedPro","useTheme","i18nSetup","title","description","xAxisLabel","yAxisLabel","resolveI18nProps","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","results","useFillGaps","jsx","ChartCard","LineChart","meta","dataset","genericBoolean","dimensionWithDateBounds","maxResults","LineChartGroupedPro_emb","defineComponent","inputs","loadData","Value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LineChartGroupedPro.js","sources":["../src/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.emb.ts"],"sourcesContent":["import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimension,\n dimensionWithDateBounds,\n genericBoolean,\n maxResults,\n measure,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n title,\n xAxisLabel,\n yAxisLabel,\n yAxisRangeMax,\n yAxisRangeMin,\n} from '../../../component.constants';\nimport LineChartGroupedPro from './index';\nimport { loadData, Value } from '@embeddable.com/core';\nimport { LineChartProOptionsClickArg } from '../lines.utils';\n\nexport const meta = {\n name: 'LineChartGroupedPro',\n label: 'Line Chart - Grouped',\n category: 'Line Charts',\n inputs: [\n dataset,\n {\n ...measure,\n inputs: [\n ...measure.inputs,\n { ...genericBoolean, name: 'fillUnderLine', label: 'Fill under line' },\n { ...genericBoolean, name: 'connectGaps', label: 'Connect gaps', defaultValue: true },\n ],\n },\n { ...dimensionWithDateBounds, name: 'xAxis', label: 'X-axis' },\n { ...dimension, name: 'groupBy', label: 'Group by' },\n title,\n description,\n maxResults,\n showLegend,\n showTooltips,\n showValueLabels,\n showLogarithmicScale,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n ],\n events: [\n {\n name: 'onLineClicked',\n label: 'A line is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked Axis Dimension Value',\n type: 'string',\n },\n {\n name: 'groupingDimensionValue',\n label: 'Clicked Grouping Dimension Value',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(LineChartGroupedPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [inputs.xAxis, inputs.groupBy, inputs.measure],\n }),\n };\n },\n events: {\n onLineClicked: (value: LineChartProOptionsClickArg) => {\n return {\n axisDimensionValue: value.dimensionValue || Value.noFilter(),\n groupingDimensionValue: value.groupingDimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","measure","genericBoolean","dimensionWithDateBounds","dimension","title","description","maxResults","showLegend","showTooltips","showValueLabels","showLogarithmicScale","xAxisLabel","yAxisLabel","reverseXAxis","yAxisRangeMin","yAxisRangeMax","LineChartGroupedPro_emb","defineComponent","LineChartGroupedPro","inputs","loadData","value","Value"],"mappings":";;;;AAwBO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACA;AAAA,MACE,GAAGC;AAAA,MACH,QAAQ;AAAA,QACN,GAAGA,EAAQ;AAAA,QACX,EAAE,GAAGC,GAAgB,MAAM,iBAAiB,OAAO,kBAAA;AAAA,QACnD,EAAE,GAAGA,GAAgB,MAAM,eAAe,OAAO,gBAAgB,cAAc,GAAA;AAAA,MAAK;AAAA,IACtF;AAAA,IAEF,EAAE,GAAGC,GAAyB,MAAM,SAAS,OAAO,SAAA;AAAA,IACpD,EAAE,GAAGC,GAAW,MAAM,WAAW,OAAO,WAAA;AAAA,IACxCC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,QAER;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEJ,GAEAC,IAAeC,EAAgBC,GAAqBpB,GAAM;AAAA,EACxD,OAAO,CAACqB,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,OAAOD,EAAO;AAAA,MACd,MAAMA,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,OAAOA,EAAO,SAASA,EAAO,OAAO;AAAA,IAAA,CACtD;AAAA,EAAA;AAAA,EAGL,QAAQ;AAAA,IACN,eAAe,CAACE,OACP;AAAA,MACL,oBAAoBA,EAAM,kBAAkBC,EAAM,SAAA;AAAA,MAClD,wBAAwBD,EAAM,0BAA0BC,EAAM,SAAA;AAAA,IAAS;AAAA,EAE3E;AAEJ,CAAC;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as i } from "@embeddable.com/react";
|
|
2
|
-
import { V as t, l as r } from "./index-
|
|
3
|
-
import { v as s, w as d, F as u, G as m, _ as c } from "./component.constants-
|
|
4
|
-
import { M as p, a as f } from "./index-
|
|
2
|
+
import { V as t, l as r } from "./index-D8D1R5YG.js";
|
|
3
|
+
import { v as s, w as d, F as u, G as m, _ as c } from "./component.constants-C7cqSNbp.js";
|
|
4
|
+
import { M as p, a as f } from "./index-BAomPP89.js";
|
|
5
5
|
const g = {
|
|
6
6
|
name: "MultiSelectFieldPro",
|
|
7
7
|
label: "Multi Select Field",
|
package/dist/PieChartPro.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { V as a, l as s } from "./index-
|
|
1
|
+
import { V as a, l as s } from "./index-D8D1R5YG.js";
|
|
2
2
|
import { defineComponent as t } from "@embeddable.com/react";
|
|
3
|
-
import { P as o } from "./index-
|
|
4
|
-
import { v as i, D as n, w as r, F as m, G as l, I as d, Z as p, J as c, K as u } from "./component.constants-
|
|
3
|
+
import { P as o } from "./index-L9ViZuWi.js";
|
|
4
|
+
import { v as i, D as n, w as r, F as m, G as l, I as d, Z as p, J as c, K as u } from "./component.constants-C7cqSNbp.js";
|
|
5
5
|
const C = {
|
|
6
6
|
name: "PieChartPro",
|
|
7
7
|
label: "Pie Chart",
|
package/dist/PivotTablePro.js
CHANGED
|
@@ -1,152 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
import { u as M } from "./charts.fillGaps.hooks-YayOXVmt.js";
|
|
7
|
-
import { g as W } from "./formatter.utils-DXzI4Hz_.js";
|
|
8
|
-
const K = (e, t) => {
|
|
9
|
-
const n = W(t);
|
|
10
|
-
return e.measures.map((o) => {
|
|
11
|
-
var s, a;
|
|
12
|
-
return {
|
|
13
|
-
key: o.name,
|
|
14
|
-
label: n.dimensionOrMeasureTitle(o),
|
|
15
|
-
showAsPercentage: !!((s = o.inputs) != null && s.showAsPercentage),
|
|
16
|
-
percentageDecimalPlaces: ((a = o.inputs) == null ? void 0 : a.decimalPlaces) ?? 1,
|
|
17
|
-
accessor: (r) => r[o.name] == null ? e.displayNullAs : n.data(o, r[o.name])
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
}, S = (e, t) => {
|
|
21
|
-
const n = W(t);
|
|
22
|
-
return {
|
|
23
|
-
key: e.dimension.name,
|
|
24
|
-
label: n.dimensionOrMeasureTitle(e.dimension),
|
|
25
|
-
formatValue: (o) => n.data(e.dimension, o)
|
|
26
|
-
};
|
|
27
|
-
}, Q = (e) => e.filter((t) => {
|
|
28
|
-
var n;
|
|
29
|
-
return (n = t.inputs) == null ? void 0 : n.showColumnTotal;
|
|
30
|
-
}).map((t) => t.name), U = (e) => e.filter((t) => {
|
|
31
|
-
var n;
|
|
32
|
-
return (n = t.inputs) == null ? void 0 : n.showRowTotal;
|
|
33
|
-
}).map((t) => t.name);
|
|
34
|
-
function X(e) {
|
|
35
|
-
let t = 0, n = 0;
|
|
36
|
-
for (let o = 0; o < e.length - 1; o++) {
|
|
37
|
-
const s = e[o], a = e[o + 1];
|
|
38
|
-
s == null || a == null || (s < a ? t++ : s > a && n++);
|
|
39
|
-
}
|
|
40
|
-
return t > n ? "asc" : n > t ? "desc" : "equal";
|
|
41
|
-
}
|
|
42
|
-
function C(e) {
|
|
43
|
-
let t = 0, n = 0;
|
|
44
|
-
for (let o = 0; o < e.length - 1; o++) {
|
|
45
|
-
const s = e[o], a = e[o + 1];
|
|
46
|
-
s == null || a == null || (s < a ? t++ : s > a && n++);
|
|
47
|
-
}
|
|
48
|
-
return t > 0 && n > 0;
|
|
49
|
-
}
|
|
50
|
-
const Y = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "desc" ? t > n ? -1 : t < n ? 1 : 0 : 0, Z = (e, t, n, o, s, a) => {
|
|
51
|
-
const r = e.data ?? [], c = r[0];
|
|
52
|
-
if (!c) return [];
|
|
53
|
-
const b = () => a.reduce((l, i) => (l[i.name] = void 0, l), {}), f = (l, i, d) => {
|
|
54
|
-
if (!C(l))
|
|
55
|
-
return r;
|
|
56
|
-
const h = X(l), p = [...l].sort(Y(h)).map((m) => {
|
|
57
|
-
const u = r.find(
|
|
58
|
-
(w) => w[i.name] === m && w[d.name] === c[d.name]
|
|
59
|
-
);
|
|
60
|
-
return u || {
|
|
61
|
-
...c,
|
|
62
|
-
[i.name]: m,
|
|
63
|
-
...b()
|
|
64
|
-
};
|
|
65
|
-
}), T = r.filter(
|
|
66
|
-
(m) => !p.some(
|
|
67
|
-
(u) => u[i.name] === m[i.name] && u[d.name] === m[d.name]
|
|
68
|
-
)
|
|
69
|
-
);
|
|
70
|
-
return [...p, ...T];
|
|
71
|
-
};
|
|
72
|
-
return C(t) ? f(t, o, s) : C(n) ? f(n, s, o) : r;
|
|
73
|
-
}, $ = (e) => {
|
|
74
|
-
var R;
|
|
75
|
-
const t = N();
|
|
76
|
-
O(t);
|
|
77
|
-
const { description: n, title: o } = k(e), { measures: s, rowDimension: a, columnDimension: r, displayNullAs: c, columnWidth: b, firstColumnWidth: f } = e, l = Array.from(
|
|
78
|
-
new Set((e.results.data ?? []).filter(Boolean).map((g) => g[r.name]))
|
|
79
|
-
), i = Array.from(
|
|
80
|
-
new Set((e.results.data ?? []).filter(Boolean).map((g) => g[a.name]))
|
|
81
|
-
), d = M({
|
|
82
|
-
results: e.results,
|
|
83
|
-
dimension: r
|
|
84
|
-
}), h = M({
|
|
85
|
-
results: d,
|
|
86
|
-
dimension: a
|
|
87
|
-
}), P = _(() => Z(
|
|
88
|
-
h,
|
|
89
|
-
l,
|
|
90
|
-
i,
|
|
91
|
-
r,
|
|
92
|
-
a,
|
|
93
|
-
s
|
|
94
|
-
), [
|
|
95
|
-
h,
|
|
96
|
-
l,
|
|
97
|
-
i,
|
|
98
|
-
r,
|
|
99
|
-
a,
|
|
100
|
-
s
|
|
101
|
-
]), p = J(null), T = K({ measures: s, displayNullAs: c }, t), m = S({ dimension: a }, t), u = S({ dimension: r }, t), w = Q(s), B = U(s);
|
|
102
|
-
return /* @__PURE__ */ A.jsx(
|
|
103
|
-
L,
|
|
104
|
-
{
|
|
105
|
-
ref: p,
|
|
106
|
-
title: o,
|
|
107
|
-
subtitle: n,
|
|
108
|
-
data: e.results,
|
|
109
|
-
dimensionsAndMeasures: [a, r, ...s],
|
|
110
|
-
errorMessage: (R = e.results) == null ? void 0 : R.error,
|
|
111
|
-
children: /* @__PURE__ */ A.jsx(
|
|
112
|
-
x,
|
|
113
|
-
{
|
|
114
|
-
firstColumnWidth: f,
|
|
115
|
-
columnWidth: b,
|
|
116
|
-
totalLabel: E.t("charts.pivotTable.total"),
|
|
117
|
-
data: P,
|
|
118
|
-
measures: T,
|
|
119
|
-
rowDimension: m,
|
|
120
|
-
columnDimension: u,
|
|
121
|
-
columnTotalsFor: w,
|
|
122
|
-
rowTotalsFor: B
|
|
123
|
-
}
|
|
124
|
-
)
|
|
125
|
-
}
|
|
126
|
-
);
|
|
127
|
-
}, ee = {
|
|
1
|
+
import { l as t } from "./index-D8D1R5YG.js";
|
|
2
|
+
import { defineComponent as n } from "@embeddable.com/react";
|
|
3
|
+
import { P as i } from "./index-DTuHmdil.js";
|
|
4
|
+
import { v as m, E as o, k as a, z as l, F as r, G as u, d, c as s, H as b } from "./component.constants-C7cqSNbp.js";
|
|
5
|
+
const c = {
|
|
128
6
|
name: "PivotTablePro",
|
|
129
7
|
label: "Pivot Table",
|
|
130
8
|
category: "Table Charts",
|
|
131
9
|
inputs: [
|
|
132
|
-
|
|
10
|
+
m,
|
|
133
11
|
{
|
|
134
|
-
...
|
|
12
|
+
...o,
|
|
135
13
|
label: "Measures To Display",
|
|
136
14
|
inputs: [
|
|
137
|
-
...
|
|
15
|
+
...o.inputs,
|
|
138
16
|
{
|
|
139
|
-
...
|
|
17
|
+
...a,
|
|
140
18
|
name: "showColumnTotal",
|
|
141
19
|
label: "Show Column Total"
|
|
142
20
|
},
|
|
143
21
|
{
|
|
144
|
-
...
|
|
22
|
+
...a,
|
|
145
23
|
name: "showRowTotal",
|
|
146
24
|
label: "Show Row Total"
|
|
147
25
|
},
|
|
148
26
|
{
|
|
149
|
-
...
|
|
27
|
+
...a,
|
|
150
28
|
name: "showAsPercentage",
|
|
151
29
|
label: "Show As Percentage",
|
|
152
30
|
description: "If turned on, other measures may be ignored",
|
|
@@ -155,36 +33,36 @@ const Y = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "des
|
|
|
155
33
|
]
|
|
156
34
|
},
|
|
157
35
|
{
|
|
158
|
-
...
|
|
36
|
+
...l,
|
|
159
37
|
label: "Row Dimension",
|
|
160
38
|
name: "rowDimension"
|
|
161
39
|
},
|
|
162
40
|
{
|
|
163
|
-
...
|
|
41
|
+
...l,
|
|
164
42
|
label: "Column Dimension",
|
|
165
43
|
name: "columnDimension"
|
|
166
44
|
},
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
{ ...
|
|
45
|
+
r,
|
|
46
|
+
u,
|
|
47
|
+
{ ...d, name: "displayNullAs", label: "Display Null As" },
|
|
170
48
|
{
|
|
171
|
-
...
|
|
49
|
+
...s,
|
|
172
50
|
name: "firstColumnWidth",
|
|
173
51
|
label: "First Column Width",
|
|
174
52
|
description: "Set the width in px (e.g. 200)"
|
|
175
53
|
},
|
|
176
54
|
{
|
|
177
|
-
...
|
|
55
|
+
...s,
|
|
178
56
|
name: "columnWidth",
|
|
179
57
|
label: "Column Width",
|
|
180
58
|
description: "Set the width in px (e.g. 200)"
|
|
181
59
|
},
|
|
182
|
-
|
|
60
|
+
b
|
|
183
61
|
]
|
|
184
|
-
},
|
|
62
|
+
}, D = n(i, c, {
|
|
185
63
|
props: (e) => ({
|
|
186
64
|
...e,
|
|
187
|
-
results:
|
|
65
|
+
results: t({
|
|
188
66
|
from: e.dataset,
|
|
189
67
|
select: [e.rowDimension, e.columnDimension, ...e.measures],
|
|
190
68
|
limit: e.maxResults,
|
|
@@ -193,7 +71,7 @@ const Y = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "des
|
|
|
193
71
|
})
|
|
194
72
|
});
|
|
195
73
|
export {
|
|
196
|
-
|
|
197
|
-
|
|
74
|
+
D as default,
|
|
75
|
+
c as meta
|
|
198
76
|
};
|
|
199
77
|
//# sourceMappingURL=PivotTablePro.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotTablePro.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx","../src/components/charts/tables/PivotTablePro/PivotTablePro.emb.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n\ntype Order = 'asc' | 'desc' | 'equal';\n\nfunction predominantOrder(arr: (string | number | boolean)[]): Order {\n let asc = 0;\n let desc = 0;\n\n for (let i = 0; i < arr.length - 1; i++) {\n const a = arr[i];\n const b = arr[i + 1];\n\n if (a == null || b == null) continue;\n\n if (a < b) asc++;\n else if (a > b) desc++;\n }\n\n if (asc > desc) return 'asc';\n if (desc > asc) return 'desc';\n return 'equal';\n}\n\nfunction isOrderMixed(arr: (string | number | boolean)[]): boolean {\n let asc = 0;\n let desc = 0;\n\n for (let i = 0; i < arr.length - 1; i++) {\n const a = arr[i];\n const b = arr[i + 1];\n\n if (a == null || b == null) continue;\n\n if (a < b) asc++;\n else if (a > b) desc++;\n }\n\n return asc > 0 && desc > 0;\n}\n\nconst getSortComparator = (order: Order) => {\n return <T>(a: T, b: T) => {\n if (order === 'asc') {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n if (order === 'desc') {\n return a > b ? -1 : a < b ? 1 : 0;\n }\n return 0;\n };\n};\n\nexport const getPivotTableRows = (\n results: DataResponse,\n columnOrder: (string | number | boolean)[],\n rowOrder: (string | number | boolean)[],\n columnDimension: Dimension,\n rowDimension: Dimension,\n measures: Measure[],\n) => {\n const data = results.data ?? [];\n const firstRow = data[0];\n\n if (!firstRow) return [];\n\n const buildEmptyMeasures = () =>\n measures.reduce<Record<string, unknown>>((acc, measure) => {\n acc[measure.name] = undefined;\n return acc;\n }, {});\n\n const reorderByAxis = (\n axisOrder: (string | number | boolean)[],\n axisDimension: Dimension,\n fixedDimension: Dimension,\n ) => {\n if (!isOrderMixed(axisOrder)) {\n return data;\n }\n\n const order = predominantOrder(axisOrder);\n const sortedAxisOrder = [...axisOrder].sort(getSortComparator(order));\n\n // “Leader” rows: one per value in the axis order, at the fixed dimension’s first value\n const leaderRows = sortedAxisOrder.map((value) => {\n const existing = data.find(\n (x) =>\n x[axisDimension.name] === value &&\n x[fixedDimension.name] === firstRow[fixedDimension.name],\n );\n\n if (existing) return existing;\n\n return {\n ...firstRow,\n [axisDimension.name]: value,\n ...buildEmptyMeasures(),\n };\n });\n\n // Remove rows that are already covered by leaderRows (same [axis, fixed] tuple)\n const restResults = data.filter(\n (resultRow) =>\n !leaderRows.some(\n (leaderRow) =>\n leaderRow[axisDimension.name] === resultRow[axisDimension.name] &&\n leaderRow[fixedDimension.name] === resultRow[fixedDimension.name],\n ),\n );\n\n return [...leaderRows, ...restResults];\n };\n\n // Preserve original behavior: fix columns if mixed, otherwise rows if mixed\n if (isOrderMixed(columnOrder)) {\n return reorderByAxis(columnOrder, columnDimension, rowDimension);\n }\n\n if (isOrderMixed(rowOrder)) {\n return reorderByAxis(rowOrder, rowDimension, columnDimension);\n }\n\n return data;\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useMemo, useRef } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n getPivotTableRows,\n} from './PivotPro.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype PivotTableProProps = {\n title: string;\n description: string;\n results: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n};\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { description, title } = resolveI18nProps(props);\n const { measures, rowDimension, columnDimension, displayNullAs, columnWidth, firstColumnWidth } =\n props;\n\n const colOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useMemo(() => {\n return getPivotTableRows(\n resultsRowColumnDimensionFillGaps,\n colOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n );\n }, [\n resultsRowColumnDimensionFillGaps,\n colOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n ]);\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n subtitle={description}\n data={props.results}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n","import { loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport PivotTablePro from './index';\nimport {\n dataset,\n description,\n title,\n maxResults,\n measures,\n subInputGenericBoolean,\n genericString,\n dimensionWithDateBounds,\n genericNumber,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'PivotTablePro',\n label: 'Pivot Table',\n category: 'Table Charts',\n inputs: [\n dataset,\n {\n ...measures,\n label: 'Measures To Display',\n inputs: [\n ...measures.inputs,\n {\n ...subInputGenericBoolean,\n name: 'showColumnTotal',\n label: 'Show Column Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showRowTotal',\n label: 'Show Row Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showAsPercentage',\n label: 'Show As Percentage',\n description: 'If turned on, other measures may be ignored',\n defaultValue: false,\n },\n ],\n },\n {\n ...dimensionWithDateBounds,\n label: 'Row Dimension',\n name: 'rowDimension',\n },\n {\n ...dimensionWithDateBounds,\n label: 'Column Dimension',\n name: 'columnDimension',\n },\n title,\n description,\n { ...genericString, name: 'displayNullAs', label: 'Display Null As' },\n {\n ...genericNumber,\n name: 'firstColumnWidth',\n label: 'First Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n {\n ...genericNumber,\n name: 'columnWidth',\n label: 'Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n\n maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(PivotTablePro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n\n results: loadData({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n }),\n };\n },\n});\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","predominantOrder","arr","asc","desc","i","a","b","isOrderMixed","getSortComparator","order","getPivotTableRows","results","columnOrder","rowOrder","columnDimension","rowDimension","data","firstRow","buildEmptyMeasures","acc","reorderByAxis","axisOrder","axisDimension","fixedDimension","leaderRows","existing","x","restResults","resultRow","leaderRow","PivotTablePro","useTheme","i18nSetup","description","title","resolveI18nProps","displayNullAs","columnWidth","firstColumnWidth","colOrder","d","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","useMemo","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","jsx","ChartCard","PivotTable","i18n","meta","dataset","subInputGenericBoolean","dimensionWithDateBounds","genericString","genericNumber","maxResults","PivotTablePro_emb","defineComponent","inputs","loadData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PivotTablePro.js","sources":["../src/components/charts/tables/PivotTablePro/PivotTablePro.emb.ts"],"sourcesContent":["import { loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport PivotTablePro from './index';\nimport {\n dataset,\n description,\n title,\n maxResults,\n measures,\n subInputGenericBoolean,\n genericString,\n dimensionWithDateBounds,\n genericNumber,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'PivotTablePro',\n label: 'Pivot Table',\n category: 'Table Charts',\n inputs: [\n dataset,\n {\n ...measures,\n label: 'Measures To Display',\n inputs: [\n ...measures.inputs,\n {\n ...subInputGenericBoolean,\n name: 'showColumnTotal',\n label: 'Show Column Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showRowTotal',\n label: 'Show Row Total',\n },\n {\n ...subInputGenericBoolean,\n name: 'showAsPercentage',\n label: 'Show As Percentage',\n description: 'If turned on, other measures may be ignored',\n defaultValue: false,\n },\n ],\n },\n {\n ...dimensionWithDateBounds,\n label: 'Row Dimension',\n name: 'rowDimension',\n },\n {\n ...dimensionWithDateBounds,\n label: 'Column Dimension',\n name: 'columnDimension',\n },\n title,\n description,\n { ...genericString, name: 'displayNullAs', label: 'Display Null As' },\n {\n ...genericNumber,\n name: 'firstColumnWidth',\n label: 'First Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n {\n ...genericNumber,\n name: 'columnWidth',\n label: 'Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n\n maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(PivotTablePro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n\n results: loadData({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n }),\n };\n },\n});\n"],"names":["meta","dataset","measures","subInputGenericBoolean","dimensionWithDateBounds","title","description","genericString","genericNumber","maxResults","PivotTablePro_emb","defineComponent","PivotTablePro","inputs","loadData"],"mappings":";;;;AAeO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACA;AAAA,MACE,GAAGC;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,QACN,GAAGA,EAAS;AAAA,QACZ;AAAA,UACE,GAAGC;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,GAAGA;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,GAAGA;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,IACF;AAAA,IAEF;AAAA,MACE,GAAGC;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAER;AAAA,MACE,GAAGA;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAERC;AAAA,IACAC;AAAA,IACA,EAAE,GAAGC,GAAe,MAAM,iBAAiB,OAAO,kBAAA;AAAA,IAClD;AAAA,MACE,GAAGC;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAGfC;AAAA,EAAA;AAEJ,GAEAC,IAAeC,EAAgBC,GAAeZ,GAAM;AAAA,EAClD,OAAO,CAACa,OACC;AAAA,IACL,GAAGA;AAAA,IAEH,SAASC,EAAS;AAAA,MAChB,MAAMD,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,cAAcA,EAAO,iBAAiB,GAAGA,EAAO,QAAQ;AAAA,MACxE,OAAOA,EAAO;AAAA,MACd,WAAW;AAAA,IAAA,CACZ;AAAA,EAAA;AAGP,CAAC;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as i } from "@embeddable.com/react";
|
|
2
|
-
import { V as n, l as r } from "./index-
|
|
3
|
-
import { v as s, w as d, F as m, G as c, _ as p } from "./component.constants-
|
|
4
|
-
import { M as u, S as g } from "./index-
|
|
2
|
+
import { V as n, l as r } from "./index-D8D1R5YG.js";
|
|
3
|
+
import { v as s, w as d, F as m, G as c, _ as p } from "./component.constants-C7cqSNbp.js";
|
|
4
|
+
import { M as u, S as g } from "./index-2EH0Voxh.js";
|
|
5
5
|
const f = {
|
|
6
6
|
name: "SingleSelectFieldPro",
|
|
7
7
|
label: "Single Select Field",
|
|
@@ -1,160 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { C as
|
|
5
|
-
|
|
6
|
-
import { g as de } from "./formatter.utils-DXzI4Hz_.js";
|
|
7
|
-
const me = (n) => {
|
|
8
|
-
var a;
|
|
9
|
-
const e = (a = n.inputs) == null ? void 0 : a.align;
|
|
10
|
-
if (e) return e;
|
|
11
|
-
switch (n.nativeType) {
|
|
12
|
-
case "number":
|
|
13
|
-
case "boolean":
|
|
14
|
-
case "time":
|
|
15
|
-
return I.RIGHT;
|
|
16
|
-
default:
|
|
17
|
-
return I.LEFT;
|
|
18
|
-
}
|
|
19
|
-
}, ue = (n) => {
|
|
20
|
-
var a;
|
|
21
|
-
const e = (a = n.inputs) == null ? void 0 : a.width;
|
|
22
|
-
if (e) return e;
|
|
23
|
-
switch (n.nativeType) {
|
|
24
|
-
case "string":
|
|
25
|
-
return r("--em-tablechart-min-width--string", "8.75rem");
|
|
26
|
-
case "number":
|
|
27
|
-
return r("--em-tablechart-min-width--number", "5.625rem");
|
|
28
|
-
case "time":
|
|
29
|
-
return r("--em-tablechart-min-width--time", "8.75rem");
|
|
30
|
-
case "boolean":
|
|
31
|
-
default:
|
|
32
|
-
return r("--em-tablechart-min-width--boolean", "5.625rem");
|
|
33
|
-
}
|
|
34
|
-
}, ge = (n, e) => {
|
|
35
|
-
const a = de(e);
|
|
36
|
-
return n.dimensionsAndMeasures.map((i) => ({
|
|
37
|
-
id: i.name,
|
|
38
|
-
title: a.dimensionOrMeasureTitle(i),
|
|
39
|
-
accessor: (s) => s[i.name] == null ? n.displayNullAs ?? "" : a.data(i, s[i.name]),
|
|
40
|
-
minWidth: ue(i),
|
|
41
|
-
align: me(i)
|
|
42
|
-
}));
|
|
43
|
-
}, he = (n) => {
|
|
44
|
-
var a;
|
|
45
|
-
if (!n.rows || n.rows.length === 0)
|
|
46
|
-
return [];
|
|
47
|
-
const e = (a = n.clickDimension) == null ? void 0 : a.name;
|
|
48
|
-
return !e || Object.keys(n.rows[0]).includes(e) ? n.rows : n.rows.map(({ [e]: i, ...s }) => ({
|
|
49
|
-
...s
|
|
50
|
-
}));
|
|
51
|
-
}, be = (n, e) => (n == null ? void 0 : n.id) !== (e == null ? void 0 : e.id) || (n == null ? void 0 : n.direction) !== (e == null ? void 0 : e.direction) || !n && !!e || !!n && !e, fe = r("--em-tablechart-cell-height", "2.5rem"), we = r("--em-tablechart-cell-height", "2.5rem"), De = r("--em-tablechart-pagination-height", "3rem");
|
|
52
|
-
let H;
|
|
53
|
-
const pe = (n) => {
|
|
54
|
-
const e = K();
|
|
55
|
-
X(e);
|
|
56
|
-
const [a, i] = S(void 0), [s, h] = S(!1), { description: w, title: c } = Y(n), {
|
|
57
|
-
results: t,
|
|
58
|
-
allResults: b,
|
|
59
|
-
dimensionsAndMeasures: D,
|
|
60
|
-
displayNullAs: L,
|
|
61
|
-
showIndex: M,
|
|
62
|
-
clickDimension: p,
|
|
63
|
-
state: d,
|
|
64
|
-
setState: A,
|
|
65
|
-
onRowClicked: V
|
|
66
|
-
} = n, [f, k] = S(d.sort), j = ge({ dimensionsAndMeasures: D, displayNullAs: L }, e), v = (t == null ? void 0 : t.data) || [], z = he({ rows: v, clickDimension: p }), R = re(null), F = W(R), m = G({
|
|
67
|
-
availableHeight: F,
|
|
68
|
-
headerHeight: fe,
|
|
69
|
-
rowHeight: we,
|
|
70
|
-
footerHeight: De
|
|
71
|
-
}), l = ce(
|
|
72
|
-
(o) => {
|
|
73
|
-
A((u) => ({
|
|
74
|
-
...u,
|
|
75
|
-
...o
|
|
76
|
-
}));
|
|
77
|
-
},
|
|
78
|
-
[A]
|
|
79
|
-
), N = (o) => {
|
|
80
|
-
h(!0), l({ isLoadingDownloadData: !0 }), H = (u) => o({
|
|
81
|
-
title: c,
|
|
82
|
-
data: u,
|
|
83
|
-
dimensionsAndMeasures: D,
|
|
84
|
-
containerRef: R,
|
|
85
|
-
theme: e
|
|
86
|
-
});
|
|
87
|
-
}, E = (o) => {
|
|
88
|
-
var C;
|
|
89
|
-
if (!p) return;
|
|
90
|
-
const u = (C = v[o]) == null ? void 0 : C[p.name];
|
|
91
|
-
V(u);
|
|
92
|
-
}, x = q(l);
|
|
93
|
-
return g(() => {
|
|
94
|
-
be(d.sort, f) && k(d.sort);
|
|
95
|
-
}, [d.sort]), g(() => {
|
|
96
|
-
x({ sort: f });
|
|
97
|
-
}, [f, x]), g(() => {
|
|
98
|
-
m && l({ pageSize: m });
|
|
99
|
-
}, [m, l]), g(() => {
|
|
100
|
-
t != null && t.total && t.total !== a && i(t.total);
|
|
101
|
-
}, [t, a]), g(() => {
|
|
102
|
-
if (s) {
|
|
103
|
-
if (!b || b.isLoading)
|
|
104
|
-
return;
|
|
105
|
-
H(b.data), h(!1), l({ isLoadingDownloadData: !1 });
|
|
106
|
-
}
|
|
107
|
-
}, [s, b, l]), /* @__PURE__ */ y.jsx(
|
|
108
|
-
le,
|
|
109
|
-
{
|
|
110
|
-
ref: R,
|
|
111
|
-
title: c,
|
|
112
|
-
subtitle: w,
|
|
113
|
-
data: t,
|
|
114
|
-
dimensionsAndMeasures: D,
|
|
115
|
-
errorMessage: t == null ? void 0 : t.error,
|
|
116
|
-
onCustomDownload: N,
|
|
117
|
-
children: /* @__PURE__ */ y.jsx(
|
|
118
|
-
B,
|
|
119
|
-
{
|
|
120
|
-
onRowIndexClick: E,
|
|
121
|
-
headers: j,
|
|
122
|
-
rows: z,
|
|
123
|
-
showIndex: M,
|
|
124
|
-
page: d.page,
|
|
125
|
-
pageSize: m,
|
|
126
|
-
paginationLabel: Z.t("charts.tablePaginated.pagination", {
|
|
127
|
-
page: d.page + 1,
|
|
128
|
-
totalPages: U(a, m) ?? "?"
|
|
129
|
-
}),
|
|
130
|
-
total: a,
|
|
131
|
-
sort: f,
|
|
132
|
-
onSortChange: (o) => {
|
|
133
|
-
k(o);
|
|
134
|
-
},
|
|
135
|
-
onPageChange: (o) => l({ page: o })
|
|
136
|
-
}
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
);
|
|
140
|
-
}, Re = {
|
|
1
|
+
import { V as t, l, m as u } from "./index-D8D1R5YG.js";
|
|
2
|
+
import { defineComponent as g } from "@embeddable.com/react";
|
|
3
|
+
import { T as p } from "./index-DZU1PTjb.js";
|
|
4
|
+
import { v as D, C as r, s as b, e as f, F as C, G as w, g as A, d as M, H as k, x as h } from "./component.constants-C7cqSNbp.js";
|
|
5
|
+
const v = {
|
|
141
6
|
name: "TableChartPaginated",
|
|
142
7
|
label: "Table Chart - Paginated",
|
|
143
8
|
category: "Table Charts",
|
|
144
9
|
inputs: [
|
|
145
|
-
|
|
10
|
+
D,
|
|
146
11
|
{
|
|
147
|
-
...
|
|
12
|
+
...r,
|
|
148
13
|
label: "Columns",
|
|
149
|
-
inputs: [...
|
|
14
|
+
inputs: [...r.inputs, b, f]
|
|
150
15
|
},
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
{ ...
|
|
154
|
-
{ ...
|
|
155
|
-
{ ...
|
|
16
|
+
C,
|
|
17
|
+
w,
|
|
18
|
+
{ ...A, name: "showIndex", label: "Show Index Column", defaultValue: !0 },
|
|
19
|
+
{ ...M, name: "displayNullAs", label: "Display null as" },
|
|
20
|
+
{ ...k, label: "Max Results to Download" },
|
|
156
21
|
{
|
|
157
|
-
...
|
|
22
|
+
...h,
|
|
158
23
|
label: "Dimension to set on click",
|
|
159
24
|
name: "clickDimension",
|
|
160
25
|
category: "Data Mapping for Interactions",
|
|
@@ -174,47 +39,47 @@ const pe = (n) => {
|
|
|
174
39
|
]
|
|
175
40
|
}
|
|
176
41
|
]
|
|
177
|
-
},
|
|
42
|
+
}, R = {
|
|
178
43
|
page: 0,
|
|
179
44
|
pageSize: void 0,
|
|
180
45
|
sort: void 0,
|
|
181
46
|
isLoadingDownloadData: !1
|
|
182
|
-
},
|
|
47
|
+
}, I = g(p, v, {
|
|
183
48
|
/* @ts-expect-error - to be fixed in @embeddable.com/react */
|
|
184
|
-
props: (n, [e,
|
|
185
|
-
const
|
|
186
|
-
(
|
|
187
|
-
var
|
|
188
|
-
return
|
|
49
|
+
props: (n, [e, d]) => {
|
|
50
|
+
const a = n.dimensionsAndMeasures.find(
|
|
51
|
+
(i) => {
|
|
52
|
+
var o;
|
|
53
|
+
return i.name === ((o = e == null ? void 0 : e.sort) == null ? void 0 : o.id);
|
|
189
54
|
}
|
|
190
|
-
), s =
|
|
55
|
+
), s = a && (e != null && e.sort) ? [
|
|
191
56
|
{
|
|
192
|
-
property:
|
|
57
|
+
property: a,
|
|
193
58
|
direction: e.sort.direction
|
|
194
59
|
}
|
|
195
|
-
] : [],
|
|
196
|
-
(
|
|
197
|
-
var
|
|
198
|
-
return
|
|
60
|
+
] : [], m = n.dimensionsAndMeasures.some(
|
|
61
|
+
(i) => {
|
|
62
|
+
var o;
|
|
63
|
+
return i.name === ((o = n.clickDimension) == null ? void 0 : o.name);
|
|
199
64
|
}
|
|
200
|
-
),
|
|
65
|
+
), c = [
|
|
201
66
|
...n.dimensionsAndMeasures,
|
|
202
|
-
|
|
67
|
+
m ? [] : n.clickDimension
|
|
203
68
|
];
|
|
204
69
|
return {
|
|
205
70
|
...n,
|
|
206
|
-
state:
|
|
71
|
+
state: u(R, e ?? {}),
|
|
207
72
|
// Merge with default state
|
|
208
|
-
setState:
|
|
209
|
-
results: e != null && e.pageSize ?
|
|
73
|
+
setState: d,
|
|
74
|
+
results: e != null && e.pageSize ? l({
|
|
210
75
|
from: n.dataset,
|
|
211
|
-
select:
|
|
76
|
+
select: c,
|
|
212
77
|
offset: e.page * e.pageSize,
|
|
213
78
|
limit: e.pageSize,
|
|
214
79
|
countRows: !0,
|
|
215
80
|
orderBy: s
|
|
216
81
|
}) : void 0,
|
|
217
|
-
allResults: e != null && e.isLoadingDownloadData ?
|
|
82
|
+
allResults: e != null && e.isLoadingDownloadData ? l({
|
|
218
83
|
from: n.dataset,
|
|
219
84
|
select: n.dimensionsAndMeasures,
|
|
220
85
|
orderBy: s,
|
|
@@ -224,12 +89,12 @@ const pe = (n) => {
|
|
|
224
89
|
},
|
|
225
90
|
events: {
|
|
226
91
|
onRowClicked: (n) => ({
|
|
227
|
-
rowDimensionValue: n !== void 0 ? n :
|
|
92
|
+
rowDimensionValue: n !== void 0 ? n : t.noFilter()
|
|
228
93
|
})
|
|
229
94
|
}
|
|
230
95
|
});
|
|
231
96
|
export {
|
|
232
|
-
|
|
233
|
-
|
|
97
|
+
I as default,
|
|
98
|
+
v as meta
|
|
234
99
|
};
|
|
235
100
|
//# sourceMappingURL=TableChartPaginated.js.map
|