@visactor/vseed 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/builder/builder/buildSpec.js +1 -0
- package/dist/esm/builder/builder/buildSpec.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/hierarchy.js +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/hierarchy.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/circlePacking.js +5 -3
- package/dist/esm/pipeline/spec/chart/pipeline/circlePacking.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/sunburst.js +5 -3
- package/dist/esm/pipeline/spec/chart/pipeline/sunburst.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/treeMap.js +5 -3
- package/dist/esm/pipeline/spec/chart/pipeline/treeMap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.d.ts +9 -1
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.js +51 -46
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.js +72 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/index.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/hierarchy/drill.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/hierarchy/drill.js +7 -0
- package/dist/esm/pipeline/spec/chart/pipes/hierarchy/drill.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/hierarchy/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/hierarchy/index.js +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/index.js +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/circlePacking.js +0 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/circlePacking.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/sunburst.js +0 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/sunburst.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/treeMap.js +0 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/treeMap.js.map +1 -1
- package/dist/esm/pipeline/utils/constant.d.ts +3 -0
- package/dist/esm/pipeline/utils/constant.js +3 -0
- package/dist/esm/pipeline/utils/constant.js.map +1 -1
- package/dist/esm/pipeline/utils/measures/typeGuard.d.ts +2 -2
- package/dist/esm/pipeline/utils/measures/typeGuard.js +1 -1
- package/dist/esm/pipeline/utils/measures/typeGuard.js.map +1 -1
- package/dist/umd/index.js +138 -55
- package/dist/umd/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/init/sunburst.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/sunburst.ts"],"sourcesContent":["import type { VChartSpecPipe } from 'src/types'\nimport type { ISunburstChartSpec } from '@visactor/vchart'\n\nexport const initSunburst: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISunburstChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'sunburst'\n result.categoryField = 'name'\n result.valueField = foldInfo.measureValue\n result.outerRadius = 1\n result.innerRadius = 0\n result.gap = 0\n result.offsetX = 0\n result.offsetY = 0\n result.
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/init/sunburst.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/sunburst.ts"],"sourcesContent":["import type { VChartSpecPipe } from 'src/types'\nimport type { ISunburstChartSpec } from '@visactor/vchart'\n\nexport const initSunburst: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISunburstChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'sunburst'\n result.categoryField = 'name'\n result.valueField = foldInfo.measureValue\n result.outerRadius = 1\n result.innerRadius = 0\n result.gap = 0\n result.offsetX = 0\n result.offsetY = 0\n result.padding = 0\n result.labelAutoVisible = {\n enable: true,\n circumference: 5,\n }\n result.sunburst = {\n visible: true,\n style: {\n fillOpacity: (datum: any) => {\n if (encoding.hierarchy?.length === 1) {\n return 1\n }\n return datum.isLeaf ? 0.4 : 0.8\n },\n },\n }\n\n result.animationEnter = {\n easing: 'cubicInOut',\n }\n result.animationExit = {\n easing: 'cubicInOut',\n }\n result.animationUpdate = {\n easing: 'cubicInOut',\n }\n\n return result\n}\n"],"names":["initSunburst","spec","context","result","advancedVSeed","datasetReshapeInfo","encoding","foldInfo","datum"],"mappings":"AAGO,MAAMA,eAA+B,CAACC,MAAMC;IACjD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,QAAQ,EAAE,GAAGF;IACzC,MAAM,EAAEG,QAAQ,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAE1CF,OAAO,IAAI,GAAG;IACdA,OAAO,aAAa,GAAG;IACvBA,OAAO,UAAU,GAAGI,SAAS,YAAY;IACzCJ,OAAO,WAAW,GAAG;IACrBA,OAAO,WAAW,GAAG;IACrBA,OAAO,GAAG,GAAG;IACbA,OAAO,OAAO,GAAG;IACjBA,OAAO,OAAO,GAAG;IACjBA,OAAO,OAAO,GAAG;IACjBA,OAAO,gBAAgB,GAAG;QACxB,QAAQ;QACR,eAAe;IACjB;IACAA,OAAO,QAAQ,GAAG;QAChB,SAAS;QACT,OAAO;YACL,aAAa,CAACK;gBACZ,IAAIF,SAAS,SAAS,EAAE,WAAW,GACjC,OAAO;gBAET,OAAOE,MAAM,MAAM,GAAG,MAAM;YAC9B;QACF;IACF;IAEAL,OAAO,cAAc,GAAG;QACtB,QAAQ;IACV;IACAA,OAAO,aAAa,GAAG;QACrB,QAAQ;IACV;IACAA,OAAO,eAAe,GAAG;QACvB,QAAQ;IACV;IAEA,OAAOA;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/init/treeMap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/treeMap.ts"],"sourcesContent":["import type { VChartSpecPipe } from 'src/types'\nimport type { ITreemapChartSpec } from '@visactor/vchart'\n\nexport const initTreeMap: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ITreemapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'treemap'\n result.categoryField = 'name'\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/init/treeMap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/treeMap.ts"],"sourcesContent":["import type { VChartSpecPipe } from 'src/types'\nimport type { ITreemapChartSpec } from '@visactor/vchart'\n\nexport const initTreeMap: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ITreemapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'treemap'\n result.categoryField = 'name'\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.animationEnter = {\n easing: 'cubicInOut',\n }\n result.animationExit = {\n easing: 'cubicInOut',\n }\n result.animationUpdate = {\n easing: 'cubicInOut',\n }\n\n return result\n}\n"],"names":["initTreeMap","spec","context","result","advancedVSeed","datasetReshapeInfo","foldInfo"],"mappings":"AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGD;IAC/B,MAAM,EAAEE,QAAQ,EAAE,GAAGD,kBAAkB,CAAC,EAAE;IAE1CF,OAAO,IAAI,GAAG;IACdA,OAAO,aAAa,GAAG;IACvBA,OAAO,UAAU,GAAGG,SAAS,YAAY;IACzCH,OAAO,OAAO,GAAG;IACjBA,OAAO,cAAc,GAAG;QACtB,QAAQ;IACV;IACAA,OAAO,aAAa,GAAG;QACrB,QAAQ;IACV;IACAA,OAAO,eAAe,GAAG;QACvB,QAAQ;IACV;IAEA,OAAOA;AACT"}
|
|
@@ -28,6 +28,9 @@ export declare const ChartTypeEnum: {
|
|
|
28
28
|
readonly Pie: "pie";
|
|
29
29
|
readonly Donut: "donut";
|
|
30
30
|
readonly Radar: "radar";
|
|
31
|
+
readonly CirclePacking: "circlePacking";
|
|
32
|
+
readonly Sunburst: "sunburst";
|
|
33
|
+
readonly TreeMap: "treeMap";
|
|
31
34
|
readonly Funnel: "funnel";
|
|
32
35
|
readonly Heatmap: "heatmap";
|
|
33
36
|
readonly Boxplot: "boxPlot";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/utils/constant.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/constant.ts"],"sourcesContent":["// 标注层 z-index\nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 12\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\n// 双轴图 标注层 ZIndex\nexport const DUAL_AXIS_LABEL_Z_INDEX = 1002\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n// 轴标签间距\nexport const AXIS_LABEL_SPACE = 8\n// 透视轴 band 类型内边距\nexport const BAND_AXIS_INNER_OFFSET_IN_PIVOT = 2\n\n// 图表类型枚举\nexport const ChartTypeEnum = {\n Table: 'table',\n PivotTable: 'pivotTable',\n // cartesian\n Line: 'line',\n Column: 'column',\n ColumnPercent: 'columnPercent',\n ColumnParallel: 'columnParallel',\n Bar: 'bar',\n RaceBar: 'raceBar',\n RaceColumn: 'raceColumn',\n RaceScatter: 'raceScatter',\n BarPercent: 'barPercent',\n BarParallel: 'barParallel',\n Area: 'area',\n AreaPercent: 'areaPercent',\n DualAxis: 'dualAxis',\n Scatter: 'scatter',\n // polar\n Rose: 'rose',\n RoseParallel: 'roseParallel',\n Pie: 'pie',\n Donut: 'donut',\n Radar: 'radar',\n // other\n Funnel: 'funnel',\n Heatmap: 'heatmap',\n Boxplot: 'boxPlot',\n Histogram: 'histogram',\n} as const\n\n// Heatmap hide cell\nexport const DATUM_HIDE_KEY = '__VSEED_HideItem__'\n"],"names":["ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DUAL_AXIS_LABEL_Z_INDEX","DEFAULT_PARENT_ID","AXIS_LABEL_SPACE","BAND_AXIS_INNER_OFFSET_IN_PIVOT","ChartTypeEnum","DATUM_HIDE_KEY"],"mappings":"AACO,MAAMA,qBAAqB;AAE3B,MAAMC,+BAA+B;AAErC,MAAMC,iCAAiC;AAEvC,MAAMC,qCAAqC;AAE3C,MAAMC,0BAA0B;AAEhC,MAAMC,oBAAoB;AAE1B,MAAMC,mBAAmB;AAEzB,MAAMC,kCAAkC;AAGxC,MAAMC,gBAAgB;IAC3B,OAAO;IACP,YAAY;IAEZ,MAAM;IACN,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,KAAK;IACL,SAAS;IACT,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,MAAM;IACN,aAAa;IACb,UAAU;IACV,SAAS;IAET,MAAM;IACN,cAAc;IACd,KAAK;IACL,OAAO;IACP,OAAO;IAEP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,WAAW;AACb;AAGO,MAAMC,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"pipeline/utils/constant.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/constant.ts"],"sourcesContent":["// 标注层 z-index\nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 12\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\n// 双轴图 标注层 ZIndex\nexport const DUAL_AXIS_LABEL_Z_INDEX = 1002\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n// 轴标签间距\nexport const AXIS_LABEL_SPACE = 8\n// 透视轴 band 类型内边距\nexport const BAND_AXIS_INNER_OFFSET_IN_PIVOT = 2\n\n// 图表类型枚举\nexport const ChartTypeEnum = {\n Table: 'table',\n PivotTable: 'pivotTable',\n // cartesian\n Line: 'line',\n Column: 'column',\n ColumnPercent: 'columnPercent',\n ColumnParallel: 'columnParallel',\n Bar: 'bar',\n RaceBar: 'raceBar',\n RaceColumn: 'raceColumn',\n RaceScatter: 'raceScatter',\n BarPercent: 'barPercent',\n BarParallel: 'barParallel',\n Area: 'area',\n AreaPercent: 'areaPercent',\n DualAxis: 'dualAxis',\n Scatter: 'scatter',\n // polar\n Rose: 'rose',\n RoseParallel: 'roseParallel',\n Pie: 'pie',\n Donut: 'donut',\n Radar: 'radar',\n // hierarchical\n CirclePacking: 'circlePacking',\n Sunburst: 'sunburst',\n TreeMap: 'treeMap',\n // other\n Funnel: 'funnel',\n Heatmap: 'heatmap',\n Boxplot: 'boxPlot',\n Histogram: 'histogram',\n} as const\n\n// Heatmap hide cell\nexport const DATUM_HIDE_KEY = '__VSEED_HideItem__'\n"],"names":["ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DUAL_AXIS_LABEL_Z_INDEX","DEFAULT_PARENT_ID","AXIS_LABEL_SPACE","BAND_AXIS_INNER_OFFSET_IN_PIVOT","ChartTypeEnum","DATUM_HIDE_KEY"],"mappings":"AACO,MAAMA,qBAAqB;AAE3B,MAAMC,+BAA+B;AAErC,MAAMC,iCAAiC;AAEvC,MAAMC,qCAAqC;AAE3C,MAAMC,0BAA0B;AAEhC,MAAMC,oBAAoB;AAE1B,MAAMC,mBAAmB;AAEzB,MAAMC,kCAAkC;AAGxC,MAAMC,gBAAgB;IAC3B,OAAO;IACP,YAAY;IAEZ,MAAM;IACN,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,KAAK;IACL,SAAS;IACT,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,MAAM;IACN,aAAa;IACb,UAAU;IACV,SAAS;IAET,MAAM;IACN,cAAc;IACd,KAAK;IACL,OAAO;IACP,OAAO;IAEP,eAAe;IACf,UAAU;IACV,SAAS;IAET,QAAQ;IACR,SAAS;IACT,SAAS;IACT,WAAW;AACb;AAGO,MAAMC,iBAAiB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Measure, MeasureGroup } from '../../../types';
|
|
1
|
+
import type { ChartType, Measure, MeasureGroup } from '../../../types';
|
|
2
2
|
export declare const isMeasure: (measure: Measure | MeasureGroup) => measure is Measure;
|
|
3
3
|
export declare const isMeasureGroup: (measure: Measure | MeasureGroup) => measure is MeasureGroup;
|
|
4
4
|
export declare const isMeasures: (measures: Measure[] | MeasureGroup[]) => measures is Measure[];
|
|
5
|
-
export declare const isPositionMeasure: (measure: Measure, chartType:
|
|
5
|
+
export declare const isPositionMeasure: (measure: Measure, chartType: ChartType) => boolean;
|
|
@@ -4,7 +4,7 @@ const isMeasureGroup = (measure)=>'children' in measure;
|
|
|
4
4
|
const isMeasures = (measures)=>measures.every(isMeasure);
|
|
5
5
|
const isPositionMeasure = (measure, chartType)=>{
|
|
6
6
|
if (!measure.encoding) return true;
|
|
7
|
-
if (chartType === ChartTypeEnum.
|
|
7
|
+
if (ChartTypeEnum.Funnel === chartType || ChartTypeEnum.CirclePacking === chartType || ChartTypeEnum.Sunburst === chartType || ChartTypeEnum.TreeMap === chartType) return 'size' === measure.encoding;
|
|
8
8
|
if (chartType === ChartTypeEnum.Heatmap) return 'color' === measure.encoding;
|
|
9
9
|
if ([
|
|
10
10
|
ChartTypeEnum.Pie,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/utils/measures/typeGuard.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts"],"sourcesContent":["import type { Measure, MeasureGroup } from 'src/types'\nimport { ChartTypeEnum } from '../constant'\n\nexport const isMeasure = (measure: Measure | MeasureGroup): measure is Measure => {\n return !('children' in measure)\n}\n\nexport const isMeasureGroup = (measure: Measure | MeasureGroup): measure is MeasureGroup => {\n return 'children' in measure\n}\n\nexport const isMeasures = (measures: Measure[] | MeasureGroup[]): measures is Measure[] => {\n return measures.every(isMeasure)\n}\n\nexport const isPositionMeasure = (measure: Measure, chartType:
|
|
1
|
+
{"version":3,"file":"pipeline/utils/measures/typeGuard.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts"],"sourcesContent":["import type { ChartType, Measure, MeasureGroup } from 'src/types'\nimport { ChartTypeEnum } from '../constant'\n\nexport const isMeasure = (measure: Measure | MeasureGroup): measure is Measure => {\n return !('children' in measure)\n}\n\nexport const isMeasureGroup = (measure: Measure | MeasureGroup): measure is MeasureGroup => {\n return 'children' in measure\n}\n\nexport const isMeasures = (measures: Measure[] | MeasureGroup[]): measures is Measure[] => {\n return measures.every(isMeasure)\n}\n\nexport const isPositionMeasure = (measure: Measure, chartType: ChartType): boolean => {\n if (!measure.encoding) {\n return true\n }\n\n if (\n ChartTypeEnum.Funnel === chartType ||\n ChartTypeEnum.CirclePacking === chartType ||\n ChartTypeEnum.Sunburst === chartType ||\n ChartTypeEnum.TreeMap === chartType\n ) {\n return measure.encoding === 'size'\n }\n\n if (chartType === ChartTypeEnum.Heatmap) {\n return measure.encoding === 'color'\n }\n\n if (\n ([ChartTypeEnum.Pie, ChartTypeEnum.Donut, ChartTypeEnum.Rose, ChartTypeEnum.RoseParallel] as string[]).includes(\n chartType,\n )\n ) {\n return measure.encoding === 'angle'\n }\n\n if (chartType === ChartTypeEnum.DualAxis) {\n return ['primaryYAxis', 'secondaryYAxis'].includes(measure.encoding as string)\n }\n\n if (ChartTypeEnum.Radar === chartType) {\n return measure.encoding === 'radius'\n }\n\n if (\n (\n [\n ChartTypeEnum.Line,\n ChartTypeEnum.Area,\n ChartTypeEnum.AreaPercent,\n ChartTypeEnum.Column,\n ChartTypeEnum.ColumnParallel,\n ChartTypeEnum.ColumnPercent,\n ] as string[]\n ).includes(chartType)\n ) {\n return measure.encoding === 'yAxis'\n }\n\n if (([ChartTypeEnum.Bar, ChartTypeEnum.BarParallel, ChartTypeEnum.BarPercent] as string[]).includes(chartType)) {\n return measure.encoding === 'xAxis'\n }\n\n return chartType === ChartTypeEnum.Boxplot && measure.encoding === 'value'\n}\n"],"names":["isMeasure","measure","isMeasureGroup","isMeasures","measures","isPositionMeasure","chartType","ChartTypeEnum"],"mappings":";AAGO,MAAMA,YAAY,CAACC,UACjB,CAAE,eAAcA,OAAM;AAGxB,MAAMC,iBAAiB,CAACD,UACtB,cAAcA;AAGhB,MAAME,aAAa,CAACC,WAClBA,SAAS,KAAK,CAACJ;AAGjB,MAAMK,oBAAoB,CAACJ,SAAkBK;IAClD,IAAI,CAACL,QAAQ,QAAQ,EACnB,OAAO;IAGT,IACEM,cAAc,MAAM,KAAKD,aACzBC,cAAc,aAAa,KAAKD,aAChCC,cAAc,QAAQ,KAAKD,aAC3BC,cAAc,OAAO,KAAKD,WAE1B,OAAOL,AAAqB,WAArBA,QAAQ,QAAQ;IAGzB,IAAIK,cAAcC,cAAc,OAAO,EACrC,OAAON,AAAqB,YAArBA,QAAQ,QAAQ;IAGzB,IACG;QAACM,cAAc,GAAG;QAAEA,cAAc,KAAK;QAAEA,cAAc,IAAI;QAAEA,cAAc,YAAY;KAAC,CAAc,QAAQ,CAC7GD,YAGF,OAAOL,AAAqB,YAArBA,QAAQ,QAAQ;IAGzB,IAAIK,cAAcC,cAAc,QAAQ,EACtC,OAAO;QAAC;QAAgB;KAAiB,CAAC,QAAQ,CAACN,QAAQ,QAAQ;IAGrE,IAAIM,cAAc,KAAK,KAAKD,WAC1B,OAAOL,AAAqB,aAArBA,QAAQ,QAAQ;IAGzB,IAEI;QACEM,cAAc,IAAI;QAClBA,cAAc,IAAI;QAClBA,cAAc,WAAW;QACzBA,cAAc,MAAM;QACpBA,cAAc,cAAc;QAC5BA,cAAc,aAAa;KAC5B,CACD,QAAQ,CAACD,YAEX,OAAOL,AAAqB,YAArBA,QAAQ,QAAQ;IAGzB,IAAK;QAACM,cAAc,GAAG;QAAEA,cAAc,WAAW;QAAEA,cAAc,UAAU;KAAC,CAAc,QAAQ,CAACD,YAClG,OAAOL,AAAqB,YAArBA,QAAQ,QAAQ;IAGzB,OAAOK,cAAcC,cAAc,OAAO,IAAIN,AAAqB,YAArBA,QAAQ,QAAQ;AAChE"}
|
package/dist/umd/index.js
CHANGED
|
@@ -462,6 +462,7 @@
|
|
|
462
462
|
builder.spec = spec;
|
|
463
463
|
return spec;
|
|
464
464
|
} catch (e) {
|
|
465
|
+
console.error(e);
|
|
465
466
|
throw new Error(`buildSpec error: ${e.message}`);
|
|
466
467
|
} finally{
|
|
467
468
|
const end = 'undefined' != typeof performance ? performance.now() : Date.now();
|
|
@@ -578,6 +579,9 @@
|
|
|
578
579
|
Pie: 'pie',
|
|
579
580
|
Donut: 'donut',
|
|
580
581
|
Radar: 'radar',
|
|
582
|
+
CirclePacking: 'circlePacking',
|
|
583
|
+
Sunburst: 'sunburst',
|
|
584
|
+
TreeMap: 'treeMap',
|
|
581
585
|
Funnel: 'funnel',
|
|
582
586
|
Heatmap: 'heatmap',
|
|
583
587
|
Boxplot: 'boxPlot',
|
|
@@ -589,7 +593,7 @@
|
|
|
589
593
|
const isMeasures = (measures)=>measures.every(isMeasure);
|
|
590
594
|
const isPositionMeasure = (measure, chartType)=>{
|
|
591
595
|
if (!measure.encoding) return true;
|
|
592
|
-
if (chartType === ChartTypeEnum.
|
|
596
|
+
if (ChartTypeEnum.Funnel === chartType || ChartTypeEnum.CirclePacking === chartType || ChartTypeEnum.Sunburst === chartType || ChartTypeEnum.TreeMap === chartType) return 'size' === measure.encoding;
|
|
593
597
|
if (chartType === ChartTypeEnum.Heatmap) return 'color' === measure.encoding;
|
|
594
598
|
if ([
|
|
595
599
|
ChartTypeEnum.Pie,
|
|
@@ -14304,6 +14308,8 @@
|
|
|
14304
14308
|
encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
|
|
14305
14309
|
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
|
|
14306
14310
|
encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
|
|
14311
|
+
encoding.row = chunk_QJLMYOTX_i(dimensions.filter((item)=>'row' === item.encoding).map((item)=>item.id));
|
|
14312
|
+
encoding.column = chunk_QJLMYOTX_i(dimensions.filter((item)=>'column' === item.encoding).map((item)=>item.id));
|
|
14307
14313
|
};
|
|
14308
14314
|
const hierarchy_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
|
14309
14315
|
encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
|
@@ -14391,7 +14397,6 @@
|
|
|
14391
14397
|
result.categoryField = 'name';
|
|
14392
14398
|
result.valueField = foldInfo.measureValue;
|
|
14393
14399
|
result.padding = 0;
|
|
14394
|
-
result.drill = true;
|
|
14395
14400
|
result.animationEnter = {
|
|
14396
14401
|
easing: 'cubicInOut'
|
|
14397
14402
|
};
|
|
@@ -14403,15 +14408,19 @@
|
|
|
14403
14408
|
};
|
|
14404
14409
|
return result;
|
|
14405
14410
|
};
|
|
14411
|
+
const drill = (spec)=>({
|
|
14412
|
+
...spec,
|
|
14413
|
+
drill: true
|
|
14414
|
+
});
|
|
14406
14415
|
const datasetHierarchy = (spec, context)=>{
|
|
14407
14416
|
const result = {
|
|
14408
14417
|
...spec
|
|
14409
14418
|
};
|
|
14410
14419
|
const { advancedVSeed } = context;
|
|
14411
|
-
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
|
14412
|
-
const { foldInfo } = datasetReshapeInfo[0];
|
|
14420
|
+
const { datasetReshapeInfo, dataset, measures } = advancedVSeed;
|
|
14421
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
|
14413
14422
|
const hierarchyFields = advancedVSeed.encoding?.hierarchy || [];
|
|
14414
|
-
const measureKeys =
|
|
14423
|
+
const measureKeys = findAllMeasures(measures).map((m)=>m.id);
|
|
14415
14424
|
if (!hierarchyFields.length) {
|
|
14416
14425
|
result.data = [
|
|
14417
14426
|
{
|
|
@@ -14421,7 +14430,7 @@
|
|
|
14421
14430
|
];
|
|
14422
14431
|
return result;
|
|
14423
14432
|
}
|
|
14424
|
-
const tree = buildTree(dataset, hierarchyFields, foldInfo, measureKeys);
|
|
14433
|
+
const tree = buildTree(dataset, hierarchyFields, foldInfo, unfoldInfo, measureKeys);
|
|
14425
14434
|
result.data = [
|
|
14426
14435
|
{
|
|
14427
14436
|
id: 'data',
|
|
@@ -14430,8 +14439,15 @@
|
|
|
14430
14439
|
];
|
|
14431
14440
|
return result;
|
|
14432
14441
|
};
|
|
14433
|
-
const buildTree = (dataset, hierarchyFields, foldInfo, measureKeys = [])=>{
|
|
14442
|
+
const buildTree = (dataset, hierarchyFields, foldInfo, unfoldInfo, measureKeys = [])=>{
|
|
14434
14443
|
const { measureValue, measureId, measureName } = foldInfo;
|
|
14444
|
+
const { encodingColor, encodingColorId } = unfoldInfo;
|
|
14445
|
+
const collectFields = [
|
|
14446
|
+
measureId,
|
|
14447
|
+
measureName,
|
|
14448
|
+
encodingColor,
|
|
14449
|
+
encodingColorId
|
|
14450
|
+
].filter(Boolean);
|
|
14435
14451
|
const root = {
|
|
14436
14452
|
name: 'root',
|
|
14437
14453
|
children: []
|
|
@@ -14447,10 +14463,7 @@
|
|
|
14447
14463
|
name: value,
|
|
14448
14464
|
children: []
|
|
14449
14465
|
};
|
|
14450
|
-
for(let j = 0; j <= i; j++)
|
|
14451
|
-
const key = hierarchyFields[j];
|
|
14452
|
-
child[key] = datum[key];
|
|
14453
|
-
}
|
|
14466
|
+
for(let j = 0; j <= i; j++)child[hierarchyFields[j]] = datum[hierarchyFields[j]];
|
|
14454
14467
|
currentNode.children.push(child);
|
|
14455
14468
|
}
|
|
14456
14469
|
currentNode = child;
|
|
@@ -14462,54 +14475,54 @@
|
|
|
14462
14475
|
measureKeys.forEach((key)=>{
|
|
14463
14476
|
currentNode[key] = 0;
|
|
14464
14477
|
});
|
|
14465
|
-
|
|
14466
|
-
|
|
14478
|
+
collectFields.forEach((field)=>{
|
|
14479
|
+
currentNode[`_set_${field}`] = new Set();
|
|
14480
|
+
});
|
|
14467
14481
|
}
|
|
14468
14482
|
if (measureValue && void 0 !== datum[measureValue]) currentNode[measureValue] += Number(datum[measureValue]);
|
|
14469
14483
|
measureKeys.forEach((key)=>{
|
|
14470
14484
|
if (void 0 !== datum[key]) currentNode[key] = (currentNode[key] || 0) + Number(datum[key]);
|
|
14471
14485
|
});
|
|
14472
|
-
|
|
14473
|
-
|
|
14486
|
+
collectFields.forEach((field)=>{
|
|
14487
|
+
if (datum[field]) currentNode[`_set_${field}`].add(datum[field]);
|
|
14488
|
+
});
|
|
14474
14489
|
if (measureValue) currentNode.value = currentNode[measureValue];
|
|
14475
14490
|
});
|
|
14491
|
+
const flattenSets = (node)=>{
|
|
14492
|
+
collectFields.forEach((field)=>{
|
|
14493
|
+
const setKey = `_set_${field}`;
|
|
14494
|
+
if (node[setKey]) {
|
|
14495
|
+
node[field] = Array.from(node[setKey]).join('+');
|
|
14496
|
+
delete node[setKey];
|
|
14497
|
+
}
|
|
14498
|
+
});
|
|
14499
|
+
};
|
|
14500
|
+
const mergeCollectFieldsFromChildren = (node)=>{
|
|
14501
|
+
collectFields.forEach((field)=>{
|
|
14502
|
+
const merged = new Set();
|
|
14503
|
+
node.children.forEach((child)=>{
|
|
14504
|
+
if (child[field]) child[field].split('+').forEach((v)=>merged.add(v));
|
|
14505
|
+
});
|
|
14506
|
+
if (merged.size > 0) node[field] = Array.from(merged).join('+');
|
|
14507
|
+
});
|
|
14508
|
+
};
|
|
14476
14509
|
const aggregate = (node)=>{
|
|
14477
14510
|
if (node.isLeaf) {
|
|
14478
|
-
|
|
14479
|
-
node[measureId] = Array.from(node._measureIds).join('+');
|
|
14480
|
-
delete node._measureIds;
|
|
14481
|
-
}
|
|
14482
|
-
if (measureName && node._measureNames) {
|
|
14483
|
-
node[measureName] = Array.from(node._measureNames).join('+');
|
|
14484
|
-
delete node._measureNames;
|
|
14485
|
-
}
|
|
14511
|
+
flattenSets(node);
|
|
14486
14512
|
return node.value || 0;
|
|
14487
14513
|
}
|
|
14488
|
-
if (node.children
|
|
14489
|
-
|
|
14490
|
-
|
|
14491
|
-
|
|
14492
|
-
|
|
14493
|
-
|
|
14494
|
-
});
|
|
14514
|
+
if (!node.children?.length) return node.value || 0;
|
|
14515
|
+
let sum = 0;
|
|
14516
|
+
node.children.forEach((child)=>{
|
|
14517
|
+
sum += aggregate(child);
|
|
14518
|
+
measureKeys.forEach((key)=>{
|
|
14519
|
+
node[key] = (node[key] || 0) + (child[key] || 0);
|
|
14495
14520
|
});
|
|
14496
|
-
|
|
14497
|
-
|
|
14498
|
-
|
|
14499
|
-
|
|
14500
|
-
|
|
14501
|
-
if (child[measureId]) child[measureId].split('+').forEach((id)=>childIds.add(id));
|
|
14502
|
-
});
|
|
14503
|
-
node[measureId] = Array.from(childIds).join('+');
|
|
14504
|
-
const childNames = new Set();
|
|
14505
|
-
node.children.forEach((child)=>{
|
|
14506
|
-
if (child[measureName]) child[measureName].split('+').forEach((name)=>childNames.add(name));
|
|
14507
|
-
});
|
|
14508
|
-
node[measureName] = Array.from(childNames).join('+');
|
|
14509
|
-
}
|
|
14510
|
-
return sum;
|
|
14511
|
-
}
|
|
14512
|
-
return node.value || 0;
|
|
14521
|
+
});
|
|
14522
|
+
node.value = sum;
|
|
14523
|
+
if (measureValue) node[measureValue] = sum;
|
|
14524
|
+
mergeCollectFieldsFromChildren(node);
|
|
14525
|
+
return sum;
|
|
14513
14526
|
};
|
|
14514
14527
|
root.children.forEach(aggregate);
|
|
14515
14528
|
return root.children;
|
|
@@ -14603,6 +14616,72 @@
|
|
|
14603
14616
|
};
|
|
14604
14617
|
return result;
|
|
14605
14618
|
};
|
|
14619
|
+
const datasetPivotHierarchy = (spec, context)=>{
|
|
14620
|
+
const result = {
|
|
14621
|
+
...spec
|
|
14622
|
+
};
|
|
14623
|
+
const { advancedVSeed } = context;
|
|
14624
|
+
const { dataset, datasetReshapeInfo, measures } = advancedVSeed;
|
|
14625
|
+
const measureKeys = findAllMeasures(measures).map((m)=>m.id);
|
|
14626
|
+
const hierarchyFields = advancedVSeed.encoding?.hierarchy || [];
|
|
14627
|
+
const rows = advancedVSeed.encoding?.row || [];
|
|
14628
|
+
const columns = advancedVSeed.encoding?.column || [];
|
|
14629
|
+
const pivotDims = [
|
|
14630
|
+
...rows,
|
|
14631
|
+
...columns
|
|
14632
|
+
];
|
|
14633
|
+
const records = dataset.reduce((pre, cur, index)=>{
|
|
14634
|
+
const id = datasetReshapeInfo[index].id;
|
|
14635
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[index];
|
|
14636
|
+
if (pivotDims.length > 0) {
|
|
14637
|
+
const groupedDataset = groupByDimensions(cur, pivotDims);
|
|
14638
|
+
pre[id] = groupedDataset.flatMap((data)=>{
|
|
14639
|
+
const root = {
|
|
14640
|
+
...data,
|
|
14641
|
+
children: buildTree(data.children, hierarchyFields, foldInfo, unfoldInfo, measureKeys)
|
|
14642
|
+
};
|
|
14643
|
+
const rootProps = chunk_KI5X74E2_y(root, [
|
|
14644
|
+
'children'
|
|
14645
|
+
]);
|
|
14646
|
+
const rootTree = root.children.map((child)=>({
|
|
14647
|
+
...child,
|
|
14648
|
+
...rootProps
|
|
14649
|
+
}));
|
|
14650
|
+
return rootTree;
|
|
14651
|
+
});
|
|
14652
|
+
} else {
|
|
14653
|
+
const tree = buildTree(cur, hierarchyFields, foldInfo, unfoldInfo, measureKeys);
|
|
14654
|
+
pre[id] = tree;
|
|
14655
|
+
}
|
|
14656
|
+
return pre;
|
|
14657
|
+
}, {});
|
|
14658
|
+
return {
|
|
14659
|
+
...result,
|
|
14660
|
+
records: records
|
|
14661
|
+
};
|
|
14662
|
+
};
|
|
14663
|
+
function groupByDimensions(data, dimKeys) {
|
|
14664
|
+
if (0 === dimKeys.length) return data;
|
|
14665
|
+
const buckets = new Map();
|
|
14666
|
+
for (const item of data){
|
|
14667
|
+
const compositeKey = dimKeys.map((k)=>String(item[k])).join('\x00');
|
|
14668
|
+
if (!buckets.has(compositeKey)) {
|
|
14669
|
+
const dimValues = {};
|
|
14670
|
+
for (const k of dimKeys)dimValues[k] = item[k];
|
|
14671
|
+
buckets.set(compositeKey, {
|
|
14672
|
+
dimValues,
|
|
14673
|
+
items: []
|
|
14674
|
+
});
|
|
14675
|
+
}
|
|
14676
|
+
buckets.get(compositeKey).items.push(item);
|
|
14677
|
+
}
|
|
14678
|
+
const result = [];
|
|
14679
|
+
for (const [, { dimValues, items }] of buckets)result.push({
|
|
14680
|
+
...dimValues,
|
|
14681
|
+
children: items
|
|
14682
|
+
});
|
|
14683
|
+
return result;
|
|
14684
|
+
}
|
|
14606
14685
|
const tooltipTreeMap = (spec, context)=>{
|
|
14607
14686
|
const result = tooltip_tooltip(spec, context);
|
|
14608
14687
|
const { advancedVSeed, vseed } = context;
|
|
@@ -14692,6 +14771,7 @@
|
|
|
14692
14771
|
};
|
|
14693
14772
|
const treeMap = [
|
|
14694
14773
|
initTreeMap,
|
|
14774
|
+
drill,
|
|
14695
14775
|
datasetHierarchy,
|
|
14696
14776
|
colorAdapter(color_color, linearColor),
|
|
14697
14777
|
background_backgroundColor,
|
|
@@ -14703,8 +14783,9 @@
|
|
|
14703
14783
|
const pivotTreeMap = [
|
|
14704
14784
|
initPivot,
|
|
14705
14785
|
pivotGridStyle,
|
|
14706
|
-
|
|
14707
|
-
|
|
14786
|
+
pivotIndicatorsAsCol,
|
|
14787
|
+
pivotHideIndicatorName,
|
|
14788
|
+
datasetPivotHierarchy,
|
|
14708
14789
|
pivotIndicators_pivotIndicators([
|
|
14709
14790
|
initTreeMap,
|
|
14710
14791
|
datasetHierarchy,
|
|
@@ -14792,7 +14873,6 @@
|
|
|
14792
14873
|
result.gap = 0;
|
|
14793
14874
|
result.offsetX = 0;
|
|
14794
14875
|
result.offsetY = 0;
|
|
14795
|
-
result.drill = true;
|
|
14796
14876
|
result.padding = 0;
|
|
14797
14877
|
result.labelAutoVisible = {
|
|
14798
14878
|
enable: true,
|
|
@@ -14920,6 +15000,7 @@
|
|
|
14920
15000
|
};
|
|
14921
15001
|
const sunburst = [
|
|
14922
15002
|
initSunburst,
|
|
15003
|
+
drill,
|
|
14923
15004
|
datasetHierarchy,
|
|
14924
15005
|
colorAdapter(color_color, linearColor),
|
|
14925
15006
|
background_backgroundColor,
|
|
@@ -14930,8 +15011,9 @@
|
|
|
14930
15011
|
const pivotSunburst = [
|
|
14931
15012
|
initPivot,
|
|
14932
15013
|
pivotGridStyle,
|
|
14933
|
-
|
|
14934
|
-
|
|
15014
|
+
pivotIndicatorsAsCol,
|
|
15015
|
+
pivotHideIndicatorName,
|
|
15016
|
+
datasetPivotHierarchy,
|
|
14935
15017
|
pivotIndicators_pivotIndicators([
|
|
14936
15018
|
initSunburst,
|
|
14937
15019
|
datasetHierarchy,
|
|
@@ -15013,7 +15095,6 @@
|
|
|
15013
15095
|
result.type = 'circlePacking';
|
|
15014
15096
|
result.categoryField = 'name';
|
|
15015
15097
|
result.valueField = foldInfo.measureValue;
|
|
15016
|
-
result.drill = true;
|
|
15017
15098
|
result.circlePacking = {
|
|
15018
15099
|
style: {
|
|
15019
15100
|
fillOpacity: (d)=>d.isLeaf ? 0.75 : 0.25
|
|
@@ -15057,6 +15138,7 @@
|
|
|
15057
15138
|
};
|
|
15058
15139
|
const circlePacking = [
|
|
15059
15140
|
initCirclePacking,
|
|
15141
|
+
drill,
|
|
15060
15142
|
datasetHierarchy,
|
|
15061
15143
|
colorAdapter(color_color, linearColor),
|
|
15062
15144
|
background_backgroundColor,
|
|
@@ -15067,8 +15149,9 @@
|
|
|
15067
15149
|
const pivotCirclePacking = [
|
|
15068
15150
|
initPivot,
|
|
15069
15151
|
pivotGridStyle,
|
|
15070
|
-
|
|
15071
|
-
|
|
15152
|
+
pivotIndicatorsAsCol,
|
|
15153
|
+
pivotHideIndicatorName,
|
|
15154
|
+
datasetPivotHierarchy,
|
|
15072
15155
|
pivotIndicators_pivotIndicators([
|
|
15073
15156
|
initCirclePacking,
|
|
15074
15157
|
datasetHierarchy,
|