@visactor/vseed 0.1.30 → 0.1.32
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 +3 -3
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/builder/builder/builder.d.ts +6156 -0
- package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureName.js +2 -1
- package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureName.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js +4 -3
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js +4 -3
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +20 -9
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js +19 -7
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +20 -8
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/pieStyle.js +11 -13
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/pieStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js +2 -1
- package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/corner/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/table/pipes/corner/index.js +2 -0
- package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.d.ts +2 -0
- package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js +12 -0
- package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js.map +1 -0
- package/dist/esm/pipeline/spec/table/pipes/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/table/pipes/index.js +1 -0
- package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +5 -3
- package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
- package/dist/esm/pipeline/utils/chatType.d.ts +1 -0
- package/dist/esm/pipeline/utils/chatType.js +2 -1
- package/dist/esm/pipeline/utils/chatType.js.map +1 -1
- package/dist/esm/theme/common/annotaion.d.ts +22 -0
- package/dist/esm/theme/common/annotaion.js +106 -0
- package/dist/esm/theme/common/annotaion.js.map +1 -0
- package/dist/esm/theme/common/crosshair.js +5 -5
- package/dist/esm/theme/common/crosshair.js.map +1 -1
- package/dist/esm/theme/dark/dark.js +23 -11
- package/dist/esm/theme/dark/dark.js.map +1 -1
- package/dist/esm/theme/light/light.js +23 -11
- package/dist/esm/theme/light/light.js.map +1 -1
- package/dist/esm/types/advancedVSeed.d.ts +2260 -0
- package/dist/esm/types/chartType/area/zArea.d.ts +3 -0
- package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +3 -0
- package/dist/esm/types/chartType/bar/zBar.d.ts +2 -0
- package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +2 -0
- package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +2 -0
- package/dist/esm/types/chartType/column/zColumn.d.ts +2 -0
- package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +2 -0
- package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +2 -0
- package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +5 -0
- package/dist/esm/types/chartType/line/zLine.d.ts +3 -0
- package/dist/esm/types/chartType/scatter/zScatter.d.ts +3 -0
- package/dist/esm/types/properties/annotation/annotationArea.d.ts +1 -1
- package/dist/esm/types/properties/config/annotation/annotation.d.ts +76 -0
- package/dist/esm/types/properties/config/annotation/annotation.js +0 -0
- package/dist/esm/types/properties/config/annotation/index.d.ts +2 -0
- package/dist/esm/types/properties/config/annotation/index.js +1 -0
- package/dist/esm/types/properties/config/annotation/zAnnotaion.d.ts +167 -0
- package/dist/esm/types/properties/config/annotation/zAnnotaion.js +57 -0
- package/dist/esm/types/properties/config/annotation/zAnnotaion.js.map +1 -0
- package/dist/esm/types/properties/config/axes/bandAxis.d.ts +4 -0
- package/dist/esm/types/properties/config/axes/linearAxis.d.ts +4 -0
- package/dist/esm/types/properties/config/axes/zBandAxis.d.ts +2 -0
- package/dist/esm/types/properties/config/axes/zBandAxis.js +2 -1
- package/dist/esm/types/properties/config/axes/zBandAxis.js.map +1 -1
- package/dist/esm/types/properties/config/axes/zLinearAxis.d.ts +2 -0
- package/dist/esm/types/properties/config/axes/zLinearAxis.js +2 -1
- package/dist/esm/types/properties/config/axes/zLinearAxis.js.map +1 -1
- package/dist/esm/types/properties/config/config.d.ts +2260 -0
- package/dist/esm/types/properties/config/config.js +15 -7
- package/dist/esm/types/properties/config/config.js.map +1 -1
- package/dist/esm/types/properties/config/crosshair/zCrosshair.d.ts +1 -0
- package/dist/esm/types/properties/config/crosshair/zCrosshair.js +2 -1
- package/dist/esm/types/properties/config/crosshair/zCrosshair.js.map +1 -1
- package/dist/esm/types/properties/theme/customTheme.d.ts +2260 -0
- package/dist/esm/types/zVseed.d.ts +29 -0
- package/dist/umd/index.js +507 -268
- package/dist/umd/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -8,7 +8,8 @@ const defaultMeasureName = (advancedVSeed)=>{
|
|
|
8
8
|
const measures = findAllMeasures(advancedVSeed.measures);
|
|
9
9
|
if (measures.length > 1 && !result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push({
|
|
10
10
|
id: MeasureName,
|
|
11
|
-
alias: intl.i18n
|
|
11
|
+
alias: intl.i18n`指标名称`,
|
|
12
|
+
encoding: 'row'
|
|
12
13
|
});
|
|
13
14
|
return result;
|
|
14
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/table/pipes/default/defaultMeasureName.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasureName.ts"],"sourcesContent":["import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils/measures/find'\nimport type { AdvancedPipe, Dimension, DimensionTree } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (measures.length > 1 && !result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push({\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n } as Dimension)\n }\n\n return result\n}\n"],"names":["defaultMeasureName","advancedVSeed","result","measures","findAllMeasures","dim","MeasureName","intl"],"mappings":";;;AAKO,MAAMA,qBAAmC,CAACC;IAC/C,MAAMC,SAAS;QAAE,GAAGD,aAAa;IAAC;IAClC,MAAME,WAAWC,gBAAgBH,cAAc,QAAQ;IAGvD,IAAIE,SAAS,MAAM,GAAG,KAAK,CAACD,OAAO,UAAU,EAAE,KAAK,CAACG,MAAQA,IAAI,EAAE,KAAKC,cACtEJ,OAAO,UAAU,EAAE,KAAK;QACtB,IAAII;QACJ,OAAOC,KAAK,IAAI,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/table/pipes/default/defaultMeasureName.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasureName.ts"],"sourcesContent":["import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils/measures/find'\nimport type { AdvancedPipe, Dimension, DimensionTree } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (measures.length > 1 && !result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push({\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n encoding: 'row',\n } as Dimension)\n }\n\n return result\n}\n"],"names":["defaultMeasureName","advancedVSeed","result","measures","findAllMeasures","dim","MeasureName","intl"],"mappings":";;;AAKO,MAAMA,qBAAmC,CAACC;IAC/C,MAAMC,SAAS;QAAE,GAAGD,aAAa;IAAC;IAClC,MAAME,WAAWC,gBAAgBH,cAAc,QAAQ;IAGvD,IAAIE,SAAS,MAAM,GAAG,KAAK,CAACD,OAAO,UAAU,EAAE,KAAK,CAACG,MAAQA,IAAI,EAAE,KAAKC,cACtEJ,OAAO,UAAU,EAAE,KAAK;QACtB,IAAII;QACJ,OAAOC,KAAK,IAAI,CAAC,IAAI,CAAC;QACtB,UAAU;IACZ;IAGF,OAAOL;AACT"}
|
|
@@ -2,9 +2,10 @@ import { selector } from "../../../../../dataSelector/index.js";
|
|
|
2
2
|
import { isSubset } from "./utils.js";
|
|
3
3
|
import { ANNOTATION_Z_INDEX } from "../../../../utils/constant.js";
|
|
4
4
|
const annotationArea_annotationArea = (spec, context)=>{
|
|
5
|
-
const { advancedVSeed } = context;
|
|
6
|
-
const { annotation } = advancedVSeed;
|
|
5
|
+
const { advancedVSeed, vseed } = context;
|
|
6
|
+
const { annotation, config } = advancedVSeed;
|
|
7
7
|
if (!annotation || !annotation.annotationArea) return spec;
|
|
8
|
+
const theme = config?.[vseed.chartType]?.annotation?.annotationArea;
|
|
8
9
|
const { annotationArea } = annotation;
|
|
9
10
|
const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [
|
|
10
11
|
annotationArea
|
|
@@ -20,7 +21,7 @@ const annotationArea_annotationArea = (spec, context)=>{
|
|
|
20
21
|
right: 'insideRight'
|
|
21
22
|
};
|
|
22
23
|
const markArea = annotationAreaList.flatMap((annotationArea)=>{
|
|
23
|
-
const { selector: selectorPoint, text = '', textPosition = 'top', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'center', textBaseline = 'top', textBackgroundVisible = true, textBackgroundColor = '#191d24', textBackgroundBorderColor = '#191d24', textBackgroundBorderWidth = 1, textBackgroundBorderRadius = 4, textBackgroundPadding = 4, areaColor = '#888888', areaColorOpacity = 0.15, areaBorderColor = '#888888', areaBorderRadius = 4, areaBorderWidth = 1, outerPadding = 4 } = annotationArea;
|
|
24
|
+
const { selector: selectorPoint, text = '', textPosition = 'top', textColor = theme?.textColor ?? '#ffffff', textFontSize = theme?.textFontSize ?? 12, textFontWeight = theme?.textFontWeight ?? 400, textAlign = 'center', textBaseline = 'top', textBackgroundVisible = theme?.textBackgroundVisible ?? true, textBackgroundColor = theme?.textBackgroundColor ?? '#191d24', textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24', textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1, textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4, textBackgroundPadding = theme?.textBackgroundPadding ?? 4, areaColor = theme?.areaColor ?? '#888888', areaColorOpacity = theme?.areaColorOpacity ?? 0.15, areaBorderColor = theme?.areaBorderColor ?? '#888888', areaBorderRadius = theme?.areaBorderRadius ?? 4, areaBorderWidth = theme?.areaBorderWidth ?? 1, outerPadding = theme?.outerPadding ?? 4 } = annotationArea;
|
|
24
25
|
const dataset = advancedVSeed.dataset.flat();
|
|
25
26
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector(datum, selectorPoint)) : [];
|
|
26
27
|
const labelPosition = positionMap[textPosition || 'top'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationArea.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts"],"sourcesContent":["import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = true,\n textBackgroundColor = '#191d24',\n textBackgroundBorderColor = '#191d24',\n textBackgroundBorderWidth = 1,\n textBackgroundBorderRadius = 4,\n textBackgroundPadding = 4,\n\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor = '#888888',\n areaBorderRadius = 4,\n areaBorderWidth = 1,\n\n outerPadding = 4,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : textFontSize,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : textFontSize,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n"],"names":["annotationArea","spec","context","advancedVSeed","annotation","annotationAreaList","Array","positionMap","markArea","selectorPoint","text","textPosition","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundVisible","textBackgroundColor","textBackgroundBorderColor","textBackgroundBorderWidth","textBackgroundBorderRadius","textBackgroundPadding","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","dataset","selectedData","datum","selector","labelPosition","isBottom","ANNOTATION_Z_INDEX","data","positionData","item","isSubset","xyList","yAxisHelper","xAxisHelper","yScale","minX","Math","maxX","minY","maxY","xScale"],"mappings":";;;AAMO,MAAMA,gCAA2B,CAACC,MAAMC;IAC7C,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,UAAU,EAAE,GAAGD;IAEvB,IAAI,CAACC,cAAc,CAACA,WAAW,cAAc,EAC3C,OAAOH;IAGT,MAAM,EAAED,cAAc,EAAE,GAAGI;IAC3B,MAAMC,qBAAqBC,MAAM,OAAO,CAACN,kBAAkBA,iBAAiB;QAACA;KAAe;IAE5F,MAAMO,cAAc;QAClB,KAAK;QACL,UAAU;QACV,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,MAAM;QACN,OAAO;IACT;IAEA,MAAMC,WAAWH,mBAAmB,OAAO,CAAC,CAACL;QAC3C,MAAM,EACJ,UAAUS,aAAa,EACvBC,OAAO,EAAE,EACTC,eAAe,KAAK,EACpBC,YAAY,SAAS,EACrBC,eAAe,EAAE,EACjBC,iBAAiB,GAAG,EACpBC,YAAY,QAAQ,EACpBC,eAAe,KAAK,EAEpBC,wBAAwB,IAAI,EAC5BC,sBAAsB,SAAS,EAC/BC,4BAA4B,SAAS,EACrCC,4BAA4B,CAAC,EAC7BC,6BAA6B,CAAC,EAC9BC,wBAAwB,CAAC,EAEzBC,YAAY,SAAS,EACrBC,mBAAmB,IAAI,EACvBC,kBAAkB,SAAS,EAC3BC,mBAAmB,CAAC,EACpBC,kBAAkB,CAAC,EAEnBC,eAAe,CAAC,EACjB,GAAG5B;QAEJ,MAAM6B,UAAU1B,cAAc,OAAO,CAAC,IAAI;QAC1C,MAAM2B,eAAerB,gBAAgBoB,QAAQ,MAAM,CAAC,CAACE,QAAUC,SAASD,OAAOtB,kBAAkB,EAAE;QAEnG,MAAMwB,gBAAgB1B,WAAW,CAACI,gBAAgB,MAAM;QACxD,MAAMuB,WAAWD,cAAc,iBAAiB,GAAG,QAAQ,CAAC;QAE5D,OAAO;YACL,QAAQE;YACR,gBAAgB;YAChB,WAAW,CAACC,MAAelC;gBACzB,MAAMmC,eAAeD,KAAK,MAAM,CAAC,CAACE,OAASR,aAAa,IAAI,CAAC,CAACC,QAAUQ,SAASR,OAAOO;gBACxF,MAAME,SAASH,aAAa,GAAG,CAAC,CAACN,QAAU7B,QAAQ,cAAc,CAAC6B;gBAElE,MAAMU,cAAcvC,QAAQ,cAAc;gBAM1C,MAAMwC,cAAcxC,QAAQ,cAAc;gBAO1C,IAAI,AAAqC,cAArC,OAAOwC,aAAa,cAA6B;oBACnD,MAAMC,SAASF,YAAY,QAAQ;oBAEnC,MAAMG,OAAOC,KAAK,GAAG,IAAIL,OAAO,GAAG,CAAC,CAACF,OAASA,KAAK,CAAC,KAAMV,CAAAA,gBAAgB;oBAC1E,MAAMkB,OAAOD,KAAK,GAAG,IAAIL,OAAO,GAAG,CAAC,CAACF,OAASA,KAAK,CAAC,KAAMV,CAAAA,gBAAgB;oBAC1E,MAAMmB,OAAOF,KAAK,GAAG,IAAIF,OAAO,KAAK;oBACrC,MAAMK,OAAOH,KAAK,GAAG,IAAIF,OAAO,KAAK;oBACrC,OAAO;wBAEL;4BACE,GAAGC;4BACH,GAAGG;wBACL;wBAEA;4BACE,GAAGD;4BACH,GAAGC;wBACL;wBAEA;4BACE,GAAGD;4BACH,GAAGE;wBACL;wBAEA;4BACE,GAAGJ;4BACH,GAAGI;wBACL;qBACD;gBACH;gBAEA,IAAI,AAAqC,cAArC,OAAOP,aAAa,cAA6B;oBACnD,MAAMQ,SAASP,YAAY,QAAQ;oBAEnC,MAAMK,OAAOF,KAAK,GAAG,IAAIL,OAAO,GAAG,CAAC,CAACF,OAASA,KAAK,CAAC,KAAMV,CAAAA,gBAAgB;oBAC1E,MAAMoB,OAAOH,KAAK,GAAG,IAAIL,OAAO,GAAG,CAAC,CAACF,OAASA,KAAK,CAAC,KAAMV,CAAAA,gBAAgB;oBAC1E,MAAMgB,OAAOC,KAAK,GAAG,IAAII,OAAO,KAAK;oBACrC,MAAMH,OAAOD,KAAK,GAAG,IAAII,OAAO,KAAK;oBAErC,OAAO;wBAEL;4BACE,GAAGL;4BACH,GAAGG;wBACL;wBAEA;4BACE,GAAGD;4BACH,GAAGC;wBACL;wBAEA;4BACE,GAAGD;4BACH,GAAGE;wBACL;wBAEA;4BACE,GAAGJ;4BACH,GAAGI;wBACL;qBACD;gBACH;gBAEA,OAAO,EAAE;YACX;YACA,OAAO;gBACL,UAAUf;gBACV,SAAS;gBACT,MAAMvB;gBACN,OAAO;oBACL,IAAIwB,WAAW,AAAwB,IAAxB,CAAErB,CAAAA,gBAAgB,EAAC,IAASA;oBAC3C,WAAWE;oBACX,cAAcC;oBACd,MAAMJ;oBACN,QAAQM;oBACR,WAAW;oBACX,UAAUL;oBACV,YAAYC;gBACd;gBAEA,iBAAiB;oBACf,SAASG;oBACT,SAASK;oBACT,OAAO;wBACL,IAAIY,WAAW,AAAwB,IAAxB,CAAErB,CAAAA,gBAAgB,EAAC,IAASA;wBAC3C,cAAcQ,8BAA8B;wBAC5C,MAAMH;wBACN,QAAQC;wBACR,WAAWC;oBACb;gBACF;YACF;YACA,MAAM;gBACJ,OAAO;oBACL,SAAS;oBACT,MAAMG;oBACN,aAAaC;oBACb,QAAQC;oBACR,WAAWE;oBACX,cAAcD;gBAChB;YACF;QACF;IACF;IAEA,OAAO;QACL,GAAGzB,IAAI;QACP,UAAUO;IACZ;AACF"}
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationArea.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts"],"sourcesContent":["import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationArea\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#191d24',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24',\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 4,\n\n areaColor = theme?.areaColor ?? '#888888',\n areaColorOpacity = theme?.areaColorOpacity ?? 0.15,\n areaBorderColor = theme?.areaBorderColor ?? '#888888',\n areaBorderRadius = theme?.areaBorderRadius ?? 4,\n areaBorderWidth = theme?.areaBorderWidth ?? 1,\n\n outerPadding = theme?.outerPadding ?? 4,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : textFontSize,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : textFontSize,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n"],"names":["annotationArea","spec","context","advancedVSeed","vseed","annotation","config","theme","annotationAreaList","Array","positionMap","markArea","selectorPoint","text","textPosition","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundVisible","textBackgroundColor","textBackgroundBorderColor","textBackgroundBorderWidth","textBackgroundBorderRadius","textBackgroundPadding","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","dataset","selectedData","datum","selector","labelPosition","isBottom","ANNOTATION_Z_INDEX","data","positionData","item","isSubset","xyList","yAxisHelper","xAxisHelper","yScale","minX","Math","maxX","minY","maxY","xScale"],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@ import { selector } from "../../../../../dataSelector/index.js";
|
|
|
2
2
|
import { isSubset } from "./utils.js";
|
|
3
3
|
import { ANNOTATION_Z_INDEX } from "../../../../utils/constant.js";
|
|
4
4
|
const annotationAreaBand = (spec, context)=>{
|
|
5
|
-
const { advancedVSeed } = context;
|
|
6
|
-
const { annotation } = advancedVSeed;
|
|
5
|
+
const { advancedVSeed, vseed } = context;
|
|
6
|
+
const { annotation, config } = advancedVSeed;
|
|
7
7
|
if (!annotation || !annotation.annotationArea) return spec;
|
|
8
|
+
const theme = config?.[vseed.chartType]?.annotation?.annotationArea;
|
|
8
9
|
const { annotationArea } = annotation;
|
|
9
10
|
const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [
|
|
10
11
|
annotationArea
|
|
@@ -20,7 +21,7 @@ const annotationAreaBand = (spec, context)=>{
|
|
|
20
21
|
right: 'insideRight'
|
|
21
22
|
};
|
|
22
23
|
const markArea = annotationAreaList.flatMap((annotationArea)=>{
|
|
23
|
-
const { selector: selectorPoint, text = '', textPosition = 'top', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'center', textBaseline = 'top', textBackgroundVisible = true, textBackgroundColor = '#191d24', textBackgroundBorderColor = '#191d24', textBackgroundBorderWidth = 1, textBackgroundBorderRadius = 4, textBackgroundPadding = 4, areaColor = '#888888', areaColorOpacity = 0.15, areaBorderColor = '#888888', areaBorderRadius = 4, areaBorderWidth = 1, outerPadding = 4 } = annotationArea;
|
|
24
|
+
const { selector: selectorPoint, text = '', textPosition = 'top', textColor = theme?.textColor ?? '#ffffff', textFontSize = theme?.textFontSize ?? 12, textFontWeight = theme?.textFontWeight ?? 400, textAlign = 'center', textBaseline = 'top', textBackgroundVisible = theme?.textBackgroundVisible ?? true, textBackgroundColor = theme?.textBackgroundColor ?? '#191d24', textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24', textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1, textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4, textBackgroundPadding = theme?.textBackgroundPadding ?? 4, areaColor = theme?.areaColor ?? '#888888', areaColorOpacity = theme?.areaColorOpacity ?? 0.15, areaBorderColor = theme?.areaBorderColor ?? '#888888', areaBorderRadius = theme?.areaBorderRadius ?? 4, areaBorderWidth = theme?.areaBorderWidth ?? 1, outerPadding = theme?.outerPadding ?? 4 } = annotationArea;
|
|
24
25
|
const dy = textPosition?.includes('bottom') ? -1 * textFontSize : textFontSize;
|
|
25
26
|
const dataset = advancedVSeed.dataset.flat();
|
|
26
27
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector(datum, selectorPoint)) : [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationAreaBand.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts"],"sourcesContent":["import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationAreaBand: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = true,\n textBackgroundColor = '#191d24',\n textBackgroundBorderColor = '#191d24',\n textBackgroundBorderWidth = 1,\n textBackgroundBorderRadius = 4,\n textBackgroundPadding = 4,\n\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor = '#888888',\n areaBorderRadius = 4,\n areaBorderWidth = 1,\n\n outerPadding = 4,\n } = annotationArea\n\n const dy = textPosition?.includes('bottom') ? -1 * textFontSize! : textFontSize\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries & { _scaleConfig?: { bandPosition?: number } }) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const bandPosition = context?._scaleConfig?.bandPosition || 0\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n const startX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const endX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n\n const width = endX - startX + xBandWidth\n const middleX = (endX + startX) / 2 + xBandWidth * (0.5 - bandPosition)\n\n const minX = middleX - width / 2\n const maxX = middleX + width / 2\n\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const startY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const endY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const width = endY - startY + yBandWidth\n const middleY = (endY + startY) / 2 + yBandWidth * (0.5 - bandPosition)\n\n const minY = middleY - width / 2\n const maxY = middleY + width / 2\n\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition || 'top'],\n visible: true,\n text: text,\n style: {\n dy: dy,\n textAlign: textAlign,\n textBaseline: textBaseline,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: dy,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n"],"names":["annotationAreaBand","spec","context","advancedVSeed","annotation","annotationArea","annotationAreaList","Array","positionMap","markArea","selectorPoint","text","textPosition","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundVisible","textBackgroundColor","textBackgroundBorderColor","textBackgroundBorderWidth","textBackgroundBorderRadius","textBackgroundPadding","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","dy","dataset","selectedData","datum","selector","ANNOTATION_Z_INDEX","data","positionData","item","isSubset","xyList","bandPosition","yAxisHelper","xAxisHelper","depth","xBandWidth","yScale","startX","Math","endX","width","middleX","minX","maxX","minY","maxY","yBandWidth","xScale","startY","endY","middleY"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationAreaBand.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts"],"sourcesContent":["import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationAreaBand: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationArea\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#191d24',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24',\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 4,\n\n areaColor = theme?.areaColor ?? '#888888',\n areaColorOpacity = theme?.areaColorOpacity ?? 0.15,\n areaBorderColor = theme?.areaBorderColor ?? '#888888',\n areaBorderRadius = theme?.areaBorderRadius ?? 4,\n areaBorderWidth = theme?.areaBorderWidth ?? 1,\n\n outerPadding = theme?.outerPadding ?? 4,\n } = annotationArea\n\n const dy = textPosition?.includes('bottom') ? -1 * textFontSize! : textFontSize\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries & { _scaleConfig?: { bandPosition?: number } }) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const bandPosition = context?._scaleConfig?.bandPosition || 0\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n const startX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const endX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n\n const width = endX - startX + xBandWidth\n const middleX = (endX + startX) / 2 + xBandWidth * (0.5 - bandPosition)\n\n const minX = middleX - width / 2\n const maxX = middleX + width / 2\n\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const startY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const endY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const width = endY - startY + yBandWidth\n const middleY = (endY + startY) / 2 + yBandWidth * (0.5 - bandPosition)\n\n const minY = middleY - width / 2\n const maxY = middleY + width / 2\n\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition || 'top'],\n visible: true,\n text: text,\n style: {\n dy: dy,\n textAlign: textAlign,\n textBaseline: textBaseline,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: dy,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n"],"names":["annotationAreaBand","spec","context","advancedVSeed","vseed","annotation","config","theme","annotationArea","annotationAreaList","Array","positionMap","markArea","selectorPoint","text","textPosition","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundVisible","textBackgroundColor","textBackgroundBorderColor","textBackgroundBorderWidth","textBackgroundBorderRadius","textBackgroundPadding","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","dy","dataset","selectedData","datum","selector","ANNOTATION_Z_INDEX","data","positionData","item","isSubset","xyList","bandPosition","yAxisHelper","xAxisHelper","depth","xBandWidth","yScale","startX","Math","endX","width","middleX","minX","maxX","minY","maxY","yBandWidth","xScale","startY","endY","middleY"],"mappings":"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"}
|
|
@@ -2,10 +2,11 @@ import { selector } from "../../../../../dataSelector/index.js";
|
|
|
2
2
|
import { isArray, isNumber, isString } from "remeda";
|
|
3
3
|
import { ANNOTATION_Z_INDEX } from "../../../../utils/constant.js";
|
|
4
4
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
5
|
-
const { advancedVSeed } = context;
|
|
6
|
-
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
|
5
|
+
const { advancedVSeed, vseed } = context;
|
|
6
|
+
const { annotation, datasetReshapeInfo, config } = advancedVSeed;
|
|
7
7
|
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
|
8
8
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
|
9
|
+
const theme = config?.[vseed.chartType]?.annotation?.annotationHorizontalLine;
|
|
9
10
|
const { annotationHorizontalLine } = annotation;
|
|
10
11
|
const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
|
11
12
|
annotationHorizontalLine
|
|
@@ -19,7 +20,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
|
19
20
|
insideEnd: 'insideEndTop'
|
|
20
21
|
};
|
|
21
22
|
const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
|
|
22
|
-
const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = '
|
|
23
|
+
const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = theme?.textColor ?? '#ffffff', textFontSize = theme?.textFontSize ?? 12, textFontWeight = theme?.textFontWeight ?? 400, textAlign = 'right', textBaseline = 'bottom', lineColor = theme?.lineColor ?? '#212121', lineStyle = theme?.lineStyle ?? 'dashed', lineVisible = theme?.lineStyle ?? true, lineWidth = theme?.lineWidth ?? 1, textBackgroundVisible = theme?.textBackgroundVisible ?? true, textBackgroundColor = theme?.textBackgroundColor ?? '#212121', textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121', textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4, textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1, textBackgroundPadding = theme?.textBackgroundPadding ?? 2 } = annotationHorizontalLine;
|
|
23
24
|
const dataset = advancedVSeed.dataset.flat();
|
|
24
25
|
const generateOneMarkLine = (y)=>({
|
|
25
26
|
y,
|
|
@@ -28,7 +29,6 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
|
28
29
|
style: {
|
|
29
30
|
visible: lineVisible,
|
|
30
31
|
stroke: lineColor,
|
|
31
|
-
lineStyle: lineStyle,
|
|
32
32
|
lineWidth: lineWidth,
|
|
33
33
|
lineDash: 'dashed' === lineStyle ? [
|
|
34
34
|
5,
|
|
@@ -46,7 +46,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
|
46
46
|
position: positionMap[textPosition || 'insideEnd'],
|
|
47
47
|
style: {
|
|
48
48
|
visible: true,
|
|
49
|
-
dy:
|
|
49
|
+
dy: 4,
|
|
50
50
|
stroke: textBackgroundColor,
|
|
51
51
|
lineWidth: 1,
|
|
52
52
|
textAlign: textAlign,
|
|
@@ -59,16 +59,27 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
|
59
59
|
visible: textBackgroundVisible,
|
|
60
60
|
padding: textBackgroundPadding,
|
|
61
61
|
style: {
|
|
62
|
-
dy:
|
|
63
|
-
cornerRadius: textBackgroundBorderRadius
|
|
62
|
+
dy: 4,
|
|
63
|
+
cornerRadius: textBackgroundBorderRadius,
|
|
64
64
|
fill: textBackgroundColor,
|
|
65
65
|
stroke: textBackgroundBorderColor,
|
|
66
|
-
lineWidth: textBackgroundBorderWidth
|
|
66
|
+
lineWidth: textBackgroundBorderWidth,
|
|
67
|
+
fillOpacity: 1
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
},
|
|
71
|
+
startSymbol: {
|
|
72
|
+
visible: theme?.startSymbolVisible ?? true,
|
|
73
|
+
symbolType: theme?.startSymbolType ?? 'triangleDown',
|
|
74
|
+
size: 5,
|
|
75
|
+
style: {
|
|
76
|
+
dx: 0,
|
|
77
|
+
fill: lineColor
|
|
78
|
+
}
|
|
79
|
+
},
|
|
70
80
|
endSymbol: {
|
|
71
|
-
visible:
|
|
81
|
+
visible: theme?.endSymbolVisible ?? false,
|
|
82
|
+
symbolType: theme?.endSymbolType ?? 'arrow',
|
|
72
83
|
size: 10 + (lineWidth || 1),
|
|
73
84
|
style: {
|
|
74
85
|
dx: -4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts"],"sourcesContent":["import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = '
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts"],"sourcesContent":["import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, datasetReshapeInfo, config } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationHorizontalLine\n const { annotationHorizontalLine } = annotation\n const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'right',\n textBaseline = 'bottom',\n\n lineColor = theme?.lineColor ?? '#212121',\n lineStyle = theme?.lineStyle ?? 'dashed',\n lineVisible = theme?.lineStyle ?? true,\n lineWidth = theme?.lineWidth ?? 1,\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121',\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n } = annotationHorizontalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n y,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n visible: true,\n dy: 4,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: 4,\n cornerRadius: textBackgroundBorderRadius,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n startSymbol: {\n visible: theme?.startSymbolVisible ?? true,\n symbolType: theme?.startSymbolType ?? 'triangleDown',\n size: 5,\n style: {\n dx: 0,\n fill: lineColor,\n },\n },\n endSymbol: {\n visible: theme?.endSymbolVisible ?? false,\n symbolType: theme?.endSymbolType ?? 'arrow',\n size: 10 + (lineWidth || 1),\n style: {\n dx: -4,\n fill: lineColor,\n },\n },\n }\n }\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingY]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingY] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n"],"names":["annotationHorizontalLine","spec","context","advancedVSeed","vseed","annotation","datasetReshapeInfo","config","foldInfo","unfoldInfo","theme","annotationHorizontalLineList","Array","positionMap","markLine","selectorPoint","yValue","text","textPosition","textColor","textFontSize","textFontWeight","textAlign","textBaseline","lineColor","lineStyle","lineVisible","lineWidth","textBackgroundVisible","textBackgroundColor","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundPadding","dataset","generateOneMarkLine","y","ANNOTATION_Z_INDEX","isArray","isString","isNumber","yValueArr","selectedData","datum","selector","specMarkLine","newMarkLine"],"mappings":"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"}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
import { selector } from "../../../../../dataSelector/index.js";
|
|
2
2
|
import { isSubset } from "./utils.js";
|
|
3
3
|
import { ANNOTATION_Z_INDEX } from "../../../../utils/constant.js";
|
|
4
|
+
import { isBarLikeChart } from "../../../../utils/chatType.js";
|
|
4
5
|
const annotationPoint_annotationPoint = (spec, context)=>{
|
|
5
|
-
const { advancedVSeed } = context;
|
|
6
|
-
const { annotation } = advancedVSeed;
|
|
6
|
+
const { advancedVSeed, vseed } = context;
|
|
7
|
+
const { annotation, config } = advancedVSeed;
|
|
7
8
|
if (!annotation || !annotation.annotationPoint) return spec;
|
|
9
|
+
const theme = config?.[vseed.chartType]?.annotation?.annotationPoint;
|
|
8
10
|
const { annotationPoint } = annotation;
|
|
9
11
|
const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [
|
|
10
12
|
annotationPoint
|
|
11
13
|
];
|
|
14
|
+
const isHorizontalBar = isBarLikeChart(advancedVSeed);
|
|
15
|
+
const defaultStyle = isHorizontalBar ? {
|
|
16
|
+
textAlign: 'right',
|
|
17
|
+
textBaseline: 'middle'
|
|
18
|
+
} : {
|
|
19
|
+
textAlign: 'center',
|
|
20
|
+
textBaseline: 'top'
|
|
21
|
+
};
|
|
12
22
|
const markPoint = annotationPointList.flatMap((annotationPoint)=>{
|
|
13
|
-
const { selector: selectorPoint, text = '', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign =
|
|
23
|
+
const { selector: selectorPoint, text = '', textColor = theme?.textColor ?? '#ffffff', textFontSize = theme?.textFontSize ?? 12, textFontWeight = theme?.textFontWeight ?? 400, textAlign = defaultStyle.textAlign, textBaseline = defaultStyle.textBaseline, textBackgroundBorderColor = theme?.textBackgroundBorderColor, textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4, textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1, textBackgroundColor = theme?.textBackgroundColor ?? '#212121', textBackgroundPadding = theme?.textBackgroundPadding ?? 2, textBackgroundVisible = theme?.textBackgroundVisible ?? true, offsetX = theme?.offsetX ?? 0, offsetY = theme?.offsetY ?? 0 } = annotationPoint;
|
|
14
24
|
const dataset = advancedVSeed.dataset.flat();
|
|
15
25
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector(datum, selectorPoint)) : [];
|
|
26
|
+
const dx = -10 - (isHorizontalBar ? textFontSize : 0);
|
|
27
|
+
const dy = isHorizontalBar ? 0 : textFontSize;
|
|
16
28
|
return selectedData.map((datum)=>({
|
|
17
29
|
zIndex: ANNOTATION_Z_INDEX,
|
|
18
30
|
regionRelative: true,
|
|
@@ -35,8 +47,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
|
35
47
|
lineWidth: 1,
|
|
36
48
|
fontSize: textFontSize,
|
|
37
49
|
fontWeight: textFontWeight,
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
dx,
|
|
51
|
+
dy
|
|
40
52
|
},
|
|
41
53
|
labelBackground: {
|
|
42
54
|
visible: textBackgroundVisible,
|
|
@@ -46,8 +58,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
|
46
58
|
fill: textBackgroundColor,
|
|
47
59
|
stroke: textBackgroundBorderColor,
|
|
48
60
|
lineWidth: textBackgroundBorderWidth,
|
|
49
|
-
|
|
50
|
-
|
|
61
|
+
dx,
|
|
62
|
+
dy
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationPoint.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationPoint: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationPoint) {\n return spec\n }\n\n const { annotationPoint } = annotation\n const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [annotationPoint]\n\n const markPoint = annotationPointList.flatMap((annotationPoint) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign =
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationPoint.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\nimport { isBarLikeChart } from 'src/pipeline/utils/chatType'\n\nexport const annotationPoint: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationPoint) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationPoint\n const { annotationPoint } = annotation\n const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [annotationPoint]\n const isHorizontalBar = isBarLikeChart(advancedVSeed)\n const defaultStyle = isHorizontalBar\n ? {\n textAlign: 'right',\n textBaseline: 'middle',\n }\n : {\n textAlign: 'center',\n textBaseline: 'top',\n }\n\n const markPoint = annotationPointList.flatMap((annotationPoint) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = defaultStyle.textAlign,\n textBaseline = defaultStyle.textBaseline,\n textBackgroundBorderColor = theme?.textBackgroundBorderColor,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n offsetX = theme?.offsetX ?? 0,\n offsetY = theme?.offsetY ?? 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n const dx = -10 - (isHorizontalBar ? (textFontSize as number) : 0) // 由于vchart tag实现问题,需要设置这个强制偏移量\n const dy = isHorizontalBar ? 0 : (textFontSize as number)\n\n return selectedData.map((datum) => {\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n coordinate: (data: Datum[]) => {\n return data.find((item) => isSubset(datum, item))\n },\n\n itemLine: {\n visible: false,\n },\n itemContent: {\n offsetY,\n offsetX,\n confine: true,\n text: {\n text: text,\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dx,\n dy,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n dx,\n dy,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n"],"names":["annotationPoint","spec","context","advancedVSeed","vseed","annotation","config","theme","annotationPointList","Array","isHorizontalBar","isBarLikeChart","defaultStyle","markPoint","selectorPoint","text","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundColor","textBackgroundPadding","textBackgroundVisible","offsetX","offsetY","dataset","selectedData","datum","selector","dx","dy","ANNOTATION_Z_INDEX","data","item","isSubset"],"mappings":";;;;AAOO,MAAMA,kCAA4B,CAACC,MAAMC;IAC9C,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAM,EAAEG,UAAU,EAAEC,MAAM,EAAE,GAAGH;IAE/B,IAAI,CAACE,cAAc,CAACA,WAAW,eAAe,EAC5C,OAAOJ;IAGT,MAAMM,QAAQD,QAAQ,CAACF,MAAM,SAAS,CAAa,EAAE,YAAY;IACjE,MAAM,EAAEJ,eAAe,EAAE,GAAGK;IAC5B,MAAMG,sBAAsBC,MAAM,OAAO,CAACT,mBAAmBA,kBAAkB;QAACA;KAAgB;IAChG,MAAMU,kBAAkBC,eAAeR;IACvC,MAAMS,eAAeF,kBACjB;QACE,WAAW;QACX,cAAc;IAChB,IACA;QACE,WAAW;QACX,cAAc;IAChB;IAEJ,MAAMG,YAAYL,oBAAoB,OAAO,CAAC,CAACR;QAC7C,MAAM,EACJ,UAAUc,aAAa,EACvBC,OAAO,EAAE,EACTC,YAAYT,OAAO,aAAa,SAAS,EACzCU,eAAeV,OAAO,gBAAgB,EAAE,EACxCW,iBAAiBX,OAAO,kBAAkB,GAAG,EAC7CY,YAAYP,aAAa,SAAS,EAClCQ,eAAeR,aAAa,YAAY,EACxCS,4BAA4Bd,OAAO,yBAAyB,EAC5De,6BAA6Bf,OAAO,8BAA8B,CAAC,EACnEgB,4BAA4BhB,OAAO,6BAA6B,CAAC,EACjEiB,sBAAsBjB,OAAO,uBAAuB,SAAS,EAC7DkB,wBAAwBlB,OAAO,yBAAyB,CAAC,EACzDmB,wBAAwBnB,OAAO,yBAAyB,IAAI,EAC5DoB,UAAUpB,OAAO,WAAW,CAAC,EAC7BqB,UAAUrB,OAAO,WAAW,CAAC,EAC9B,GAAGP;QAEJ,MAAM6B,UAAU1B,cAAc,OAAO,CAAC,IAAI;QAC1C,MAAM2B,eAAehB,gBAAgBe,QAAQ,MAAM,CAAC,CAACE,QAAUC,SAASD,OAAOjB,kBAAkB,EAAE;QACnG,MAAMmB,KAAK,MAAOvB,CAAAA,kBAAmBO,eAA0B;QAC/D,MAAMiB,KAAKxB,kBAAkB,IAAKO;QAElC,OAAOa,aAAa,GAAG,CAAC,CAACC,QAChB;gBACL,QAAQI;gBACR,gBAAgB;gBAChB,YAAY,CAACC,OACJA,KAAK,IAAI,CAAC,CAACC,OAASC,SAASP,OAAOM;gBAG7C,UAAU;oBACR,SAAS;gBACX;gBACA,aAAa;oBACXT;oBACAD;oBACA,SAAS;oBACT,MAAM;wBACJ,MAAMZ;wBACN,OAAO;4BACL,SAAS;4BACT,WAAWI;4BACX,cAAcC;4BACd,MAAMJ;4BACN,QAAQQ;4BACR,WAAW;4BACX,UAAUP;4BACV,YAAYC;4BACZe;4BACAC;wBACF;wBACA,iBAAiB;4BACf,SAASR;4BACT,SAASD;4BACT,OAAO;gCACL,cAAcH,8BAA8B;gCAC5C,MAAME;gCACN,QAAQH;gCACR,WAAWE;gCACXU;gCACAC;4BACF;wBACF;oBACF;gBACF;YACF;IAEJ;IAEA,OAAO;QACL,GAAGjC,IAAI;QACPY;IACF;AACF"}
|
|
@@ -2,10 +2,11 @@ import { selector } from "../../../../../dataSelector/index.js";
|
|
|
2
2
|
import { isArray, isNumber, isString } from "remeda";
|
|
3
3
|
import { ANNOTATION_Z_INDEX } from "../../../../utils/constant.js";
|
|
4
4
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
5
|
-
const { advancedVSeed } = context;
|
|
6
|
-
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
|
5
|
+
const { advancedVSeed, vseed } = context;
|
|
6
|
+
const { annotation, datasetReshapeInfo, config } = advancedVSeed;
|
|
7
7
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
|
8
8
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
|
9
|
+
const theme = config?.[vseed.chartType]?.annotation?.annotationVerticalLine;
|
|
9
10
|
const { annotationVerticalLine } = annotation;
|
|
10
11
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
|
11
12
|
annotationVerticalLine
|
|
@@ -19,7 +20,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
|
19
20
|
insideEnd: 'insideEndTop'
|
|
20
21
|
};
|
|
21
22
|
const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine)=>{
|
|
22
|
-
const { selector: selectorPoint, xValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = '
|
|
23
|
+
const { selector: selectorPoint, xValue, text = '', textPosition = 'insideEnd', textColor = theme?.textColor ?? '#ffffff', textFontSize = theme?.textFontSize ?? 12, textFontWeight = theme?.textFontWeight ?? 400, textAlign = 'center', textBaseline = 'top', lineColor = theme?.lineColor ?? '#212121', lineStyle = theme?.lineStyle ?? 'dashed', lineVisible = theme?.lineStyle ?? true, lineWidth = theme?.lineWidth ?? 1, textBackgroundVisible = theme?.textBackgroundVisible ?? true, textBackgroundColor = theme?.textBackgroundColor ?? '#212121', textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121', textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4, textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1, textBackgroundPadding = theme?.textBackgroundPadding ?? 2 } = annotationVerticalLine;
|
|
23
24
|
const dataset = advancedVSeed.dataset.flat();
|
|
24
25
|
const generateOneMarkLine = (x)=>({
|
|
25
26
|
x: x,
|
|
@@ -45,6 +46,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
|
45
46
|
text: text,
|
|
46
47
|
position: positionMap[textPosition || 'insideEnd'],
|
|
47
48
|
style: {
|
|
49
|
+
dx: 5,
|
|
48
50
|
visible: true,
|
|
49
51
|
stroke: textBackgroundColor,
|
|
50
52
|
lineWidth: 1,
|
|
@@ -52,23 +54,33 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
|
52
54
|
textBaseline: textBaseline,
|
|
53
55
|
fill: textColor,
|
|
54
56
|
fontSize: textFontSize,
|
|
55
|
-
fontWeight: textFontWeight
|
|
56
|
-
dy: textFontSize
|
|
57
|
+
fontWeight: textFontWeight
|
|
57
58
|
},
|
|
58
59
|
labelBackground: {
|
|
59
60
|
visible: textBackgroundVisible,
|
|
60
61
|
padding: textBackgroundPadding,
|
|
61
62
|
style: {
|
|
62
|
-
|
|
63
|
-
cornerRadius: textBackgroundBorderRadius
|
|
63
|
+
dx: 5,
|
|
64
|
+
cornerRadius: textBackgroundBorderRadius,
|
|
64
65
|
fill: textBackgroundColor,
|
|
66
|
+
fillOpacity: 1,
|
|
65
67
|
stroke: textBackgroundBorderColor,
|
|
66
68
|
lineWidth: textBackgroundBorderWidth
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
},
|
|
72
|
+
startSymbol: {
|
|
73
|
+
visible: theme?.startSymbolVisible ?? true,
|
|
74
|
+
symbolType: theme?.startSymbolType ?? 'triangleDown',
|
|
75
|
+
size: 5 + (lineWidth || 1),
|
|
76
|
+
style: {
|
|
77
|
+
dy: -3,
|
|
78
|
+
fill: lineColor
|
|
79
|
+
}
|
|
80
|
+
},
|
|
70
81
|
endSymbol: {
|
|
71
|
-
visible:
|
|
82
|
+
visible: theme?.endSymbolVisible ?? false,
|
|
83
|
+
symbolType: theme?.endSymbolType ?? 'arrow',
|
|
72
84
|
size: 10 + (lineWidth || 1),
|
|
73
85
|
style: {
|
|
74
86
|
dy: 4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts"],"sourcesContent":["import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = '
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts"],"sourcesContent":["import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, datasetReshapeInfo, config } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationVerticalLine\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n lineColor = theme?.lineColor ?? '#212121',\n lineStyle = theme?.lineStyle ?? 'dashed',\n lineVisible = theme?.lineStyle ?? true,\n lineWidth = theme?.lineWidth ?? 1,\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121',\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n x: x as string,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n dx: 5,\n visible: true,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dx: 5,\n cornerRadius: textBackgroundBorderRadius,\n fill: textBackgroundColor,\n fillOpacity: 1,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n startSymbol: {\n visible: theme?.startSymbolVisible ?? true,\n symbolType: theme?.startSymbolType ?? 'triangleDown',\n size: 5 + (lineWidth || 1),\n style: {\n dy: -3,\n fill: lineColor,\n },\n },\n endSymbol: {\n visible: theme?.endSymbolVisible ?? false,\n symbolType: theme?.endSymbolType ?? 'arrow',\n size: 10 + (lineWidth || 1),\n style: {\n dy: 4,\n fill: lineColor,\n },\n },\n })\n\n if ((!selectorPoint && isArray(xValue)) || isString(xValue) || isNumber(xValue)) {\n const xValueArr = Array.isArray(xValue) ? xValue : [xValue]\n return xValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingX]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingX] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n"],"names":["annotationVerticalLine","spec","context","advancedVSeed","vseed","annotation","datasetReshapeInfo","config","unfoldInfo","foldInfo","theme","annotationVerticalLineList","Array","positionMap","markLine","selectorPoint","xValue","text","textPosition","textColor","textFontSize","textFontWeight","textAlign","textBaseline","lineColor","lineStyle","lineVisible","lineWidth","textBackgroundVisible","textBackgroundColor","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundPadding","dataset","generateOneMarkLine","x","ANNOTATION_Z_INDEX","isArray","isString","isNumber","xValueArr","selectedData","datum","selector","specMarkLine","newMarkLine"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/axes/xBand.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts"],"sourcesContent":["import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n"],"names":["xBand","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","config","visible","label","tick","title","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","defaultTitleText"],"mappings":";AAIO,MAAMA,QAAkB,CAACC,MAAMC;IACpC,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGL;IAC3C,MAAMM,SAASN,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE;IAE9D,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,uBAAuB,EAAE,EACzBC,eAAe,EACfC,yBAAyB,EAC1B,GAAGZ;IAEJ,MAAMa,WAAW,CAAEN,CAAAA,iBAAiBI,mBAAmBF,cAAa;IAEpE,MAAMK,WAAW;QACfb;QACA,MAAM;QACN,QAAQ;QACR,WAAWS,uBAAuB;QAClCG;QACA,OAAO;QACP,OAAO;YACL,SAASX,OAAO;YAChB,OAAO;YACP,OAAO;YACP,OAAO;gBACL,cAAcQ;gBACd,MAAMR,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;YAGA,QAAQM;YACR,UAAUD;YACV,gBAAgB;YAChB,oBAAoBC;YACpB,WAAWC;YACX,YAAYE;YACZ,iBAAiBC;YACjB,aAAa;QACf;QACA,OAAO;YACL,SAASR,OAAO;YAChB,MAAMA,OAAO,aAAaW,iBAAiBlB,UAAUC,YAAYC,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMK,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/axes/xBand.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts"],"sourcesContent":["import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n"],"names":["xBand","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","config","visible","label","tick","title","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","defaultTitleText"],"mappings":";AAIO,MAAMA,QAAkB,CAACC,MAAMC;IACpC,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGL;IAC3C,MAAMM,SAASN,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE;IAE9D,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,uBAAuB,EAAE,EACzBC,eAAe,EACfC,yBAAyB,EAC1B,GAAGZ;IAEJ,MAAMa,WAAW,CAAEN,CAAAA,iBAAiBI,mBAAmBF,cAAa;IAEpE,MAAMK,WAAW;QACfb;QACA,MAAM;QACN,QAAQ;QACR,WAAWS,uBAAuB;QAClCG;QACA,OAAO;QACP,OAAO;YACL,SAASX,OAAO;YAChB,OAAO;YACP,OAAO;YACP,OAAO;gBACL,cAAcQ;gBACd,MAAMR,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;YAGA,QAAQM;YACR,UAAUD;YACV,gBAAgB;YAChB,oBAAoBC;YACpB,WAAWC;YACX,YAAYE;YACZ,iBAAiBC;YACjB,aAAa;QACf;QACA,OAAO;YACL,SAASR,OAAO;YAChB,MAAMA,OAAO,aAAaW,iBAAiBlB,UAAUC,YAAYC,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMK,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,cAAc;YAAC;YAAM;SAAI;QACzB,cAAc;YAAC;YAAO;SAAI;IAC5B;IAEAb,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEqB;KAAS;IACxC,OAAOrB;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/axes/xLinear.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["xLinear","spec","context","result","advancedVSeed","vseed","encoding","dimensions","measures","chartType","config","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","linearAxis","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";;;AAYO,MAAMA,UAAoB,CAACC,MAAMC;IACtC,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGJ;IAC3C,MAAM,EAAEK,SAAS,EAAE,GAAGJ;IACtB,MAAMK,SAASN,cAAc,MAAM,EAAE,CAACK,UAAmB,EAAE;IAE3D,IAAI,CAACN,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EAEJC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,UAAU,EAAE,EACZC,UAAU,EACVC,YAAY,CAAC,CAAC,EACf,GAAGf;IAEJ,MAAMgB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjBlB;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACAC;QACAC;QACA,OAAO;YACL,SAAST,OAAO;YAChB,cAAc,CAACkB;gBACb,IAAIC,aAAa1B,UAAU2B,gBAAgB3B,UAAU4B,cAAc5B,QACjE,OAAO6B,0BAA0BJ,OAAON,YAAYC,WAAWC,WAAWE;gBAE5E,OAAOO,mBAAmBL,OAAON,YAAYC,WAAWC;YAC1D;YACA,OAAO;gBACL,MAAMd,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMA,OAAO,aAAasB,iBAAiB5B,UAAUD,YAAYD,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMQ,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/axes/xLinear.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["xLinear","spec","context","result","advancedVSeed","vseed","encoding","dimensions","measures","chartType","config","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","linearAxis","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";;;AAYO,MAAMA,UAAoB,CAACC,MAAMC;IACtC,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGJ;IAC3C,MAAM,EAAEK,SAAS,EAAE,GAAGJ;IACtB,MAAMK,SAASN,cAAc,MAAM,EAAE,CAACK,UAAmB,EAAE;IAE3D,IAAI,CAACN,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EAEJC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,UAAU,EAAE,EACZC,UAAU,EACVC,YAAY,CAAC,CAAC,EACf,GAAGf;IAEJ,MAAMgB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjBlB;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACAC;QACAC;QACA,OAAO;YACL,SAAST,OAAO;YAChB,cAAc,CAACkB;gBACb,IAAIC,aAAa1B,UAAU2B,gBAAgB3B,UAAU4B,cAAc5B,QACjE,OAAO6B,0BAA0BJ,OAAON,YAAYC,WAAWC,WAAWE;gBAE5E,OAAOO,mBAAmBL,OAAON,YAAYC,WAAWC;YAC1D;YACA,OAAO;gBACL,MAAMd,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMA,OAAO,aAAasB,iBAAiB5B,UAAUD,YAAYD,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMQ,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,aAAa;YACX,OAAOqB;QAET;IACF;IAEAlC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE0B;KAAW;IAE1C,OAAO1B;AACT"}
|