@operato/scene-chartjs 0.0.5
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.
- package/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +21 -0
- package/assets/bar-chart.png +0 -0
- package/assets/doughnut-chart.png +0 -0
- package/assets/horizontal-bar-chart.png +0 -0
- package/assets/line-chart.png +0 -0
- package/assets/mixed-chart.png +0 -0
- package/assets/pie-chart.png +0 -0
- package/assets/polar-area-chart.png +0 -0
- package/assets/radar-chart.png +0 -0
- package/demo/bar.html +266 -0
- package/demo/chartjs.html +73 -0
- package/demo/index.html +547 -0
- package/demo/legend.html +267 -0
- package/demo/things-scene-chartjs.html +7 -0
- package/dist/chartjs.d.ts +27 -0
- package/dist/chartjs.js +109 -0
- package/dist/chartjs.js.map +1 -0
- package/dist/config-converter.d.ts +1 -0
- package/dist/config-converter.js +343 -0
- package/dist/config-converter.js.map +1 -0
- package/dist/editors/index.d.ts +5 -0
- package/dist/editors/index.js +11 -0
- package/dist/editors/index.js.map +1 -0
- package/dist/editors/property-editor-chartjs-abstract.d.ts +44 -0
- package/dist/editors/property-editor-chartjs-abstract.js +250 -0
- package/dist/editors/property-editor-chartjs-abstract.js.map +1 -0
- package/dist/editors/property-editor-chartjs-hbar.d.ts +9 -0
- package/dist/editors/property-editor-chartjs-hbar.js +160 -0
- package/dist/editors/property-editor-chartjs-hbar.js.map +1 -0
- package/dist/editors/property-editor-chartjs-mixed.d.ts +20 -0
- package/dist/editors/property-editor-chartjs-mixed.js +193 -0
- package/dist/editors/property-editor-chartjs-mixed.js.map +1 -0
- package/dist/editors/property-editor-chartjs-multi-series-abstract.d.ts +31 -0
- package/dist/editors/property-editor-chartjs-multi-series-abstract.js +373 -0
- package/dist/editors/property-editor-chartjs-multi-series-abstract.js.map +1 -0
- package/dist/editors/property-editor-chartjs-pie.d.ts +14 -0
- package/dist/editors/property-editor-chartjs-pie.js +70 -0
- package/dist/editors/property-editor-chartjs-pie.js.map +1 -0
- package/dist/editors/property-editor-chartjs-radar.d.ts +10 -0
- package/dist/editors/property-editor-chartjs-radar.js +42 -0
- package/dist/editors/property-editor-chartjs-radar.js.map +1 -0
- package/dist/editors/property-editor-chartjs-styles.d.ts +1 -0
- package/dist/editors/property-editor-chartjs-styles.js +165 -0
- package/dist/editors/property-editor-chartjs-styles.js.map +1 -0
- package/dist/editors/property-editor-chartjs.d.ts +14 -0
- package/dist/editors/property-editor-chartjs.js +83 -0
- package/dist/editors/property-editor-chartjs.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/ox-chart.d.ts +20 -0
- package/dist/ox-chart.js +137 -0
- package/dist/ox-chart.js.map +1 -0
- package/dist/plugins/chart-series-highlight.d.ts +5 -0
- package/dist/plugins/chart-series-highlight.js +37 -0
- package/dist/plugins/chart-series-highlight.js.map +1 -0
- package/dist/plugins/chartjs-plugin-data-binder.d.ts +5 -0
- package/dist/plugins/chartjs-plugin-data-binder.js +111 -0
- package/dist/plugins/chartjs-plugin-data-binder.js.map +1 -0
- package/helps/scene/component/chartjs.ko.md +332 -0
- package/helps/scene/component/chartjs.md +333 -0
- package/helps/scene/component/chartjs.zh.md +331 -0
- package/helps/scene/images/chart-bar-01.png +0 -0
- package/helps/scene/images/chart-bar-02.png +0 -0
- package/helps/scene/images/chart-bar-03.png +0 -0
- package/helps/scene/images/chart-bar-08.png +0 -0
- package/helps/scene/images/chart-bar-12.png +0 -0
- package/helps/scene/images/chart-data-01.png +0 -0
- package/helps/scene/images/chart-data-04.png +0 -0
- package/helps/scene/images/chart-doughnut-01.png +0 -0
- package/helps/scene/images/chart-horizontal-bar-01.png +0 -0
- package/helps/scene/images/chart-line-01.png +0 -0
- package/helps/scene/images/chart-mix-01.png +0 -0
- package/helps/scene/images/chart-mix-02.png +0 -0
- package/helps/scene/images/chart-pie-01.png +0 -0
- package/helps/scene/images/chart-polar-01.png +0 -0
- package/helps/scene/images/chart-radar-01.png +0 -0
- package/package.json +78 -0
- package/src/chartjs.ts +134 -0
- package/src/config-converter.ts +401 -0
- package/src/editors/index.ts +11 -0
- package/src/editors/property-editor-chartjs-abstract.ts +301 -0
- package/src/editors/property-editor-chartjs-hbar.ts +163 -0
- package/src/editors/property-editor-chartjs-mixed.ts +204 -0
- package/src/editors/property-editor-chartjs-multi-series-abstract.ts +393 -0
- package/src/editors/property-editor-chartjs-pie.ts +79 -0
- package/src/editors/property-editor-chartjs-radar.ts +43 -0
- package/src/editors/property-editor-chartjs-styles.ts +165 -0
- package/src/editors/property-editor-chartjs.ts +88 -0
- package/src/index.ts +7 -0
- package/src/ox-chart.ts +150 -0
- package/src/plugins/chart-series-highlight.ts +43 -0
- package/src/plugins/chartjs-plugin-data-binder.ts +138 -0
- package/src/scene-chart.d.ts +152 -0
- package/templates/bar-chart.js +124 -0
- package/templates/doughnut-chart.js +58 -0
- package/templates/horizontal-bar-chart.js +121 -0
- package/templates/index.js +22 -0
- package/templates/line-chart.js +155 -0
- package/templates/mixed-chart.js +152 -0
- package/templates/pie-chart.js +58 -0
- package/templates/polar-area-chart.js +92 -0
- package/templates/radar-chart.js +98 -0
- package/test/basic-test.html +61 -0
- package/test/index.html +20 -0
- package/things-scene.config.js +7 -0
- package/translations/en.json +5 -0
- package/translations/ko.json +5 -0
- package/translations/ms.json +5 -0
- package/translations/zh.json +5 -0
- package/tsconfig.json +22 -0
- package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,250 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
3
|
+
*/
|
4
|
+
import { __decorate } from "tslib";
|
5
|
+
import { html, LitElement } from 'lit';
|
6
|
+
import { property } from 'lit/decorators.js';
|
7
|
+
import { random as randomColor, TinyColor } from '@ctrl/tinycolor';
|
8
|
+
import { PropertyEditorChartJSStyles } from './property-editor-chartjs-styles';
|
9
|
+
export default class PropertyEditorChartJSAbstract extends LitElement {
|
10
|
+
constructor() {
|
11
|
+
super(...arguments);
|
12
|
+
this.value = {};
|
13
|
+
this.currentSeriesIndex = 0;
|
14
|
+
}
|
15
|
+
render() {
|
16
|
+
return html `
|
17
|
+
<legend><i18n-msg msgid="label.chart">Chart</i18n-msg></legend>
|
18
|
+
|
19
|
+
<label> <i18n-msg msgid="label.theme">theme</i18n-msg> </label>
|
20
|
+
<select value-key="theme" class="select-content" .value=${this.theme}>
|
21
|
+
<option value="dark">dark</option>
|
22
|
+
<option value="light">light</option>
|
23
|
+
</select>
|
24
|
+
|
25
|
+
<input type="checkbox" value-key="display" .checked=${this.display} />
|
26
|
+
<label> <i18n-msg msgid="label.legend">Legend</i18n-msg> </label>
|
27
|
+
|
28
|
+
${this.display
|
29
|
+
? html `
|
30
|
+
<label> <i18n-msg msgid="label.position">Position</i18n-msg> </label>
|
31
|
+
<select value-key="position" class="select-content" .value=${this.position}>
|
32
|
+
<option value="top">top</option>
|
33
|
+
<option value="right">right</option>
|
34
|
+
<option value="bottom">bottom</option>
|
35
|
+
<option value="left">left</option>
|
36
|
+
</select>
|
37
|
+
`
|
38
|
+
: html ``}
|
39
|
+
${this.editorTemplate(this)}
|
40
|
+
`;
|
41
|
+
}
|
42
|
+
firstUpdated() {
|
43
|
+
this.renderRoot.addEventListener('change', this.onValuesChanged.bind(this));
|
44
|
+
}
|
45
|
+
displayValueTemplate() {
|
46
|
+
return html `
|
47
|
+
<label> <i18n-msg msgid="label.value-prefix">Value Prefix</i18n-msg> </label>
|
48
|
+
<input type="text" value-key="series.valuePrefix" .value=${this.series.valuePrefix || ''} />
|
49
|
+
|
50
|
+
<label> <i18n-msg msgid="label.value-suffix">Value suffix</i18n-msg> </label>
|
51
|
+
<input type="text" value-key="series.valueSuffix" .value=${this.series.valueSuffix || ''} />
|
52
|
+
|
53
|
+
<input type="checkbox" value-key="series.displayValue" .checked=${this.series.displayValue || false} />
|
54
|
+
<label> <i18n-msg msgid="label.value-display">Value Display</i18n-msg> </label>
|
55
|
+
|
56
|
+
${this.series.displayValue
|
57
|
+
? html `
|
58
|
+
<label> <i18n-msg msgid="label.font-color">Font Color</i18n-msg> </label>
|
59
|
+
<things-editor-color
|
60
|
+
value-key="series.defaultFontColor"
|
61
|
+
.value=${this.series.defaultFontColor || '#000'}
|
62
|
+
></things-editor-color>
|
63
|
+
<label> <i18n-msg msgid="label.font-size">Font Size</i18n-msg> </label>
|
64
|
+
<input type="number" value-key="series.defaultFontSize" .value=${this.series.defaultFontSize || 10} />
|
65
|
+
<label> <i18n-msg msgid="label.position">Position</i18n-msg> </label>
|
66
|
+
<select value-key="series.dataLabelAnchor" .value=${this.series.dataLabelAnchor || 'center'}>
|
67
|
+
<option value="start">Start</option>
|
68
|
+
<option value="center" selected>Center</option>
|
69
|
+
<option value="end">End</option>
|
70
|
+
</select>
|
71
|
+
`
|
72
|
+
: html ``}
|
73
|
+
`;
|
74
|
+
}
|
75
|
+
editorTemplate(props) {
|
76
|
+
return html ``;
|
77
|
+
}
|
78
|
+
get data() {
|
79
|
+
return this.value.data;
|
80
|
+
}
|
81
|
+
set data(data) {
|
82
|
+
this.value.data = data;
|
83
|
+
}
|
84
|
+
get datasets() {
|
85
|
+
if (!this.data.datasets)
|
86
|
+
this.data.datasets = [];
|
87
|
+
return this.data.datasets;
|
88
|
+
}
|
89
|
+
set datasets(datasets) {
|
90
|
+
this.datasets = datasets;
|
91
|
+
}
|
92
|
+
get series() {
|
93
|
+
if (!this.datasets[this.currentSeriesIndex])
|
94
|
+
this.datasets[this.currentSeriesIndex] = {};
|
95
|
+
return this.datasets[this.currentSeriesIndex];
|
96
|
+
}
|
97
|
+
set series(series) {
|
98
|
+
!this.data ? (this.data = { dataset: [series] }) : (this.datasets[this.currentSeriesIndex] = series);
|
99
|
+
}
|
100
|
+
set dataKey(key) {
|
101
|
+
this.series.dataKey = key;
|
102
|
+
}
|
103
|
+
get dataKey() {
|
104
|
+
return this.series.dataKey;
|
105
|
+
}
|
106
|
+
get legend() {
|
107
|
+
!this.value.options && (this.value.options = {});
|
108
|
+
return this.value.options.legend;
|
109
|
+
}
|
110
|
+
set legend(legend) {
|
111
|
+
this.value.options.legend = legend;
|
112
|
+
}
|
113
|
+
get theme() {
|
114
|
+
return this.value.options && this.value.options.theme;
|
115
|
+
}
|
116
|
+
set theme(theme) {
|
117
|
+
!this.value.options && (this.value.options = {});
|
118
|
+
this.value.options.theme = theme;
|
119
|
+
}
|
120
|
+
get scales() {
|
121
|
+
return this.value.options.scales;
|
122
|
+
}
|
123
|
+
set scales(scales) {
|
124
|
+
!this.value.options && (this.value.options = {});
|
125
|
+
this.value.options.scales = scales;
|
126
|
+
}
|
127
|
+
get display() {
|
128
|
+
return this.legend && this.legend.display;
|
129
|
+
}
|
130
|
+
set display(display) {
|
131
|
+
this.legend.display = display;
|
132
|
+
}
|
133
|
+
get position() {
|
134
|
+
return this.legend.position;
|
135
|
+
}
|
136
|
+
set position(position) {
|
137
|
+
this.legend.position = position;
|
138
|
+
}
|
139
|
+
get stacked() {
|
140
|
+
return this.value.options.stacked;
|
141
|
+
}
|
142
|
+
set stacked(stacked) {
|
143
|
+
this.value.options.stacked = stacked;
|
144
|
+
}
|
145
|
+
get labelDataKey() {
|
146
|
+
return this.data && this.data.labelDataKey;
|
147
|
+
}
|
148
|
+
set labelDataKey(labelDataKey) {
|
149
|
+
this.data.labelDataKey = labelDataKey;
|
150
|
+
}
|
151
|
+
set options(options) {
|
152
|
+
this.value.options = options;
|
153
|
+
}
|
154
|
+
get options() {
|
155
|
+
return this.value.options;
|
156
|
+
}
|
157
|
+
onValuesChanged(e) {
|
158
|
+
var element = e.target;
|
159
|
+
var key = element.getAttribute('value-key');
|
160
|
+
var value = element.value;
|
161
|
+
if (!key) {
|
162
|
+
return;
|
163
|
+
}
|
164
|
+
value = this._getElementValue(element);
|
165
|
+
var attrs = key.split('.');
|
166
|
+
var attr = attrs.shift() || '';
|
167
|
+
var variable = this;
|
168
|
+
while (attrs.length > 0) {
|
169
|
+
//@ts-ignore
|
170
|
+
variable = variable[attr];
|
171
|
+
attr = attrs.shift() || '';
|
172
|
+
}
|
173
|
+
//@ts-ignore
|
174
|
+
variable[attr] = value;
|
175
|
+
this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
|
176
|
+
this.requestUpdate();
|
177
|
+
}
|
178
|
+
onTapAddTab(e) {
|
179
|
+
if (!this.value.data.datasets)
|
180
|
+
return;
|
181
|
+
var lastSeriesIndex = this.value.data.datasets.length;
|
182
|
+
var chartType = this.series.type || this.value.type;
|
183
|
+
var lastSeriesColor = new TinyColor(this.datasets[lastSeriesIndex - 1].backgroundColor);
|
184
|
+
var seriesModel = this._getSeriesModel({
|
185
|
+
chartType,
|
186
|
+
datasetsLength: lastSeriesIndex,
|
187
|
+
lastSeriesColor
|
188
|
+
});
|
189
|
+
this.value.data.datasets.push(seriesModel);
|
190
|
+
this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
|
191
|
+
this.currentSeriesIndex = lastSeriesIndex;
|
192
|
+
}
|
193
|
+
onTapRemoveCurrentTab(e) {
|
194
|
+
if (!this.value.data.datasets)
|
195
|
+
return;
|
196
|
+
var currIndex = this.currentSeriesIndex;
|
197
|
+
this.value.data.datasets.splice(currIndex, 1);
|
198
|
+
currIndex--;
|
199
|
+
if (currIndex < 0)
|
200
|
+
currIndex = 0;
|
201
|
+
this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
|
202
|
+
this.currentSeriesIndex = currIndex;
|
203
|
+
this.requestUpdate();
|
204
|
+
}
|
205
|
+
_getSeriesModel({ chartType, datasetsLength, lastSeriesColor }) {
|
206
|
+
var addSeriesOption = {
|
207
|
+
label: `series ${datasetsLength + 1}`,
|
208
|
+
data: [],
|
209
|
+
borderWidth: 1,
|
210
|
+
dataKey: '',
|
211
|
+
yAxisID: 'left',
|
212
|
+
color: randomColor({
|
213
|
+
hue: lastSeriesColor
|
214
|
+
}).toRgbString()
|
215
|
+
};
|
216
|
+
addSeriesOption.type = addSeriesOption.chartType = chartType;
|
217
|
+
return addSeriesOption;
|
218
|
+
}
|
219
|
+
_getElementValue(element) {
|
220
|
+
switch (element.tagName) {
|
221
|
+
case 'INPUT':
|
222
|
+
switch (element.type) {
|
223
|
+
case 'checkbox':
|
224
|
+
return element.checked;
|
225
|
+
case 'number':
|
226
|
+
return Number(element.value) || 0;
|
227
|
+
case 'text':
|
228
|
+
return String(element.value);
|
229
|
+
}
|
230
|
+
case 'PAPER-BUTTON':
|
231
|
+
return element.active;
|
232
|
+
case 'PAPER-LISTBOX':
|
233
|
+
return element.selected;
|
234
|
+
case 'THINGS-EDITOR-MULTIPLE-COLOR':
|
235
|
+
return element.values;
|
236
|
+
case 'THINGS-EDITOR-ANGLE-INPUT':
|
237
|
+
return Number(element.radian) || 0;
|
238
|
+
default:
|
239
|
+
return element.value;
|
240
|
+
}
|
241
|
+
}
|
242
|
+
}
|
243
|
+
PropertyEditorChartJSAbstract.styles = [PropertyEditorChartJSStyles];
|
244
|
+
__decorate([
|
245
|
+
property({ type: Object })
|
246
|
+
], PropertyEditorChartJSAbstract.prototype, "value", void 0);
|
247
|
+
__decorate([
|
248
|
+
property({ type: Number })
|
249
|
+
], PropertyEditorChartJSAbstract.prototype, "currentSeriesIndex", void 0);
|
250
|
+
//# sourceMappingURL=property-editor-chartjs-abstract.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"property-editor-chartjs-abstract.js","sourceRoot":"","sources":["../../src/editors/property-editor-chartjs-abstract.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { html, LitElement } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport { random as randomColor, TinyColor } from '@ctrl/tinycolor'\n\nimport { PropertyEditorChartJSStyles } from './property-editor-chartjs-styles'\n\nexport default class PropertyEditorChartJSAbstract extends LitElement {\n static styles = [PropertyEditorChartJSStyles]\n\n @property({ type: Object }) value: any = {}\n @property({ type: Number }) currentSeriesIndex: number = 0\n\n render() {\n return html`\n <legend><i18n-msg msgid=\"label.chart\">Chart</i18n-msg></legend>\n\n <label> <i18n-msg msgid=\"label.theme\">theme</i18n-msg> </label>\n <select value-key=\"theme\" class=\"select-content\" .value=${this.theme}>\n <option value=\"dark\">dark</option>\n <option value=\"light\">light</option>\n </select>\n\n <input type=\"checkbox\" value-key=\"display\" .checked=${this.display} />\n <label> <i18n-msg msgid=\"label.legend\">Legend</i18n-msg> </label>\n\n ${this.display\n ? html`\n <label> <i18n-msg msgid=\"label.position\">Position</i18n-msg> </label>\n <select value-key=\"position\" class=\"select-content\" .value=${this.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.editorTemplate(this)}\n `\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this.onValuesChanged.bind(this))\n }\n\n displayValueTemplate() {\n return html`\n <label> <i18n-msg msgid=\"label.value-prefix\">Value Prefix</i18n-msg> </label>\n <input type=\"text\" value-key=\"series.valuePrefix\" .value=${this.series.valuePrefix || ''} />\n\n <label> <i18n-msg msgid=\"label.value-suffix\">Value suffix</i18n-msg> </label>\n <input type=\"text\" value-key=\"series.valueSuffix\" .value=${this.series.valueSuffix || ''} />\n\n <input type=\"checkbox\" value-key=\"series.displayValue\" .checked=${this.series.displayValue || false} />\n <label> <i18n-msg msgid=\"label.value-display\">Value Display</i18n-msg> </label>\n\n ${this.series.displayValue\n ? html`\n <label> <i18n-msg msgid=\"label.font-color\">Font Color</i18n-msg> </label>\n <things-editor-color\n value-key=\"series.defaultFontColor\"\n .value=${this.series.defaultFontColor || '#000'}\n ></things-editor-color>\n <label> <i18n-msg msgid=\"label.font-size\">Font Size</i18n-msg> </label>\n <input type=\"number\" value-key=\"series.defaultFontSize\" .value=${this.series.defaultFontSize || 10} />\n <label> <i18n-msg msgid=\"label.position\">Position</i18n-msg> </label>\n <select value-key=\"series.dataLabelAnchor\" .value=${this.series.dataLabelAnchor || 'center'}>\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 editorTemplate(props: any) {\n return html``\n }\n\n get data() {\n return this.value.data\n }\n\n set data(data) {\n this.value.data = data\n }\n\n get datasets() {\n if (!this.data.datasets) this.data.datasets = []\n\n return this.data.datasets\n }\n\n set datasets(datasets) {\n this.datasets = datasets\n }\n\n get series() {\n if (!this.datasets[this.currentSeriesIndex]) this.datasets[this.currentSeriesIndex] = {}\n return this.datasets[this.currentSeriesIndex]\n }\n\n set series(series) {\n !this.data ? (this.data = { dataset: [series] }) : (this.datasets[this.currentSeriesIndex] = series)\n }\n\n set dataKey(key) {\n this.series.dataKey = key\n }\n\n get dataKey() {\n return this.series.dataKey\n }\n\n get legend() {\n !this.value.options && (this.value.options = {})\n return this.value.options.legend\n }\n\n set legend(legend) {\n this.value.options.legend = legend\n }\n\n get theme() {\n return this.value.options && this.value.options.theme\n }\n\n set theme(theme) {\n !this.value.options && (this.value.options = {})\n this.value.options.theme = theme\n }\n\n get scales() {\n return this.value.options.scales\n }\n\n set scales(scales) {\n !this.value.options && (this.value.options = {})\n this.value.options.scales = scales\n }\n\n get display() {\n return this.legend && this.legend.display\n }\n\n set display(display) {\n this.legend.display = display\n }\n\n get position() {\n return this.legend.position\n }\n\n set position(position) {\n this.legend.position = position\n }\n\n get stacked() {\n return this.value.options.stacked\n }\n\n set stacked(stacked) {\n this.value.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.value.options = options\n }\n\n get options() {\n return this.value.options\n }\n\n onValuesChanged(e: Event) {\n var element = e.target as HTMLInputElement\n var key = element.getAttribute('value-key')\n var value = element.value\n\n if (!key) {\n return\n }\n\n value = this._getElementValue(element)\n\n var attrs = key.split('.')\n var attr = attrs.shift() || ''\n var variable = this\n\n while (attrs.length > 0) {\n //@ts-ignore\n variable = variable[attr]\n attr = attrs.shift() || ''\n }\n\n //@ts-ignore\n variable[attr] = value\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n this.requestUpdate()\n }\n\n onTapAddTab(e: Event) {\n if (!this.value.data.datasets) return\n\n var lastSeriesIndex = this.value.data.datasets.length\n var chartType = this.series.type || this.value.type\n var lastSeriesColor = new TinyColor(this.datasets[lastSeriesIndex - 1].backgroundColor)\n\n var seriesModel = this._getSeriesModel({\n chartType,\n datasetsLength: lastSeriesIndex,\n lastSeriesColor\n })\n\n this.value.data.datasets.push(seriesModel)\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n this.currentSeriesIndex = lastSeriesIndex\n }\n\n onTapRemoveCurrentTab(e: Event) {\n if (!this.value.data.datasets) return\n\n var currIndex = this.currentSeriesIndex\n this.value.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 this.currentSeriesIndex = currIndex\n\n this.requestUpdate()\n }\n\n _getSeriesModel({\n chartType,\n datasetsLength,\n lastSeriesColor\n }: {\n chartType: any\n datasetsLength: number\n lastSeriesColor: TinyColor\n }) {\n var addSeriesOption: any = {\n label: `series ${datasetsLength + 1}`,\n data: [],\n borderWidth: 1,\n dataKey: '',\n yAxisID: 'left',\n color: randomColor({\n hue: lastSeriesColor as any\n }).toRgbString()\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\n case 'PAPER-BUTTON':\n return (element as any).active\n\n case 'PAPER-LISTBOX':\n return (element as any).selected\n\n case 'THINGS-EDITOR-MULTIPLE-COLOR':\n return (element as any).values\n\n case 'THINGS-EDITOR-ANGLE-INPUT':\n return Number((element as any).radian) || 0\n\n default:\n return (element as any).value\n }\n }\n}\n"]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import '@polymer/iron-icon/iron-icon';
|
2
|
+
import '@polymer/paper-button/paper-button';
|
3
|
+
import '@polymer/paper-icon-button/paper-icon-button';
|
4
|
+
import '@polymer/paper-tabs/paper-tabs';
|
5
|
+
import PropertyEditorChartJSMultiSeriesAbstract from './property-editor-chartjs-multi-series-abstract';
|
6
|
+
export default class PropertyEditorChartJSHBar extends PropertyEditorChartJSMultiSeriesAbstract {
|
7
|
+
editorTemplate(): import("lit-html").TemplateResult<1>;
|
8
|
+
multiSeriesTabTemplate(): import("lit-html").TemplateResult<1>;
|
9
|
+
}
|
@@ -0,0 +1,160 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
2
|
+
/*
|
3
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
4
|
+
*/
|
5
|
+
import '@polymer/iron-icon/iron-icon';
|
6
|
+
import '@polymer/paper-button/paper-button';
|
7
|
+
import '@polymer/paper-icon-button/paper-icon-button';
|
8
|
+
import '@polymer/paper-tabs/paper-tabs';
|
9
|
+
import { html } from 'lit';
|
10
|
+
import { customElement } from 'lit/decorators.js';
|
11
|
+
import PropertyEditorChartJSMultiSeriesAbstract from './property-editor-chartjs-multi-series-abstract';
|
12
|
+
let PropertyEditorChartJSHBar = class PropertyEditorChartJSHBar extends PropertyEditorChartJSMultiSeriesAbstract {
|
13
|
+
editorTemplate() {
|
14
|
+
return html `
|
15
|
+
<legend><i18n-msg msgid="label.series">Series</i18n-msg></legend>
|
16
|
+
${this.multiSeriesTabTemplate()}
|
17
|
+
|
18
|
+
<legend><i18n-msg msgid="label.y-axes">Y Axes</i18n-msg></legend>
|
19
|
+
|
20
|
+
<label> <i18n-msg msgid="label.data-key">Data Key</i18n-msg> </label>
|
21
|
+
<input type="text" value-key="labelDataKey" .value=${this.labelDataKey} />
|
22
|
+
|
23
|
+
<label> <i18n-msg msgid="label.title">Title</i18n-msg> </label>
|
24
|
+
<input type="text" value-key="yAxes0.axisTitle" .value=${this.yAxes0.axisTitle || ''} />
|
25
|
+
|
26
|
+
<label><i18n-msg msgid="label.bar-spacing">Bar Spacing</i18n-msg></label>
|
27
|
+
<input
|
28
|
+
type="number"
|
29
|
+
min="0"
|
30
|
+
max="1"
|
31
|
+
step="0.1"
|
32
|
+
value-key="yAxes0.barSpacing"
|
33
|
+
.value=${this.yAxes0.barSpacing || NaN}
|
34
|
+
/>
|
35
|
+
<label><i18n-msg msgid="label.tick-spacing">Tick Spacing</i18n-msg></label>
|
36
|
+
<input
|
37
|
+
type="number"
|
38
|
+
min="0"
|
39
|
+
max="1"
|
40
|
+
step="0.1"
|
41
|
+
value-key="yAxes0.categorySpacing"
|
42
|
+
.value=${this.yAxes0.categorySpacing || NaN}
|
43
|
+
/>
|
44
|
+
|
45
|
+
<input type="checkbox" value-key="value.options.xGridLine" .checked=${this.value.options.xGridLine} />
|
46
|
+
<label> <i18n-msg msgid="label.grid-line">Grid Line</i18n-msg> </label>
|
47
|
+
|
48
|
+
<input type="checkbox" value-key="xAxes0.ticks.display" .checked=${this.xAxes0.ticks.display} />
|
49
|
+
<label> <i18n-msg msgid="label.display-tick">Display Tick</i18n-msg> </label>
|
50
|
+
|
51
|
+
<legend><i18n-msg msgid="label.x-axes">X Axes</i18n-msg></legend>
|
52
|
+
|
53
|
+
<label> <i18n-msg msgid="label.title">Title</i18n-msg> </label>
|
54
|
+
<input type="text" value-key="xAxes0.title" .value=${this.xAxes0.axisTitle || ''} />
|
55
|
+
|
56
|
+
<input type="checkbox" value-key="xAxes0.ticks.autoMin" .checked=${this.xAxes0.ticks.autoMin} />
|
57
|
+
<label> <i18n-msg msgid="label.axis-min-auto">Axis Min Auto</i18n-msg> </label>
|
58
|
+
|
59
|
+
<input type="checkbox" value-key="xAxes0.ticks.autoMax" .checked=${this.xAxes0.ticks.autoMax} />
|
60
|
+
<label> <i18n-msg msgid="label.axis-max-auto">Axis Max Auto</i18n-msg> </label>
|
61
|
+
|
62
|
+
${!this.xAxes0.ticks.autoMin
|
63
|
+
? html `
|
64
|
+
<label> <i18n-msg msgid="label.axis-min">Axis Min</i18n-msg> </label>
|
65
|
+
<input type="number" value-key="xAxes0.ticks.min" .value=${this.xAxes0.ticks.min} />
|
66
|
+
`
|
67
|
+
: html ``}
|
68
|
+
${!this.xAxes0.ticks.autoMax
|
69
|
+
? html `
|
70
|
+
<label> <i18n-msg msgid="label.axis-max">Axis Max</i18n-msg> </label>
|
71
|
+
<input type="number" value-key="xAxes0.ticks.max" .value=${this.xAxes0.ticks.max} />
|
72
|
+
`
|
73
|
+
: html ``}
|
74
|
+
|
75
|
+
<label> <i18n-msg msgid="label.axis-step-size">Axis Step Size</i18n-msg> </label>
|
76
|
+
<input type="number" value-key="yAxes0.ticks.stepSize" .value=${this.yAxes0.ticks.stepSize} />
|
77
|
+
|
78
|
+
<input type="checkbox" .checked=${this.value.options.yGridLine} />
|
79
|
+
<label> <i18n-msg msgid="label.grid-line">Grid Line</i18n-msg> </label>
|
80
|
+
|
81
|
+
<input type="checkbox" value-key="yAxes0.ticks.display" .checked=${this.yAxes0.ticks.display} />
|
82
|
+
<label> <i18n-msg msgid="label.display-tick">Display Tick</i18n-msg> </label>
|
83
|
+
`;
|
84
|
+
}
|
85
|
+
multiSeriesTabTemplate() {
|
86
|
+
return html `
|
87
|
+
<div id="series-properties-container" fullwidth>
|
88
|
+
<div id="tab-header">
|
89
|
+
<paper-icon-button
|
90
|
+
id="tab-nav-left-button"
|
91
|
+
icon="chevron-left"
|
92
|
+
@click=${(e) => {
|
93
|
+
this._onTabScrollNavLeft(e);
|
94
|
+
}}
|
95
|
+
disabled
|
96
|
+
></paper-icon-button>
|
97
|
+
<paper-tabs
|
98
|
+
id="tabs"
|
99
|
+
@iron-select=${(e) => (this.currentSeriesIndex = e.target.selected)}
|
100
|
+
.selected=${this.currentSeriesIndex}
|
101
|
+
no-bar
|
102
|
+
noink
|
103
|
+
scrollable
|
104
|
+
hide-scroll-buttons
|
105
|
+
fit-container
|
106
|
+
>
|
107
|
+
${this.datasets.map((dataset, index) => html `
|
108
|
+
<paper-tab data-series="${index + 1}" noink
|
109
|
+
>${index + 1}
|
110
|
+
${!this.datasets || (this.datasets.length != 1 && this.currentSeriesIndex == index)
|
111
|
+
? html `
|
112
|
+
<paper-icon-button icon="close" @tap="${(e) => this.onTapRemoveCurrentTab(e)}">
|
113
|
+
</paper-icon-button>
|
114
|
+
`
|
115
|
+
: html ``}
|
116
|
+
</paper-tab>
|
117
|
+
`)}
|
118
|
+
</paper-tabs>
|
119
|
+
<paper-icon-button
|
120
|
+
id="tab-nav-right-button"
|
121
|
+
icon="chevron-right"
|
122
|
+
@click=${(e) => {
|
123
|
+
this._onTabScrollNavRight(e);
|
124
|
+
}}
|
125
|
+
disabled
|
126
|
+
></paper-icon-button>
|
127
|
+
</div>
|
128
|
+
<div id="add-series-button-container">
|
129
|
+
<paper-icon-button
|
130
|
+
id="add-series-button"
|
131
|
+
icon="add"
|
132
|
+
@tap=${(e) => this.onTapAddTab(e)}
|
133
|
+
></paper-icon-button>
|
134
|
+
</div>
|
135
|
+
|
136
|
+
<iron-pages .selected=${this.currentSeriesIndex} .attr-for-selected="series-index">
|
137
|
+
${this.datasets.map((dataset, index) => html `
|
138
|
+
<div class="tab-content" series-index="${index}">
|
139
|
+
<label> <i18n-msg msgid="label.data-key">Data Key</i18n-msg> </label>
|
140
|
+
<input type="text" value-key="dataKey" .value=${this.dataKey} />
|
141
|
+
<label> <i18n-msg msgid="label.label">Label</i18n-msg> </label>
|
142
|
+
<input type="text" value-key="series.label" .value=${this.series.label} />
|
143
|
+
<label> <i18n-msg msgid="label.color">Color</i18n-msg> </label>
|
144
|
+
<things-editor-color value-key="color" .value=${this.color}></things-editor-color>
|
145
|
+
<label> <i18n-msg msgid="label.stack-group">Stack Group</i18n-msg> </label>
|
146
|
+
<input type="text" value-key="series.stack" .value=${this.series.stack || ''} />
|
147
|
+
|
148
|
+
${this.displayValueTemplate()}
|
149
|
+
</div>
|
150
|
+
`)}
|
151
|
+
</iron-pages>
|
152
|
+
</div>
|
153
|
+
`;
|
154
|
+
}
|
155
|
+
};
|
156
|
+
PropertyEditorChartJSHBar = __decorate([
|
157
|
+
customElement('property-editor-chartjs-hbar')
|
158
|
+
], PropertyEditorChartJSHBar);
|
159
|
+
export default PropertyEditorChartJSHBar;
|
160
|
+
//# sourceMappingURL=property-editor-chartjs-hbar.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"property-editor-chartjs-hbar.js","sourceRoot":"","sources":["../../src/editors/property-editor-chartjs-hbar.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport '@polymer/iron-icon/iron-icon'\nimport '@polymer/paper-button/paper-button'\nimport '@polymer/paper-icon-button/paper-icon-button'\nimport '@polymer/paper-tabs/paper-tabs'\n\nimport { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport PropertyEditorChartJSMultiSeriesAbstract from './property-editor-chartjs-multi-series-abstract'\n\n@customElement('property-editor-chartjs-hbar')\nexport default class PropertyEditorChartJSHBar extends PropertyEditorChartJSMultiSeriesAbstract {\n editorTemplate() {\n return html`\n <legend><i18n-msg msgid=\"label.series\">Series</i18n-msg></legend>\n ${this.multiSeriesTabTemplate()}\n\n <legend><i18n-msg msgid=\"label.y-axes\">Y Axes</i18n-msg></legend>\n\n <label> <i18n-msg msgid=\"label.data-key\">Data Key</i18n-msg> </label>\n <input type=\"text\" value-key=\"labelDataKey\" .value=${this.labelDataKey} />\n\n <label> <i18n-msg msgid=\"label.title\">Title</i18n-msg> </label>\n <input type=\"text\" value-key=\"yAxes0.axisTitle\" .value=${this.yAxes0.axisTitle || ''} />\n\n <label><i18n-msg msgid=\"label.bar-spacing\">Bar Spacing</i18n-msg></label>\n <input\n type=\"number\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n value-key=\"yAxes0.barSpacing\"\n .value=${this.yAxes0.barSpacing || NaN}\n />\n <label><i18n-msg msgid=\"label.tick-spacing\">Tick Spacing</i18n-msg></label>\n <input\n type=\"number\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n value-key=\"yAxes0.categorySpacing\"\n .value=${this.yAxes0.categorySpacing || NaN}\n />\n\n <input type=\"checkbox\" value-key=\"value.options.xGridLine\" .checked=${this.value.options.xGridLine} />\n <label> <i18n-msg msgid=\"label.grid-line\">Grid Line</i18n-msg> </label>\n\n <input type=\"checkbox\" value-key=\"xAxes0.ticks.display\" .checked=${this.xAxes0.ticks.display} />\n <label> <i18n-msg msgid=\"label.display-tick\">Display Tick</i18n-msg> </label>\n\n <legend><i18n-msg msgid=\"label.x-axes\">X Axes</i18n-msg></legend>\n\n <label> <i18n-msg msgid=\"label.title\">Title</i18n-msg> </label>\n <input type=\"text\" value-key=\"xAxes0.title\" .value=${this.xAxes0.axisTitle || ''} />\n\n <input type=\"checkbox\" value-key=\"xAxes0.ticks.autoMin\" .checked=${this.xAxes0.ticks.autoMin} />\n <label> <i18n-msg msgid=\"label.axis-min-auto\">Axis Min Auto</i18n-msg> </label>\n\n <input type=\"checkbox\" value-key=\"xAxes0.ticks.autoMax\" .checked=${this.xAxes0.ticks.autoMax} />\n <label> <i18n-msg msgid=\"label.axis-max-auto\">Axis Max Auto</i18n-msg> </label>\n\n ${!this.xAxes0.ticks.autoMin\n ? html`\n <label> <i18n-msg msgid=\"label.axis-min\">Axis Min</i18n-msg> </label>\n <input type=\"number\" value-key=\"xAxes0.ticks.min\" .value=${this.xAxes0.ticks.min} />\n `\n : html``}\n ${!this.xAxes0.ticks.autoMax\n ? html`\n <label> <i18n-msg msgid=\"label.axis-max\">Axis Max</i18n-msg> </label>\n <input type=\"number\" value-key=\"xAxes0.ticks.max\" .value=${this.xAxes0.ticks.max} />\n `\n : html``}\n\n <label> <i18n-msg msgid=\"label.axis-step-size\">Axis Step Size</i18n-msg> </label>\n <input type=\"number\" value-key=\"yAxes0.ticks.stepSize\" .value=${this.yAxes0.ticks.stepSize} />\n\n <input type=\"checkbox\" .checked=${this.value.options.yGridLine} />\n <label> <i18n-msg msgid=\"label.grid-line\">Grid Line</i18n-msg> </label>\n\n <input type=\"checkbox\" value-key=\"yAxes0.ticks.display\" .checked=${this.yAxes0.ticks.display} />\n <label> <i18n-msg msgid=\"label.display-tick\">Display Tick</i18n-msg> </label>\n `\n }\n\n multiSeriesTabTemplate() {\n return html`\n <div id=\"series-properties-container\" fullwidth>\n <div id=\"tab-header\">\n <paper-icon-button\n id=\"tab-nav-left-button\"\n icon=\"chevron-left\"\n @click=${(e: Event) => {\n this._onTabScrollNavLeft(e)\n }}\n disabled\n ></paper-icon-button>\n <paper-tabs\n id=\"tabs\"\n @iron-select=${(e: Event) => (this.currentSeriesIndex = (e.target as any).selected)}\n .selected=${this.currentSeriesIndex}\n no-bar\n noink\n scrollable\n hide-scroll-buttons\n fit-container\n >\n ${this.datasets.map(\n (dataset: any, index: number) => html`\n <paper-tab data-series=\"${index + 1}\" noink\n >${index + 1}\n ${!this.datasets || (this.datasets.length != 1 && this.currentSeriesIndex == index)\n ? html`\n <paper-icon-button icon=\"close\" @tap=\"${(e: Event) => this.onTapRemoveCurrentTab(e)}\">\n </paper-icon-button>\n `\n : html``}\n </paper-tab>\n `\n )}\n </paper-tabs>\n <paper-icon-button\n id=\"tab-nav-right-button\"\n icon=\"chevron-right\"\n @click=${(e: Event) => {\n this._onTabScrollNavRight(e)\n }}\n disabled\n ></paper-icon-button>\n </div>\n <div id=\"add-series-button-container\">\n <paper-icon-button\n id=\"add-series-button\"\n icon=\"add\"\n @tap=${(e: Event) => this.onTapAddTab(e)}\n ></paper-icon-button>\n </div>\n\n <iron-pages .selected=${this.currentSeriesIndex} .attr-for-selected=\"series-index\">\n ${this.datasets.map(\n (dataset: any, index: number) => html`\n <div class=\"tab-content\" series-index=\"${index}\">\n <label> <i18n-msg msgid=\"label.data-key\">Data Key</i18n-msg> </label>\n <input type=\"text\" value-key=\"dataKey\" .value=${this.dataKey} />\n <label> <i18n-msg msgid=\"label.label\">Label</i18n-msg> </label>\n <input type=\"text\" value-key=\"series.label\" .value=${this.series.label} />\n <label> <i18n-msg msgid=\"label.color\">Color</i18n-msg> </label>\n <things-editor-color value-key=\"color\" .value=${this.color}></things-editor-color>\n <label> <i18n-msg msgid=\"label.stack-group\">Stack Group</i18n-msg> </label>\n <input type=\"text\" value-key=\"series.stack\" .value=${this.series.stack || ''} />\n\n ${this.displayValueTemplate()}\n </div>\n `\n )}\n </iron-pages>\n </div>\n `\n }\n}\n"]}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import '@polymer/iron-icon/iron-icon';
|
2
|
+
import '@polymer/iron-pages/iron-pages';
|
3
|
+
import '@polymer/paper-button/paper-button';
|
4
|
+
import '@polymer/paper-icon-button/paper-icon-button';
|
5
|
+
import '@polymer/paper-tabs/paper-tabs';
|
6
|
+
import PropertyEditorChartJSMultiSeriesAbstract from './property-editor-chartjs-multi-series-abstract';
|
7
|
+
export default class PropertyEditorChartJSMixed extends PropertyEditorChartJSMultiSeriesAbstract {
|
8
|
+
static styles: import("lit").CSSResult[];
|
9
|
+
constructor();
|
10
|
+
get xAxes0(): any;
|
11
|
+
set xAxes0(xAxes0: any);
|
12
|
+
get yAxes0(): any;
|
13
|
+
set yAxes0(yAxes0: any);
|
14
|
+
get yAxes1(): any;
|
15
|
+
set yAxes1(yAxes1: any);
|
16
|
+
get multiAxis(): any;
|
17
|
+
set multiAxis(multiAxis: any);
|
18
|
+
editorTemplate(props: any): import("lit-html").TemplateResult<1>;
|
19
|
+
_hasBarSeries(chart: any): boolean;
|
20
|
+
}
|