@eturnity/eturnity_reusable_components 8.19.8-EPDM-14690.3 → 8.19.8-EPDM-13664.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.
- package/package.json +1 -1
- package/src/components/barchart/BottomFields.vue +36 -126
- package/src/components/barchart/composables/useAxisCalculations.js +1 -1
- package/src/components/barchart/composables/useChartData.js +1 -1
- package/src/components/barchart/composables/useTooltip.js +3 -28
- package/src/components/barchart/index.vue +15 -58
- package/src/components/barchart/styles/bottomFields.js +4 -18
- package/src/components/barchart/styles/chart.js +0 -1
- package/src/components/errorMessage/index.vue +1 -1
- package/src/components/infoCard/index.vue +3 -15
- package/src/components/infoCard/infoCard.spec.js +3 -3
- package/src/components/infoText/defaultProps.js +16 -0
- package/src/components/infoText/index.vue +40 -37
- package/src/components/infoText/infoText.spec.js +39 -20
- package/src/components/infoText/infoText.stories.js +28 -0
- package/src/components/infoText/templates/iconTextContent.vue +105 -0
- package/src/components/inputs/inputNumber/index.vue +6 -92
- package/src/components/pageTitle/index.vue +1 -0
- package/src/DemoChart.vue +0 -424
- package/src/TestChart.vue +0 -229
package/src/DemoChart.vue
DELETED
@@ -1,424 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div class="demo-container">
|
3
|
-
<h1>BarChart Component Examples</h1>
|
4
|
-
|
5
|
-
<h2>1. Basic Bar Chart</h2>
|
6
|
-
<BarChart
|
7
|
-
:data="basicData"
|
8
|
-
:value-formatter="kwhFormatter"
|
9
|
-
height="300px"
|
10
|
-
width="800px"
|
11
|
-
/>
|
12
|
-
|
13
|
-
<h2>2. Bar Chart with Custom Bar Width</h2>
|
14
|
-
<BarChart
|
15
|
-
:bar-width="80"
|
16
|
-
:data="basicData"
|
17
|
-
:value-formatter="kwhFormatter"
|
18
|
-
height="300px"
|
19
|
-
width="800px"
|
20
|
-
/>
|
21
|
-
|
22
|
-
<h2>3. Stacked Bar Chart - 3 Series with Legend</h2>
|
23
|
-
<BarChart
|
24
|
-
:bar-width="80"
|
25
|
-
:data="quarterLabels"
|
26
|
-
:is-legend-shown="true"
|
27
|
-
:series="threeZoneSeries"
|
28
|
-
:value-formatter="kwhFormatter"
|
29
|
-
height="400px"
|
30
|
-
width="800px"
|
31
|
-
/>
|
32
|
-
|
33
|
-
<h2>4. Stacked Bar Chart - 6 Series with Multi-Row Legend</h2>
|
34
|
-
<BarChart
|
35
|
-
:bar-width="60"
|
36
|
-
:data="monthLabels"
|
37
|
-
:is-legend-shown="true"
|
38
|
-
:legends-item-per-row="3"
|
39
|
-
:series="tariffZones"
|
40
|
-
:value-formatter="kwhFormatter"
|
41
|
-
height="400px"
|
42
|
-
width="800px"
|
43
|
-
/>
|
44
|
-
|
45
|
-
<h2>5. Scrollable Chart with Many Data Points</h2>
|
46
|
-
<BarChart
|
47
|
-
:bar-width="40"
|
48
|
-
:data="dailyData"
|
49
|
-
:is-scrollable="true"
|
50
|
-
:value-formatter="kwhFormatter"
|
51
|
-
height="300px"
|
52
|
-
width="800px"
|
53
|
-
/>
|
54
|
-
|
55
|
-
<h2>6. Scrollable Chart with Selection</h2>
|
56
|
-
<BarChart
|
57
|
-
:bar-width="40"
|
58
|
-
:data="dailyData"
|
59
|
-
:is-scrollable="true"
|
60
|
-
:is-selection-enabled="true"
|
61
|
-
:selection-size="5"
|
62
|
-
:value-formatter="kwhFormatter"
|
63
|
-
height="300px"
|
64
|
-
width="800px"
|
65
|
-
@selection-change="handleSelectionChange"
|
66
|
-
/>
|
67
|
-
|
68
|
-
<h2>7. Chart with Top Controls & Time Frame Selector</h2>
|
69
|
-
<BarChart
|
70
|
-
:bar-width="70"
|
71
|
-
:data="quarterLabels"
|
72
|
-
:is-legend-shown="true"
|
73
|
-
:selected-split-button="selectedTimeFrame"
|
74
|
-
:series="threeZoneSeries"
|
75
|
-
:split-button-options="timeFrameOptions"
|
76
|
-
:value-formatter="kwhFormatter"
|
77
|
-
chart-controls-position="top"
|
78
|
-
height="350px"
|
79
|
-
width="800px"
|
80
|
-
@select-split-button="handleTimeFrameSelect"
|
81
|
-
/>
|
82
|
-
|
83
|
-
<h2>8. Chart with Bottom Controls & Time Frame Selector</h2>
|
84
|
-
<BarChart
|
85
|
-
:bar-width="70"
|
86
|
-
:data="quarterLabels"
|
87
|
-
:is-legend-shown="true"
|
88
|
-
:selected-split-button="selectedTimeFrame"
|
89
|
-
:series="threeZoneSeries"
|
90
|
-
:split-button-options="timeFrameOptions"
|
91
|
-
:value-formatter="kwhFormatter"
|
92
|
-
chart-controls-position="bottom"
|
93
|
-
height="350px"
|
94
|
-
width="800px"
|
95
|
-
@select-split-button="handleTimeFrameSelect"
|
96
|
-
/>
|
97
|
-
|
98
|
-
<h2>9. Chart with Custom Tooltip</h2>
|
99
|
-
<BarChart :bar-width="60" :data="basicData" height="300px" width="800px">
|
100
|
-
<template #tooltip="{ item }">
|
101
|
-
<div style="padding: 8px">
|
102
|
-
<div style="font-weight: bold">{{ item.label }}</div>
|
103
|
-
<div>Consumption: {{ kwhFormatter(item.segments[0].value) }}</div>
|
104
|
-
<div>Peak Time: {{ getPeakTime(item.label) }}</div>
|
105
|
-
<div>Efficiency: {{ getEfficiency(item.segments[0].value) }}</div>
|
106
|
-
</div>
|
107
|
-
</template>
|
108
|
-
</BarChart>
|
109
|
-
|
110
|
-
<h2>10. Chart with Bottom Fields</h2>
|
111
|
-
<BarChart
|
112
|
-
:bar-width="60"
|
113
|
-
:data="basicData"
|
114
|
-
:is-bottom-fields-shown="true"
|
115
|
-
:value-formatter="kwhFormatter"
|
116
|
-
height="300px"
|
117
|
-
width="800px"
|
118
|
-
@update-value="handleValueUpdate"
|
119
|
-
/>
|
120
|
-
|
121
|
-
<h2>11. Scrollable Chart with Bottom Fields</h2>
|
122
|
-
<BarChart
|
123
|
-
:bar-width="40"
|
124
|
-
:data="monthlyData"
|
125
|
-
:is-bottom-fields-shown="true"
|
126
|
-
:is-scrollable="true"
|
127
|
-
:value-formatter="kwhFormatter"
|
128
|
-
height="300px"
|
129
|
-
width="800px"
|
130
|
-
/>
|
131
|
-
|
132
|
-
<h2>12. Stacked Chart with Bottom Fields</h2>
|
133
|
-
<BarChart
|
134
|
-
:bar-width="70"
|
135
|
-
:data="quarterLabels"
|
136
|
-
:is-bottom-fields-shown="true"
|
137
|
-
:is-legend-shown="true"
|
138
|
-
:series="threeZoneSeries"
|
139
|
-
:value-formatter="kwhFormatter"
|
140
|
-
height="400px"
|
141
|
-
width="800px"
|
142
|
-
/>
|
143
|
-
|
144
|
-
<h2>13. Scrollable Stacked Chart with Bottom Fields</h2>
|
145
|
-
<BarChart
|
146
|
-
:bar-width="60"
|
147
|
-
:data="monthLabels"
|
148
|
-
:is-bottom-fields-shown="true"
|
149
|
-
:is-legend-shown="true"
|
150
|
-
:is-scrollable="true"
|
151
|
-
:legends-item-per-row="3"
|
152
|
-
:series="tariffZones"
|
153
|
-
:value-formatter="kwhFormatter"
|
154
|
-
height="400px"
|
155
|
-
width="800px"
|
156
|
-
/>
|
157
|
-
|
158
|
-
<h2>14. Chart with Selection and Bottom Fields</h2>
|
159
|
-
<BarChart
|
160
|
-
:bar-width="40"
|
161
|
-
:data="monthlyData"
|
162
|
-
:is-bottom-fields-shown="true"
|
163
|
-
:is-scrollable="true"
|
164
|
-
:is-selection-enabled="true"
|
165
|
-
:selection-size="6"
|
166
|
-
:value-formatter="kwhFormatter"
|
167
|
-
height="350px"
|
168
|
-
width="800px"
|
169
|
-
@selection-change="handleSelectionChange"
|
170
|
-
/>
|
171
|
-
|
172
|
-
<h2>15. Stacked Chart and Bottom Fields</h2>
|
173
|
-
<BarChart
|
174
|
-
:bar-width="70"
|
175
|
-
:data="quarterLabels"
|
176
|
-
:is-bottom-fields-shown="true"
|
177
|
-
:is-legend-shown="true"
|
178
|
-
:series="threeZoneSeries"
|
179
|
-
:value-formatter="kwhFormatter"
|
180
|
-
height="400px"
|
181
|
-
width="800px"
|
182
|
-
@selection-change="handleSelectionChange"
|
183
|
-
/>
|
184
|
-
</div>
|
185
|
-
</template>
|
186
|
-
|
187
|
-
<script setup>
|
188
|
-
import { ref } from 'vue'
|
189
|
-
import BarChart from './components/barchart/index.vue'
|
190
|
-
|
191
|
-
// Formatters
|
192
|
-
const kwhFormatter = (value) => `${value.toLocaleString()} kWh`
|
193
|
-
|
194
|
-
// Basic data
|
195
|
-
const basicData = [
|
196
|
-
{ label: 'Jan', value: 1200 },
|
197
|
-
{ label: 'Feb', value: 1800 },
|
198
|
-
{ label: 'Mar', value: 2200 },
|
199
|
-
{ label: 'Apr', value: 1600 },
|
200
|
-
{ label: 'May', value: 2400 },
|
201
|
-
{ label: 'Jun', value: 2800 },
|
202
|
-
{ label: 'Jul', value: 2200 },
|
203
|
-
{ label: 'Aug', value: 1600 },
|
204
|
-
{ label: 'Sep', value: 2400 },
|
205
|
-
{ label: 'Oct', value: 2800 },
|
206
|
-
{ label: 'Nov', value: 2200 },
|
207
|
-
{ label: 'Dec', value: 1600 },
|
208
|
-
]
|
209
|
-
|
210
|
-
// Minimal data with fewer points
|
211
|
-
const minimalData = [
|
212
|
-
{ label: 'Q1', value: 3500 },
|
213
|
-
{ label: 'Q2', value: 4200 },
|
214
|
-
{ label: 'Q3', value: 5100 },
|
215
|
-
{ label: 'Q4', value: 4800 },
|
216
|
-
]
|
217
|
-
|
218
|
-
// Labels for stacked charts
|
219
|
-
const quarterLabels = [
|
220
|
-
{ label: 'Q1' },
|
221
|
-
{ label: 'Q2' },
|
222
|
-
{ label: 'Q3' },
|
223
|
-
{ label: 'Q4' },
|
224
|
-
]
|
225
|
-
|
226
|
-
const monthLabels = [
|
227
|
-
{ label: 'Jan' },
|
228
|
-
{ label: 'Feb' },
|
229
|
-
{ label: 'Mar' },
|
230
|
-
{ label: 'Apr' },
|
231
|
-
{ label: 'May' },
|
232
|
-
{ label: 'Jun' },
|
233
|
-
{ label: 'Jul' },
|
234
|
-
{ label: 'Aug' },
|
235
|
-
{ label: 'Sep' },
|
236
|
-
{ label: 'Oct' },
|
237
|
-
{ label: 'Nov' },
|
238
|
-
{ label: 'Dec' },
|
239
|
-
]
|
240
|
-
|
241
|
-
const monthlyData = [
|
242
|
-
{ label: 'Jan', value: 300 },
|
243
|
-
{ label: 'Feb', value: 600 },
|
244
|
-
{ label: 'Mar', value: 1000 },
|
245
|
-
{ label: 'Apr', value: 1200 },
|
246
|
-
{ label: 'May', value: 1400 },
|
247
|
-
{ label: 'Jun', value: 1810 },
|
248
|
-
{ label: 'Jul', value: 2000 },
|
249
|
-
{ label: 'Aug', value: 2200 },
|
250
|
-
{ label: 'Sep', value: 2400 },
|
251
|
-
{ label: 'Oct', value: 2600 },
|
252
|
-
{ label: 'Nov', value: 2800 },
|
253
|
-
{ label: 'Dec', value: 3000 },
|
254
|
-
{ label: 'Jan 2024', value: 2800 },
|
255
|
-
{ label: 'Feb 2024', value: 2600 },
|
256
|
-
{ label: 'Mar 2024', value: 2900 },
|
257
|
-
{ label: 'Apr 2024', value: 3100 },
|
258
|
-
{ label: 'May 2024', value: 2700 },
|
259
|
-
{ label: 'Jun 2024', value: 2500 },
|
260
|
-
]
|
261
|
-
|
262
|
-
// Three zone series data
|
263
|
-
const threeZoneSeries = [
|
264
|
-
{
|
265
|
-
name: 'Peak Hours',
|
266
|
-
data: [
|
267
|
-
{ label: 'Q1', value: 800 },
|
268
|
-
{ label: 'Q2', value: 1200 },
|
269
|
-
{ label: 'Q3', value: 1600 },
|
270
|
-
{ label: 'Q4', value: 1400 },
|
271
|
-
],
|
272
|
-
},
|
273
|
-
{
|
274
|
-
name: 'Mid-Peak',
|
275
|
-
data: [
|
276
|
-
{ label: 'Q1', value: 600 },
|
277
|
-
{ label: 'Q2', value: 800 },
|
278
|
-
{ label: 'Q3', value: 1000 },
|
279
|
-
{ label: 'Q4', value: 900 },
|
280
|
-
],
|
281
|
-
},
|
282
|
-
{
|
283
|
-
name: 'Off-Peak',
|
284
|
-
data: [
|
285
|
-
{ label: 'Q1', value: 400 },
|
286
|
-
{ label: 'Q2', value: 500 },
|
287
|
-
{ label: 'Q3', value: 600 },
|
288
|
-
{ label: 'Q4', value: 550 },
|
289
|
-
],
|
290
|
-
},
|
291
|
-
]
|
292
|
-
|
293
|
-
// Six zone series data
|
294
|
-
const tariffZones = [
|
295
|
-
{
|
296
|
-
name: 'Residential',
|
297
|
-
data: monthLabels.map(() => ({
|
298
|
-
label: 'Jan',
|
299
|
-
value: Math.floor(Math.random() * 300) + 100,
|
300
|
-
})),
|
301
|
-
},
|
302
|
-
{
|
303
|
-
name: 'Commercial',
|
304
|
-
data: monthLabels.map(() => ({
|
305
|
-
label: 'Jan',
|
306
|
-
value: Math.floor(Math.random() * 400) + 200,
|
307
|
-
})),
|
308
|
-
},
|
309
|
-
{
|
310
|
-
name: 'Industrial',
|
311
|
-
data: monthLabels.map(() => ({
|
312
|
-
label: 'Jan',
|
313
|
-
value: Math.floor(Math.random() * 500) + 300,
|
314
|
-
})),
|
315
|
-
},
|
316
|
-
{
|
317
|
-
name: 'Agricultural',
|
318
|
-
data: monthLabels.map(() => ({
|
319
|
-
label: 'Jan',
|
320
|
-
value: Math.floor(Math.random() * 200) + 100,
|
321
|
-
})),
|
322
|
-
},
|
323
|
-
{
|
324
|
-
name: 'Public',
|
325
|
-
data: monthLabels.map(() => ({
|
326
|
-
label: 'Jan',
|
327
|
-
value: Math.floor(Math.random() * 300) + 150,
|
328
|
-
})),
|
329
|
-
},
|
330
|
-
{
|
331
|
-
name: 'Special',
|
332
|
-
data: monthLabels.map(() => ({
|
333
|
-
label: 'Jan',
|
334
|
-
value: Math.floor(Math.random() * 250) + 100,
|
335
|
-
})),
|
336
|
-
},
|
337
|
-
].map((zone) => ({
|
338
|
-
...zone,
|
339
|
-
data: zone.data.map((item, index) => ({
|
340
|
-
...item,
|
341
|
-
label: monthLabels[index].label,
|
342
|
-
})),
|
343
|
-
}))
|
344
|
-
|
345
|
-
// Daily data for scrollable example
|
346
|
-
const dailyData = Array.from({ length: 31 }, (_, i) => ({
|
347
|
-
label: `Day ${i + 1}`,
|
348
|
-
value: Math.floor(Math.random() * 200) + 50,
|
349
|
-
}))
|
350
|
-
|
351
|
-
// Time frame options
|
352
|
-
const timeFrameOptions = [
|
353
|
-
{ label: 'Daily', value: 'daily' },
|
354
|
-
{ label: 'Weekly', value: 'weekly' },
|
355
|
-
{ label: 'Monthly', value: 'monthly' },
|
356
|
-
{ label: 'Yearly', value: 'yearly' },
|
357
|
-
]
|
358
|
-
const selectedTimeFrame = ref('monthly')
|
359
|
-
|
360
|
-
// View options
|
361
|
-
const viewOptions = [
|
362
|
-
{ label: 'Chart', value: 'chart' },
|
363
|
-
{ label: 'Table', value: 'table' },
|
364
|
-
{ label: 'Combined', value: 'combined' },
|
365
|
-
]
|
366
|
-
const selectedView = ref('chart')
|
367
|
-
|
368
|
-
// Handlers
|
369
|
-
const handleTimeFrameSelect = (value) => {
|
370
|
-
selectedTimeFrame.value = value
|
371
|
-
console.log(`Time frame changed to: ${value}`)
|
372
|
-
}
|
373
|
-
|
374
|
-
const handleViewSelect = (value) => {
|
375
|
-
selectedView.value = value
|
376
|
-
console.log(`View changed to: ${value}`)
|
377
|
-
}
|
378
|
-
|
379
|
-
const handleSelectionChange = (selection) => {
|
380
|
-
console.log('Selection changed:', selection)
|
381
|
-
}
|
382
|
-
|
383
|
-
const handleValueUpdate = (data) => {
|
384
|
-
console.log('Value updated:', data)
|
385
|
-
}
|
386
|
-
|
387
|
-
// Helper for custom tooltip
|
388
|
-
const getPeakTime = (month) => {
|
389
|
-
const peakTimes = {
|
390
|
-
Jan: '6-8 PM',
|
391
|
-
Feb: '5-7 PM',
|
392
|
-
Mar: '4-6 PM',
|
393
|
-
Apr: '3-5 PM',
|
394
|
-
May: '2-4 PM',
|
395
|
-
Jun: '1-3 PM',
|
396
|
-
}
|
397
|
-
return peakTimes[month] || 'N/A'
|
398
|
-
}
|
399
|
-
|
400
|
-
const getEfficiency = (value) => {
|
401
|
-
if (value < 1500) return 'High Efficiency'
|
402
|
-
if (value < 2500) return 'Medium Efficiency'
|
403
|
-
return 'Low Efficiency'
|
404
|
-
}
|
405
|
-
</script>
|
406
|
-
|
407
|
-
<style scoped>
|
408
|
-
.demo-container {
|
409
|
-
padding: 20px;
|
410
|
-
font-family: 'Figtree', sans-serif;
|
411
|
-
}
|
412
|
-
|
413
|
-
.demo-container > h2 {
|
414
|
-
margin: 40px 0 20px;
|
415
|
-
color: #333;
|
416
|
-
border-bottom: 1px solid #eee;
|
417
|
-
padding-bottom: 10px;
|
418
|
-
}
|
419
|
-
|
420
|
-
h1 {
|
421
|
-
color: #2c3e50;
|
422
|
-
margin-bottom: 30px;
|
423
|
-
}
|
424
|
-
</style>
|
package/src/TestChart.vue
DELETED
@@ -1,229 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div
|
3
|
-
style="
|
4
|
-
margin-top: 100px;
|
5
|
-
margin-left: 80px;
|
6
|
-
padding-bottom: 100px;
|
7
|
-
display: flex;
|
8
|
-
flex-direction: column;
|
9
|
-
"
|
10
|
-
>
|
11
|
-
<!-- Simple bar chart -->
|
12
|
-
<BarChart
|
13
|
-
:bar-width="60"
|
14
|
-
chart-controls-position="bottom"
|
15
|
-
:data="monthlyData"
|
16
|
-
height="400px"
|
17
|
-
:is-bottom-fields-shown="true"
|
18
|
-
:is-scrollable="false"
|
19
|
-
:is-selection-enabled="true"
|
20
|
-
:selection-size="3"
|
21
|
-
:value-formatter="valueFormatter"
|
22
|
-
width="700px"
|
23
|
-
@selection-change="handleSelectionChange"
|
24
|
-
/>
|
25
|
-
<br />
|
26
|
-
<br />
|
27
|
-
|
28
|
-
<!-- Stacked bar chart -->
|
29
|
-
<BarChart
|
30
|
-
:bar-width="60"
|
31
|
-
:data="monthLabels"
|
32
|
-
height="400px"
|
33
|
-
:is-bottom-fields-shown="true"
|
34
|
-
:is-legend-shown="true"
|
35
|
-
:legends-item-per-row="4"
|
36
|
-
:selected-split-button="selectedTimeFrame"
|
37
|
-
:series="tariffZones"
|
38
|
-
:show-percentage-on-tooltip="true"
|
39
|
-
:split-button-options="options"
|
40
|
-
:value-formatter="valueFormatter"
|
41
|
-
width="700px"
|
42
|
-
y-axis-title="Energy (kWh)"
|
43
|
-
@input-blur="handleInputBlur"
|
44
|
-
@select-split-button="handleSelectSplitButton"
|
45
|
-
/>
|
46
|
-
|
47
|
-
<!-- Stacked bar chart -->
|
48
|
-
<BarChart
|
49
|
-
:bar-width="60"
|
50
|
-
:data="monthLabels"
|
51
|
-
field-mode="percentage"
|
52
|
-
height="400px"
|
53
|
-
:is-bottom-fields-shown="true"
|
54
|
-
:is-legend-shown="false"
|
55
|
-
:legends-item-per-row="4"
|
56
|
-
:series="tariffZones"
|
57
|
-
:value-formatter="valueFormatter"
|
58
|
-
width="700px"
|
59
|
-
@input-blur="handleInputBlur"
|
60
|
-
@select-split-button="handleSelectSplitButton"
|
61
|
-
>
|
62
|
-
<!-- <template #tooltip="{ item, segment }">
|
63
|
-
<div style="display: flex; flex-direction: column">
|
64
|
-
{{ $c.log(item, segment) }}
|
65
|
-
<div>{{ item.label }}</div>
|
66
|
-
<div>{{ item.segments[0].value }} kWh</div>
|
67
|
-
</div>
|
68
|
-
</template> -->
|
69
|
-
</BarChart>
|
70
|
-
</div>
|
71
|
-
</template>
|
72
|
-
|
73
|
-
<script setup>
|
74
|
-
import { ref } from 'vue'
|
75
|
-
import BarChart from '@/components/barchart/index.vue'
|
76
|
-
|
77
|
-
const options = [
|
78
|
-
{ label: 'Day', value: 'day' },
|
79
|
-
{ label: 'Month', value: 'month' },
|
80
|
-
{ label: 'Year', value: 'year' },
|
81
|
-
]
|
82
|
-
|
83
|
-
const selectedTimeFrame = ref('day')
|
84
|
-
|
85
|
-
const handleSelectSplitButton = (value) => {
|
86
|
-
selectedTimeFrame.value = value
|
87
|
-
}
|
88
|
-
|
89
|
-
const monthlyData = [
|
90
|
-
{ label: 'Jan', value: 300 },
|
91
|
-
{ label: 'Feb', value: 600 },
|
92
|
-
{ label: 'Mar', value: 1000 },
|
93
|
-
{ label: 'Apr', value: 1200 },
|
94
|
-
{ label: 'May', value: 1400 },
|
95
|
-
{ label: 'Jun', value: 1810 },
|
96
|
-
{ label: 'Jul', value: 1400 },
|
97
|
-
{ label: 'Aug', value: 1200 },
|
98
|
-
{ label: 'Sep', value: 1000 },
|
99
|
-
// { label: 'Oct', value: 800 },
|
100
|
-
// { label: 'Nov', value: 600 },
|
101
|
-
// { label: 'Dec', value: 400 },
|
102
|
-
// { label: 'Jan', value: 300 },
|
103
|
-
// { label: 'Feb', value: 600 },
|
104
|
-
// { label: 'Mar', value: 1000 },
|
105
|
-
// { label: 'Apr', value: 1200 },
|
106
|
-
// { label: 'May', value: 1400 },
|
107
|
-
// { label: 'Jun', value: 1810 },
|
108
|
-
// { label: 'Jul', value: 1400 },
|
109
|
-
// { label: 'Aug', value: 1200 },
|
110
|
-
// { label: 'Sep', value: 1000 },
|
111
|
-
// { label: 'Oct', value: 800 },
|
112
|
-
// { label: 'Nov', value: 600 },
|
113
|
-
// { label: 'Dec', value: 400 },
|
114
|
-
|
115
|
-
// ... more months
|
116
|
-
]
|
117
|
-
|
118
|
-
const monthLabels = [
|
119
|
-
{ label: 'Jan' },
|
120
|
-
{ label: 'Feb' },
|
121
|
-
{ label: 'Mar' },
|
122
|
-
{ label: 'Apr' },
|
123
|
-
{ label: 'May' },
|
124
|
-
{ label: 'Jun' },
|
125
|
-
// ... more months
|
126
|
-
]
|
127
|
-
|
128
|
-
const tariffZones = ref([
|
129
|
-
{
|
130
|
-
name: 'Tariff Zone 1',
|
131
|
-
data: [
|
132
|
-
{ label: 'Jan', value: 200 },
|
133
|
-
{ label: 'Feb', value: 130 },
|
134
|
-
{ label: 'Mar', value: 220 },
|
135
|
-
{ label: 'Apr', value: 230 },
|
136
|
-
{ label: 'May', value: 200 },
|
137
|
-
{ label: 'Jun', value: 210 },
|
138
|
-
// ... more months
|
139
|
-
],
|
140
|
-
},
|
141
|
-
{
|
142
|
-
name: 'Tariff Zone 2',
|
143
|
-
data: [
|
144
|
-
{ label: 'Jan', value: 200 },
|
145
|
-
{ label: 'Feb', value: 100 },
|
146
|
-
{ label: 'Mar', value: 270 },
|
147
|
-
{ label: 'Apr', value: 180 },
|
148
|
-
{ label: 'May', value: 300 },
|
149
|
-
{ label: 'Jun', value: 250 },
|
150
|
-
// ... more months
|
151
|
-
],
|
152
|
-
},
|
153
|
-
{
|
154
|
-
name: 'Tariff Zone 3',
|
155
|
-
data: [
|
156
|
-
{ label: 'Jan', value: 200 },
|
157
|
-
{ label: 'Feb', value: 100 },
|
158
|
-
{ label: 'Mar', value: 210 },
|
159
|
-
{ label: 'Apr', value: 220 },
|
160
|
-
{ label: 'May', value: 300 },
|
161
|
-
{ label: 'Jun', value: 190 },
|
162
|
-
// ... more months
|
163
|
-
],
|
164
|
-
},
|
165
|
-
{
|
166
|
-
name: 'Tariff Zone 4',
|
167
|
-
data: [
|
168
|
-
{ label: 'Jan', value: 200 },
|
169
|
-
{ label: 'Feb', value: 100 },
|
170
|
-
{ label: 'Mar', value: 210 },
|
171
|
-
{ label: 'Apr', value: 220 },
|
172
|
-
{ label: 'May', value: 300 },
|
173
|
-
{ label: 'Jun', value: 190 },
|
174
|
-
// ... more months
|
175
|
-
],
|
176
|
-
},
|
177
|
-
{
|
178
|
-
name: 'Tariff Zone 5',
|
179
|
-
data: [
|
180
|
-
{ label: 'Jan', value: 200 },
|
181
|
-
{ label: 'Feb', value: 100 },
|
182
|
-
{ label: 'Mar', value: 210 },
|
183
|
-
{ label: 'Apr', value: 220 },
|
184
|
-
{ label: 'May', value: 300 },
|
185
|
-
{ label: 'Jun', value: 190 },
|
186
|
-
// ... more months
|
187
|
-
],
|
188
|
-
},
|
189
|
-
{
|
190
|
-
name: 'Tariff Zone 6',
|
191
|
-
data: [
|
192
|
-
{ label: 'Jan', value: 200 },
|
193
|
-
{ label: 'Feb', value: 100 },
|
194
|
-
{ label: 'Mar', value: 210 },
|
195
|
-
{ label: 'Apr', value: 220 },
|
196
|
-
{ label: 'May', value: 300 },
|
197
|
-
{ label: 'Jun', value: 190 },
|
198
|
-
// ... more months
|
199
|
-
],
|
200
|
-
},
|
201
|
-
// ... more tariff zones
|
202
|
-
])
|
203
|
-
|
204
|
-
const valueFormatter = (value) => {
|
205
|
-
return `${value} kWh`
|
206
|
-
}
|
207
|
-
|
208
|
-
const handleSelectionChange = (selectedBars) => {
|
209
|
-
console.log('selectedBars', selectedBars)
|
210
|
-
}
|
211
|
-
|
212
|
-
const handleInputBlur = (payload) => {
|
213
|
-
const newVal = [...tariffZones.value].map((zone) => {
|
214
|
-
if (zone.name === payload.seriesName) {
|
215
|
-
zone.data = zone.data.map((item) => {
|
216
|
-
if (item.label === payload.label) {
|
217
|
-
item.value = payload.value
|
218
|
-
}
|
219
|
-
return item
|
220
|
-
})
|
221
|
-
}
|
222
|
-
return zone
|
223
|
-
})
|
224
|
-
|
225
|
-
tariffZones.value = newVal
|
226
|
-
}
|
227
|
-
</script>
|
228
|
-
|
229
|
-
<style lang="scss" scoped></style>
|