mdt-charts 1.29.0 → 1.30.0

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 (257) hide show
  1. package/lib/config/config.d.ts +170 -178
  2. package/lib/designer/designerConfig.d.ts +59 -62
  3. package/lib/engine/block/block.d.ts +16 -22
  4. package/lib/engine/block/block.js +51 -51
  5. package/lib/engine/block/blockHelper.d.ts +6 -6
  6. package/lib/engine/block/blockHelper.js +16 -16
  7. package/lib/engine/block/blockHtml.d.ts +8 -8
  8. package/lib/engine/block/blockHtml.js +15 -15
  9. package/lib/engine/block/blockSvg.d.ts +20 -20
  10. package/lib/engine/block/blockSvg.js +66 -65
  11. package/lib/engine/block/defs/LinearGradientDef.d.ts +2 -2
  12. package/lib/engine/block/defs/LinearGradientDef.js +27 -27
  13. package/lib/engine/block/defs/hatchPattern.d.ts +4 -4
  14. package/lib/engine/block/defs/hatchPattern.js +9 -9
  15. package/lib/engine/colorReader/colorReader.d.ts +5 -5
  16. package/lib/engine/colorReader/colorReader.js +18 -18
  17. package/lib/engine/contentManager/contentManager.d.ts +7 -6
  18. package/lib/engine/contentManager/contentManager.js +15 -15
  19. package/lib/engine/contentManager/contentManagerFactory.d.ts +7 -7
  20. package/lib/engine/contentManager/contentManagerFactory.js +12 -12
  21. package/lib/engine/elementHighlighter/elementHighlighter.d.ts +22 -70
  22. package/lib/engine/elementHighlighter/elementHighlighter.js +181 -230
  23. package/lib/engine/elementHighlighter/selectHighlighter.d.ts +4 -29
  24. package/lib/engine/elementHighlighter/selectHighlighter.js +87 -189
  25. package/lib/engine/engine.d.ts +17 -17
  26. package/lib/engine/engine.js +62 -87
  27. package/lib/engine/features/aggregator/aggregator.d.ts +17 -24
  28. package/lib/engine/features/aggregator/aggregator.js +102 -113
  29. package/lib/engine/features/axis/axis.d.ts +9 -22
  30. package/lib/engine/features/axis/axis.js +150 -159
  31. package/lib/engine/features/axis/axisDomHelper.d.ts +2 -7
  32. package/lib/engine/features/axis/axisDomHelper.js +20 -19
  33. package/lib/engine/features/axis/axisHelper.d.ts +5 -9
  34. package/lib/engine/features/axis/axisHelper.js +33 -28
  35. package/lib/engine/features/axis/axisLabelDomHelper.d.ts +11 -26
  36. package/lib/engine/features/axis/axisLabelDomHelper.js +152 -156
  37. package/lib/engine/features/axis/axisLabelsEventManager.d.ts +2 -2
  38. package/lib/engine/features/axis/axisLabelsEventManager.js +32 -32
  39. package/lib/engine/features/embeddedLabels/embeddedLabels.d.ts +16 -51
  40. package/lib/engine/features/embeddedLabels/embeddedLabels.js +134 -234
  41. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.d.ts +2 -13
  42. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.js +23 -20
  43. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.d.ts +15 -32
  44. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.js +63 -56
  45. package/lib/engine/features/gridLine/gidLineHelper.d.ts +7 -13
  46. package/lib/engine/features/gridLine/gidLineHelper.js +49 -42
  47. package/lib/engine/features/gridLine/gridLine.d.ts +5 -19
  48. package/lib/engine/features/gridLine/gridLine.js +36 -35
  49. package/lib/engine/features/legend/legend.d.ts +28 -38
  50. package/lib/engine/features/legend/legend.js +92 -118
  51. package/lib/engine/features/legend/legendDomHelper.d.ts +6 -13
  52. package/lib/engine/features/legend/legendDomHelper.js +62 -63
  53. package/lib/engine/features/legend/legendEventsManager.d.ts +8 -13
  54. package/lib/engine/features/legend/legendEventsManager.js +47 -48
  55. package/lib/engine/features/legend/legendHelper.d.ts +14 -39
  56. package/lib/engine/features/legend/legendHelper.js +92 -98
  57. package/lib/engine/features/legend/legendHelperService.d.ts +6 -13
  58. package/lib/engine/features/legend/legendHelperService.js +25 -24
  59. package/lib/engine/features/legend/legendMarkerCreator.d.ts +9 -18
  60. package/lib/engine/features/legend/legendMarkerCreator.js +76 -79
  61. package/lib/engine/features/legend/legendWidthCalculator.d.ts +7 -7
  62. package/lib/engine/features/legend/legendWidthCalculator.js +122 -126
  63. package/lib/engine/features/markDots/markDot.d.ts +15 -42
  64. package/lib/engine/features/markDots/markDot.js +70 -101
  65. package/lib/engine/features/markDots/markDotsHelper.d.ts +1 -8
  66. package/lib/engine/features/markDots/markDotsHelper.js +12 -13
  67. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.d.ts +5 -23
  68. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.js +34 -42
  69. package/lib/engine/features/scale/scale.d.ts +12 -17
  70. package/lib/engine/features/scale/scale.js +69 -76
  71. package/lib/engine/features/tipBox/tipBox.d.ts +5 -9
  72. package/lib/engine/features/tipBox/tipBox.js +24 -24
  73. package/lib/engine/features/tipBox/tipBoxHelper.d.ts +9 -16
  74. package/lib/engine/features/tipBox/tipBoxHelper.js +45 -60
  75. package/lib/engine/features/title/title.d.ts +6 -6
  76. package/lib/engine/features/title/title.js +35 -34
  77. package/lib/engine/features/tolltip/newTooltip/newTooltip.d.ts +11 -15
  78. package/lib/engine/features/tolltip/newTooltip/newTooltip.js +21 -21
  79. package/lib/engine/features/tolltip/newTooltip/newTooltipService.d.ts +8 -13
  80. package/lib/engine/features/tolltip/newTooltip/newTooltipService.js +23 -26
  81. package/lib/engine/features/tolltip/tooltip.d.ts +11 -17
  82. package/lib/engine/features/tolltip/tooltip.js +142 -296
  83. package/lib/engine/features/tolltip/tooltipComponentsManager.d.ts +10 -21
  84. package/lib/engine/features/tolltip/tooltipComponentsManager.js +114 -113
  85. package/lib/engine/features/tolltip/tooltipDomHelper.d.ts +21 -43
  86. package/lib/engine/features/tolltip/tooltipDomHelper.js +120 -144
  87. package/lib/engine/features/tolltip/tooltipHelper.d.ts +9 -39
  88. package/lib/engine/features/tolltip/tooltipHelper.js +91 -114
  89. package/lib/engine/features/valueLabels/valueLabels.d.ts +38 -58
  90. package/lib/engine/features/valueLabels/valueLabels.js +170 -205
  91. package/lib/engine/features/valueLabels/valueLabelsHelper.d.ts +1 -7
  92. package/lib/engine/features/valueLabels/valueLabelsHelper.js +18 -23
  93. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.d.ts +15 -18
  94. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.js +47 -46
  95. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.d.ts +3 -6
  96. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.js +45 -49
  97. package/lib/engine/filterManager/filterEventManager.d.ts +30 -37
  98. package/lib/engine/filterManager/filterEventManager.js +131 -174
  99. package/lib/engine/helpers/domHelper.d.ts +20 -45
  100. package/lib/engine/helpers/domHelper.js +61 -62
  101. package/lib/engine/helpers/fontResizer/fontResizer.d.ts +10 -10
  102. package/lib/engine/helpers/fontResizer/fontResizer.js +16 -21
  103. package/lib/engine/helpers/fontResizer/fontResizerService.d.ts +1 -1
  104. package/lib/engine/helpers/fontResizer/fontResizerService.js +10 -9
  105. package/lib/engine/helpers/helper.d.ts +27 -27
  106. package/lib/engine/helpers/helper.js +92 -91
  107. package/lib/engine/helpers/namesHelper.d.ts +3 -3
  108. package/lib/engine/helpers/namesHelper.js +6 -6
  109. package/lib/engine/helpers/pipeline/Pipeline.d.ts +5 -5
  110. package/lib/engine/helpers/pipeline/Pipeline.js +33 -33
  111. package/lib/engine/polarNotation/donut/DonutHelper.d.ts +11 -25
  112. package/lib/engine/polarNotation/donut/DonutHelper.js +70 -71
  113. package/lib/engine/polarNotation/donut/donut.d.ts +23 -38
  114. package/lib/engine/polarNotation/donut/donut.js +99 -109
  115. package/lib/engine/polarNotation/polarManager.d.ts +6 -6
  116. package/lib/engine/polarNotation/polarManager.js +47 -67
  117. package/lib/engine/transitionManager.d.ts +14 -13
  118. package/lib/engine/transitionManager.js +49 -48
  119. package/lib/engine/twoDimensionalNotation/area/area.d.ts +28 -44
  120. package/lib/engine/twoDimensionalNotation/area/area.js +238 -272
  121. package/lib/engine/twoDimensionalNotation/area/areaGenerator.d.ts +5 -13
  122. package/lib/engine/twoDimensionalNotation/area/areaGenerator.js +13 -13
  123. package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +4 -4
  124. package/lib/engine/twoDimensionalNotation/area/areaHelper.js +41 -57
  125. package/lib/engine/twoDimensionalNotation/bar/bar.d.ts +29 -54
  126. package/lib/engine/twoDimensionalNotation/bar/bar.js +224 -362
  127. package/lib/engine/twoDimensionalNotation/bar/barHelper.d.ts +32 -71
  128. package/lib/engine/twoDimensionalNotation/bar/barHelper.js +126 -162
  129. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.d.ts +6 -6
  130. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.js +24 -24
  131. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.d.ts +2 -2
  132. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.js +17 -16
  133. package/lib/engine/twoDimensionalNotation/dot/dotChart.d.ts +23 -23
  134. package/lib/engine/twoDimensionalNotation/dot/dotChart.js +114 -135
  135. package/lib/engine/twoDimensionalNotation/line/line.d.ts +16 -37
  136. package/lib/engine/twoDimensionalNotation/line/line.js +132 -162
  137. package/lib/engine/twoDimensionalNotation/line/lineBuilder.d.ts +11 -14
  138. package/lib/engine/twoDimensionalNotation/line/lineBuilder.js +48 -47
  139. package/lib/engine/twoDimensionalNotation/line/lineGenerator.d.ts +4 -4
  140. package/lib/engine/twoDimensionalNotation/line/lineGenerator.js +8 -8
  141. package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +6 -12
  142. package/lib/engine/twoDimensionalNotation/line/lineHelper.js +60 -76
  143. package/lib/engine/twoDimensionalNotation/lineLike/generatorFactory/lineLikeGeneratorFactory.d.ts +6 -6
  144. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.d.ts +5 -5
  145. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.js +17 -16
  146. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.d.ts +10 -11
  147. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.js +7 -9
  148. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorMiddleware.d.ts +1 -3
  149. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +10 -10
  150. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +138 -253
  151. package/lib/engine/valueFormatter.d.ts +3 -3
  152. package/lib/engine/valueFormatter.js +6 -6
  153. package/lib/main.d.ts +79 -82
  154. package/lib/main.js +84 -79
  155. package/lib/model/EventEmitter.d.ts +8 -8
  156. package/lib/model/EventEmitter.js +24 -24
  157. package/lib/model/chartStyleModel/chartStyleModel.d.ts +5 -5
  158. package/lib/model/chartStyleModel/chartStyleModel.js +25 -27
  159. package/lib/model/chartStyleModel/colorRange.d.ts +3 -3
  160. package/lib/model/chartStyleModel/colorRange.js +24 -19
  161. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.d.ts +12 -22
  162. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.js +60 -69
  163. package/lib/model/configsValidator/configValidator.d.ts +1 -1
  164. package/lib/model/configsValidator/configValidator.js +4 -4
  165. package/lib/model/dataManagerModel/dataManagerModel.d.ts +26 -36
  166. package/lib/model/dataManagerModel/dataManagerModel.js +128 -179
  167. package/lib/model/dataManagerModel/dataManagerModelService.d.ts +2 -2
  168. package/lib/model/dataManagerModel/dataManagerModelService.js +26 -25
  169. package/lib/model/featuresModel/axisModel.d.ts +18 -69
  170. package/lib/model/featuresModel/axisModel.js +169 -224
  171. package/lib/model/featuresModel/axisModelService.d.ts +6 -10
  172. package/lib/model/featuresModel/axisModelService.js +27 -27
  173. package/lib/model/featuresModel/legendModel/legendCanvasModel.d.ts +11 -16
  174. package/lib/model/featuresModel/legendModel/legendCanvasModel.js +59 -55
  175. package/lib/model/featuresModel/legendModel/legendModel.d.ts +3 -7
  176. package/lib/model/featuresModel/legendModel/legendModel.js +41 -59
  177. package/lib/model/featuresModel/legendModel/polarMarginCalculator.d.ts +3 -8
  178. package/lib/model/featuresModel/legendModel/polarMarginCalculator.js +20 -18
  179. package/lib/model/featuresModel/legendModel/twoDimLegendModel.d.ts +4 -8
  180. package/lib/model/featuresModel/legendModel/twoDimLegendModel.js +27 -40
  181. package/lib/model/featuresModel/otherComponents.d.ts +4 -7
  182. package/lib/model/featuresModel/otherComponents.js +9 -9
  183. package/lib/model/featuresModel/recordOverflowModel/recordOverflowModel.d.ts +4 -0
  184. package/lib/model/featuresModel/recordOverflowModel/recordOverflowModel.js +33 -0
  185. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.d.ts +6 -6
  186. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.js +23 -27
  187. package/lib/model/featuresModel/scaleModel/scaleDomainService.d.ts +5 -19
  188. package/lib/model/featuresModel/scaleModel/scaleDomainService.js +55 -44
  189. package/lib/model/featuresModel/scaleModel/scaleModel.d.ts +10 -10
  190. package/lib/model/featuresModel/scaleModel/scaleModel.js +50 -61
  191. package/lib/model/featuresModel/scaleModel/scaleModelServices.js +22 -15
  192. package/lib/model/featuresModel/titleModel.d.ts +1 -1
  193. package/lib/model/featuresModel/titleModel.js +14 -14
  194. package/lib/model/featuresModel/tooltipModel.d.ts +1 -1
  195. package/lib/model/featuresModel/tooltipModel.js +5 -5
  196. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.d.ts +11 -23
  197. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.js +51 -53
  198. package/lib/model/helpers/modelHelper.d.ts +7 -7
  199. package/lib/model/helpers/modelHelper.js +42 -38
  200. package/lib/model/helpers/twoDimensionalModelHelper.d.ts +9 -37
  201. package/lib/model/helpers/twoDimensionalModelHelper.js +125 -147
  202. package/lib/model/helpers/unitsFromConfigReader.js +4 -4
  203. package/lib/model/helpers/unitsReader.d.ts +2 -2
  204. package/lib/model/helpers/unitsReader.js +13 -11
  205. package/lib/model/margin/marginModel.d.ts +7 -7
  206. package/lib/model/margin/marginModel.js +20 -23
  207. package/lib/model/margin/twoDim/twoDimMarginModel.d.ts +13 -13
  208. package/lib/model/margin/twoDim/twoDimMarginModel.js +113 -184
  209. package/lib/model/model.d.ts +281 -315
  210. package/lib/model/model.js +4 -4
  211. package/lib/model/modelBuilder.d.ts +18 -27
  212. package/lib/model/modelBuilder.js +79 -85
  213. package/lib/model/modelInstance/canvasModel/canvasModel.d.ts +17 -17
  214. package/lib/model/modelInstance/canvasModel/canvasModel.js +43 -42
  215. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasMarginModel.d.ts +7 -7
  216. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasSizeModel.d.ts +2 -2
  217. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.d.ts +6 -6
  218. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.js +24 -24
  219. package/lib/model/modelInstance/canvasModel/legendCanvasModel.d.ts +4 -4
  220. package/lib/model/modelInstance/canvasModel/legendCanvasModel.js +11 -11
  221. package/lib/model/modelInstance/canvasModel/titleCanvas.d.ts +4 -4
  222. package/lib/model/modelInstance/canvasModel/titleCanvas.js +9 -9
  223. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.d.ts +3 -3
  224. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.js +6 -6
  225. package/lib/model/modelInstance/configReader.d.ts +23 -32
  226. package/lib/model/modelInstance/configReader.js +94 -125
  227. package/lib/model/modelInstance/dataModel/dataModel.d.ts +10 -10
  228. package/lib/model/modelInstance/dataModel/dataModel.js +25 -25
  229. package/lib/model/modelInstance/dataModel/dataRepository.d.ts +14 -14
  230. package/lib/model/modelInstance/dataModel/dataRepository.js +42 -42
  231. package/lib/model/modelInstance/modelInstance.d.ts +6 -11
  232. package/lib/model/modelInstance/modelInstance.js +16 -16
  233. package/lib/model/modelInstance/titleConfigReader.d.ts +8 -8
  234. package/lib/model/modelInstance/titleConfigReader.js +30 -37
  235. package/lib/model/notations/polar/donut/donutAggregatorService.d.ts +6 -9
  236. package/lib/model/notations/polar/donut/donutAggregatorService.js +37 -40
  237. package/lib/model/notations/polar/donut/donutModel.d.ts +5 -9
  238. package/lib/model/notations/polar/donut/donutModel.js +28 -28
  239. package/lib/model/notations/polar/donut/donutThicknessService.d.ts +3 -3
  240. package/lib/model/notations/polar/donut/donutThicknessService.js +15 -13
  241. package/lib/model/notations/polar/polarModel.d.ts +7 -18
  242. package/lib/model/notations/polar/polarModel.js +72 -79
  243. package/lib/model/notations/twoDimensional/styles.d.ts +7 -44
  244. package/lib/model/notations/twoDimensional/styles.js +125 -234
  245. package/lib/model/notations/twoDimensionalModel.d.ts +13 -23
  246. package/lib/model/notations/twoDimensionalModel.js +170 -330
  247. package/lib/optionsServices/publicOptionsService.d.ts +1 -1
  248. package/lib/optionsServices/publicOptionsService.js +4 -4
  249. package/lib/optionsServices/validators/sizeValidator.d.ts +2 -2
  250. package/lib/optionsServices/validators/sizeValidator.js +11 -10
  251. package/lib/style/charts-main.css +151 -150
  252. package/lib/style/charts-main.less +151 -150
  253. package/package.json +5 -5
  254. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.d.ts +0 -15
  255. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.js +0 -40
  256. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.d.ts +0 -15
  257. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.js +0 -32
@@ -6,129 +6,103 @@ import { LegendEventsManager } from "./legendEventsManager";
6
6
  import { LegendHelper } from "./legendHelper";
7
7
  import { LegendMarkerCreator } from "./legendMarkerCreator";
8
8
  export class Legend {
9
- constructor() {
10
- this.markerCreator = new LegendMarkerCreator();
11
- }
12
- static get() {
13
- return new Legend();
14
- }
15
- render(block, data, options, model) {
16
- if (options.legend.position !== "off") {
17
- const legendObject = this.renderObject(
18
- block,
19
- options.legend.position,
20
- model.otherComponents.legendBlock,
21
- model.blockCanvas.size
22
- );
23
- this.setContent(block, data, options, legendObject, model.otherComponents.legendBlock);
24
- }
25
- }
26
- update(block, data, model) {
27
- if (model.options.legend.position !== "off") {
28
- const legendObject = this.getObject(block);
29
- const legendCoordinate = LegendHelper.getLegendCoordinateByPosition(
30
- model.options.legend.position,
31
- model.otherComponents.legendBlock,
32
- model.blockCanvas.size
33
- );
34
- this.fillCoordinate(legendObject, legendCoordinate);
35
- this.removeContent(legendObject);
36
- this.setContent(block, data, model.options, legendObject, model.otherComponents.legendBlock);
37
- }
38
- }
39
- updateColors(block, options) {
40
- if (options.type === "polar" && ColorReader.isNeedReadFromData(options.charts[0])) return;
41
- const legendObject = this.getObject(block);
42
- const colors = LegendHelper.getMarksColor(options);
43
- const itemWrappers = legendObject.selectAll(`.${Legend.itemClass}`);
44
- const markerCreator = this.markerCreator;
45
- itemWrappers.each(function (d, i) {
46
- const selection = select(this);
47
- markerCreator.updateColorForItem(
48
- selection,
49
- Object.assign(Object.assign({}, d), {
50
- color: colors[i % colors.length]
51
- })
52
- );
53
- });
54
- }
55
- static getItemsByKeys(block, keys, condition = SelectionCondition.Include) {
56
- return block
57
- .getSvg()
58
- .selectAll(`.${this.itemClass}`)
59
- .filter((d) => {
60
- const index = keys.findIndex((k) => k === d.textContent);
61
- return condition === SelectionCondition.Include ? index !== -1 : index === -1;
62
- });
63
- }
64
- setContent(block, data, options, legendObject, legendBlockModel) {
65
- const items = LegendHelper.getLegendItemsContent(options, data);
66
- const colors = LegendHelper.getMarksColor(options, data[options.data.dataSource]);
67
- const renderingOptions = LegendHelper.getContentRenderingOptions(
68
- options.type,
69
- options.legend.position,
70
- legendBlockModel
71
- );
72
- const itemBlocks = this.renderContent(legendObject, items, colors, renderingOptions);
73
- if (options.type === "polar") {
74
- LegendEventsManager.setListeners(block, options.data.keyField.name, itemBlocks, options.selectable);
75
- } else {
76
- LegendDomHelper.setItemsTitles(itemBlocks);
77
- }
78
- }
79
- renderObject(block, legendPosition, legendBlockModel, blockSize) {
80
- const legendObject = block.getSvg().append("foreignObject").attr("class", Legend.objectClass);
81
- const legendCoordinate = LegendHelper.getLegendCoordinateByPosition(
82
- legendPosition,
83
- legendBlockModel,
84
- blockSize
85
- );
86
- this.fillCoordinate(legendObject, legendCoordinate);
87
- return legendObject;
88
- }
89
- renderContent(foreignObject, items, colorPalette, options) {
90
- const wrapper = foreignObject.append("xhtml:div");
91
- wrapper.classed(options.wrapperClasses.join(" "), true);
92
- const itemWrappers = wrapper.selectAll(`.${Legend.itemClass}`).data(items).enter().append("div");
93
- itemWrappers.classed(options.itemsOptions.wrapperClasses.join(" "), true);
94
- const markerCreator = this.markerCreator;
95
- itemWrappers.each(function (d, i) {
96
- const selection = select(this);
97
- const markers = markerCreator.create(
98
- selection,
99
- Object.assign(Object.assign({}, d), {
100
- color: colorPalette[i % colorPalette.length]
101
- })
102
- );
103
- markers.classed(options.itemsOptions.markerClass, true);
104
- });
105
- itemWrappers
106
- .append("span")
107
- .attr("class", options.itemsOptions.labelClass)
108
- .text((d) => d.textContent);
109
- if (options.shouldCropLabels)
110
- LegendDomHelper.decreaseRowLabels(foreignObject, itemWrappers, options.blockModel.static);
111
- return itemWrappers;
112
- }
113
- getObject(block) {
114
- return block.getSvg().select(`foreignObject.${Legend.objectClass}`);
115
- }
116
- removeContent(legendObject) {
117
- legendObject.select(`.${Legend.legendBlockClass}`).remove();
118
- }
119
- fillCoordinate(legendBlock, coordinate) {
120
- legendBlock
121
- .attr("x", coordinate.x)
122
- .attr("y", coordinate.y)
123
- .attr("width", coordinate.width)
124
- .attr("height", coordinate.height);
125
- }
9
+ constructor() {
10
+ this.markerCreator = new LegendMarkerCreator();
11
+ }
12
+ static get() {
13
+ return new Legend();
14
+ }
15
+ render(block, data, options, model) {
16
+ if (options.legend.position !== "off") {
17
+ const legendObject = this.renderObject(block, options.legend.position, model.otherComponents.legendBlock, model.blockCanvas.size);
18
+ this.setContent(block, data, options, legendObject, model.otherComponents.legendBlock);
19
+ }
20
+ }
21
+ update(block, data, model) {
22
+ if (model.options.legend.position !== "off") {
23
+ const legendObject = this.getObject(block);
24
+ const legendCoordinate = LegendHelper.getLegendCoordinateByPosition(model.options.legend.position, model.otherComponents.legendBlock, model.blockCanvas.size);
25
+ this.fillCoordinate(legendObject, legendCoordinate);
26
+ this.removeContent(legendObject);
27
+ this.setContent(block, data, model.options, legendObject, model.otherComponents.legendBlock);
28
+ }
29
+ }
30
+ updateColors(block, options) {
31
+ if (options.type === "polar" && ColorReader.isNeedReadFromData(options.charts[0]))
32
+ return;
33
+ const legendObject = this.getObject(block);
34
+ const colors = LegendHelper.getMarksColor(options);
35
+ const itemWrappers = legendObject.selectAll(`.${Legend.itemClass}`);
36
+ const markerCreator = this.markerCreator;
37
+ itemWrappers.each(function (d, i) {
38
+ const selection = select(this);
39
+ markerCreator.updateColorForItem(selection, Object.assign(Object.assign({}, d), { color: colors[i % colors.length] }));
40
+ });
41
+ }
42
+ static getItemsByKeys(block, keys, condition = SelectionCondition.Include) {
43
+ return block
44
+ .getSvg()
45
+ .selectAll(`.${this.itemClass}`)
46
+ .filter((d) => {
47
+ const index = keys.findIndex((k) => k === d.textContent);
48
+ return condition === SelectionCondition.Include ? index !== -1 : index === -1;
49
+ });
50
+ }
51
+ setContent(block, data, options, legendObject, legendBlockModel) {
52
+ const items = LegendHelper.getLegendItemsContent(options, data);
53
+ const colors = LegendHelper.getMarksColor(options, data[options.data.dataSource]);
54
+ const renderingOptions = LegendHelper.getContentRenderingOptions(options.type, options.legend.position, legendBlockModel);
55
+ const itemBlocks = this.renderContent(legendObject, items, colors, renderingOptions);
56
+ if (options.type === "polar") {
57
+ LegendEventsManager.setListeners(block, options.data.keyField.name, itemBlocks, options.selectable);
58
+ }
59
+ else {
60
+ LegendDomHelper.setItemsTitles(itemBlocks);
61
+ }
62
+ }
63
+ renderObject(block, legendPosition, legendBlockModel, blockSize) {
64
+ const legendObject = block.getSvg().append("foreignObject").attr("class", Legend.objectClass);
65
+ const legendCoordinate = LegendHelper.getLegendCoordinateByPosition(legendPosition, legendBlockModel, blockSize);
66
+ this.fillCoordinate(legendObject, legendCoordinate);
67
+ return legendObject;
68
+ }
69
+ renderContent(foreignObject, items, colorPalette, options) {
70
+ const wrapper = foreignObject.append("xhtml:div");
71
+ wrapper.classed(options.wrapperClasses.join(" "), true);
72
+ const itemWrappers = wrapper.selectAll(`.${Legend.itemClass}`).data(items).enter().append("div");
73
+ itemWrappers.classed(options.itemsOptions.wrapperClasses.join(" "), true);
74
+ const markerCreator = this.markerCreator;
75
+ itemWrappers.each(function (d, i) {
76
+ const selection = select(this);
77
+ const markers = markerCreator.create(selection, Object.assign(Object.assign({}, d), { color: colorPalette[i % colorPalette.length] }));
78
+ markers.classed(options.itemsOptions.markerClass, true);
79
+ });
80
+ itemWrappers
81
+ .append("span")
82
+ .attr("class", options.itemsOptions.labelClass)
83
+ .text((d) => d.textContent);
84
+ if (options.shouldCropLabels)
85
+ LegendDomHelper.decreaseRowLabels(foreignObject, itemWrappers, options.blockModel.static);
86
+ return itemWrappers;
87
+ }
88
+ getObject(block) {
89
+ return block.getSvg().select(`foreignObject.${Legend.objectClass}`);
90
+ }
91
+ removeContent(legendObject) {
92
+ legendObject.select(`.${Legend.legendBlockClass}`).remove();
93
+ }
94
+ fillCoordinate(legendBlock, coordinate) {
95
+ legendBlock
96
+ .attr("x", coordinate.x)
97
+ .attr("y", coordinate.y)
98
+ .attr("width", coordinate.width)
99
+ .attr("height", coordinate.height);
100
+ }
126
101
  }
127
102
  Legend.objectClass = "legend-object";
128
103
  Legend.labelClass = "legend-label";
129
104
  Legend.label2DClass = "legend-2d-label";
130
105
  Legend.labelPolarClass = "legend-polar-label";
131
- Legend.labelIntervalClass = "legend-interval-label";
132
106
  Legend.itemClass = "legend-item";
133
107
  Legend.markerClass = "legend-marker";
134
108
  Legend.markerCircle = "legend-circle";
@@ -3,17 +3,10 @@ import { ChartLegendEngineModel } from "./legendHelper";
3
3
  import { StaticLegendBlockCanvas } from "../../../designer/designerConfig";
4
4
  export declare type LegendItemSelection = Selection<HTMLDivElement, ChartLegendEngineModel, BaseType, unknown>;
5
5
  export declare class LegendDomHelper {
6
- static setItemsTitles(items: LegendItemSelection): void;
7
- static decreaseRowLabels(
8
- legendBlock: Selection<SVGForeignObjectElement, unknown, HTMLElement, any>,
9
- items: LegendItemSelection,
10
- staticLegend: StaticLegendBlockCanvas
11
- ): void;
12
- /** @deprecated */
13
- static cropRowLabels(
14
- legendBlock: Selection<SVGForeignObjectElement, unknown, HTMLElement, any>,
15
- items: LegendItemSelection
16
- ): void;
17
- private static getItemsRightMargins;
18
- private static getItemsWidth;
6
+ static setItemsTitles(items: LegendItemSelection): void;
7
+ static decreaseRowLabels(legendBlock: Selection<SVGForeignObjectElement, unknown, HTMLElement, any>, items: LegendItemSelection, staticLegend: StaticLegendBlockCanvas): void;
8
+ /** @deprecated */
9
+ static cropRowLabels(legendBlock: Selection<SVGForeignObjectElement, unknown, HTMLElement, any>, items: LegendItemSelection): void;
10
+ private static getItemsRightMargins;
11
+ private static getItemsWidth;
19
12
  }
@@ -4,67 +4,66 @@ import { Legend } from "./legend";
4
4
  import { LegendHelper } from "./legendHelper";
5
5
  import { getNewLegendItemWidths } from "./legendWidthCalculator";
6
6
  export class LegendDomHelper {
7
- static setItemsTitles(items) {
8
- items.attr("title", (d) => d.textContent);
9
- }
10
- static decreaseRowLabels(legendBlock, items, staticLegend) {
11
- let itemsRightMargins = this.getItemsRightMargins(items);
12
- const itemConfig = [];
13
- items.nodes().forEach((node, i) => {
14
- itemConfig.push({
15
- width: node.getBoundingClientRect().width,
16
- marginLeft: 0,
17
- marginRight: itemsRightMargins[i]
18
- });
19
- });
20
- const newWidths = getNewLegendItemWidths({
21
- items: itemConfig,
22
- wrapper: {
23
- maxRowsAmount: staticLegend.maxLinesAmount,
24
- width: legendBlock.node().getBoundingClientRect().width
25
- }
26
- });
27
- items.nodes().forEach((node, i) => {
28
- node.style.width = `${newWidths[i]}px`;
29
- });
30
- }
31
- /** @deprecated */
32
- static cropRowLabels(legendBlock, items) {
33
- const maxWidth = legendBlock.node().getBoundingClientRect().width;
34
- let itemsLeftMargins = this.getItemsRightMargins(items);
35
- let itemsWidth = this.getItemsWidth(items);
36
- let sumOfItemsWidth = LegendHelper.getSumOfItemsWidths(itemsWidth, itemsLeftMargins);
37
- const maxItemWidth = LegendHelper.getMaxItemWidth(legendBlock.attr("width"), itemsLeftMargins, "row");
38
- let index = 0;
39
- let loopFlag = true; // if at least one label has no text, loop ends
40
- while (sumOfItemsWidth > maxWidth && loopFlag) {
41
- items.nodes().forEach((node) => {
42
- const textBlock = node.querySelector(`.${Legend.labelClass}`);
43
- if (node.getBoundingClientRect().width > maxItemWidth && textBlock.textContent) {
44
- let labelText =
45
- index > 0
46
- ? textBlock.textContent.substr(0, textBlock.textContent.length - 3)
47
- : textBlock.textContent;
48
- labelText = labelText.substr(0, labelText.length - 1);
49
- textBlock.textContent = labelText + "...";
50
- itemsLeftMargins = this.getItemsRightMargins(items);
51
- itemsWidth = this.getItemsWidth(items);
52
- sumOfItemsWidth = LegendHelper.getSumOfItemsWidths(itemsWidth, itemsLeftMargins);
53
- if (labelText.length === 0) {
54
- textBlock.textContent = "";
55
- loopFlag = false;
56
- }
57
- }
58
- });
59
- index++;
60
- }
61
- }
62
- static getItemsRightMargins(items) {
63
- return items
64
- .nodes()
65
- .map((node) => Helper.getPXValueFromString(DomHelper.getCssPropertyValue(node, "margin-right")));
66
- }
67
- static getItemsWidth(items) {
68
- return items.nodes().map((node) => node.getBoundingClientRect().width);
69
- }
7
+ static setItemsTitles(items) {
8
+ items.attr("title", (d) => d.textContent);
9
+ }
10
+ static decreaseRowLabels(legendBlock, items, staticLegend) {
11
+ let itemsRightMargins = this.getItemsRightMargins(items);
12
+ const itemConfig = [];
13
+ items.nodes().forEach((node, i) => {
14
+ itemConfig.push({
15
+ width: node.getBoundingClientRect().width,
16
+ marginLeft: 0,
17
+ marginRight: itemsRightMargins[i]
18
+ });
19
+ });
20
+ const newWidths = getNewLegendItemWidths({
21
+ items: itemConfig,
22
+ wrapper: {
23
+ maxRowsAmount: staticLegend.maxLinesAmount,
24
+ width: legendBlock.node().getBoundingClientRect().width
25
+ }
26
+ });
27
+ items.nodes().forEach((node, i) => {
28
+ node.style.width = `${newWidths[i]}px`;
29
+ });
30
+ }
31
+ /** @deprecated */
32
+ static cropRowLabels(legendBlock, items) {
33
+ const maxWidth = legendBlock.node().getBoundingClientRect().width;
34
+ let itemsLeftMargins = this.getItemsRightMargins(items);
35
+ let itemsWidth = this.getItemsWidth(items);
36
+ let sumOfItemsWidth = LegendHelper.getSumOfItemsWidths(itemsWidth, itemsLeftMargins);
37
+ const maxItemWidth = LegendHelper.getMaxItemWidth(legendBlock.attr("width"), itemsLeftMargins, "row");
38
+ let index = 0;
39
+ let loopFlag = true; // if at least one label has no text, loop ends
40
+ while (sumOfItemsWidth > maxWidth && loopFlag) {
41
+ items.nodes().forEach((node) => {
42
+ const textBlock = node.querySelector(`.${Legend.labelClass}`);
43
+ if (node.getBoundingClientRect().width > maxItemWidth && textBlock.textContent) {
44
+ let labelText = index > 0
45
+ ? textBlock.textContent.substr(0, textBlock.textContent.length - 3)
46
+ : textBlock.textContent;
47
+ labelText = labelText.substr(0, labelText.length - 1);
48
+ textBlock.textContent = labelText + "...";
49
+ itemsLeftMargins = this.getItemsRightMargins(items);
50
+ itemsWidth = this.getItemsWidth(items);
51
+ sumOfItemsWidth = LegendHelper.getSumOfItemsWidths(itemsWidth, itemsLeftMargins);
52
+ if (labelText.length === 0) {
53
+ textBlock.textContent = "";
54
+ loopFlag = false;
55
+ }
56
+ }
57
+ });
58
+ index++;
59
+ }
60
+ }
61
+ static getItemsRightMargins(items) {
62
+ return items
63
+ .nodes()
64
+ .map((node) => Helper.getPXValueFromString(DomHelper.getCssPropertyValue(node, "margin-right")));
65
+ }
66
+ static getItemsWidth(items) {
67
+ return items.nodes().map((node) => node.getBoundingClientRect().width);
68
+ }
70
69
  }
@@ -1,17 +1,12 @@
1
1
  import { Block } from "../../block/block";
2
2
  import { LegendItemSelection } from "./legendDomHelper";
3
3
  export declare class LegendEventsManager {
4
- /**
5
- * @param block
6
- * @param keyFieldName
7
- * @param legendItems айтемы легенды полара, которые привязаны к ключам
8
- */
9
- static setListeners(
10
- block: Block,
11
- keyFieldName: string,
12
- legendItems: LegendItemSelection,
13
- selectable: boolean
14
- ): void;
15
- private static setHoverListeners;
16
- private static setClickListeners;
4
+ /**
5
+ * @param block
6
+ * @param keyFieldName
7
+ * @param legendItems айтемы легенды полара, которые привязаны к ключам
8
+ */
9
+ static setListeners(block: Block, keyFieldName: string, legendItems: LegendItemSelection, selectable: boolean): void;
10
+ private static setHoverListeners;
11
+ private static setClickListeners;
17
12
  }
@@ -2,52 +2,51 @@ import { pointer, select } from "d3-selection";
2
2
  import { ElementHighlighter } from "../../elementHighlighter/elementHighlighter";
3
3
  import { Donut } from "../../polarNotation/donut/donut";
4
4
  export class LegendEventsManager {
5
- /**
6
- * @param block
7
- * @param keyFieldName
8
- * @param legendItems айтемы легенды полара, которые привязаны к ключам
9
- */
10
- static setListeners(block, keyFieldName, legendItems, selectable) {
11
- this.setHoverListeners(block, keyFieldName, legendItems);
12
- if (selectable) this.setClickListeners(block, keyFieldName, legendItems);
13
- }
14
- static setHoverListeners(block, keyFieldName, legendItems) {
15
- const arcItems = Donut.getAllArcGroups(block);
16
- legendItems.on("mousemove", function (e, keyValue) {
17
- arcItems
18
- .filter((row) => row.data[keyFieldName] === keyValue.textContent)
19
- .dispatch("mousemove", {
20
- bubbles: false,
21
- cancelable: true,
22
- detail: {
23
- pointer: pointer(e, block.getWrapper().node()),
24
- ignoreTranslate: true
25
- }
26
- });
27
- });
28
- legendItems.on("mouseover", function (e, keyValue) {
29
- arcItems.filter((row) => row.data[keyFieldName] === keyValue.textContent).dispatch("mouseover");
30
- ElementHighlighter.toggleActivityStyle(select(this), true);
31
- });
32
- legendItems.on("mouseleave", function (e, keyValue) {
33
- arcItems.filter((row) => row.data[keyFieldName] === keyValue.textContent).dispatch("mouseleave");
34
- if (
35
- !block.filterEventManager.isSelected(keyValue.textContent) &&
36
- block.filterEventManager.getSelectedKeys().length > 0
37
- )
38
- ElementHighlighter.toggleActivityStyle(select(this), false);
39
- });
40
- }
41
- static setClickListeners(block, keyFieldName, legendItems) {
42
- const arcItems = Donut.getAllArcGroups(block);
43
- legendItems.on("click", (e, keyValue) => {
44
- arcItems
45
- .filter((row) => row.data[keyFieldName] === keyValue.textContent)
46
- .dispatch("click", {
47
- bubbles: false,
48
- cancelable: true,
49
- detail: { multySelect: e.ctrlKey || e.metaKey }
50
- });
51
- });
52
- }
5
+ /**
6
+ * @param block
7
+ * @param keyFieldName
8
+ * @param legendItems айтемы легенды полара, которые привязаны к ключам
9
+ */
10
+ static setListeners(block, keyFieldName, legendItems, selectable) {
11
+ this.setHoverListeners(block, keyFieldName, legendItems);
12
+ if (selectable)
13
+ this.setClickListeners(block, keyFieldName, legendItems);
14
+ }
15
+ static setHoverListeners(block, keyFieldName, legendItems) {
16
+ const arcItems = Donut.getAllArcGroups(block);
17
+ legendItems.on("mousemove", function (e, keyValue) {
18
+ arcItems
19
+ .filter((row) => row.data[keyFieldName] === keyValue.textContent)
20
+ .dispatch("mousemove", {
21
+ bubbles: false,
22
+ cancelable: true,
23
+ detail: {
24
+ pointer: pointer(e, block.getWrapper().node()),
25
+ ignoreTranslate: true
26
+ }
27
+ });
28
+ });
29
+ legendItems.on("mouseover", function (e, keyValue) {
30
+ arcItems.filter((row) => row.data[keyFieldName] === keyValue.textContent).dispatch("mouseover");
31
+ ElementHighlighter.toggleActivityStyle(select(this), true);
32
+ });
33
+ legendItems.on("mouseleave", function (e, keyValue) {
34
+ arcItems.filter((row) => row.data[keyFieldName] === keyValue.textContent).dispatch("mouseleave");
35
+ if (!block.filterEventManager.isSelected(keyValue.textContent) &&
36
+ block.filterEventManager.getSelectedKeys().length > 0)
37
+ ElementHighlighter.toggleActivityStyle(select(this), false);
38
+ });
39
+ }
40
+ static setClickListeners(block, keyFieldName, legendItems) {
41
+ const arcItems = Donut.getAllArcGroups(block);
42
+ legendItems.on("click", (e, keyValue) => {
43
+ arcItems
44
+ .filter((row) => row.data[keyFieldName] === keyValue.textContent)
45
+ .dispatch("click", {
46
+ bubbles: false,
47
+ cancelable: true,
48
+ detail: { multySelect: e.ctrlKey || e.metaKey }
49
+ });
50
+ });
51
+ }
53
52
  }
@@ -1,49 +1,24 @@
1
1
  import { ChartNotation, MdtChartsDataRow, MdtChartsDataSource, Size } from "../../../config/config";
2
2
  import { LegendItemsDirection } from "../../../model/featuresModel/legendModel/legendCanvasModel";
3
- import {
4
- ChartLegendModel,
5
- LegendBlockModel,
6
- LegendPosition,
7
- Orient,
8
- PolarOptionsModel,
9
- TwoDimensionalOptionsModel
10
- } from "../../../model/model";
3
+ import { ChartLegendModel, LegendBlockModel, LegendPosition, Orient, PolarOptionsModel, TwoDimensionalOptionsModel } from "../../../model/model";
11
4
  import { LegendContentRenderingOptions } from "./legend";
12
5
  import { LegendHelperService } from "./legendHelperService";
13
6
  export interface LegendCoordinate {
14
- x: number;
15
- y: number;
16
- height: number;
17
- width: number;
7
+ x: number;
8
+ y: number;
9
+ height: number;
10
+ width: number;
18
11
  }
19
12
  export interface ChartLegendEngineModel extends ChartLegendModel {
20
- textContent: string;
13
+ textContent: string;
21
14
  }
22
15
  export declare class LegendHelper {
23
- static service: LegendHelperService;
24
- static getLegendItemsContent(
25
- options: TwoDimensionalOptionsModel | PolarOptionsModel,
26
- data: MdtChartsDataSource
27
- ): ChartLegendEngineModel[];
28
- static getMarksColor(
29
- options: TwoDimensionalOptionsModel | PolarOptionsModel,
30
- dataRows?: MdtChartsDataRow[]
31
- ): string[];
32
- static getMaxItemWidth(
33
- legendBlockWidth: string,
34
- marginsLeft: number[],
35
- itemsDirection: LegendItemsDirection
36
- ): number;
37
- static getSumOfItemsWidths(itemsWidth: number[], marginsLeft: number[]): number;
38
- static getLegendCoordinateByPosition(
39
- legendPosition: Orient,
40
- legendBlockModel: LegendBlockModel,
41
- blockSize: Size
42
- ): LegendCoordinate;
43
- static getContentRenderingOptions(
44
- chartNotation: ChartNotation,
45
- legendPosition: LegendPosition,
46
- legendBlockModel: LegendBlockModel
47
- ): LegendContentRenderingOptions;
48
- private static getLegendClassByChartNotation;
16
+ static service: LegendHelperService;
17
+ static getLegendItemsContent(options: TwoDimensionalOptionsModel | PolarOptionsModel, data: MdtChartsDataSource): ChartLegendEngineModel[];
18
+ static getMarksColor(options: TwoDimensionalOptionsModel | PolarOptionsModel, dataRows?: MdtChartsDataRow[]): string[];
19
+ static getMaxItemWidth(legendBlockWidth: string, marginsLeft: number[], itemsDirection: LegendItemsDirection): number;
20
+ static getSumOfItemsWidths(itemsWidth: number[], marginsLeft: number[]): number;
21
+ static getLegendCoordinateByPosition(legendPosition: Orient, legendBlockModel: LegendBlockModel, blockSize: Size): LegendCoordinate;
22
+ static getContentRenderingOptions(chartNotation: ChartNotation, legendPosition: LegendPosition, legendBlockModel: LegendBlockModel): LegendContentRenderingOptions;
23
+ private static getLegendClassByChartNotation;
49
24
  }