mdt-charts 1.12.16 → 1.12.17

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 (67) hide show
  1. package/lib/config/config.d.ts +42 -8
  2. package/lib/engine/block/block.d.ts +4 -13
  3. package/lib/engine/block/block.js +12 -61
  4. package/lib/engine/block/blockHtml.d.ts +14 -0
  5. package/lib/engine/block/blockHtml.js +18 -0
  6. package/lib/engine/block/blockSvg.d.ts +26 -0
  7. package/lib/engine/block/blockSvg.js +69 -0
  8. package/lib/engine/cardsNotation/card/card.d.ts +30 -0
  9. package/lib/engine/cardsNotation/card/card.js +97 -0
  10. package/lib/engine/cardsNotation/card/cardChange.d.ts +21 -0
  11. package/lib/engine/cardsNotation/card/cardChange.js +72 -0
  12. package/lib/engine/cardsNotation/card/cardElementsStyler.d.ts +6 -0
  13. package/lib/engine/cardsNotation/card/cardElementsStyler.js +11 -0
  14. package/lib/engine/cardsNotation/card/cardService.d.ts +11 -0
  15. package/lib/engine/cardsNotation/card/cardService.js +12 -0
  16. package/lib/engine/cardsNotation/cardsManager.d.ts +11 -0
  17. package/lib/engine/cardsNotation/cardsManager.js +14 -0
  18. package/lib/engine/contentManager/contentManager.d.ts +6 -4
  19. package/lib/engine/contentManager/contentManager.js +9 -9
  20. package/lib/engine/contentManager/contentManagerFactory.d.ts +1 -1
  21. package/lib/engine/contentManager/contentManagerFactory.js +3 -1
  22. package/lib/engine/engine.d.ts +4 -3
  23. package/lib/engine/engine.js +9 -5
  24. package/lib/engine/features/embeddedLabels/embeddedLabels.js +6 -6
  25. package/lib/engine/features/legend/legend.js +1 -1
  26. package/lib/engine/features/markDots/markDot.js +4 -4
  27. package/lib/engine/features/tolltip/tooltip.d.ts +2 -2
  28. package/lib/engine/features/tolltip/tooltip.js +0 -3
  29. package/lib/engine/features/tolltip/tooltipComponentsManager.js +2 -2
  30. package/lib/engine/helpers/fontResizer/fontResizer.d.ts +16 -0
  31. package/lib/engine/helpers/fontResizer/fontResizer.js +21 -0
  32. package/lib/engine/helpers/fontResizer/fontResizerService.d.ts +6 -0
  33. package/lib/engine/helpers/fontResizer/fontResizerService.js +12 -0
  34. package/lib/engine/helpers/namesHelper.js +1 -1
  35. package/lib/engine/intervalNotation/gantt.js +2 -2
  36. package/lib/engine/intervalNotation/intervalManager.js +2 -4
  37. package/lib/engine/polarNotation/polarManager.d.ts +5 -5
  38. package/lib/engine/polarNotation/polarManager.js +1 -1
  39. package/lib/engine/twoDimensionalNotation/area/area.js +7 -7
  40. package/lib/engine/twoDimensionalNotation/bar/bar.js +11 -11
  41. package/lib/engine/twoDimensionalNotation/line/line.d.ts +1 -1
  42. package/lib/engine/twoDimensionalNotation/line/line.js +9 -9
  43. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +5 -5
  44. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +4 -4
  45. package/lib/main.js +1 -1
  46. package/lib/model/chartStyleModel/chartStyleModel.d.ts +1 -1
  47. package/lib/model/chartStyleModel/chartStyleModel.js +2 -2
  48. package/lib/model/chartStyleModel/colorRange.d.ts +7 -0
  49. package/lib/model/chartStyleModel/colorRange.js +30 -0
  50. package/lib/model/dataManagerModel/dataManagerModel.js +5 -0
  51. package/lib/model/dataManagerModel/notations/cardsDataManagerModel.d.ts +5 -0
  52. package/lib/model/dataManagerModel/notations/cardsDataManagerModel.js +10 -0
  53. package/lib/model/model.d.ts +25 -8
  54. package/lib/model/modelBuilder.js +4 -0
  55. package/lib/model/modelInstance/dataModel/dataRepository.d.ts +1 -0
  56. package/lib/model/modelInstance/dataModel/dataRepository.js +3 -0
  57. package/lib/model/notations/cards/cardsChangeService.d.ts +10 -0
  58. package/lib/model/notations/cards/cardsChangeService.js +50 -0
  59. package/lib/model/notations/cards/cardsModel.d.ts +8 -0
  60. package/lib/model/notations/cards/cardsModel.js +19 -0
  61. package/lib/model/notations/cards/cardsModelService.d.ts +6 -0
  62. package/lib/model/notations/cards/cardsModelService.js +10 -0
  63. package/lib/optionsServices/publicOptionsService.d.ts +1 -1
  64. package/lib/optionsServices/validators/sizeValidator.d.ts +1 -1
  65. package/lib/style/charts-main.css +75 -5
  66. package/lib/style/charts-main.less +75 -5
  67. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import { CardChart } from "./card/card";
2
+ export class CardsManager {
3
+ render(engine, model) {
4
+ engine.block.html.render();
5
+ this.chart = new CardChart();
6
+ this.chart.render(engine.block, model.options, engine.data, { cardSize: model.blockCanvas.size });
7
+ }
8
+ updateData(block, model, newData) {
9
+ this.chart.updateData(model.options, newData);
10
+ }
11
+ updateColors(block, model) {
12
+ //TODO: implement
13
+ }
14
+ }
@@ -1,9 +1,11 @@
1
1
  import { Model } from "../../model/model";
2
- import Engine from "../engine";
2
+ import { Engine } from "../engine";
3
3
  import { Block } from "../block/block";
4
4
  import { MdtChartsDataSource } from "../../config/config";
5
5
  export declare class ContentManager {
6
- static render(model: Model, engine: Engine): void;
7
- static updateData(block: Block, model: Model, newData: MdtChartsDataSource): void;
8
- static updateColors(engine: Engine, model: Model): void;
6
+ private manager;
7
+ constructor(model: Model);
8
+ render(model: Model, engine: Engine): void;
9
+ updateData(block: Block, model: Model, newData: MdtChartsDataSource): void;
10
+ updateColors(engine: Engine, model: Model): void;
9
11
  }
@@ -1,15 +1,15 @@
1
1
  import { getChartContentManager } from "./contentManagerFactory";
2
2
  export class ContentManager {
3
- static render(model, engine) {
4
- const manager = getChartContentManager(model);
5
- manager.render(engine, model);
3
+ constructor(model) {
4
+ this.manager = getChartContentManager(model);
6
5
  }
7
- static updateData(block, model, newData) {
8
- const manager = getChartContentManager(model);
9
- manager.updateData(block, model, newData);
6
+ render(model, engine) {
7
+ this.manager.render(engine, model);
10
8
  }
11
- static updateColors(engine, model) {
12
- const manager = getChartContentManager(model);
13
- manager.updateColors(engine.block, model);
9
+ updateData(block, model, newData) {
10
+ this.manager.updateData(block, model, newData);
11
+ }
12
+ updateColors(engine, model) {
13
+ this.manager.updateColors(engine.block, model);
14
14
  }
15
15
  }
@@ -1,7 +1,7 @@
1
1
  import { ChartNotation, MdtChartsDataSource } from "../../config/config";
2
2
  import { Model } from "../../model/model";
3
3
  import { Block } from "../block/block";
4
- import Engine from "../engine";
4
+ import { Engine } from "../engine";
5
5
  export interface ChartContentManager {
6
6
  render(engine: Engine, model: Model): void;
7
7
  updateData(block: Block, model: Model, newData: MdtChartsDataSource): void;
@@ -1,10 +1,12 @@
1
+ import { CardsManager } from "../cardsNotation/cardsManager";
1
2
  import { PolarManager } from "../polarNotation/polarManager";
2
3
  import { TwoDimensionalManager } from "../twoDimensionalNotation/twoDimensionalManager";
3
4
  export class ContentManagerFactory {
4
5
  constructor() {
5
6
  this.managers = {
6
7
  "2d": TwoDimensionalManager,
7
- "polar": PolarManager
8
+ "polar": PolarManager,
9
+ "card": CardsManager
8
10
  };
9
11
  }
10
12
  getManager(type) {
@@ -1,14 +1,15 @@
1
1
  import { Block } from './block/block';
2
2
  import { Model } from '../model/model';
3
- import { FilterCallback, FilterEventManager } from './filterManager/filterEventManager';
3
+ import { FilterCallback } from './filterManager/filterEventManager';
4
4
  import { MdtChartsDataSource } from '../config/config';
5
- export default class Engine {
5
+ export declare class Engine {
6
6
  private filterCallback;
7
7
  private initializeSelected;
8
8
  block: Block;
9
- filterEventManager: FilterEventManager;
10
9
  data: MdtChartsDataSource;
10
+ private filterEventManager;
11
11
  private chartId;
12
+ private contentManager;
12
13
  constructor(id: number, filterCallback: FilterCallback, initializeSelected: number[]);
13
14
  render(model: Model, data: MdtChartsDataSource, parentElement: HTMLElement): void;
14
15
  updateFullBlock(model: Model, data: MdtChartsDataSource): void;
@@ -3,18 +3,20 @@ import { ValueFormatter } from './valueFormatter';
3
3
  import { ContentManager } from './contentManager/contentManager';
4
4
  import { FilterEventManager } from './filterManager/filterEventManager';
5
5
  import { Helper } from './helpers/helper';
6
- export default class Engine {
6
+ export class Engine {
7
7
  constructor(id, filterCallback, initializeSelected) {
8
8
  this.filterCallback = filterCallback;
9
9
  this.initializeSelected = initializeSelected;
10
10
  this.chartId = id;
11
11
  }
12
12
  render(model, data, parentElement) {
13
+ var _a;
13
14
  this.data = data;
14
15
  this.setFilterEventManager(model === null || model === void 0 ? void 0 : model.options);
15
16
  this.block = new Block(model.blockCanvas.cssClass, parentElement, this.chartId, this.filterEventManager, model.transitions);
16
- this.filterEventManager.setBlock(this.block);
17
+ (_a = this.filterEventManager) === null || _a === void 0 ? void 0 : _a.setBlock(this.block);
17
18
  this.block.renderWrapper(model.blockCanvas.size);
19
+ this.contentManager = new ContentManager(model);
18
20
  if (model.options) {
19
21
  ValueFormatter.setFormatFunction(model.dataSettings.format.formatters);
20
22
  this.renderCharts(model);
@@ -41,18 +43,20 @@ export default class Engine {
41
43
  for (let source in newData) {
42
44
  this.data[source] = newData[source];
43
45
  }
44
- ContentManager.updateData(this.block, model, newData);
46
+ this.contentManager.updateData(this.block, model, newData);
45
47
  }
46
48
  }
47
49
  }
48
50
  updateColors(model) {
49
- ContentManager.updateColors(this, model);
51
+ this.contentManager.updateColors(this, model);
50
52
  }
51
53
  renderCharts(model) {
52
- ContentManager.render(model, this);
54
+ this.contentManager.render(model, this);
53
55
  }
54
56
  setFilterEventManager(options) {
55
57
  var _a, _b, _c;
58
+ if (options.type === "card")
59
+ return;
56
60
  let highlightIds = [];
57
61
  if (this.initializeSelected instanceof Array && this.initializeSelected.length > 0)
58
62
  highlightIds = [...this.initializeSelected];
@@ -14,7 +14,7 @@ export class EmbeddedLabels {
14
14
  }
15
15
  static restoreRemoved(block, bars, barAttrsHelper, field, type, keyAxisOrient, blockSize, margin, index, cssClasses, keyFieldName) {
16
16
  const untaggedBars = bars.filter(d => {
17
- return block.getChartBlock()
17
+ return block.svg.getChartBlock()
18
18
  .selectAll(`.${EmbeddedLabels.embeddedLabelsGroupClass}${Helper.getCssClassesLine(cssClasses)}.chart-element-${index}`)
19
19
  .selectAll(`.${this.embeddedLabelClass}`)
20
20
  .filter(row => row[keyFieldName] === d[keyFieldName])
@@ -25,14 +25,14 @@ export class EmbeddedLabels {
25
25
  }
26
26
  }
27
27
  static removeUnused(block, chartCssClasses, fieldIndex, indexes) {
28
- block.getChartBlock()
28
+ block.svg.getChartBlock()
29
29
  .selectAll(`.${EmbeddedLabels.embeddedLabelsGroupClass}${Helper.getCssClassesLine(chartCssClasses)}.chart-element-${fieldIndex}`)
30
30
  .selectAll(`.${this.embeddedLabelClass}`)
31
31
  .filter((d, i) => indexes.findIndex(ind => ind === i) !== -1)
32
32
  .remove();
33
33
  }
34
34
  static update(block, bars, keyAxisOrient, barAttrsHelper, margin, valueField, type, blockSize, newData, index, cssClasses) {
35
- const labelsGroup = block.getChartBlock()
35
+ const labelsGroup = block.svg.getChartBlock()
36
36
  .selectAll(`.${EmbeddedLabels.embeddedLabelsGroupClass}${Helper.getCssClassesLine(cssClasses)}.chart-element-${index}`);
37
37
  labelsGroup.selectAll(`.${this.embeddedLabelBgClass}`)
38
38
  .remove();
@@ -46,7 +46,7 @@ export class EmbeddedLabels {
46
46
  });
47
47
  }
48
48
  static raiseGroups(block) {
49
- block.getChartBlock().selectAll(`.${this.embeddedLabelsGroupClass}`).raise();
49
+ block.svg.getChartBlock().selectAll(`.${this.embeddedLabelsGroupClass}`).raise();
50
50
  }
51
51
  static renderLabel(labelsGroup, barAttrsHelper, dataRow, field, type, keyAxisOrient, blockSize, margin) {
52
52
  const labelBlock = labelsGroup.append('text').datum(dataRow);
@@ -108,11 +108,11 @@ export class EmbeddedLabels {
108
108
  }
109
109
  }
110
110
  static renderGroup(block, cssClasses) {
111
- let group = block.getChartBlock()
111
+ let group = block.svg.getChartBlock()
112
112
  .select(`.${this.embeddedLabelsGroupClass}${Helper.getCssClassesLine(cssClasses)}`)
113
113
  .raise();
114
114
  if (group.empty())
115
- group = block.getChartBlock()
115
+ group = block.svg.getChartBlock()
116
116
  .append('g')
117
117
  .attr('class', this.embeddedLabelsGroupClass)
118
118
  .raise();
@@ -11,7 +11,7 @@ export class Legend {
11
11
  }
12
12
  }
13
13
  static update(block, data, model) {
14
- if (model.options.legend.position !== 'off') {
14
+ if (model.options.type != "card" && model.options.legend.position !== 'off') {
15
15
  const legendObject = this.getObject(block);
16
16
  const legendCoordinate = LegendHelper.getLegendCoordinateByPosition(model.options.legend.position, model.otherComponents.legendBlock, model.blockCanvas.size);
17
17
  this.fillCoordinate(legendObject, legendCoordinate);
@@ -7,7 +7,7 @@ import { MarkDotHelper } from "./markDotsHelper";
7
7
  select.prototype.transition = transition;
8
8
  export class MarkDot {
9
9
  static render(block, data, keyAxisOrient, scales, margin, keyFieldName, vfIndex, valueFieldName, chart) {
10
- const dotsWrapper = block.getChartGroup(chart.index)
10
+ const dotsWrapper = block.svg.getChartGroup(chart.index)
11
11
  .selectAll(`.${this.markerDotClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-index-${vfIndex}`)
12
12
  .data(data)
13
13
  .enter();
@@ -19,7 +19,7 @@ export class MarkDot {
19
19
  dots.classed(this.hiddenDotClass, true);
20
20
  }
21
21
  static update(block, newData, keyAxisOrient, scales, margin, keyField, vfIndex, valueFieldName, chart) {
22
- const dots = block.getChartGroup(chart.index)
22
+ const dots = block.svg.getChartGroup(chart.index)
23
23
  .selectAll(`.${this.markerDotClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${vfIndex}`)
24
24
  .data(newData);
25
25
  dots.exit().remove();
@@ -40,7 +40,7 @@ export class MarkDot {
40
40
  .attr('cy', d => attrs.cy(d));
41
41
  }
42
42
  static updateColors(block, chart, valueFieldIndex) {
43
- const dots = block.getChartGroup(chart.index)
43
+ const dots = block.svg.getChartGroup(chart.index)
44
44
  .selectAll(`.${this.markerDotClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${valueFieldIndex}`);
45
45
  DomHelper.setChartElementColor(dots, chart.style.elementColors, valueFieldIndex, 'stroke');
46
46
  }
@@ -60,7 +60,7 @@ export class MarkDot {
60
60
  .attr('r', this.dotRadius)
61
61
  .style('stroke-width', '3px')
62
62
  .style('fill', 'white')
63
- .style('clip-path', `url(#${block.getClipPathId()})`);
63
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`);
64
64
  }
65
65
  }
66
66
  MarkDot.markerDotClass = NamesHelper.getClassName('dot');
@@ -1,4 +1,4 @@
1
- import { Model } from "../../../model/model";
1
+ import { Model, PolarOptionsModel, TwoDimensionalOptionsModel } from "../../../model/model";
2
2
  import { Block } from "../../block/block";
3
3
  import { MdtChartsDataSource } from "../../../config/config";
4
4
  import { Scales } from '../scale/scale';
@@ -9,7 +9,7 @@ export declare class Tooltip {
9
9
  static readonly tooltipWrapperClass = "mdt-charts-tooltip-wrapper";
10
10
  static readonly tooltipContentClass = "mdt-charts-tooltip-content";
11
11
  static readonly tooltipArrowClass = "mdt-charts-tooltip-arrow";
12
- static render(block: Block, model: Model, data: MdtChartsDataSource, tooltipOptions: TooltipSettings, scales?: Scales): void;
12
+ static render(block: Block, model: Model<TwoDimensionalOptionsModel | PolarOptionsModel>, data: MdtChartsDataSource, tooltipOptions: TooltipSettings, scales?: Scales): void;
13
13
  static hide(block: Block): void;
14
14
  private static renderTooltipFor2DCharts;
15
15
  private static renderTooltipForIntervalCharts;
@@ -21,9 +21,6 @@ export class Tooltip {
21
21
  else if (model.options.type === 'polar') {
22
22
  this.renderTooltipForPolar(block, model.options, data, model.blockCanvas.size, model.chartBlock.margin, DonutHelper.getThickness(model.options.chartCanvas, model.blockCanvas.size, model.chartBlock.margin), model.otherComponents.tooltipBlock);
23
23
  }
24
- else if (model.options.type === 'interval') {
25
- this.renderTooltipForIntervalCharts(block, data, model.blockCanvas.size, model.chartBlock.margin, scales, model.options, tooltipOptions);
26
- }
27
24
  }
28
25
  }
29
26
  static hide(block) {
@@ -43,10 +43,10 @@ export class TooltipComponentsManager {
43
43
  return tooltipContentBlock;
44
44
  }
45
45
  static renderTooltipLine(block) {
46
- let tooltipLine = block.getChartBlock()
46
+ let tooltipLine = block.svg.getChartBlock()
47
47
  .select(`.${Tooltip.tooltipLineClass}`);
48
48
  if (tooltipLine.empty())
49
- tooltipLine = block.getChartBlock()
49
+ tooltipLine = block.svg.getChartBlock()
50
50
  .append('line')
51
51
  .attr('class', Tooltip.tooltipLineClass)
52
52
  .lower();
@@ -0,0 +1,16 @@
1
+ export interface ResizingOptions {
2
+ elWrapper: HTMLElement;
3
+ unit: "px" | "em";
4
+ smallestFontSize: number;
5
+ step?: number;
6
+ }
7
+ export declare const FontResizer: {
8
+ setSize(el: HTMLElement, options: ResizingOptions): void;
9
+ };
10
+ export declare class ResizedElement {
11
+ private el;
12
+ constructor(el: HTMLElement);
13
+ setStyle(style: string, value: string): void;
14
+ getSizeStyleInNum(style: string): number;
15
+ getWidth(): number;
16
+ }
@@ -0,0 +1,21 @@
1
+ import { resizeFont } from "./fontResizerService";
2
+ export const FontResizer = new class {
3
+ setSize(el, options) {
4
+ const wrappedEl = new ResizedElement(el);
5
+ resizeFont(wrappedEl, Object.assign(Object.assign({}, options), { elWrapper: new ResizedElement(options.elWrapper) }));
6
+ }
7
+ };
8
+ export class ResizedElement {
9
+ constructor(el) {
10
+ this.el = el;
11
+ }
12
+ setStyle(style, value) {
13
+ this.el.style[style] = value;
14
+ }
15
+ getSizeStyleInNum(style) {
16
+ return parseFloat(this.el.style[style]);
17
+ }
18
+ getWidth() {
19
+ return this.el.getBoundingClientRect().width;
20
+ }
21
+ }
@@ -0,0 +1,6 @@
1
+ import { ResizedElement, ResizingOptions } from "./fontResizer";
2
+ interface ResizerServiceOptions extends Omit<ResizingOptions, "elWrapper"> {
3
+ elWrapper: ResizedElement;
4
+ }
5
+ export declare function resizeFont(el: ResizedElement, options: ResizerServiceOptions): void;
6
+ export {};
@@ -0,0 +1,12 @@
1
+ export function resizeFont(el, options) {
2
+ const wrapper = options.elWrapper;
3
+ if (el.getWidth() <= wrapper.getWidth())
4
+ return;
5
+ let fontSize = el.getSizeStyleInNum("font-size");
6
+ const { smallestFontSize: minSize, step, unit } = options;
7
+ const wrapperWidth = wrapper.getWidth();
8
+ while (el.getWidth() > wrapperWidth && fontSize > minSize) {
9
+ fontSize -= step;
10
+ el.setStyle("font-size", `${fontSize}${unit}`);
11
+ }
12
+ }
@@ -6,4 +6,4 @@ export class NamesHelper {
6
6
  return this.prefix + idName + '-' + blockId;
7
7
  }
8
8
  }
9
- NamesHelper.prefix = 'charts-';
9
+ NamesHelper.prefix = 'mdt-charts-';
@@ -2,13 +2,13 @@ import { Scale } from "../features/scale/scale";
2
2
  import { DomHelper } from '../helpers/domHelper';
3
3
  export class Gantt {
4
4
  static render(block, data, dataOptions, scales, margin, keyAxisOrient, chart, barSettings) {
5
- const ganttItems = block.getChartBlock()
5
+ const ganttItems = block.svg.getChartBlock()
6
6
  .selectAll(`.${this.ganttItemClass}`)
7
7
  .data(data)
8
8
  .enter()
9
9
  .append('rect')
10
10
  .attr('class', this.ganttItemClass)
11
- .style('clip-path', `url(#${block.getClipPathId()})`);
11
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`);
12
12
  const itemsAttrs = this.getItemsAttrsByKeyOrient(keyAxisOrient, scales, margin, dataOptions.keyField.name, chart.data.valueField1.name, chart.data.valueField2.name, barSettings);
13
13
  this.fillItemsAttrs(ganttItems, itemsAttrs);
14
14
  DomHelper.setCssClasses(ganttItems, chart.cssClasses);
@@ -3,22 +3,20 @@ import { GridLine } from "../features/gridLine/gridLine";
3
3
  import { Legend } from "../features/legend/legend";
4
4
  import { Scale } from "../features/scale/scale";
5
5
  import { Title } from "../features/title/title";
6
- import { Tooltip } from "../features/tolltip/tooltip";
7
6
  import { Gantt } from "./gantt";
8
7
  export class IntervalManager {
9
8
  static render(block, model, data) {
10
9
  const options = model.options;
11
- block.renderSvg(model.blockCanvas.size);
10
+ block.svg.render(model.blockCanvas.size);
12
11
  const scales = Scale.getScales(options.scale.key, options.scale.value, options.chartSettings.bar);
13
12
  Axis.render(block, scales, options.scale, options.axis, model.blockCanvas.size);
14
13
  GridLine.render(block, options.additionalElements.gridLine.flag, options.axis, model.blockCanvas.size, model.chartBlock.margin, scales);
15
14
  this.renderCharts(block, options.charts, scales, data, options.data, model.chartBlock.margin, options.axis.key.orient, options.chartSettings);
16
15
  Title.render(block, options.title, model.otherComponents.titleBlock, model.blockCanvas.size);
17
16
  Legend.render(block, data, options, model);
18
- Tooltip.render(block, model, data, model.otherComponents.tooltipBlock, scales);
19
17
  }
20
18
  static renderCharts(block, charts, scales, data, dataOptions, margin, keyAxisOrient, chartSettings) {
21
- block.renderChartsBlock();
19
+ block.svg.renderChartsBlock();
22
20
  charts.forEach(chart => {
23
21
  if (chart.type === 'gantt')
24
22
  Gantt.render(block, data[dataOptions.dataSource], dataOptions, scales, margin, keyAxisOrient, chart, chartSettings.bar);
@@ -1,11 +1,11 @@
1
- import { Model } from "../../model/model";
1
+ import { Model, PolarOptionsModel } from "../../model/model";
2
2
  import { Block } from "../block/block";
3
- import Engine from "../engine";
3
+ import { Engine } from "../engine";
4
4
  import { MdtChartsDataSource } from "../../config/config";
5
5
  import { ChartContentManager } from "../contentManager/contentManagerFactory";
6
6
  export declare class PolarManager implements ChartContentManager {
7
- render(engine: Engine, model: Model): void;
8
- updateData(block: Block, model: Model, data: MdtChartsDataSource): void;
9
- updateColors(block: Block, model: Model): void;
7
+ render(engine: Engine, model: Model<PolarOptionsModel>): void;
8
+ updateData(block: Block, model: Model<PolarOptionsModel>, data: MdtChartsDataSource): void;
9
+ updateColors(block: Block, model: Model<PolarOptionsModel>): void;
10
10
  private renderCharts;
11
11
  }
@@ -8,7 +8,7 @@ import { PolarRecordOverflowAlert } from "./extenders/polarRecordOverflowAlert";
8
8
  export class PolarManager {
9
9
  render(engine, model) {
10
10
  const options = model.options;
11
- engine.block.renderSvg(model.blockCanvas.size);
11
+ engine.block.svg.render(model.blockCanvas.size);
12
12
  this.renderCharts(engine.block, options.charts, engine.data, options.data.dataSource, model.chartBlock.margin, model.blockCanvas.size, options.chartCanvas);
13
13
  Title.render(engine.block, options.title, model.otherComponents.titleBlock, model.blockCanvas.size);
14
14
  Legend.render(engine.block, engine.data, options, model);
@@ -23,7 +23,7 @@ export class Area {
23
23
  }
24
24
  static updateColors(block, chart) {
25
25
  chart.data.valueFields.forEach((_vf, valueIndex) => {
26
- const path = block.getChartGroup(chart.index)
26
+ const path = block.svg.getChartGroup(chart.index)
27
27
  .select(`.${this.areaChartClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${valueIndex}`);
28
28
  DomHelper.setChartStyle(path, chart.style, valueIndex, 'fill');
29
29
  MarkDot.updateColors(block, chart, valueIndex);
@@ -32,11 +32,11 @@ export class Area {
32
32
  static renderGrouped(block, scales, data, keyField, margin, keyAxisOrient, chart, blockSize) {
33
33
  chart.data.valueFields.forEach((field, valueIndex) => {
34
34
  const area = AreaHelper.getGroupedAreaGenerator(keyAxisOrient, scales, margin, keyField.name, field.name, blockSize);
35
- const path = block.getChartGroup(chart.index)
35
+ const path = block.svg.getChartGroup(chart.index)
36
36
  .append('path')
37
37
  .attr('d', area(data))
38
38
  .attr('class', this.areaChartClass)
39
- .style('clip-path', `url(#${block.getClipPathId()})`)
39
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`)
40
40
  .style('pointer-events', 'none');
41
41
  DomHelper.setCssClasses(path, Helper.getCssClassesWithElementIndex(chart.cssClasses, valueIndex));
42
42
  DomHelper.setChartStyle(path, chart.style, valueIndex, 'fill');
@@ -46,14 +46,14 @@ export class Area {
46
46
  static renderSegmented(block, scales, data, keyField, margin, keyAxisOrient, chart) {
47
47
  const stackedData = getStackedDataWithOwn(data, chart.data.valueFields.map(field => field.name));
48
48
  const areaGenerator = AreaHelper.getSegmentedAreaGenerator(keyAxisOrient, scales, margin, keyField.name);
49
- const areas = block.getChartGroup(chart.index)
49
+ const areas = block.svg.getChartGroup(chart.index)
50
50
  .selectAll(`.${this.areaChartClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
51
51
  .data(stackedData)
52
52
  .enter()
53
53
  .append('path')
54
54
  .attr('d', d => areaGenerator(d))
55
55
  .attr('class', this.areaChartClass)
56
- .style('clip-path', `url(#${block.getClipPathId()})`)
56
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`)
57
57
  .style('pointer-events', 'none');
58
58
  areas.each(function (d, i) {
59
59
  DomHelper.setCssClasses(select(this), Helper.getCssClassesWithElementIndex(chart.cssClasses, i));
@@ -67,7 +67,7 @@ export class Area {
67
67
  const promises = [];
68
68
  chart.data.valueFields.forEach((field, valueIndex) => {
69
69
  const areaGenerator = AreaHelper.getGroupedAreaGenerator(keyAxisOrient, scales, margin, keyField.name, field.name, blockSize);
70
- const areaObject = block.getChartGroup(chart.index)
70
+ const areaObject = block.svg.getChartGroup(chart.index)
71
71
  .select(`.${this.areaChartClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${valueIndex}`);
72
72
  const prom = this.updateGroupedPath(block, areaObject, areaGenerator, newData);
73
73
  promises.push(prom);
@@ -78,7 +78,7 @@ export class Area {
78
78
  static updateSegmented(block, scales, newData, keyField, margin, chart, keyAxisOrient) {
79
79
  const stackedData = getStackedDataWithOwn(newData, chart.data.valueFields.map(field => field.name));
80
80
  const areaGenerator = AreaHelper.getSegmentedAreaGenerator(keyAxisOrient, scales, margin, keyField.name);
81
- const areas = block.getChartGroup(chart.index)
81
+ const areas = block.svg.getChartGroup(chart.index)
82
82
  .selectAll(`path.${this.areaChartClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
83
83
  .data(stackedData);
84
84
  const prom = this.updateSegmentedPath(block, areas, areaGenerator);
@@ -25,7 +25,7 @@ export class Bar {
25
25
  }
26
26
  static updateColors(block, chart) {
27
27
  chart.data.valueFields.forEach((_vf, index) => {
28
- const bars = block.getChartGroup(chart.index)
28
+ const bars = block.svg.getChartGroup(chart.index)
29
29
  .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}${Helper.getCssClassesLine(Helper.getCssClassesWithElementIndex(chart.cssClasses, index))}`);
30
30
  DomHelper.setChartStyle(bars, chart.style, index, 'fill');
31
31
  });
@@ -35,13 +35,13 @@ export class Bar {
35
35
  }
36
36
  static renderGrouped(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, blockSize, firstBarIndex, barSettings) {
37
37
  chart.data.valueFields.forEach((field, index) => {
38
- const bars = block.getChartGroup(chart.index)
38
+ const bars = block.svg.getChartGroup(chart.index)
39
39
  .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}${Helper.getCssClassesLine(Helper.getCssClassesWithElementIndex(chart.cssClasses, index))}`)
40
40
  .data(data)
41
41
  .enter()
42
42
  .append('rect')
43
43
  .attr('class', this.barItemClass)
44
- .style('clip-path', `url(#${block.getClipPathId()})`);
44
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`);
45
45
  const barAttrs = BarHelper.getGroupedBarAttrs(keyAxisOrient, scales, margin, keyField.name, field.name, blockSize, BarHelper.getBarIndex(barsAmounts, chart.index - firstBarIndex) + index, sum(barsAmounts), barSettings);
46
46
  this.fillBarAttrs(bars, barAttrs);
47
47
  DomHelper.setCssClasses(bars, Helper.getCssClassesWithElementIndex(chart.cssClasses, index));
@@ -53,7 +53,7 @@ export class Bar {
53
53
  }
54
54
  static renderSegmented(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, blockSize, firstBarIndex, barSettings) {
55
55
  const stackedData = getStackedDataWithOwn(data, chart.data.valueFields.map(field => field.name));
56
- let groups = block.getChartGroup(chart.index)
56
+ let groups = block.svg.getChartGroup(chart.index)
57
57
  .selectAll(`g.${this.barSegmentGroupClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
58
58
  .data(stackedData);
59
59
  if (groups.empty())
@@ -68,7 +68,7 @@ export class Bar {
68
68
  .enter()
69
69
  .append('rect')
70
70
  .attr('class', this.barItemClass)
71
- .style('clip-path', `url(#${block.getClipPathId()})`);
71
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`);
72
72
  const barAttrs = BarHelper.getStackedBarAttr(keyAxisOrient, scales, margin, keyField.name, blockSize, BarHelper.getBarIndex(barsAmounts, chart.index) - firstBarIndex, sum(barsAmounts), barSettings);
73
73
  this.fillBarAttrs(bars, barAttrs);
74
74
  this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
@@ -84,7 +84,7 @@ export class Bar {
84
84
  const promises = [];
85
85
  chart.data.valueFields.forEach((valueField, index) => {
86
86
  const indexesOfRemoved = [];
87
- block.getChartGroup(chart.index)
87
+ block.svg.getChartGroup(chart.index)
88
88
  .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${index}`)
89
89
  .filter((d, i) => {
90
90
  if (newData.findIndex(row => row[keyField.name] === d[keyField.name]) === -1) {
@@ -97,7 +97,7 @@ export class Bar {
97
97
  .duration(block.transitionManager.durations.elementFadeOut)
98
98
  .style('opacity', 0)
99
99
  .remove();
100
- const bars = block.getChartGroup(chart.index)
100
+ const bars = block.svg.getChartGroup(chart.index)
101
101
  .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${index}`)
102
102
  .filter(d => newData.findIndex(row => row[keyField.name] === d[keyField.name]) !== -1)
103
103
  .style('opacity', 1)
@@ -106,7 +106,7 @@ export class Bar {
106
106
  .enter()
107
107
  .append('rect')
108
108
  .attr('class', this.barItemClass)
109
- .style('clip-path', `url(#${block.getClipPathId()})`);
109
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`);
110
110
  const barAttrs = BarHelper.getGroupedBarAttrs(keyAxisOrient, scales, margin, keyField.name, valueField.name, blockSize, BarHelper.getBarIndex(barsAmounts, chart.index) + index - firstBarIndex, sum(barsAmounts), barSettings);
111
111
  const prom = this.fillBarAttrs(bars, barAttrs, block.transitionManager.durations.chartUpdate)
112
112
  .then(() => {
@@ -130,14 +130,14 @@ export class Bar {
130
130
  }
131
131
  static updateSegmented(block, newData, scales, margin, keyAxisOrient, chart, blockSize, barsAmounts, keyField, firstBarIndex, barSettings) {
132
132
  const stackedData = getStackedDataWithOwn(newData, chart.data.valueFields.map(field => field.name));
133
- block.getChartGroup(chart.index)
133
+ block.svg.getChartGroup(chart.index)
134
134
  .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
135
135
  .filter(d => newData.findIndex(row => row[keyField.name] === d.data[keyField.name]) === -1)
136
136
  .transition()
137
137
  .duration(block.transitionManager.durations.elementFadeOut)
138
138
  .style('opacity', 0)
139
139
  .remove();
140
- const groups = block.getChartGroup(chart.index)
140
+ const groups = block.svg.getChartGroup(chart.index)
141
141
  .selectAll(`g.${this.barSegmentGroupClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
142
142
  .data(stackedData);
143
143
  const bars = groups
@@ -148,7 +148,7 @@ export class Bar {
148
148
  const newBars = bars.enter()
149
149
  .append('rect')
150
150
  .attr('class', this.barItemClass)
151
- .style('clip-path', `url(#${block.getClipPathId()})`);
151
+ .style('clip-path', `url(#${block.svg.getClipPathId()})`);
152
152
  const barAttrs = BarHelper.getStackedBarAttr(keyAxisOrient, scales, margin, keyField.name, blockSize, BarHelper.getBarIndex(barsAmounts, chart.index) - firstBarIndex, sum(barsAmounts), barSettings);
153
153
  const prom = this.fillBarAttrs(bars, barAttrs, block.transitionManager.durations.chartUpdate)
154
154
  .then(() => {
@@ -10,7 +10,7 @@ export declare class Line {
10
10
  private static renderGrouped;
11
11
  private static renderSegmented;
12
12
  private static updateGrouped;
13
- private static updateSegmeneted;
13
+ private static updateSegmented;
14
14
  private static updateGroupedPath;
15
15
  private static updateSegmentedPath;
16
16
  private static setSegmentColor;