mdt-charts 1.16.1 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -45,7 +45,7 @@ interface BasicOptions {
45
45
  interface GraphicNotationOptions extends BasicOptions {
46
46
  data: DataOptions;
47
47
  legend: Legend;
48
- title?: string;
48
+ title?: Title;
49
49
  selectable: boolean;
50
50
  }
51
51
  export interface MdtChartsTwoDimensionalOptions extends GraphicNotationOptions {
@@ -69,6 +69,13 @@ export interface MdtChartsIntervalOptions extends GraphicNotationOptions {
69
69
  export interface Legend {
70
70
  show: boolean;
71
71
  }
72
+ export interface TitleFunctionParams {
73
+ data: MdtChartsDataRow[];
74
+ }
75
+ export interface TitleFunction {
76
+ (params: TitleFunctionParams): string;
77
+ }
78
+ export declare type Title = string | TitleFunction;
72
79
  export interface MdtChartsBasicDataOptions {
73
80
  dataSource: string;
74
81
  }
@@ -76,6 +76,7 @@ export class Axis {
76
76
  else if (axisOptions.orient === 'top')
77
77
  axisGenerator.tickPadding(-6);
78
78
  }
79
+ axisGenerator.tickFormat(axisOptions.labels.showTick);
79
80
  const axisElement = block.getSvg()
80
81
  .select(`g.${axisOptions.cssClass}`);
81
82
  AxisLabelsEventManager.removeEvents(axisElement);
@@ -2,7 +2,9 @@ import { Size } from '../../../config/config';
2
2
  import { TitleBlockModel } from "../../../model/model";
3
3
  import { Block } from "../../block/block";
4
4
  export declare class Title {
5
+ private static readonly titleCssClass;
5
6
  static render(block: Block, text: string, titleBlockModel: TitleBlockModel, blockSize: Size): void;
7
+ static updateData(text: string): void;
6
8
  private static fillTitleBlockAttributes;
7
9
  private static getTitleAttributes;
8
10
  private static setTitleTooltip;
@@ -1,3 +1,4 @@
1
+ import { select } from 'd3-selection';
1
2
  import { DomHelper } from '../../helpers/domHelper';
2
3
  export class Title {
3
4
  static render(block, text, titleBlockModel, blockSize) {
@@ -5,11 +6,14 @@ export class Title {
5
6
  return;
6
7
  const titleBlock = block.getSvg()
7
8
  .append('text')
8
- .attr('class', 'chart-title');
9
+ .attr('class', this.titleCssClass);
9
10
  const titleCoordinate = this.getTitleAttributes(blockSize, titleBlockModel);
10
11
  this.fillTitleBlockAttributes(titleBlock, titleCoordinate, text);
11
12
  this.setTitleTooltip(titleBlock, text);
12
13
  }
14
+ static updateData(text) {
15
+ select(`.${this.titleCssClass}`).text(text);
16
+ }
13
17
  static fillTitleBlockAttributes(titleBlock, attributes, text) {
14
18
  titleBlock
15
19
  .attr('x', attributes.x)
@@ -35,3 +39,4 @@ export class Title {
35
39
  .text(text);
36
40
  }
37
41
  }
42
+ Title.titleCssClass = 'chart-title';
@@ -29,6 +29,7 @@ export class PolarManager {
29
29
  block.transitionManager.interruptTransitions();
30
30
  block.removeMouseEvents();
31
31
  block.filterEventManager.updateData(data[model.options.data.dataSource]);
32
+ Title.updateData(model.options.title);
32
33
  ElementHighlighter.removeDonutArcClones(block);
33
34
  ElementHighlighter.removeFilter(Donut.getAllArcGroups(block));
34
35
  ElementHighlighter.toggleActivityStyle(Donut.getAllArcGroups(block), true);
@@ -42,6 +42,7 @@ export class TwoDimensionalManager {
42
42
  updateData(block, model, data) {
43
43
  block.transitionManager.interruptTransitions();
44
44
  block.filterEventManager.updateData(data[model.options.data.dataSource]);
45
+ Title.updateData(model.options.title);
45
46
  TipBox.clearEvents(block);
46
47
  Tooltip.hide(block);
47
48
  const options = model.options;
@@ -1,4 +1,6 @@
1
1
  import { TitleBlockModel } from "../model";
2
+ import { MdtChartsDataRow, Title } from "../../config/config";
3
+ export declare const getResolvedTitle: (title: Title, dataRows: MdtChartsDataRow[]) => string;
2
4
  export declare class TitleModel {
3
5
  static getTitleModel(titleText: string): TitleBlockModel;
4
6
  }
@@ -1,3 +1,8 @@
1
+ export const getResolvedTitle = (title, dataRows) => {
2
+ return typeof title === 'function'
3
+ ? title({ data: dataRows })
4
+ : title;
5
+ };
1
6
  export class TitleModel {
2
7
  static getTitleModel(titleText) {
3
8
  const defaultPads = 20;
@@ -6,6 +6,7 @@ import { OtherComponentsModel } from './featuresModel/otherComponents';
6
6
  import { ConfigValidator } from './configsValidator/configValidator';
7
7
  import { ModelInstance } from './modelInstance/modelInstance';
8
8
  import { TwoDimConfigReader } from './modelInstance/configReader';
9
+ import { getResolvedTitle } from "../model/featuresModel/titleModel";
9
10
  export var AxisType;
10
11
  (function (AxisType) {
11
12
  AxisType[AxisType["Key"] = 0] = "Key";
@@ -67,6 +68,8 @@ function getTransitions(designerConfig) {
67
68
  }
68
69
  export function assembleModel(config, data, designerConfig) {
69
70
  const modelInstance = ModelInstance.create(config, data, designerConfig);
71
+ const dataRows = modelInstance.dataModel.repository.getRawRows();
72
+ const resolvedTitle = getResolvedTitle(config.options.title, dataRows);
70
73
  if (!data || Object.keys(data).length === 0)
71
74
  return {
72
75
  blockCanvas: getBlockCanvas(config, modelInstance),
@@ -79,7 +82,7 @@ export function assembleModel(config, data, designerConfig) {
79
82
  const otherComponents = OtherComponentsModel.getOtherComponentsModel({
80
83
  elementsOptions: designerConfig.elementsOptions,
81
84
  legendConfig: designerConfig.canvas.legendBlock,
82
- title: config.options.title
85
+ title: resolvedTitle
83
86
  }, modelInstance);
84
87
  const marginModel = new MarginModel(designerConfig, config);
85
88
  marginModel.initMargin(otherComponents, modelInstance);
@@ -1,12 +1,15 @@
1
1
  import { ChartStyleModelService } from "../../chartStyleModel/chartStyleModel";
2
2
  import { DonutModel } from "./donut/donutModel";
3
+ import { getResolvedTitle } from "../../../model/featuresModel/titleModel";
3
4
  export const MIN_DONUT_BLOCK_SIZE = 120;
4
5
  export class PolarModel {
5
6
  static getOptions(options, designerConfig, modelInstance) {
7
+ const dataRows = modelInstance.dataModel.repository.getRawRows();
8
+ const resolvedTitle = getResolvedTitle(options.title, dataRows);
6
9
  return {
7
10
  type: options.type,
8
11
  selectable: !!options.selectable,
9
- title: options.title,
12
+ title: resolvedTitle,
10
13
  data: Object.assign({}, options.data),
11
14
  charts: this.getChartsModel(options.chart, modelInstance.dataModel.repository.getScopedRows().length, designerConfig.chartStyle),
12
15
  legend: modelInstance.canvasModel.legendCanvas.getModel(),
@@ -4,18 +4,21 @@ import { AxisModel } from "../featuresModel/axisModel";
4
4
  import { ScaleAxisRecalcer } from "../featuresModel/scaleModel/scaleAxisRecalcer";
5
5
  import { ScaleModel } from "../featuresModel/scaleModel/scaleModel";
6
6
  import { getLegendMarkerOptions, parseDashStyles, parseShape } from "./twoDimensional/styles";
7
+ import { getResolvedTitle } from "../../model/featuresModel/titleModel";
7
8
  export class TwoDimensionalModel {
8
9
  static getOptions(configReader, designerConfig, modelInstance) {
9
10
  const options = configReader.options;
10
11
  const canvasModel = modelInstance.canvasModel;
11
12
  const dataModelRep = modelInstance.dataModel.repository;
13
+ const dataRows = dataModelRep.getRawRows();
14
+ const resolvedTitle = getResolvedTitle(options.title, dataRows);
12
15
  const scaleModel = new ScaleModel();
13
16
  const scaleMarginRecalcer = new ScaleAxisRecalcer(() => scaleModel.getScaleLinear(options, dataModelRep.getScopedRows(), canvasModel, configReader));
14
17
  scaleMarginRecalcer.recalculateMargin(canvasModel, options.orientation, options.axis.key);
15
18
  const scaleValueInfo = scaleMarginRecalcer.getScaleValue();
16
19
  return {
17
20
  legend: canvasModel.legendCanvas.getModel(),
18
- title: options.title,
21
+ title: resolvedTitle,
19
22
  selectable: !!options.selectable,
20
23
  orient: options.orientation,
21
24
  scale: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdt-charts",
3
- "version": "1.16.1",
3
+ "version": "1.17.1",
4
4
  "description": "",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {