@operato/chart 2.0.0-beta.25

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 (114) hide show
  1. package/.editorconfig +29 -0
  2. package/.storybook/main.js +3 -0
  3. package/.storybook/preview.js +29 -0
  4. package/.storybook/server.mjs +8 -0
  5. package/CHANGELOG.md +17 -0
  6. package/README.md +0 -0
  7. package/assets/images/icon-editor-gradient-direction.png +0 -0
  8. package/assets/images/icon-properties-label.png +0 -0
  9. package/assets/images/icon-properties-line-type.png +0 -0
  10. package/assets/images/icon-properties-table.png +0 -0
  11. package/assets/images/no-image.png +0 -0
  12. package/demo/index.html +33 -0
  13. package/dist/src/chartjs/config-converter.d.ts +29 -0
  14. package/dist/src/chartjs/config-converter.js +218 -0
  15. package/dist/src/chartjs/config-converter.js.map +1 -0
  16. package/dist/src/chartjs/ox-chart-js.d.ts +17 -0
  17. package/dist/src/chartjs/ox-chart-js.js +46 -0
  18. package/dist/src/chartjs/ox-chart-js.js.map +1 -0
  19. package/dist/src/editors/configurer.d.ts +52 -0
  20. package/dist/src/editors/configurer.js +198 -0
  21. package/dist/src/editors/configurer.js.map +1 -0
  22. package/dist/src/editors/index.d.ts +6 -0
  23. package/dist/src/editors/index.js +8 -0
  24. package/dist/src/editors/index.js.map +1 -0
  25. package/dist/src/editors/input-chart-abstract.d.ts +27 -0
  26. package/dist/src/editors/input-chart-abstract.js +273 -0
  27. package/dist/src/editors/input-chart-abstract.js.map +1 -0
  28. package/dist/src/editors/input-chart-multi-series-abstract.d.ts +17 -0
  29. package/dist/src/editors/input-chart-multi-series-abstract.js +418 -0
  30. package/dist/src/editors/input-chart-multi-series-abstract.js.map +1 -0
  31. package/dist/src/editors/input-chart-styles.d.ts +1 -0
  32. package/dist/src/editors/input-chart-styles.js +167 -0
  33. package/dist/src/editors/input-chart-styles.js.map +1 -0
  34. package/dist/src/editors/ox-input-chart-hbar.d.ts +11 -0
  35. package/dist/src/editors/ox-input-chart-hbar.js +220 -0
  36. package/dist/src/editors/ox-input-chart-hbar.js.map +1 -0
  37. package/dist/src/editors/ox-input-chart-mixed.d.ts +8 -0
  38. package/dist/src/editors/ox-input-chart-mixed.js +237 -0
  39. package/dist/src/editors/ox-input-chart-mixed.js.map +1 -0
  40. package/dist/src/editors/ox-input-chart-pie.d.ts +11 -0
  41. package/dist/src/editors/ox-input-chart-pie.js +67 -0
  42. package/dist/src/editors/ox-input-chart-pie.js.map +1 -0
  43. package/dist/src/editors/ox-input-chart-radar.d.ts +8 -0
  44. package/dist/src/editors/ox-input-chart-radar.js +52 -0
  45. package/dist/src/editors/ox-input-chart-radar.js.map +1 -0
  46. package/dist/src/editors/ox-property-editor-chart.d.ts +10 -0
  47. package/dist/src/editors/ox-property-editor-chart.js +79 -0
  48. package/dist/src/editors/ox-property-editor-chart.js.map +1 -0
  49. package/dist/src/index.d.ts +0 -0
  50. package/dist/src/index.js +2 -0
  51. package/dist/src/index.js.map +1 -0
  52. package/dist/src/scichart/ox-scichart.d.ts +35 -0
  53. package/dist/src/scichart/ox-scichart.js +122 -0
  54. package/dist/src/scichart/ox-scichart.js.map +1 -0
  55. package/dist/src/scichart/scichart-builder.d.ts +8 -0
  56. package/dist/src/scichart/scichart-builder.js +46 -0
  57. package/dist/src/scichart/scichart-builder.js.map +1 -0
  58. package/dist/stories/common.d.ts +2 -0
  59. package/dist/stories/common.js +44 -0
  60. package/dist/stories/common.js.map +1 -0
  61. package/dist/stories/ox-input-chart-hbar.stories.d.ts +25 -0
  62. package/dist/stories/ox-input-chart-hbar.stories.js +171 -0
  63. package/dist/stories/ox-input-chart-hbar.stories.js.map +1 -0
  64. package/dist/stories/ox-input-chart-mixed.stories.d.ts +25 -0
  65. package/dist/stories/ox-input-chart-mixed.stories.js +180 -0
  66. package/dist/stories/ox-input-chart-mixed.stories.js.map +1 -0
  67. package/dist/stories/ox-input-chart-pie.stories.d.ts +27 -0
  68. package/dist/stories/ox-input-chart-pie.stories.js +111 -0
  69. package/dist/stories/ox-input-chart-pie.stories.js.map +1 -0
  70. package/dist/stories/ox-input-chart-radar.stories.d.ts +27 -0
  71. package/dist/stories/ox-input-chart-radar.stories.js +122 -0
  72. package/dist/stories/ox-input-chart-radar.stories.js.map +1 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -0
  74. package/package.json +104 -0
  75. package/src/chartjs/config-converter.ts +307 -0
  76. package/src/chartjs/ox-chart-js.ts +46 -0
  77. package/src/editors/configurer.ts +243 -0
  78. package/src/editors/index.ts +8 -0
  79. package/src/editors/input-chart-abstract.ts +315 -0
  80. package/src/editors/input-chart-multi-series-abstract.ts +429 -0
  81. package/src/editors/input-chart-styles.ts +167 -0
  82. package/src/editors/ox-input-chart-hbar.ts +226 -0
  83. package/src/editors/ox-input-chart-mixed.ts +240 -0
  84. package/src/editors/ox-input-chart-pie.ts +75 -0
  85. package/src/editors/ox-input-chart-radar.ts +54 -0
  86. package/src/editors/ox-property-editor-chart.ts +79 -0
  87. package/src/globat.d.ts +1 -0
  88. package/src/index.ts +0 -0
  89. package/src/scichart/ox-scichart.ts +143 -0
  90. package/src/scichart/scichart-builder.ts +87 -0
  91. package/src/types.d.ts +74 -0
  92. package/stories/common.ts +47 -0
  93. package/stories/ox-input-chart-hbar.stories.ts +185 -0
  94. package/stories/ox-input-chart-mixed.stories.ts +194 -0
  95. package/stories/ox-input-chart-pie.stories.ts +126 -0
  96. package/stories/ox-input-chart-radar.stories.ts +137 -0
  97. package/themes/dark-hc.css +151 -0
  98. package/themes/dark-mc.css +151 -0
  99. package/themes/dark.css +151 -0
  100. package/themes/grist-theme.css +177 -0
  101. package/themes/light-hc.css +151 -0
  102. package/themes/light-mc.css +151 -0
  103. package/themes/light.css +151 -0
  104. package/themes/md-typescale-styles.css +100 -0
  105. package/themes/spacing.css +43 -0
  106. package/themes/state-color.css +6 -0
  107. package/translations/en.json +44 -0
  108. package/translations/ja.json +44 -0
  109. package/translations/ko.json +44 -0
  110. package/translations/ms.json +8 -0
  111. package/translations/zh.json +44 -0
  112. package/tsconfig.json +24 -0
  113. package/web-dev-server.config.mjs +27 -0
  114. package/web-test-runner.config.mjs +41 -0
@@ -0,0 +1,198 @@
1
+ export class Configurer {
2
+ constructor(value, initializer) {
3
+ this.currentSeriesIndex = 0;
4
+ this.initializer = initializer;
5
+ this.value = value || initializer.call(this);
6
+ }
7
+ setCurrentSeriesIndex(currentSeriesIndex) {
8
+ this.currentSeriesIndex = currentSeriesIndex;
9
+ this.series = this.datasets[this.currentSeriesIndex];
10
+ }
11
+ get series() {
12
+ console.log('series', this.datasets[this.currentSeriesIndex]);
13
+ return this.datasets[this.currentSeriesIndex];
14
+ }
15
+ set series(series) {
16
+ if (!this.data) {
17
+ this.config.data = { datasets: [series] };
18
+ }
19
+ else {
20
+ this.datasets[this.currentSeriesIndex] = series;
21
+ }
22
+ }
23
+ get config() {
24
+ if (!this.value) {
25
+ this.value = this.initializer.call(this);
26
+ }
27
+ return this.value;
28
+ }
29
+ get data() {
30
+ return this.config.data;
31
+ }
32
+ set data(data) {
33
+ this.config.data = data;
34
+ }
35
+ get datasets() {
36
+ if (!this.data.datasets) {
37
+ this.data.datasets = [];
38
+ }
39
+ return this.data.datasets;
40
+ }
41
+ set datasets(datasets) {
42
+ this.datasets = datasets;
43
+ }
44
+ set dataKey(key) {
45
+ if (this.series) {
46
+ this.series.dataKey = key;
47
+ }
48
+ }
49
+ get dataKey() {
50
+ return this.series.dataKey;
51
+ }
52
+ get legend() {
53
+ !this.config.options && (this.config.options = {});
54
+ return this.config.options.legend;
55
+ }
56
+ set legend(legend) {
57
+ if (!this.config.options) {
58
+ this.config.options = {};
59
+ }
60
+ this.config.options.legend = legend;
61
+ }
62
+ get theme() {
63
+ return this.config.options && this.config.options.theme;
64
+ }
65
+ set theme(theme) {
66
+ !this.config.options && (this.config.options = {});
67
+ this.config.options.theme = theme;
68
+ }
69
+ get tooltip() {
70
+ return !this.config.options || this.config.options.tooltip !== false;
71
+ }
72
+ set tooltip(tooltip) {
73
+ if (!this.config.options) {
74
+ this.config.options = {};
75
+ }
76
+ this.config.options.tooltip = tooltip;
77
+ }
78
+ get animation() {
79
+ return !this.config.options || this.config.options.animation !== false;
80
+ }
81
+ set animation(animation) {
82
+ if (!this.config.options) {
83
+ this.config.options = {};
84
+ }
85
+ this.config.options.animation = animation;
86
+ }
87
+ get scales() {
88
+ if (!this.config.options) {
89
+ this.config.options = {};
90
+ }
91
+ return this.config.options.scales;
92
+ }
93
+ set scales(scales) {
94
+ !this.config.options && (this.config.options = {});
95
+ this.config.options.scales = scales;
96
+ }
97
+ get display() {
98
+ return this.legend && this.legend.display;
99
+ }
100
+ set display(display) {
101
+ if (!this.legend) {
102
+ this.legend = {};
103
+ }
104
+ this.legend.display = display;
105
+ }
106
+ get position() {
107
+ if (!this.legend) {
108
+ this.legend = {};
109
+ }
110
+ return this.legend.position;
111
+ }
112
+ set position(position) {
113
+ if (!this.legend) {
114
+ this.legend = {};
115
+ }
116
+ this.legend.position = position;
117
+ }
118
+ get stacked() {
119
+ if (!this.config.options) {
120
+ this.config.options = {};
121
+ }
122
+ return this.config.options.stacked;
123
+ }
124
+ set stacked(stacked) {
125
+ if (!this.config.options) {
126
+ this.config.options = {};
127
+ }
128
+ this.config.options.stacked = stacked;
129
+ }
130
+ get labelDataKey() {
131
+ return this.data && this.data.labelDataKey;
132
+ }
133
+ set labelDataKey(labelDataKey) {
134
+ this.data.labelDataKey = labelDataKey;
135
+ }
136
+ set options(options) {
137
+ this.config.options = options;
138
+ }
139
+ get options() {
140
+ return this.config.options;
141
+ }
142
+ get color() {
143
+ var oldVersionColor = this.series.backgroundColor;
144
+ if (this.series.type == 'line')
145
+ oldVersionColor = this.series.borderColor;
146
+ if (this.series.type == 'radar')
147
+ oldVersionColor = this.series.borderColor;
148
+ return this.series.color || oldVersionColor;
149
+ }
150
+ set color(color) {
151
+ this.series.color = color; // Array.isArray(color) ? color[0] : color
152
+ delete this.series.backgroundColor;
153
+ delete this.series.borderColor;
154
+ }
155
+ get xAxes0() {
156
+ return this.scales.xAxes[0];
157
+ }
158
+ set xAxes0(xAxes0) {
159
+ this.scales.xAxes[0] = xAxes0;
160
+ }
161
+ get yAxes0() {
162
+ return this.scales.yAxes[0];
163
+ }
164
+ set yAxes0(yAxes0) {
165
+ this.scales.yAxes[0] = yAxes0;
166
+ }
167
+ get yAxes1() {
168
+ return this.scales.yAxes[1];
169
+ }
170
+ set yAxes1(yAxes1) {
171
+ this.scales.yAxes[1] = yAxes1;
172
+ }
173
+ get multiAxis() {
174
+ return this.config.options.multiAxis;
175
+ }
176
+ set multiAxis(multiAxis) {
177
+ this.config.options.multiAxis = multiAxis;
178
+ }
179
+ get valuePrefix() {
180
+ return this.series.valuePrefix;
181
+ }
182
+ set valuePrefix(valuePrefix) {
183
+ this.series.valuePrefix = valuePrefix;
184
+ }
185
+ get valueSuffix() {
186
+ return this.series.valueSuffix;
187
+ }
188
+ set valueSuffix(valueSuffix) {
189
+ this.series.valueSuffix = valueSuffix;
190
+ }
191
+ get displayValue() {
192
+ return this.series.displayValue;
193
+ }
194
+ set displayValue(displayValue) {
195
+ this.series.displayValue = displayValue;
196
+ }
197
+ }
198
+ //# sourceMappingURL=configurer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurer.js","sourceRoot":"","sources":["../../../src/editors/configurer.ts"],"names":[],"mappings":"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","sourcesContent":["export class Configurer {\n public value: OperatoChart.ChartConfig\n public currentSeriesIndex: number = 0\n public initializer: () => OperatoChart.ChartConfig\n\n constructor(value: OperatoChart.ChartConfig | null, initializer: () => OperatoChart.ChartConfig) {\n this.initializer = initializer\n this.value = value || initializer.call(this)\n }\n\n setCurrentSeriesIndex(currentSeriesIndex: number) {\n this.currentSeriesIndex = currentSeriesIndex\n this.series = this.datasets[this.currentSeriesIndex]!\n }\n\n get series() {\n console.log('series', this.datasets[this.currentSeriesIndex]!)\n return this.datasets[this.currentSeriesIndex]!\n }\n\n set series(series) {\n if (!this.data) {\n this.config.data = { datasets: [series] }\n } else {\n this.datasets[this.currentSeriesIndex] = series\n }\n }\n\n get config() {\n if (!this.value) {\n this.value = this.initializer.call(this)\n }\n return this.value\n }\n\n get data() {\n return this.config.data\n }\n\n set data(data) {\n this.config.data = data\n }\n\n get datasets() {\n if (!this.data.datasets) {\n this.data.datasets = []\n }\n return this.data.datasets\n }\n\n set datasets(datasets) {\n this.datasets = datasets\n }\n\n set dataKey(key) {\n if (this.series) {\n this.series!.dataKey = key\n }\n }\n\n get dataKey() {\n return this.series.dataKey\n }\n\n get legend() {\n !this.config.options && (this.config.options = {})\n return this.config.options.legend\n }\n\n set legend(legend) {\n if (!this.config.options) {\n this.config.options = {}\n }\n this.config.options.legend = legend\n }\n\n get theme() {\n return this.config.options && this.config.options.theme\n }\n\n set theme(theme) {\n !this.config.options && (this.config.options = {})\n this.config.options.theme = theme\n }\n\n get tooltip() {\n return !this.config.options || this.config.options.tooltip !== false\n }\n\n set tooltip(tooltip) {\n if (!this.config.options) {\n this.config.options = {}\n }\n this.config.options.tooltip = tooltip\n }\n\n get animation() {\n return !this.config.options || this.config.options.animation !== false\n }\n\n set animation(animation) {\n if (!this.config.options) {\n this.config.options = {}\n }\n this.config.options.animation = animation\n }\n\n get scales() {\n if (!this.config.options) {\n this.config.options = {}\n }\n return this.config.options.scales\n }\n\n set scales(scales) {\n !this.config.options && (this.config.options = {})\n this.config.options.scales = scales\n }\n\n get display() {\n return this.legend && this.legend.display\n }\n\n set display(display) {\n if (!this.legend) {\n this.legend = {}\n }\n this.legend.display = display\n }\n\n get position() {\n if (!this.legend) {\n this.legend = {}\n }\n return this.legend.position\n }\n\n set position(position) {\n if (!this.legend) {\n this.legend = {}\n }\n this.legend.position = position\n }\n\n get stacked() {\n if (!this.config.options) {\n this.config.options = {}\n }\n return this.config.options.stacked\n }\n\n set stacked(stacked) {\n if (!this.config.options) {\n this.config.options = {}\n }\n this.config.options.stacked = stacked\n }\n\n get labelDataKey() {\n return this.data && this.data.labelDataKey\n }\n\n set labelDataKey(labelDataKey) {\n this.data.labelDataKey = labelDataKey\n }\n\n set options(options) {\n this.config.options = options\n }\n\n get options() {\n return this.config.options\n }\n\n get color() {\n var oldVersionColor = this.series.backgroundColor\n if (this.series.type == 'line') oldVersionColor = this.series.borderColor\n if (this.series.type == 'radar') oldVersionColor = this.series.borderColor\n return this.series.color || oldVersionColor\n }\n\n set color(color) {\n this.series.color = color // Array.isArray(color) ? color[0] : color\n delete this.series.backgroundColor\n delete this.series.borderColor\n }\n\n get xAxes0() {\n return this.scales!.xAxes![0]\n }\n\n set xAxes0(xAxes0) {\n this.scales!.xAxes![0] = xAxes0\n }\n\n get yAxes0() {\n return this.scales!.yAxes![0]\n }\n\n set yAxes0(yAxes0) {\n this.scales!.yAxes![0] = yAxes0\n }\n\n get yAxes1() {\n return this.scales!.yAxes![1]\n }\n\n set yAxes1(yAxes1) {\n this.scales!.yAxes![1] = yAxes1\n }\n\n get multiAxis() {\n return this.config.options!.multiAxis\n }\n\n set multiAxis(multiAxis) {\n this.config.options!.multiAxis = multiAxis\n }\n\n get valuePrefix() {\n return this.series.valuePrefix\n }\n\n set valuePrefix(valuePrefix) {\n this.series.valuePrefix = valuePrefix\n }\n\n get valueSuffix() {\n return this.series.valueSuffix\n }\n\n set valueSuffix(valueSuffix) {\n this.series.valueSuffix = valueSuffix\n }\n\n get displayValue() {\n return this.series.displayValue\n }\n\n set displayValue(displayValue) {\n this.series.displayValue = displayValue\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import './ox-property-editor-chart';
2
+ declare const _default: {
3
+ type: string;
4
+ element: string;
5
+ }[];
6
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import './ox-property-editor-chart';
2
+ export default [
3
+ {
4
+ type: 'chart',
5
+ element: 'property-editor-chart'
6
+ }
7
+ ];
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editors/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAA;AAEnC,eAAe;IACb;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,uBAAuB;KACjC;CACF,CAAA","sourcesContent":["import './ox-property-editor-chart'\n\nexport default [\n {\n type: 'chart',\n element: 'property-editor-chart'\n }\n]\n"]}
@@ -0,0 +1,27 @@
1
+ import '@operato/i18n/ox-i18n.js';
2
+ import { TinyColor } from '@ctrl/tinycolor';
3
+ import { Configurer } from './configurer';
4
+ import { OxFormField } from '@operato/input';
5
+ export declare class InputChartAbstract extends OxFormField {
6
+ static styles: import("lit").CSSResult[];
7
+ value: OperatoChart.ChartConfig | null;
8
+ configurer: Configurer;
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ connectedCallback(): void;
11
+ displayValueTemplate(): import("lit-html").TemplateResult<1>;
12
+ subTemplate(): import("lit-html").TemplateResult<1>;
13
+ getChartType(): 'bar' | 'horizontalBar' | 'line' | 'radar' | 'pie' | 'mixed';
14
+ getDefaultDatasets(): OperatoChart.Dataset[];
15
+ getDefaultDataset(seriesType: 'bar' | 'horizontalBar' | 'line' | 'radar' | 'pie'): OperatoChart.Dataset;
16
+ getDefaultChartConfig(type: 'bar' | 'horizontalBar' | 'line' | 'radar' | 'pie' | 'mixed', datasets?: OperatoChart.Dataset[]): OperatoChart.ChartConfig;
17
+ getDefaultAxisOptions(): OperatoChart.AxisOptions;
18
+ onValuesChanged(e: Event): void;
19
+ onTapAddTab(e: Event): void;
20
+ onTapRemoveCurrentTab(e: Event): void;
21
+ _getSeriesModel({ chartType, datasetsLength, lastSeriesColor }: {
22
+ chartType: string;
23
+ datasetsLength: number;
24
+ lastSeriesColor: TinyColor;
25
+ }): any;
26
+ _getElementValue(element: HTMLElement): any;
27
+ }
@@ -0,0 +1,273 @@
1
+ import { __decorate } from "tslib";
2
+ import '@operato/i18n/ox-i18n.js';
3
+ import { html } from 'lit';
4
+ import { property } from 'lit/decorators.js';
5
+ import { random as randomColor, TinyColor } from '@ctrl/tinycolor';
6
+ import { InputChartStyles } from './input-chart-styles';
7
+ import { Configurer } from './configurer';
8
+ import { OxFormField } from '@operato/input';
9
+ export class InputChartAbstract extends OxFormField {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.value = null;
13
+ this.configurer = new Configurer(this.value || null, () => {
14
+ return this.getDefaultChartConfig(this.getChartType(), this.getDefaultDatasets());
15
+ });
16
+ }
17
+ static { this.styles = [InputChartStyles]; }
18
+ render() {
19
+ const configurer = this.configurer;
20
+ return html `
21
+ <legend><ox-i18n msgid="label.chart">Chart</ox-i18n></legend>
22
+
23
+ <label for="theme"> <ox-i18n msgid="label.theme">Theme</ox-i18n> </label>
24
+ <select id="theme" value-key="theme" class="select-content" .value=${configurer.theme || ''}>
25
+ <option value="dark">dark</option>
26
+ <option value="light">light</option>
27
+ </select>
28
+
29
+ <input id="tooltip" type="checkbox" value-key="tooltip" ?checked=${configurer.tooltip} />
30
+ <label for="tooltip"> <ox-i18n msgid="label.tooltip">Tooltip</ox-i18n> </label>
31
+
32
+ <input id="animation" type="checkbox" value-key="animation" ?checked=${configurer.animation} />
33
+ <label for="animation"> <ox-i18n msgid="label.animation">Animation</ox-i18n> </label>
34
+
35
+ <input id="display" type="checkbox" value-key="display" ?checked=${configurer.display} />
36
+ <label for="display"> <ox-i18n msgid="label.legend">Legend</ox-i18n> </label>
37
+
38
+ <input id="stacked" type="checkbox" value-key="stacked" ?checked=${configurer.stacked} />
39
+ <label for="stacked"> <ox-i18n msgid="label.stacked">Stacked</ox-i18n> </label>
40
+
41
+ ${configurer.display
42
+ ? html `
43
+ <label for="position"> <ox-i18n msgid="label.position">Position</ox-i18n> </label>
44
+ <select id="position" value-key="position" class="select-content" .value=${configurer.position || ''}>
45
+ <option value="top">top</option>
46
+ <option value="right">right</option>
47
+ <option value="bottom">bottom</option>
48
+ <option value="left">left</option>
49
+ </select>
50
+ `
51
+ : html ``}
52
+ ${this.subTemplate()}
53
+ `;
54
+ }
55
+ connectedCallback() {
56
+ super.connectedCallback();
57
+ this.renderRoot.addEventListener('change', this.onValuesChanged.bind(this));
58
+ }
59
+ displayValueTemplate() {
60
+ const configurer = this.configurer;
61
+ return html `
62
+ <label for="value-prefix"> <ox-i18n msgid="label.value-prefix">Value Prefix</ox-i18n> </label>
63
+ <input
64
+ id="value-prefix"
65
+ type="text"
66
+ value-key="series.valuePrefix"
67
+ .value=${configurer.series.valuePrefix || ''}
68
+ />
69
+
70
+ <label for="value-suffix"> <ox-i18n msgid="label.value-suffix">Value Suffix</ox-i18n> </label>
71
+ <input
72
+ id="value-suffix"
73
+ type="text"
74
+ value-key="series.valueSuffix"
75
+ .value=${configurer.series.valueSuffix || ''}
76
+ />
77
+
78
+ <input
79
+ id="display-value"
80
+ type="checkbox"
81
+ value-key="series.displayValue"
82
+ ?checked=${!!configurer.series.displayValue}
83
+ />
84
+ <label for="display-value"> <ox-i18n msgid="label.value-display">Value Display</ox-i18n> </label>
85
+
86
+ ${configurer.series.displayValue
87
+ ? html `
88
+ <label for="font-color"> <ox-i18n msgid="label.font-color">Font Color</ox-i18n> </label>
89
+ <ox-input-color
90
+ id="font-color"
91
+ value-key="series.defaultFontColor"
92
+ .value=${configurer.series.defaultFontColor || '#000'}
93
+ ></ox-input-color>
94
+ <label for="font-size"> <ox-i18n msgid="label.font-size">Font Size</ox-i18n> </label>
95
+ <input
96
+ id="font-size"
97
+ type="number"
98
+ value-key="series.defaultFontSize"
99
+ value=${configurer.series.defaultFontSize || 10}
100
+ />
101
+ <label for="data-label-anchor"> <ox-i18n msgid="label.position">Position</ox-i18n> </label>
102
+ <select
103
+ id="data-label-anchor"
104
+ value-key="series.dataLabelAnchor"
105
+ value=${configurer.series.dataLabelAnchor || 'center'}
106
+ >
107
+ <option value="start">Start</option>
108
+ <option value="center" selected>Center</option>
109
+ <option value="end">End</option>
110
+ </select>
111
+ `
112
+ : html ``}
113
+ `;
114
+ }
115
+ subTemplate() {
116
+ return html ``;
117
+ }
118
+ getChartType() {
119
+ return 'bar';
120
+ }
121
+ getDefaultDatasets() {
122
+ return [this.getDefaultDataset('bar')];
123
+ }
124
+ getDefaultDataset(seriesType) {
125
+ return {
126
+ label: 'Series 1',
127
+ data: [],
128
+ borderWidth: 1,
129
+ dataKey: '',
130
+ yAxisID: 'left',
131
+ color: '#000',
132
+ backgroundColor: '#FFFFFF',
133
+ type: seriesType,
134
+ stack: '',
135
+ fill: false,
136
+ lineTension: 0.4,
137
+ pointStyle: 'circle',
138
+ pointRadius: 3,
139
+ valuePrefix: '',
140
+ valueSuffix: '',
141
+ displayValue: false
142
+ };
143
+ }
144
+ getDefaultChartConfig(type, datasets) {
145
+ return {
146
+ data: {
147
+ datasets: datasets || [],
148
+ labelDataKey: ''
149
+ },
150
+ options: {
151
+ theme: 'light',
152
+ tooltip: true,
153
+ animation: true,
154
+ legend: {
155
+ display: true,
156
+ position: 'top'
157
+ },
158
+ scales: {
159
+ xAxes: [this.getDefaultAxisOptions()],
160
+ yAxes: [this.getDefaultAxisOptions()]
161
+ },
162
+ stacked: false,
163
+ xGridLine: true,
164
+ yGridLine: true,
165
+ y2ndGridLine: false,
166
+ multiAxis: false
167
+ },
168
+ type
169
+ };
170
+ }
171
+ getDefaultAxisOptions() {
172
+ return {
173
+ axisTitle: '',
174
+ barSpacing: 0,
175
+ categorySpacing: 0,
176
+ barPercentage: 0.9,
177
+ ticks: {
178
+ display: true,
179
+ autoMin: true,
180
+ autoMax: true,
181
+ min: undefined,
182
+ max: undefined,
183
+ stepSize: undefined
184
+ }
185
+ };
186
+ }
187
+ onValuesChanged(e) {
188
+ e.stopPropagation();
189
+ const element = e.target;
190
+ let key = element.getAttribute('value-key');
191
+ let value = element.value;
192
+ if (!key) {
193
+ return;
194
+ }
195
+ value = this._getElementValue(element);
196
+ const attrs = key.split('.');
197
+ let attr = attrs.shift() || '';
198
+ let variable = this.configurer;
199
+ while (attrs.length > 0) {
200
+ variable = variable[attr];
201
+ attr = attrs.shift() || '';
202
+ }
203
+ variable[attr] = value;
204
+ this.value = { ...this.configurer.value };
205
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
206
+ this.requestUpdate();
207
+ }
208
+ onTapAddTab(e) {
209
+ const configurer = this.configurer;
210
+ if (!configurer.config.data.datasets)
211
+ return;
212
+ const lastSeriesIndex = configurer.config.data.datasets.length;
213
+ const chartType = configurer.series.type || configurer.config.type;
214
+ const color = configurer.datasets[lastSeriesIndex - 1]?.backgroundColor;
215
+ const lastSeriesColor = new TinyColor(Array.isArray(color) ? color[0] : color);
216
+ const seriesModel = this._getSeriesModel({
217
+ chartType: chartType,
218
+ datasetsLength: lastSeriesIndex,
219
+ lastSeriesColor
220
+ });
221
+ configurer.config.data.datasets.push(seriesModel);
222
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
223
+ configurer.currentSeriesIndex = lastSeriesIndex;
224
+ this.value = { ...this.configurer.value };
225
+ }
226
+ onTapRemoveCurrentTab(e) {
227
+ const configurer = this.configurer;
228
+ if (!configurer.config.data.datasets)
229
+ return;
230
+ let currIndex = configurer.currentSeriesIndex;
231
+ this.configurer.data.datasets.splice(currIndex, 1);
232
+ currIndex--;
233
+ if (currIndex < 0)
234
+ currIndex = 0;
235
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
236
+ configurer.currentSeriesIndex = currIndex;
237
+ this.requestUpdate();
238
+ }
239
+ _getSeriesModel({ chartType, datasetsLength, lastSeriesColor }) {
240
+ const addSeriesOption = {
241
+ label: `series ${datasetsLength + 1}`,
242
+ data: [],
243
+ borderWidth: 1,
244
+ dataKey: '',
245
+ yAxisID: 'left',
246
+ color: randomColor({
247
+ hue: lastSeriesColor.toHsv().h
248
+ }).toRgbString(),
249
+ stack: ''
250
+ };
251
+ addSeriesOption.type = addSeriesOption.chartType = chartType;
252
+ return addSeriesOption;
253
+ }
254
+ _getElementValue(element) {
255
+ switch (element.tagName) {
256
+ case 'INPUT':
257
+ switch (element.type) {
258
+ case 'checkbox':
259
+ return element.checked;
260
+ case 'number':
261
+ return Number(element.value) || 0;
262
+ case 'text':
263
+ return String(element.value);
264
+ }
265
+ default:
266
+ return element.value;
267
+ }
268
+ }
269
+ }
270
+ __decorate([
271
+ property({ type: Object })
272
+ ], InputChartAbstract.prototype, "value", void 0);
273
+ //# sourceMappingURL=input-chart-abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-chart-abstract.js","sourceRoot":"","sources":["../../../src/editors/input-chart-abstract.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { html, PropertyValueMap } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { random as randomColor, TinyColor } from '@ctrl/tinycolor'\n\nimport { InputChartStyles } from './input-chart-styles'\nimport { Configurer } from './configurer'\nimport { OxFormField } from '@operato/input'\n\nexport class InputChartAbstract extends OxFormField {\n static styles = [InputChartStyles]\n\n @property({ type: Object }) value: OperatoChart.ChartConfig | null = null\n\n configurer: Configurer = new Configurer(this.value || null, () => {\n return this.getDefaultChartConfig(this.getChartType(), this.getDefaultDatasets())\n })\n\n render() {\n const configurer = this.configurer\n\n return html`\n <legend><ox-i18n msgid=\"label.chart\">Chart</ox-i18n></legend>\n\n <label for=\"theme\"> <ox-i18n msgid=\"label.theme\">Theme</ox-i18n> </label>\n <select id=\"theme\" value-key=\"theme\" class=\"select-content\" .value=${configurer.theme || ''}>\n <option value=\"dark\">dark</option>\n <option value=\"light\">light</option>\n </select>\n\n <input id=\"tooltip\" type=\"checkbox\" value-key=\"tooltip\" ?checked=${configurer.tooltip} />\n <label for=\"tooltip\"> <ox-i18n msgid=\"label.tooltip\">Tooltip</ox-i18n> </label>\n\n <input id=\"animation\" type=\"checkbox\" value-key=\"animation\" ?checked=${configurer.animation} />\n <label for=\"animation\"> <ox-i18n msgid=\"label.animation\">Animation</ox-i18n> </label>\n\n <input id=\"display\" type=\"checkbox\" value-key=\"display\" ?checked=${configurer.display} />\n <label for=\"display\"> <ox-i18n msgid=\"label.legend\">Legend</ox-i18n> </label>\n\n <input id=\"stacked\" type=\"checkbox\" value-key=\"stacked\" ?checked=${configurer.stacked} />\n <label for=\"stacked\"> <ox-i18n msgid=\"label.stacked\">Stacked</ox-i18n> </label>\n\n ${configurer.display\n ? html`\n <label for=\"position\"> <ox-i18n msgid=\"label.position\">Position</ox-i18n> </label>\n <select id=\"position\" value-key=\"position\" class=\"select-content\" .value=${configurer.position || ''}>\n <option value=\"top\">top</option>\n <option value=\"right\">right</option>\n <option value=\"bottom\">bottom</option>\n <option value=\"left\">left</option>\n </select>\n `\n : html``}\n ${this.subTemplate()}\n `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n this.renderRoot.addEventListener('change', this.onValuesChanged.bind(this))\n }\n\n displayValueTemplate() {\n const configurer = this.configurer\n\n return html`\n <label for=\"value-prefix\"> <ox-i18n msgid=\"label.value-prefix\">Value Prefix</ox-i18n> </label>\n <input\n id=\"value-prefix\"\n type=\"text\"\n value-key=\"series.valuePrefix\"\n .value=${configurer.series.valuePrefix || ''}\n />\n\n <label for=\"value-suffix\"> <ox-i18n msgid=\"label.value-suffix\">Value Suffix</ox-i18n> </label>\n <input\n id=\"value-suffix\"\n type=\"text\"\n value-key=\"series.valueSuffix\"\n .value=${configurer.series.valueSuffix || ''}\n />\n\n <input\n id=\"display-value\"\n type=\"checkbox\"\n value-key=\"series.displayValue\"\n ?checked=${!!configurer.series.displayValue}\n />\n <label for=\"display-value\"> <ox-i18n msgid=\"label.value-display\">Value Display</ox-i18n> </label>\n\n ${configurer.series.displayValue\n ? html`\n <label for=\"font-color\"> <ox-i18n msgid=\"label.font-color\">Font Color</ox-i18n> </label>\n <ox-input-color\n id=\"font-color\"\n value-key=\"series.defaultFontColor\"\n .value=${configurer.series.defaultFontColor || '#000'}\n ></ox-input-color>\n <label for=\"font-size\"> <ox-i18n msgid=\"label.font-size\">Font Size</ox-i18n> </label>\n <input\n id=\"font-size\"\n type=\"number\"\n value-key=\"series.defaultFontSize\"\n value=${configurer.series.defaultFontSize || 10}\n />\n <label for=\"data-label-anchor\"> <ox-i18n msgid=\"label.position\">Position</ox-i18n> </label>\n <select\n id=\"data-label-anchor\"\n value-key=\"series.dataLabelAnchor\"\n value=${configurer.series.dataLabelAnchor || 'center'}\n >\n <option value=\"start\">Start</option>\n <option value=\"center\" selected>Center</option>\n <option value=\"end\">End</option>\n </select>\n `\n : html``}\n `\n }\n\n subTemplate() {\n return html``\n }\n\n getChartType(): 'bar' | 'horizontalBar' | 'line' | 'radar' | 'pie' | 'mixed' {\n return 'bar'\n }\n\n getDefaultDatasets(): OperatoChart.Dataset[] {\n return [this.getDefaultDataset('bar')]\n }\n\n getDefaultDataset(seriesType: 'bar' | 'horizontalBar' | 'line' | 'radar' | 'pie'): OperatoChart.Dataset {\n return {\n label: 'Series 1',\n data: [],\n borderWidth: 1,\n dataKey: '',\n yAxisID: 'left',\n color: '#000',\n backgroundColor: '#FFFFFF',\n type: seriesType,\n stack: '',\n fill: false,\n lineTension: 0.4,\n pointStyle: 'circle',\n pointRadius: 3,\n valuePrefix: '',\n valueSuffix: '',\n displayValue: false\n }\n }\n\n getDefaultChartConfig(\n type: 'bar' | 'horizontalBar' | 'line' | 'radar' | 'pie' | 'mixed',\n datasets?: OperatoChart.Dataset[]\n ): OperatoChart.ChartConfig {\n return {\n data: {\n datasets: datasets || [],\n labelDataKey: ''\n },\n options: {\n theme: 'light',\n tooltip: true,\n animation: true,\n legend: {\n display: true,\n position: 'top'\n },\n scales: {\n xAxes: [this.getDefaultAxisOptions()],\n yAxes: [this.getDefaultAxisOptions()]\n },\n stacked: false,\n xGridLine: true,\n yGridLine: true,\n y2ndGridLine: false,\n multiAxis: false\n },\n type\n }\n }\n\n getDefaultAxisOptions(): OperatoChart.AxisOptions {\n return {\n axisTitle: '',\n barSpacing: 0,\n categorySpacing: 0,\n barPercentage: 0.9,\n ticks: {\n display: true,\n autoMin: true,\n autoMax: true,\n min: undefined,\n max: undefined,\n stepSize: undefined\n }\n }\n }\n\n onValuesChanged(e: Event) {\n e.stopPropagation()\n\n const element = e.target as HTMLInputElement\n let key = element.getAttribute('value-key')\n let value = element.value\n\n if (!key) {\n return\n }\n\n value = this._getElementValue(element)\n\n const attrs = key.split('.')\n let attr = attrs.shift() || ''\n let variable: any = this.configurer\n\n while (attrs.length > 0) {\n variable = variable[attr]\n attr = attrs.shift() || ''\n }\n\n variable[attr] = value\n\n this.value = { ...this.configurer.value }\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n this.requestUpdate()\n }\n\n onTapAddTab(e: Event) {\n const configurer = this.configurer\n\n if (!configurer.config.data.datasets) return\n\n const lastSeriesIndex = configurer.config.data.datasets.length\n const chartType = configurer.series.type || configurer.config.type\n const color = configurer.datasets[lastSeriesIndex - 1]?.backgroundColor\n const lastSeriesColor = new TinyColor(Array.isArray(color) ? color[0] : color)\n\n const seriesModel = this._getSeriesModel({\n chartType: chartType!,\n datasetsLength: lastSeriesIndex,\n lastSeriesColor\n })\n\n configurer.config.data.datasets.push(seriesModel)\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n configurer.currentSeriesIndex = lastSeriesIndex\n\n this.value = { ...this.configurer.value }\n }\n\n onTapRemoveCurrentTab(e: Event) {\n const configurer = this.configurer\n\n if (!configurer.config.data.datasets) return\n\n let currIndex = configurer.currentSeriesIndex\n this.configurer.data.datasets.splice(currIndex, 1)\n\n currIndex--\n\n if (currIndex < 0) currIndex = 0\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n configurer.currentSeriesIndex = currIndex\n\n this.requestUpdate()\n }\n\n _getSeriesModel({\n chartType,\n datasetsLength,\n lastSeriesColor\n }: {\n chartType: string\n datasetsLength: number\n lastSeriesColor: TinyColor\n }) {\n const addSeriesOption: any = {\n label: `series ${datasetsLength + 1}`,\n data: [],\n borderWidth: 1,\n dataKey: '',\n yAxisID: 'left',\n color: randomColor({\n hue: lastSeriesColor.toHsv().h\n }).toRgbString(),\n stack: ''\n }\n\n addSeriesOption.type = addSeriesOption.chartType = chartType\n return addSeriesOption\n }\n\n _getElementValue(element: HTMLElement) {\n switch (element.tagName) {\n case 'INPUT':\n switch ((element as HTMLInputElement).type) {\n case 'checkbox':\n return (element as HTMLInputElement).checked\n case 'number':\n return Number((element as HTMLInputElement).value) || 0\n case 'text':\n return String((element as HTMLInputElement).value)\n }\n default:\n return (element as any).value\n }\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import '@material/web/icon/icon.js';
2
+ import '@operato/i18n/ox-i18n.js';
3
+ import { MdIcon } from '@material/web/icon/icon.js';
4
+ import { InputChartAbstract } from './input-chart-abstract';
5
+ export declare class InputChartMultiSeriesAbstract extends InputChartAbstract {
6
+ static styles: import("lit").CSSResult[];
7
+ tabs: HTMLElement;
8
+ tabNavLeftButton: MdIcon;
9
+ tabNavRightButton: MdIcon;
10
+ get tabContainer(): HTMLElement | null | undefined;
11
+ firstUpdated(): void;
12
+ subTemplate(): import("lit-html").TemplateResult<1>;
13
+ multiSeriesTabTemplate(): import("lit-html").TemplateResult<1>;
14
+ _onTabScroll(e: Event): void;
15
+ _onTabScrollNavLeft(e: Event): void;
16
+ _onTabScrollNavRight(e: Event): void;
17
+ }