polymatica-widget 2.0.11 → 2.0.14

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.
@@ -1,19 +1,27 @@
1
+ import { Column } from '../dataset';
1
2
  import { Locale } from '../locale';
2
3
  import { Theme } from '../theme';
3
- import { Dataset, Options } from '../widget';
4
+ import { Dataset, Options, WidgetRenderEnv } from '../widget';
4
5
  export declare enum Input {
5
6
  Change = "poly.input.change",
7
+ ChangeWidgetRenderEnv = "poly.input.changeWidgetRenderEnv",
6
8
  ChangeLang = "poly.input.changeLang",
7
9
  ChangeTheme = "poly.input.changeTheme",
8
- Highlight = "poly.input.highlight"
10
+ Highlight = "poly.input.highlight",
11
+ UnHighlight = "poly.input.unhighlight"
9
12
  }
10
13
  export declare enum Output {
11
14
  Init = "poly.output.init",
12
15
  Ready = "poly.output.ready",
13
16
  Interact = "poly.output.interact"
14
17
  }
15
- export declare type InputDataset = Omit<Dataset, 'interact' | 'events'> & {
18
+ export declare type InputColumn = Omit<Column, 'interact'> & {
19
+ columnId: number;
20
+ };
21
+ export declare type InputDataset = Omit<Dataset, 'columns' | 'columnsByBlock' | 'events'> & {
16
22
  datasetId: number;
23
+ columns: InputColumn[];
24
+ columnsByBlock: Record<string, number[]>;
17
25
  };
18
26
  export interface InputSingleData {
19
27
  readonly dataset: InputDataset;
@@ -33,18 +41,23 @@ export declare type InputRepeatable<T extends InputSingleData | InputMultiData>
33
41
  export declare type InputData = InputSingleData | InputMultiData | InputRepeatable<InputSingleData> | InputRepeatable<InputMultiData>;
34
42
  export interface InputParameter extends Record<Input, any> {
35
43
  [Input.Change]: [InputData, Options];
44
+ [Input.ChangeWidgetRenderEnv]: WidgetRenderEnv;
36
45
  [Input.ChangeLang]: Locale;
37
46
  [Input.ChangeTheme]: Theme;
38
47
  [Input.Highlight]: {
39
48
  datasetId: number;
40
49
  rowIndexArray: number[];
41
50
  };
51
+ [Input.UnHighlight]: {
52
+ datasetId: number;
53
+ };
42
54
  }
43
55
  export interface OutputParameter extends Record<Output, any> {
44
56
  [Output.Init]: void;
45
57
  [Output.Ready]: void;
46
58
  [Output.Interact]: {
47
59
  datasetId: number;
60
+ columnId: number;
48
61
  dataIndex: number;
49
62
  };
50
63
  }
@@ -4,9 +4,11 @@ exports.Output = exports.Input = void 0;
4
4
  var Input;
5
5
  (function (Input) {
6
6
  Input["Change"] = "poly.input.change";
7
+ Input["ChangeWidgetRenderEnv"] = "poly.input.changeWidgetRenderEnv";
7
8
  Input["ChangeLang"] = "poly.input.changeLang";
8
9
  Input["ChangeTheme"] = "poly.input.changeTheme";
9
10
  Input["Highlight"] = "poly.input.highlight";
11
+ Input["UnHighlight"] = "poly.input.unhighlight";
10
12
  })(Input = exports.Input || (exports.Input = {}));
11
13
  var Output;
12
14
  (function (Output) {
package/dataset.d.ts CHANGED
@@ -13,4 +13,5 @@ export interface Column {
13
13
  type: ColumnType;
14
14
  name: string;
15
15
  path: string;
16
+ interact(rowIndex: number): void;
16
17
  }
package/declare.js CHANGED
@@ -35,6 +35,7 @@ function Declare() {
35
35
  }
36
36
  call(instance, 'onChange');
37
37
  });
38
+ input(io_1.Input.ChangeWidgetRenderEnv, value => set(instance, 'renderEnv', value));
38
39
  input(io_1.Input.ChangeLang, lang => {
39
40
  set(instance, 'lang', lang);
40
41
  if (inited)
@@ -84,13 +85,31 @@ function provideTo(widget, source, token) {
84
85
  }
85
86
  }
86
87
  function transform(source, token) {
87
- const { datasetId } = source, slice = __rest(source, ["datasetId"]);
88
- const dataset = Object.assign(Object.assign({}, slice), { interact(dataIndex) {
89
- output(token, io_1.Output.Interact, {
90
- datasetId,
91
- dataIndex,
92
- });
93
- }, events: {
88
+ const { datasetId, columns: sourceColumns, columnsByBlock: sourceColumnsByBlock } = source, slice = __rest(source, ["datasetId", "columns", "columnsByBlock"]);
89
+ const columnsById = new Map();
90
+ const columns = sourceColumns.map((_a) => {
91
+ var { columnId } = _a, source = __rest(_a, ["columnId"]);
92
+ const column = Object.assign(Object.assign({}, source), { interact(rowIndex) {
93
+ output(token, io_1.Output.Interact, {
94
+ datasetId,
95
+ columnId,
96
+ dataIndex: rowIndex,
97
+ });
98
+ } });
99
+ columnsById.set(columnId, column);
100
+ return column;
101
+ });
102
+ const columnsByBlock = {};
103
+ Object.entries(sourceColumnsByBlock).forEach(([blockKey, columnIds]) => {
104
+ columnsByBlock[blockKey] = [];
105
+ columnIds.forEach(id => {
106
+ const column = columnsById.get(id);
107
+ if (column)
108
+ columnsByBlock[blockKey].push(column);
109
+ });
110
+ });
111
+ const dataset = Object.assign(Object.assign({}, slice), { columns,
112
+ columnsByBlock, events: {
94
113
  onHighlight() { },
95
114
  } });
96
115
  datasetMap.set(datasetId, dataset);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polymatica-widget",
3
- "version": "2.0.11",
3
+ "version": "2.0.14",
4
4
  "description": "SDK для создания виджетов для платформы Polymatica",
5
5
  "keywords": [],
6
6
  "license": "ISC",
package/widget.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare abstract class Widget {
5
5
  readonly options: Options;
6
6
  readonly theme: Theme;
7
7
  readonly lang: Locale;
8
+ readonly renderEnv: WidgetRenderEnv;
8
9
  ready(): void;
9
10
  init(): void;
10
11
  abstract onChange(): void;
@@ -33,7 +34,6 @@ export interface Dataset {
33
34
  };
34
35
  rows: DatasetRow[];
35
36
  heatmap: HeatmapItem[];
36
- interact(rowIndex: number): void;
37
37
  events: {
38
38
  onHighlight: (rowIndexArray: number[]) => void;
39
39
  };
@@ -45,3 +45,7 @@ export interface HeatmapItem {
45
45
  export interface Options {
46
46
  [key: string]: any;
47
47
  }
48
+ export declare enum WidgetRenderEnv {
49
+ Default = "default",
50
+ Print = "print"
51
+ }
package/widget.js CHANGED
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Widget = void 0;
3
+ exports.WidgetRenderEnv = exports.Widget = void 0;
4
4
  class Widget {
5
+ constructor() {
6
+ this.renderEnv = WidgetRenderEnv.Default;
7
+ }
5
8
  ready() { }
6
9
  init() { }
7
10
  onThemeChange() { }
8
11
  onLangChange() { }
9
12
  }
10
13
  exports.Widget = Widget;
14
+ var WidgetRenderEnv;
15
+ (function (WidgetRenderEnv) {
16
+ WidgetRenderEnv["Default"] = "default";
17
+ WidgetRenderEnv["Print"] = "print";
18
+ })(WidgetRenderEnv = exports.WidgetRenderEnv || (exports.WidgetRenderEnv = {}));