mdt-charts 1.28.2 → 1.29.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 (255) hide show
  1. package/lib/config/config.d.ts +164 -165
  2. package/lib/designer/designerConfig.d.ts +62 -59
  3. package/lib/engine/block/block.d.ts +22 -16
  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 +65 -66
  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 +6 -6
  18. package/lib/engine/contentManager/contentManager.js +15 -15
  19. package/lib/engine/contentManager/contentManagerFactory.d.ts +6 -6
  20. package/lib/engine/contentManager/contentManagerFactory.js +12 -12
  21. package/lib/engine/elementHighlighter/elementHighlighter.d.ts +70 -22
  22. package/lib/engine/elementHighlighter/elementHighlighter.js +230 -181
  23. package/lib/engine/elementHighlighter/selectHighlighter.d.ts +29 -4
  24. package/lib/engine/elementHighlighter/selectHighlighter.js +189 -87
  25. package/lib/engine/engine.d.ts +16 -16
  26. package/lib/engine/engine.js +87 -62
  27. package/lib/engine/features/aggregator/aggregator.d.ts +24 -17
  28. package/lib/engine/features/aggregator/aggregator.js +113 -102
  29. package/lib/engine/features/axis/axis.d.ts +22 -9
  30. package/lib/engine/features/axis/axis.js +159 -150
  31. package/lib/engine/features/axis/axisDomHelper.d.ts +7 -2
  32. package/lib/engine/features/axis/axisDomHelper.js +19 -20
  33. package/lib/engine/features/axis/axisHelper.d.ts +9 -5
  34. package/lib/engine/features/axis/axisHelper.js +28 -33
  35. package/lib/engine/features/axis/axisLabelDomHelper.d.ts +26 -11
  36. package/lib/engine/features/axis/axisLabelDomHelper.js +156 -152
  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 +51 -16
  40. package/lib/engine/features/embeddedLabels/embeddedLabels.js +234 -134
  41. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.d.ts +13 -2
  42. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.js +20 -23
  43. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.d.ts +32 -15
  44. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.js +56 -63
  45. package/lib/engine/features/gridLine/gidLineHelper.d.ts +13 -7
  46. package/lib/engine/features/gridLine/gidLineHelper.js +42 -49
  47. package/lib/engine/features/gridLine/gridLine.d.ts +19 -5
  48. package/lib/engine/features/gridLine/gridLine.js +35 -36
  49. package/lib/engine/features/legend/legend.d.ts +38 -29
  50. package/lib/engine/features/legend/legend.js +117 -92
  51. package/lib/engine/features/legend/legendDomHelper.d.ts +13 -6
  52. package/lib/engine/features/legend/legendDomHelper.js +63 -62
  53. package/lib/engine/features/legend/legendEventsManager.d.ts +13 -8
  54. package/lib/engine/features/legend/legendEventsManager.js +48 -47
  55. package/lib/engine/features/legend/legendHelper.d.ts +39 -14
  56. package/lib/engine/features/legend/legendHelper.js +98 -93
  57. package/lib/engine/features/legend/legendHelperService.d.ts +13 -6
  58. package/lib/engine/features/legend/legendHelperService.js +24 -25
  59. package/lib/engine/features/legend/legendMarkerCreator.d.ts +18 -9
  60. package/lib/engine/features/legend/legendMarkerCreator.js +79 -76
  61. package/lib/engine/features/legend/legendWidthCalculator.d.ts +7 -7
  62. package/lib/engine/features/legend/legendWidthCalculator.js +126 -122
  63. package/lib/engine/features/markDots/markDot.d.ts +42 -15
  64. package/lib/engine/features/markDots/markDot.js +101 -70
  65. package/lib/engine/features/markDots/markDotsHelper.d.ts +8 -1
  66. package/lib/engine/features/markDots/markDotsHelper.js +13 -12
  67. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.d.ts +17 -17
  68. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.js +42 -47
  69. package/lib/engine/features/scale/scale.d.ts +17 -12
  70. package/lib/engine/features/scale/scale.js +76 -69
  71. package/lib/engine/features/tipBox/tipBox.d.ts +9 -5
  72. package/lib/engine/features/tipBox/tipBox.js +24 -24
  73. package/lib/engine/features/tipBox/tipBoxHelper.d.ts +16 -9
  74. package/lib/engine/features/tipBox/tipBoxHelper.js +60 -45
  75. package/lib/engine/features/title/title.d.ts +6 -6
  76. package/lib/engine/features/title/title.js +34 -35
  77. package/lib/engine/features/tolltip/newTooltip/newTooltip.d.ts +15 -11
  78. package/lib/engine/features/tolltip/newTooltip/newTooltip.js +21 -21
  79. package/lib/engine/features/tolltip/newTooltip/newTooltipService.d.ts +13 -8
  80. package/lib/engine/features/tolltip/newTooltip/newTooltipService.js +26 -23
  81. package/lib/engine/features/tolltip/tooltip.d.ts +17 -11
  82. package/lib/engine/features/tolltip/tooltip.js +296 -142
  83. package/lib/engine/features/tolltip/tooltipComponentsManager.d.ts +21 -10
  84. package/lib/engine/features/tolltip/tooltipComponentsManager.js +113 -114
  85. package/lib/engine/features/tolltip/tooltipDomHelper.d.ts +43 -21
  86. package/lib/engine/features/tolltip/tooltipDomHelper.js +144 -120
  87. package/lib/engine/features/tolltip/tooltipHelper.d.ts +39 -9
  88. package/lib/engine/features/tolltip/tooltipHelper.js +114 -91
  89. package/lib/engine/features/valueLabels/valueLabels.d.ts +58 -38
  90. package/lib/engine/features/valueLabels/valueLabels.js +205 -169
  91. package/lib/engine/features/valueLabels/valueLabelsHelper.d.ts +7 -1
  92. package/lib/engine/features/valueLabels/valueLabelsHelper.js +23 -18
  93. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.d.ts +18 -15
  94. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.js +46 -47
  95. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.d.ts +6 -3
  96. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.js +49 -45
  97. package/lib/engine/filterManager/filterEventManager.d.ts +37 -26
  98. package/lib/engine/filterManager/filterEventManager.js +174 -129
  99. package/lib/engine/helpers/domHelper.d.ts +45 -20
  100. package/lib/engine/helpers/domHelper.js +62 -61
  101. package/lib/engine/helpers/fontResizer/fontResizer.d.ts +10 -10
  102. package/lib/engine/helpers/fontResizer/fontResizer.js +21 -16
  103. package/lib/engine/helpers/fontResizer/fontResizerService.d.ts +1 -1
  104. package/lib/engine/helpers/fontResizer/fontResizerService.js +9 -10
  105. package/lib/engine/helpers/helper.d.ts +27 -27
  106. package/lib/engine/helpers/helper.js +91 -92
  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 +25 -11
  112. package/lib/engine/polarNotation/donut/DonutHelper.js +71 -70
  113. package/lib/engine/polarNotation/donut/donut.d.ts +38 -23
  114. package/lib/engine/polarNotation/donut/donut.js +109 -99
  115. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.d.ts +7 -7
  116. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.js +36 -36
  117. package/lib/engine/polarNotation/polarManager.d.ts +5 -5
  118. package/lib/engine/polarNotation/polarManager.js +66 -52
  119. package/lib/engine/transitionManager.d.ts +13 -14
  120. package/lib/engine/transitionManager.js +48 -49
  121. package/lib/engine/twoDimensionalNotation/area/area.d.ts +44 -28
  122. package/lib/engine/twoDimensionalNotation/area/area.js +272 -238
  123. package/lib/engine/twoDimensionalNotation/area/areaGenerator.d.ts +13 -5
  124. package/lib/engine/twoDimensionalNotation/area/areaGenerator.js +13 -13
  125. package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +4 -4
  126. package/lib/engine/twoDimensionalNotation/area/areaHelper.js +57 -41
  127. package/lib/engine/twoDimensionalNotation/bar/bar.d.ts +54 -29
  128. package/lib/engine/twoDimensionalNotation/bar/bar.js +362 -224
  129. package/lib/engine/twoDimensionalNotation/bar/barHelper.d.ts +71 -32
  130. package/lib/engine/twoDimensionalNotation/bar/barHelper.js +162 -126
  131. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.d.ts +6 -6
  132. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.js +24 -24
  133. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.d.ts +2 -2
  134. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.js +16 -17
  135. package/lib/engine/twoDimensionalNotation/dot/dotChart.d.ts +23 -23
  136. package/lib/engine/twoDimensionalNotation/dot/dotChart.js +135 -114
  137. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.d.ts +7 -7
  138. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.js +28 -28
  139. package/lib/engine/twoDimensionalNotation/line/line.d.ts +37 -16
  140. package/lib/engine/twoDimensionalNotation/line/line.js +162 -132
  141. package/lib/engine/twoDimensionalNotation/line/lineBuilder.d.ts +14 -11
  142. package/lib/engine/twoDimensionalNotation/line/lineBuilder.js +47 -48
  143. package/lib/engine/twoDimensionalNotation/line/lineGenerator.d.ts +4 -4
  144. package/lib/engine/twoDimensionalNotation/line/lineGenerator.js +8 -8
  145. package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +12 -6
  146. package/lib/engine/twoDimensionalNotation/line/lineHelper.js +76 -60
  147. package/lib/engine/twoDimensionalNotation/lineLike/generatorFactory/lineLikeGeneratorFactory.d.ts +6 -6
  148. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.d.ts +5 -5
  149. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.js +16 -17
  150. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.d.ts +11 -10
  151. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.js +9 -7
  152. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorMiddleware.d.ts +3 -1
  153. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +9 -9
  154. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +252 -143
  155. package/lib/engine/valueFormatter.d.ts +3 -3
  156. package/lib/engine/valueFormatter.js +6 -6
  157. package/lib/main.d.ts +82 -75
  158. package/lib/main.js +79 -84
  159. package/lib/model/EventEmitter.d.ts +8 -8
  160. package/lib/model/EventEmitter.js +24 -24
  161. package/lib/model/chartStyleModel/chartStyleModel.d.ts +5 -5
  162. package/lib/model/chartStyleModel/chartStyleModel.js +27 -25
  163. package/lib/model/chartStyleModel/colorRange.d.ts +3 -3
  164. package/lib/model/chartStyleModel/colorRange.js +19 -24
  165. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.d.ts +22 -12
  166. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.js +69 -60
  167. package/lib/model/configsValidator/configValidator.d.ts +1 -1
  168. package/lib/model/configsValidator/configValidator.js +4 -4
  169. package/lib/model/dataManagerModel/dataManagerModel.d.ts +36 -26
  170. package/lib/model/dataManagerModel/dataManagerModel.js +179 -128
  171. package/lib/model/dataManagerModel/dataManagerModelService.d.ts +2 -2
  172. package/lib/model/dataManagerModel/dataManagerModelService.js +25 -26
  173. package/lib/model/featuresModel/axisModel.d.ts +69 -18
  174. package/lib/model/featuresModel/axisModel.js +224 -169
  175. package/lib/model/featuresModel/axisModelService.d.ts +10 -6
  176. package/lib/model/featuresModel/axisModelService.js +27 -27
  177. package/lib/model/featuresModel/legendModel/legendCanvasModel.d.ts +16 -11
  178. package/lib/model/featuresModel/legendModel/legendCanvasModel.js +55 -59
  179. package/lib/model/featuresModel/legendModel/legendModel.d.ts +7 -3
  180. package/lib/model/featuresModel/legendModel/legendModel.js +59 -41
  181. package/lib/model/featuresModel/legendModel/polarMarginCalculator.d.ts +8 -3
  182. package/lib/model/featuresModel/legendModel/polarMarginCalculator.js +18 -20
  183. package/lib/model/featuresModel/legendModel/twoDimLegendModel.d.ts +8 -4
  184. package/lib/model/featuresModel/legendModel/twoDimLegendModel.js +40 -27
  185. package/lib/model/featuresModel/otherComponents.d.ts +7 -4
  186. package/lib/model/featuresModel/otherComponents.js +9 -9
  187. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.d.ts +6 -6
  188. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.js +27 -23
  189. package/lib/model/featuresModel/scaleModel/scaleDomainService.d.ts +19 -5
  190. package/lib/model/featuresModel/scaleModel/scaleDomainService.js +44 -55
  191. package/lib/model/featuresModel/scaleModel/scaleModel.d.ts +10 -10
  192. package/lib/model/featuresModel/scaleModel/scaleModel.js +61 -50
  193. package/lib/model/featuresModel/scaleModel/scaleModelServices.js +15 -22
  194. package/lib/model/featuresModel/titleModel.d.ts +1 -1
  195. package/lib/model/featuresModel/titleModel.js +14 -14
  196. package/lib/model/featuresModel/tooltipModel.d.ts +1 -1
  197. package/lib/model/featuresModel/tooltipModel.js +5 -5
  198. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.d.ts +23 -11
  199. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.js +53 -51
  200. package/lib/model/helpers/modelHelper.d.ts +7 -7
  201. package/lib/model/helpers/modelHelper.js +38 -42
  202. package/lib/model/helpers/twoDimensionalModelHelper.d.ts +37 -9
  203. package/lib/model/helpers/twoDimensionalModelHelper.js +147 -125
  204. package/lib/model/helpers/unitsFromConfigReader.js +4 -4
  205. package/lib/model/helpers/unitsReader.d.ts +2 -2
  206. package/lib/model/helpers/unitsReader.js +11 -13
  207. package/lib/model/margin/marginModel.d.ts +7 -7
  208. package/lib/model/margin/marginModel.js +23 -20
  209. package/lib/model/margin/twoDim/twoDimMarginModel.d.ts +13 -13
  210. package/lib/model/margin/twoDim/twoDimMarginModel.js +184 -113
  211. package/lib/model/model.d.ts +308 -280
  212. package/lib/model/model.js +4 -4
  213. package/lib/model/modelBuilder.d.ts +27 -18
  214. package/lib/model/modelBuilder.js +85 -79
  215. package/lib/model/modelInstance/canvasModel/canvasModel.d.ts +17 -17
  216. package/lib/model/modelInstance/canvasModel/canvasModel.js +42 -43
  217. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasMarginModel.d.ts +7 -7
  218. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasSizeModel.d.ts +2 -2
  219. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.d.ts +6 -6
  220. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.js +24 -24
  221. package/lib/model/modelInstance/canvasModel/legendCanvasModel.d.ts +4 -4
  222. package/lib/model/modelInstance/canvasModel/legendCanvasModel.js +11 -11
  223. package/lib/model/modelInstance/canvasModel/titleCanvas.d.ts +4 -4
  224. package/lib/model/modelInstance/canvasModel/titleCanvas.js +9 -9
  225. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.d.ts +3 -3
  226. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.js +6 -6
  227. package/lib/model/modelInstance/configReader.d.ts +32 -23
  228. package/lib/model/modelInstance/configReader.js +125 -94
  229. package/lib/model/modelInstance/dataModel/dataModel.d.ts +9 -9
  230. package/lib/model/modelInstance/dataModel/dataModel.js +24 -24
  231. package/lib/model/modelInstance/dataModel/dataRepository.d.ts +14 -14
  232. package/lib/model/modelInstance/dataModel/dataRepository.js +42 -42
  233. package/lib/model/modelInstance/modelInstance.d.ts +11 -6
  234. package/lib/model/modelInstance/modelInstance.js +16 -16
  235. package/lib/model/modelInstance/titleConfigReader.d.ts +8 -8
  236. package/lib/model/modelInstance/titleConfigReader.js +37 -30
  237. package/lib/model/notations/polar/donut/donutAggregatorService.d.ts +9 -6
  238. package/lib/model/notations/polar/donut/donutAggregatorService.js +40 -37
  239. package/lib/model/notations/polar/donut/donutModel.d.ts +9 -5
  240. package/lib/model/notations/polar/donut/donutModel.js +28 -28
  241. package/lib/model/notations/polar/donut/donutThicknessService.d.ts +3 -3
  242. package/lib/model/notations/polar/donut/donutThicknessService.js +13 -15
  243. package/lib/model/notations/polar/polarModel.d.ts +18 -7
  244. package/lib/model/notations/polar/polarModel.js +79 -65
  245. package/lib/model/notations/twoDimensional/styles.d.ts +44 -7
  246. package/lib/model/notations/twoDimensional/styles.js +234 -125
  247. package/lib/model/notations/twoDimensionalModel.d.ts +23 -13
  248. package/lib/model/notations/twoDimensionalModel.js +330 -162
  249. package/lib/optionsServices/publicOptionsService.d.ts +1 -1
  250. package/lib/optionsServices/publicOptionsService.js +4 -4
  251. package/lib/optionsServices/validators/sizeValidator.d.ts +2 -2
  252. package/lib/optionsServices/validators/sizeValidator.js +10 -11
  253. package/lib/style/charts-main.css +150 -151
  254. package/lib/style/charts-main.less +150 -151
  255. package/package.json +1 -1
@@ -3,169 +3,337 @@ import { TwoDimensionalChartStyleModel } from "../chartStyleModel/twoDimensional
3
3
  import { AxisModel } from "../featuresModel/axisModel";
4
4
  import { ScaleAxisRecalcer } from "../featuresModel/scaleModel/scaleAxisRecalcer";
5
5
  import { ScaleModel } from "../featuresModel/scaleModel/scaleModel";
6
- import { calculateBarIndexes, getAreaViewOptions, getBarViewOptions, getLegendMarkerOptions, LINE_CHART_DEFAULT_WIDTH, parseDashStyles, parseShape } from "./twoDimensional/styles";
7
- import { calculateValueLabelAlignment, ValueLabelCoordinateCalculator } from "../../model/featuresModel/valueLabelsModel/valueLabelsModel";
6
+ import {
7
+ calculateBarIndexes,
8
+ getAreaViewOptions,
9
+ getBarViewOptions,
10
+ getLegendMarkerOptions,
11
+ LINE_CHART_DEFAULT_WIDTH,
12
+ parseDashStyles,
13
+ parseShape
14
+ } from "./twoDimensional/styles";
15
+ import {
16
+ calculateValueLabelAlignment,
17
+ ValueLabelCoordinateCalculator
18
+ } from "../../model/featuresModel/valueLabelsModel/valueLabelsModel";
8
19
  import { TwoDimensionalModelHelper } from "../helpers/twoDimensionalModelHelper";
9
20
  import { TitleConfigReader } from "../modelInstance/titleConfigReader";
10
21
  export class TwoDimensionalModel {
11
- static getOptions(configReader, designerConfig, modelInstance) {
12
- const options = configReader.options;
13
- const canvasModel = modelInstance.canvasModel;
14
- const scaleModel = new ScaleModel(options, canvasModel);
15
- const scaleMarginRecalcer = new ScaleAxisRecalcer(() => scaleModel.getScaleLinear(modelInstance.dataModel.repository.getScopedRows(), configReader));
16
- scaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
17
- const scaleValueInfo = scaleMarginRecalcer.getScaleValue();
18
- let secondaryScaleValueInfo;
19
- if (configReader.containsSecondaryAxis()) {
20
- const secondaryScaleMarginRecalcer = new ScaleAxisRecalcer(() => scaleModel.getScaleSecondaryLinear(modelInstance.dataModel.repository.getScopedRows(), configReader));
21
- secondaryScaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
22
- secondaryScaleValueInfo = secondaryScaleMarginRecalcer.getScaleValue();
23
- }
24
- const keyAxis = AxisModel.getKeyAxis(options, modelInstance.dataModel.repository.getScopedFullSource(), designerConfig.canvas.axisLabel, canvasModel, designerConfig.elementsOptions.tooltip, () => scaleValueInfo.scaleFn(0));
25
- const charts = this.getChartsModel(options.charts, configReader, options.orientation, designerConfig, modelInstance.dataModel.repository, keyAxis.orient, canvasModel, options.data.keyField.name, modelInstance);
26
- const titleConfig = TitleConfigReader.create(options.title, modelInstance);
27
- return {
28
- legend: canvasModel.legendCanvas.getModel(),
29
- title: {
30
- textContent: titleConfig.getTextContent(),
31
- fontSize: titleConfig.getFontSize()
32
- },
33
- selectable: !!options.selectable,
34
- orient: options.orientation,
35
- scale: Object.assign({ key: scaleModel.getScaleKey(modelInstance.dataModel.getAllowableKeys()), value: scaleValueInfo.scale }, (configReader.containsSecondaryAxis() && { valueSecondary: secondaryScaleValueInfo.scale })),
36
- axis: Object.assign({ key: keyAxis, value: AxisModel.getMainValueAxis(configReader.calculateDefaultAxisLabelFormatter(), options.orientation, options.axis.value.position, options.axis.value, designerConfig.canvas.axisLabel, canvasModel, scaleValueInfo.scale) }, (configReader.containsSecondaryAxis() && {
37
- valueSecondary: AxisModel.getSecondaryValueAxis(configReader.calculateDefaultAxisLabelFormatter(), options.orientation, options.axis.value.position, options.axis.valueSecondary, designerConfig.canvas.axisLabel, canvasModel, secondaryScaleValueInfo.scale)
38
- })),
39
- type: options.type,
40
- data: Object.assign({}, options.data),
41
- charts,
42
- additionalElements: this.getAdditionalElements(options),
43
- tooltip: options.tooltip,
44
- chartSettings: this.getChartsSettings(designerConfig.canvas.chartOptions, options.orientation),
45
- valueLabels: TwoDimensionalModelHelper.getValueLabels(options.valueLabels, canvasModel, options.orientation, configReader.getValueLabelsStyleModel()),
46
- defs: {
47
- gradients: TwoDimensionalModelHelper.getGradientDefs(charts, keyAxis.orient, options.orientation, modelInstance.version.getVersionNumber())
48
- }
49
- };
50
- }
51
- static getChartsEmbeddedLabelsFlag(charts, chartOrientation) {
52
- // Если НЕ найден хотя бы один чарт, который сегментированный или хотя бы один НЕ бар чарт, то лейблы можно прятать
53
- return (charts.findIndex((chart) => chart.isSegmented || chart.type !== "bar") === -1 &&
54
- chartOrientation === "horizontal" &&
55
- charts.length === this.findChartsWithEmbeddedKeyLabels(charts).length);
56
- }
57
- /**
58
- * Сортирует список чартов в порядке: area - bar - line.
59
- * Используется для того, чтобы при рендере графики с наибольшей площадью (area) не перекрывали графики с меньшей площадью (bar, line).
60
- * @param charts Чарты из конфига
61
- */
62
- static sortCharts(charts) {
63
- const chartOrder = ["area", "bar", "line", "dot"];
64
- charts.sort((chart1, chart2) => chartOrder.indexOf(chart1.type) - chartOrder.indexOf(chart2.type));
65
- }
66
- static getChartsSettings(chartOptions, chartOrientation) {
67
- var _a;
68
- return {
69
- bar: Object.assign({}, chartOptions.bar),
70
- lineLike: { shape: parseShape(chartOrientation, (_a = chartOptions.line) === null || _a === void 0 ? void 0 : _a.shape) }
71
- };
72
- }
73
- static getChartsModel(charts, configReader, chartOrientation, designerConfig, dataModelRep, keyAxisOrient, canvasModel, keyFieldName, modelInstance) {
74
- const styleModel = new TwoDimensionalChartStyleModel(charts, designerConfig.chartStyle);
75
- const chartsModel = [];
76
- charts.forEach((chart, index) => {
77
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
78
- const style = styleModel.getChartStyle(chart, index);
79
- const valueLabelsCoordinateCalculator = new ValueLabelCoordinateCalculator((_b = (_a = chart.valueLabels) === null || _a === void 0 ? void 0 : _a.position) === null || _b === void 0 ? void 0 : _b.mode, keyAxisOrient, canvasModel.getMargin());
80
- const valueLabelsAlignment = calculateValueLabelAlignment(keyAxisOrient, (_d = (_c = chart.valueLabels) === null || _c === void 0 ? void 0 : _c.position) === null || _d === void 0 ? void 0 : _d.mode, (_e = chart.valueLabels) === null || _e === void 0 ? void 0 : _e.rotation);
81
- chartsModel.push({
82
- type: chart.type,
83
- isSegmented: chart.isSegmented,
84
- data: Object.assign({}, chart.data),
85
- tooltip: { show: true },
86
- cssClasses: ChartStyleModelService.getCssClasses(index),
87
- style,
88
- embeddedLabels: this.getEmbeddedLabelType(chart, chartOrientation),
89
- markersOptions: {
90
- show: ({ row, valueFieldName }) => TwoDimensionalModelHelper.shouldMarkerShow(chart, dataModelRep.getRawRows(), valueFieldName, row, keyFieldName),
91
- styles: {
92
- highlighted: {
93
- size: {
94
- radius: (_h = (_g = (_f = designerConfig.canvas.markers) === null || _f === void 0 ? void 0 : _f.highlighted) === null || _g === void 0 ? void 0 : _g.radius) !== null && _h !== void 0 ? _h : 4,
95
- borderSize: "3.5px"
96
- }
97
- },
98
- normal: {
99
- size: {
100
- radius: (_l = (_k = (_j = designerConfig.canvas.markers) === null || _j === void 0 ? void 0 : _j.normal) === null || _k === void 0 ? void 0 : _k.radius) !== null && _l !== void 0 ? _l : 3,
101
- borderSize: `${(_p = (_o = (_m = designerConfig.canvas.markers) === null || _m === void 0 ? void 0 : _m.normal) === null || _o === void 0 ? void 0 : _o.borderSize) !== null && _p !== void 0 ? _p : 2}px`
102
- }
103
- }
104
- }
105
- },
106
- lineLikeViewOptions: {
107
- dashedStyles: parseDashStyles((_q = chart.lineStyles) === null || _q === void 0 ? void 0 : _q.dash),
108
- strokeWidth: (_s = (_r = chart.lineStyles) === null || _r === void 0 ? void 0 : _r.width) !== null && _s !== void 0 ? _s : LINE_CHART_DEFAULT_WIDTH,
109
- renderForKey: (dataRow, valueFieldName) => dataRow[valueFieldName] !== null && dataRow[valueFieldName] !== undefined
110
- },
111
- barViewOptions: getBarViewOptions(chart, keyAxisOrient, calculateBarIndexes(charts, chart, index)),
112
- legend: getLegendMarkerOptions(chart),
113
- index,
114
- valueLabels: {
115
- show: (_u = (_t = chart.valueLabels) === null || _t === void 0 ? void 0 : _t.on) !== null && _u !== void 0 ? _u : false,
116
- handleX: (scaledValue) => valueLabelsCoordinateCalculator.getValueLabelX(scaledValue),
117
- handleY: (scaledValue) => valueLabelsCoordinateCalculator.getValueLabelY(scaledValue),
118
- handleScaledValue: (dataRow, datumField) => {
119
- var _a, _b, _c, _d;
120
- if (!((_b = (_a = chart.valueLabels) === null || _a === void 0 ? void 0 : _a.position) === null || _b === void 0 ? void 0 : _b.mode) || ((_d = (_c = chart.valueLabels) === null || _c === void 0 ? void 0 : _c.position) === null || _d === void 0 ? void 0 : _d.mode) === "after")
121
- return dataRow[datumField];
122
- if (chart.isSegmented)
123
- return dataRow[datumField] - (dataRow[datumField] - dataRow["0"]) / 2;
124
- else
125
- return dataRow[datumField] / 2;
126
- },
127
- textAnchor: valueLabelsAlignment.textAnchor,
128
- dominantBaseline: valueLabelsAlignment.dominantBaseline,
129
- format: configReader.getValueLabelFormatterForChart(index),
130
- rotation: (_v = chart.valueLabels) === null || _v === void 0 ? void 0 : _v.rotation,
131
- handleElement: (_w = chart.valueLabels) === null || _w === void 0 ? void 0 : _w.handleElement
132
- },
133
- areaViewOptions: getAreaViewOptions(chart, index, style, modelInstance.version.getVersionNumber()),
134
- dotViewOptions: {
135
- shape: {
136
- type: "line",
137
- handleEndCoordinate: (v) => v + 2,
138
- handleStartCoordinate: (v) => v - 2,
139
- width: (_z = (_y = (_x = chart.dotLikeStyles) === null || _x === void 0 ? void 0 : _x.shape) === null || _y === void 0 ? void 0 : _y.width) !== null && _z !== void 0 ? _z : LINE_CHART_DEFAULT_WIDTH
140
- }
141
- }
142
- });
143
- });
144
- return chartsModel;
145
- }
146
- static findChartsWithEmbeddedKeyLabels(charts) {
147
- const chartsWithEmbeddedLabels = [];
148
- charts.forEach((chart) => {
149
- if (chart.type === "bar" && chart.embeddedLabels === "key")
150
- chartsWithEmbeddedLabels.push(chart);
151
- });
152
- return chartsWithEmbeddedLabels;
153
- }
154
- static getEmbeddedLabelType(currentChart, chartOrientation) {
155
- if (chartOrientation === "horizontal" && currentChart.type === "bar")
156
- return currentChart.embeddedLabels;
157
- return "none";
158
- }
159
- static getAdditionalElements(options) {
160
- var _a, _b;
161
- const { flag, styles } = options.additionalElements.gridLine;
162
- return {
163
- gridLine: {
164
- flag,
165
- styles: {
166
- dash: { on: (_b = (_a = styles === null || styles === void 0 ? void 0 : styles.dash) === null || _a === void 0 ? void 0 : _a.on) !== null && _b !== void 0 ? _b : false }
167
- }
168
- }
169
- };
170
- }
22
+ static getOptions(configReader, designerConfig, modelInstance) {
23
+ const options = configReader.options;
24
+ const canvasModel = modelInstance.canvasModel;
25
+ const scaleModel = new ScaleModel(options, canvasModel);
26
+ const scaleMarginRecalcer = new ScaleAxisRecalcer(() =>
27
+ scaleModel.getScaleLinear(modelInstance.dataModel.repository.getScopedRows(), configReader)
28
+ );
29
+ scaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
30
+ const scaleValueInfo = scaleMarginRecalcer.getScaleValue();
31
+ let secondaryScaleValueInfo;
32
+ if (configReader.containsSecondaryAxis()) {
33
+ const secondaryScaleMarginRecalcer = new ScaleAxisRecalcer(() =>
34
+ scaleModel.getScaleSecondaryLinear(modelInstance.dataModel.repository.getScopedRows(), configReader)
35
+ );
36
+ secondaryScaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
37
+ secondaryScaleValueInfo = secondaryScaleMarginRecalcer.getScaleValue();
38
+ }
39
+ const keyAxis = AxisModel.getKeyAxis(
40
+ options,
41
+ modelInstance.dataModel.repository.getScopedFullSource(),
42
+ designerConfig.canvas.axisLabel,
43
+ canvasModel,
44
+ designerConfig.elementsOptions.tooltip,
45
+ () => scaleValueInfo.scaleFn(0)
46
+ );
47
+ const charts = this.getChartsModel(
48
+ options.charts,
49
+ configReader,
50
+ options.orientation,
51
+ designerConfig,
52
+ modelInstance.dataModel.repository,
53
+ keyAxis.orient,
54
+ canvasModel,
55
+ options.data.keyField.name,
56
+ modelInstance
57
+ );
58
+ const titleConfig = TitleConfigReader.create(options.title, modelInstance);
59
+ return {
60
+ legend: canvasModel.legendCanvas.getModel(),
61
+ title: {
62
+ textContent: titleConfig.getTextContent(),
63
+ fontSize: titleConfig.getFontSize()
64
+ },
65
+ selectable: !!options.selectable,
66
+ orient: options.orientation,
67
+ scale: Object.assign(
68
+ {
69
+ key: scaleModel.getScaleKey(modelInstance.dataModel.getAllowableKeys()),
70
+ value: scaleValueInfo.scale
71
+ },
72
+ configReader.containsSecondaryAxis() && {
73
+ valueSecondary: secondaryScaleValueInfo.scale
74
+ }
75
+ ),
76
+ axis: Object.assign(
77
+ {
78
+ key: keyAxis,
79
+ value: AxisModel.getMainValueAxis(
80
+ configReader.calculateDefaultAxisLabelFormatter(),
81
+ options.orientation,
82
+ options.axis.value.position,
83
+ options.axis.value,
84
+ designerConfig.canvas.axisLabel,
85
+ canvasModel,
86
+ scaleValueInfo.scale
87
+ )
88
+ },
89
+ configReader.containsSecondaryAxis() && {
90
+ valueSecondary: AxisModel.getSecondaryValueAxis(
91
+ configReader.calculateDefaultAxisLabelFormatter(),
92
+ options.orientation,
93
+ options.axis.value.position,
94
+ options.axis.valueSecondary,
95
+ designerConfig.canvas.axisLabel,
96
+ canvasModel,
97
+ secondaryScaleValueInfo.scale
98
+ )
99
+ }
100
+ ),
101
+ type: options.type,
102
+ data: Object.assign({}, options.data),
103
+ charts,
104
+ additionalElements: this.getAdditionalElements(options),
105
+ tooltip: options.tooltip,
106
+ chartSettings: this.getChartsSettings(designerConfig.canvas.chartOptions, options.orientation),
107
+ valueLabels: TwoDimensionalModelHelper.getValueLabels(
108
+ options.valueLabels,
109
+ canvasModel,
110
+ options.orientation,
111
+ configReader.getValueLabelsStyleModel()
112
+ ),
113
+ defs: {
114
+ gradients: TwoDimensionalModelHelper.getGradientDefs(
115
+ charts,
116
+ keyAxis.orient,
117
+ options.orientation,
118
+ modelInstance.version.getVersionNumber()
119
+ )
120
+ }
121
+ };
122
+ }
123
+ static getChartsEmbeddedLabelsFlag(charts, chartOrientation) {
124
+ // Если НЕ найден хотя бы один чарт, который сегментированный или хотя бы один НЕ бар чарт, то лейблы можно прятать
125
+ return (
126
+ charts.findIndex((chart) => chart.isSegmented || chart.type !== "bar") === -1 &&
127
+ chartOrientation === "horizontal" &&
128
+ charts.length === this.findChartsWithEmbeddedKeyLabels(charts).length
129
+ );
130
+ }
131
+ /**
132
+ * Сортирует список чартов в порядке: area - bar - line.
133
+ * Используется для того, чтобы при рендере графики с наибольшей площадью (area) не перекрывали графики с меньшей площадью (bar, line).
134
+ * @param charts Чарты из конфига
135
+ */
136
+ static sortCharts(charts) {
137
+ const chartOrder = ["area", "bar", "line", "dot"];
138
+ charts.sort((chart1, chart2) => chartOrder.indexOf(chart1.type) - chartOrder.indexOf(chart2.type));
139
+ }
140
+ static getChartsSettings(chartOptions, chartOrientation) {
141
+ var _a;
142
+ return {
143
+ bar: Object.assign({}, chartOptions.bar),
144
+ lineLike: {
145
+ shape: parseShape(
146
+ chartOrientation,
147
+ (_a = chartOptions.line) === null || _a === void 0 ? void 0 : _a.shape
148
+ )
149
+ }
150
+ };
151
+ }
152
+ static getChartsModel(
153
+ charts,
154
+ configReader,
155
+ chartOrientation,
156
+ designerConfig,
157
+ dataModelRep,
158
+ keyAxisOrient,
159
+ canvasModel,
160
+ keyFieldName,
161
+ modelInstance
162
+ ) {
163
+ const styleModel = new TwoDimensionalChartStyleModel(charts, designerConfig.chartStyle);
164
+ const chartsModel = [];
165
+ charts.forEach((chart, index) => {
166
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
167
+ const style = styleModel.getChartStyle(chart, index);
168
+ const valueLabelsCoordinateCalculator = new ValueLabelCoordinateCalculator(
169
+ (_b = (_a = chart.valueLabels) === null || _a === void 0 ? void 0 : _a.position) === null ||
170
+ _b === void 0
171
+ ? void 0
172
+ : _b.mode,
173
+ keyAxisOrient,
174
+ canvasModel.getMargin()
175
+ );
176
+ const valueLabelsAlignment = calculateValueLabelAlignment(
177
+ keyAxisOrient,
178
+ (_d = (_c = chart.valueLabels) === null || _c === void 0 ? void 0 : _c.position) === null ||
179
+ _d === void 0
180
+ ? void 0
181
+ : _d.mode,
182
+ (_e = chart.valueLabels) === null || _e === void 0 ? void 0 : _e.rotation
183
+ );
184
+ chartsModel.push({
185
+ type: chart.type,
186
+ isSegmented: chart.isSegmented,
187
+ data: Object.assign({}, chart.data),
188
+ tooltip: { show: true },
189
+ cssClasses: ChartStyleModelService.getCssClasses(index),
190
+ style,
191
+ embeddedLabels: this.getEmbeddedLabelType(chart, chartOrientation),
192
+ markersOptions: {
193
+ show: ({ row, valueFieldName }) =>
194
+ TwoDimensionalModelHelper.shouldMarkerShow(
195
+ chart,
196
+ dataModelRep.getRawRows(),
197
+ valueFieldName,
198
+ row,
199
+ keyFieldName
200
+ ),
201
+ styles: {
202
+ highlighted: {
203
+ size: {
204
+ radius:
205
+ (_h =
206
+ (_g =
207
+ (_f = designerConfig.canvas.markers) === null || _f === void 0
208
+ ? void 0
209
+ : _f.highlighted) === null || _g === void 0
210
+ ? void 0
211
+ : _g.radius) !== null && _h !== void 0
212
+ ? _h
213
+ : 4,
214
+ borderSize: "3.5px"
215
+ }
216
+ },
217
+ normal: {
218
+ size: {
219
+ radius:
220
+ (_l =
221
+ (_k =
222
+ (_j = designerConfig.canvas.markers) === null || _j === void 0
223
+ ? void 0
224
+ : _j.normal) === null || _k === void 0
225
+ ? void 0
226
+ : _k.radius) !== null && _l !== void 0
227
+ ? _l
228
+ : 3,
229
+ borderSize: `${
230
+ (_p =
231
+ (_o =
232
+ (_m = designerConfig.canvas.markers) === null || _m === void 0
233
+ ? void 0
234
+ : _m.normal) === null || _o === void 0
235
+ ? void 0
236
+ : _o.borderSize) !== null && _p !== void 0
237
+ ? _p
238
+ : 2
239
+ }px`
240
+ }
241
+ }
242
+ }
243
+ },
244
+ lineLikeViewOptions: {
245
+ dashedStyles: parseDashStyles((_q = chart.lineStyles) === null || _q === void 0 ? void 0 : _q.dash),
246
+ strokeWidth:
247
+ (_s = (_r = chart.lineStyles) === null || _r === void 0 ? void 0 : _r.width) !== null &&
248
+ _s !== void 0
249
+ ? _s
250
+ : LINE_CHART_DEFAULT_WIDTH,
251
+ renderForKey: (dataRow, valueFieldName) =>
252
+ dataRow[valueFieldName] !== null && dataRow[valueFieldName] !== undefined
253
+ },
254
+ barViewOptions: getBarViewOptions(chart, keyAxisOrient, calculateBarIndexes(charts, chart, index)),
255
+ legend: getLegendMarkerOptions(chart),
256
+ index,
257
+ valueLabels: {
258
+ show:
259
+ (_u = (_t = chart.valueLabels) === null || _t === void 0 ? void 0 : _t.on) !== null &&
260
+ _u !== void 0
261
+ ? _u
262
+ : false,
263
+ handleX: (scaledValue) => valueLabelsCoordinateCalculator.getValueLabelX(scaledValue),
264
+ handleY: (scaledValue) => valueLabelsCoordinateCalculator.getValueLabelY(scaledValue),
265
+ handleScaledValue: (dataRow, datumField) => {
266
+ var _a, _b, _c, _d;
267
+ if (
268
+ !((_b = (_a = chart.valueLabels) === null || _a === void 0 ? void 0 : _a.position) ===
269
+ null || _b === void 0
270
+ ? void 0
271
+ : _b.mode) ||
272
+ ((_d = (_c = chart.valueLabels) === null || _c === void 0 ? void 0 : _c.position) ===
273
+ null || _d === void 0
274
+ ? void 0
275
+ : _d.mode) === "after"
276
+ )
277
+ return dataRow[datumField];
278
+ if (chart.isSegmented) return dataRow[datumField] - (dataRow[datumField] - dataRow["0"]) / 2;
279
+ else return dataRow[datumField] / 2;
280
+ },
281
+ textAnchor: valueLabelsAlignment.textAnchor,
282
+ dominantBaseline: valueLabelsAlignment.dominantBaseline,
283
+ format: configReader.getValueLabelFormatterForChart(index),
284
+ rotation: (_v = chart.valueLabels) === null || _v === void 0 ? void 0 : _v.rotation,
285
+ handleElement: (_w = chart.valueLabels) === null || _w === void 0 ? void 0 : _w.handleElement
286
+ },
287
+ areaViewOptions: getAreaViewOptions(chart, index, style, modelInstance.version.getVersionNumber()),
288
+ dotViewOptions: {
289
+ shape: {
290
+ type: "line",
291
+ handleEndCoordinate: (v) => v + 2,
292
+ handleStartCoordinate: (v) => v - 2,
293
+ width:
294
+ (_z =
295
+ (_y = (_x = chart.dotLikeStyles) === null || _x === void 0 ? void 0 : _x.shape) ===
296
+ null || _y === void 0
297
+ ? void 0
298
+ : _y.width) !== null && _z !== void 0
299
+ ? _z
300
+ : LINE_CHART_DEFAULT_WIDTH
301
+ }
302
+ }
303
+ });
304
+ });
305
+ return chartsModel;
306
+ }
307
+ static findChartsWithEmbeddedKeyLabels(charts) {
308
+ const chartsWithEmbeddedLabels = [];
309
+ charts.forEach((chart) => {
310
+ if (chart.type === "bar" && chart.embeddedLabels === "key") chartsWithEmbeddedLabels.push(chart);
311
+ });
312
+ return chartsWithEmbeddedLabels;
313
+ }
314
+ static getEmbeddedLabelType(currentChart, chartOrientation) {
315
+ if (chartOrientation === "horizontal" && currentChart.type === "bar") return currentChart.embeddedLabels;
316
+ return "none";
317
+ }
318
+ static getAdditionalElements(options) {
319
+ var _a, _b;
320
+ const { flag, styles } = options.additionalElements.gridLine;
321
+ return {
322
+ gridLine: {
323
+ flag,
324
+ styles: {
325
+ dash: {
326
+ on:
327
+ (_b =
328
+ (_a = styles === null || styles === void 0 ? void 0 : styles.dash) === null ||
329
+ _a === void 0
330
+ ? void 0
331
+ : _a.on) !== null && _b !== void 0
332
+ ? _b
333
+ : false
334
+ }
335
+ }
336
+ }
337
+ };
338
+ }
171
339
  }
@@ -1,6 +1,6 @@
1
1
  import { Size } from "../config/config";
2
2
  declare class PublicOptionsServiceClass {
3
- validateSize(size: Partial<Size>): boolean;
3
+ validateSize(size: Partial<Size>): boolean;
4
4
  }
5
5
  export declare const PublicOptionsService: PublicOptionsServiceClass;
6
6
  export {};
@@ -1,8 +1,8 @@
1
1
  import { SizeValidator } from "./validators/sizeValidator";
2
2
  class PublicOptionsServiceClass {
3
- validateSize(size) {
4
- const validator = new SizeValidator();
5
- return validator.validate(size);
6
- }
3
+ validateSize(size) {
4
+ const validator = new SizeValidator();
5
+ return validator.validate(size);
6
+ }
7
7
  }
8
8
  export const PublicOptionsService = new PublicOptionsServiceClass();
@@ -1,5 +1,5 @@
1
1
  import { Size } from "../../config/config";
2
2
  export declare class SizeValidator {
3
- validate(size: Partial<Size>): boolean;
4
- private validateSide;
3
+ validate(size: Partial<Size>): boolean;
4
+ private validateSide;
5
5
  }
@@ -1,13 +1,12 @@
1
1
  export class SizeValidator {
2
- validate(size) {
3
- return this.validateSide(size.height) && this.validateSide(size.width);
4
- }
5
- validateSide(side) {
6
- if (side == null)
7
- return true;
8
- if (typeof side !== "number" || side <= 0) {
9
- return false;
10
- }
11
- return true;
12
- }
2
+ validate(size) {
3
+ return this.validateSide(size.height) && this.validateSide(size.width);
4
+ }
5
+ validateSide(side) {
6
+ if (side == null) return true;
7
+ if (typeof side !== "number" || side <= 0) {
8
+ return false;
9
+ }
10
+ return true;
11
+ }
13
12
  }