mdt-charts 1.19.0 → 1.20.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.
Files changed (64) hide show
  1. package/lib/config/config.d.ts +16 -0
  2. package/lib/engine/block/blockSvg.d.ts +1 -1
  3. package/lib/engine/block/blockSvg.js +1 -1
  4. package/lib/engine/elementHighlighter/elementHighlighter.d.ts +0 -1
  5. package/lib/engine/elementHighlighter/elementHighlighter.js +5 -8
  6. package/lib/engine/elementHighlighter/selectHighlighter.js +11 -10
  7. package/lib/engine/features/axis/axis.d.ts +3 -3
  8. package/lib/engine/features/axis/axis.js +6 -0
  9. package/lib/engine/features/legend/legendMarkerCreator.js +1 -1
  10. package/lib/engine/features/markDots/markDot.d.ts +11 -3
  11. package/lib/engine/features/markDots/markDot.js +21 -10
  12. package/lib/engine/features/scale/scale.js +1 -1
  13. package/lib/engine/features/tolltip/tooltip.js +5 -4
  14. package/lib/engine/features/valueLabels/valueLabels.d.ts +45 -0
  15. package/lib/engine/features/valueLabels/valueLabels.js +139 -0
  16. package/lib/engine/features/valueLabels/valueLabelsHelper.d.ts +6 -0
  17. package/lib/engine/features/valueLabels/valueLabelsHelper.js +21 -0
  18. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.d.ts +23 -0
  19. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.js +24 -0
  20. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.d.ts +5 -0
  21. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.js +47 -0
  22. package/lib/engine/twoDimensionalNotation/area/area.d.ts +18 -11
  23. package/lib/engine/twoDimensionalNotation/area/area.js +32 -22
  24. package/lib/engine/twoDimensionalNotation/area/areaGenerator.d.ts +14 -0
  25. package/lib/engine/twoDimensionalNotation/area/areaGenerator.js +22 -0
  26. package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +7 -7
  27. package/lib/engine/twoDimensionalNotation/area/areaHelper.js +30 -31
  28. package/lib/engine/twoDimensionalNotation/bar/barHelper.js +1 -1
  29. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.d.ts +4 -2
  30. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.js +2 -5
  31. package/lib/engine/twoDimensionalNotation/line/line.d.ts +0 -6
  32. package/lib/engine/twoDimensionalNotation/line/line.js +4 -4
  33. package/lib/engine/twoDimensionalNotation/line/lineGenerator.d.ts +4 -7
  34. package/lib/engine/twoDimensionalNotation/line/lineGenerator.js +2 -16
  35. package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +4 -13
  36. package/lib/engine/twoDimensionalNotation/line/lineHelper.js +22 -10
  37. package/lib/engine/twoDimensionalNotation/lineLike/generatorFactory/lineLikeGeneratorFactory.d.ts +12 -0
  38. package/lib/engine/twoDimensionalNotation/lineLike/generatorFactory/lineLikeGeneratorFactory.js +1 -0
  39. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.d.ts +14 -0
  40. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.js +21 -0
  41. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.d.ts +20 -0
  42. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.js +9 -0
  43. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorMiddleware.d.ts +5 -0
  44. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorMiddleware.js +1 -0
  45. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +1 -0
  46. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +19 -3
  47. package/lib/model/featuresModel/axisModel.d.ts +4 -2
  48. package/lib/model/featuresModel/axisModel.js +14 -6
  49. package/lib/model/featuresModel/scaleModel/scaleModel.js +1 -1
  50. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.d.ts +9 -0
  51. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.js +33 -0
  52. package/lib/model/helpers/modelHelper.d.ts +1 -0
  53. package/lib/model/helpers/modelHelper.js +3 -2
  54. package/lib/model/helpers/twoDimensionalModelHelper.d.ts +5 -0
  55. package/lib/model/helpers/twoDimensionalModelHelper.js +16 -0
  56. package/lib/model/margin/twoDim/twoDimMarginModel.d.ts +2 -0
  57. package/lib/model/margin/twoDim/twoDimMarginModel.js +34 -1
  58. package/lib/model/model.d.ts +29 -5
  59. package/lib/model/modelInstance/configReader.d.ts +9 -3
  60. package/lib/model/modelInstance/configReader.js +46 -15
  61. package/lib/model/notations/twoDimensionalModel.js +31 -35
  62. package/package.json +1 -1
  63. /package/lib/engine/block/{defs.d.ts → defs/hatchPattern.d.ts} +0 -0
  64. /package/lib/engine/block/{defs.js → defs/hatchPattern.js} +0 -0
@@ -5,38 +5,38 @@ import { ScaleAxisRecalcer } from "../featuresModel/scaleModel/scaleAxisRecalcer
5
5
  import { ScaleModel } from "../featuresModel/scaleModel/scaleModel";
6
6
  import { getLegendMarkerOptions, parseDashStyles, parseShape } from "./twoDimensional/styles";
7
7
  import { getResolvedTitle } from "../../model/featuresModel/titleModel";
8
+ import { calculateValueLabelAlignment, getValueLabelX, getValueLabelY } from "../../model/featuresModel/valueLabelsModel/valueLabelsModel";
9
+ import { TwoDimensionalModelHelper } from "../helpers/twoDimensionalModelHelper";
8
10
  export class TwoDimensionalModel {
9
11
  static getOptions(configReader, designerConfig, modelInstance) {
12
+ var _a;
13
+ let secondaryScaleValueInfo;
10
14
  const options = configReader.options;
11
15
  const canvasModel = modelInstance.canvasModel;
12
- const resolvedTitle = getResolvedTitle(options.title, modelInstance.dataModel.repository.getRawRows());
13
16
  const scaleModel = new ScaleModel();
14
17
  const scaleMarginRecalcer = new ScaleAxisRecalcer(() => scaleModel.getScaleLinear(options, modelInstance.dataModel.repository.getScopedRows(), canvasModel, configReader));
15
18
  scaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
16
19
  const scaleValueInfo = scaleMarginRecalcer.getScaleValue();
17
- const secondaryScaleMarginRecalcer = new ScaleAxisRecalcer(() => scaleModel.getScaleSecondaryLinear(options, modelInstance.dataModel.repository.getScopedRows(), canvasModel, configReader));
18
- secondaryScaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
19
- const secondaryScaleValueInfo = secondaryScaleMarginRecalcer.getScaleValue();
20
+ if (configReader.containsSecondaryAxis()) {
21
+ const secondaryScaleMarginRecalcer = new ScaleAxisRecalcer(() => scaleModel.getScaleSecondaryLinear(options, modelInstance.dataModel.repository.getScopedRows(), canvasModel, configReader));
22
+ secondaryScaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
23
+ secondaryScaleValueInfo = secondaryScaleMarginRecalcer.getScaleValue();
24
+ }
25
+ const keyAxis = AxisModel.getKeyAxis(options, modelInstance.dataModel.repository.getScopedFullSource(), designerConfig.canvas.axisLabel, canvasModel, designerConfig.elementsOptions.tooltip, () => scaleValueInfo.scaleFn(0));
20
26
  return {
21
27
  legend: canvasModel.legendCanvas.getModel(),
22
- title: resolvedTitle,
28
+ title: getResolvedTitle(options.title, modelInstance.dataModel.repository.getRawRows()),
23
29
  selectable: !!options.selectable,
24
30
  orient: options.orientation,
25
- scale: {
26
- key: scaleModel.getScaleKey(modelInstance.dataModel.getAllowableKeys(), options.orientation, canvasModel, options.charts, this.getChartsByType(options.charts, 'bar')),
27
- value: scaleValueInfo.scale,
28
- valueSecondary: secondaryScaleValueInfo.scale,
29
- },
30
- axis: {
31
- key: AxisModel.getKeyAxis(options, modelInstance.dataModel.repository.getScopedFullSource(), designerConfig.canvas.axisLabel, canvasModel, designerConfig.elementsOptions.tooltip, () => scaleValueInfo.scaleFn(0)),
32
- value: AxisModel.getValueAxis(options.orientation, options.axis.value, designerConfig.canvas.axisLabel, canvasModel)
33
- },
31
+ scale: Object.assign({ key: scaleModel.getScaleKey(modelInstance.dataModel.getAllowableKeys(), options.orientation, canvasModel, options.charts, this.getChartsByType(options.charts, 'bar')), value: scaleValueInfo.scale }, (configReader.containsSecondaryAxis() && { valueSecondary: secondaryScaleValueInfo.scale })),
32
+ axis: Object.assign({ key: keyAxis, value: AxisModel.getMainValueAxis(options.orientation, options.axis.value.position, options.axis.value, designerConfig.canvas.axisLabel, canvasModel) }, (configReader.containsSecondaryAxis() && { valueSecondary: AxisModel.getSecondaryValueAxis(options.orientation, options.axis.value.position, options.axis.valueSecondary, designerConfig.canvas.axisLabel, canvasModel) })),
34
33
  type: options.type,
35
34
  data: Object.assign({}, options.data),
36
- charts: this.getChartsModel(options.charts, options.orientation, designerConfig, modelInstance.dataModel.repository),
35
+ charts: this.getChartsModel(options.charts, configReader, options.orientation, designerConfig, modelInstance.dataModel.repository, keyAxis.orient, canvasModel, options.data.keyField.name),
37
36
  additionalElements: this.getAdditionalElements(options),
38
37
  tooltip: options.tooltip,
39
- chartSettings: this.getChartsSettings(designerConfig.canvas.chartOptions, options.orientation)
38
+ chartSettings: this.getChartsSettings(designerConfig.canvas.chartOptions, options.orientation),
39
+ valueLabels: (_a = options.valueLabels) !== null && _a !== void 0 ? _a : { collision: { mode: "none" } }
40
40
  };
41
41
  }
42
42
  static getChartsEmbeddedLabelsFlag(charts, chartOrientation) {
@@ -61,22 +61,14 @@ export class TwoDimensionalModel {
61
61
  lineLike: { shape: parseShape(chartOrientation, (_a = chartOptions.line) === null || _a === void 0 ? void 0 : _a.shape) }
62
62
  };
63
63
  }
64
- static getChartsModel(charts, chartOrientation, designerConfig, dataModelRep) {
64
+ static getChartsModel(charts, configReader, chartOrientation, designerConfig, dataModelRep, keyAxisOrient, canvasModel, keyFieldName) {
65
65
  const styleModel = new TwoDimensionalChartStyleModel(charts, designerConfig.chartStyle);
66
66
  this.sortCharts(charts);
67
67
  const chartsModel = [];
68
68
  charts.forEach((chart, index) => {
69
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
70
- chartsModel.push({
71
- type: chart.type,
72
- isSegmented: chart.isSegmented,
73
- data: Object.assign({}, chart.data),
74
- tooltip: chart.tooltip,
75
- cssClasses: ChartStyleModelService.getCssClasses(index),
76
- style: styleModel.getChartStyle(chart, index),
77
- embeddedLabels: this.getEmbeddedLabelType(chart, chartOrientation),
78
- markersOptions: {
79
- show: dataModelRep.getScopedRows().length === 1 ? true : chart.markers.show,
69
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
70
+ chartsModel.push(Object.assign({ type: chart.type, isSegmented: chart.isSegmented, data: Object.assign({}, chart.data), tooltip: chart.tooltip, cssClasses: ChartStyleModelService.getCssClasses(index), style: styleModel.getChartStyle(chart, index), embeddedLabels: this.getEmbeddedLabelType(chart, chartOrientation), markersOptions: {
71
+ show: ({ row, valueFieldName }) => TwoDimensionalModelHelper.shouldMarkerShow(chart, dataModelRep.getRawRows(), valueFieldName, row, keyFieldName),
80
72
  styles: {
81
73
  highlighted: {
82
74
  size: { radius: (_c = (_b = (_a = designerConfig.canvas.markers) === null || _a === void 0 ? void 0 : _a.highlighted) === null || _b === void 0 ? void 0 : _b.radius) !== null && _c !== void 0 ? _c : 4, borderSize: '3.5px' }
@@ -88,15 +80,19 @@ export class TwoDimensionalModel {
88
80
  }
89
81
  }
90
82
  }
91
- },
92
- lineViewOptions: {
83
+ }, lineLikeViewOptions: {
93
84
  dashedStyles: parseDashStyles((_k = chart.lineStyles) === null || _k === void 0 ? void 0 : _k.dash),
94
85
  renderForKey: (dataRow, valueFieldName) => dataRow[valueFieldName] !== null && dataRow[valueFieldName] !== undefined
95
- },
96
- barViewOptions: { hatch: { on: (_o = (_m = (_l = chart.barStyles) === null || _l === void 0 ? void 0 : _l.hatch) === null || _m === void 0 ? void 0 : _m.on) !== null && _o !== void 0 ? _o : false } },
97
- legend: getLegendMarkerOptions(chart),
98
- index
99
- });
86
+ }, barViewOptions: { hatch: { on: (_o = (_m = (_l = chart.barStyles) === null || _l === void 0 ? void 0 : _l.hatch) === null || _m === void 0 ? void 0 : _m.on) !== null && _o !== void 0 ? _o : false } }, legend: getLegendMarkerOptions(chart), index }, (((_p = chart.valueLabels) === null || _p === void 0 ? void 0 : _p.on) && {
87
+ valueLabels: {
88
+ show: true,
89
+ handleX: (scaledValue) => getValueLabelX(scaledValue, keyAxisOrient, canvasModel.getMargin()),
90
+ handleY: (scaledValue) => getValueLabelY(scaledValue, keyAxisOrient, canvasModel.getMargin()),
91
+ textAnchor: calculateValueLabelAlignment(keyAxisOrient).textAnchor,
92
+ dominantBaseline: calculateValueLabelAlignment(keyAxisOrient).dominantBaseline,
93
+ format: configReader.getValueLabelFormatterForChart(index),
94
+ }
95
+ })));
100
96
  });
101
97
  return chartsModel;
102
98
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdt-charts",
3
- "version": "1.19.0",
3
+ "version": "1.20.1",
4
4
  "description": "",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {