raain-ui 2.3.6 → 2.3.8

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.
@@ -8,206 +8,168 @@ const auto_1 = __importDefault(require("chart.js/auto"));
8
8
  const Tools_1 = require("./Tools");
9
9
  const helpers_1 = require("chart.js/helpers");
10
10
  const ChartColors_1 = require("./ChartColors");
11
+ const DateStatusUtils_1 = require("./DateStatusUtils");
11
12
  class DateStatusElementInput {
12
- constructor(setOfData = [], focusDate = new Date(), focusRange = Tools_1.DateRange.CENTURY) {
13
+ constructor(setOfData = [], focusDate = new Date(), focusRange = Tools_1.DateRange.CENTURY, chartMinValue, chartMaxValue) {
13
14
  this.setOfData = setOfData;
14
15
  this.focusDate = focusDate;
15
16
  this.focusRange = focusRange;
17
+ this.chartMinValue = chartMinValue;
18
+ this.chartMaxValue = chartMaxValue;
16
19
  }
17
20
  }
18
21
  exports.DateStatusElementInput = DateStatusElementInput;
19
22
  class DateStatusElement {
20
23
  constructor(addSomeDebugInfos = false) {
21
24
  this.addSomeDebugInfos = addSomeDebugInfos;
22
- this.focusReset = () => {
25
+ this.chartTitle = '';
26
+ this.focusReset = async () => {
23
27
  };
24
- this.focusPrevious = () => {
28
+ this.focusPrevious = async () => {
25
29
  };
26
- this.focusNext = () => {
30
+ this.focusNext = async () => {
27
31
  };
28
32
  }
29
- static filterFocus(mapToFilter, focusDate, focusRange) {
30
- return mapToFilter
31
- .filter(e => {
32
- let isIn = true;
33
- if (isIn && focusRange >= Tools_1.DateRange.YEAR) {
34
- isIn = e.date.getFullYear() === focusDate.getFullYear();
35
- }
36
- if (isIn && focusRange >= Tools_1.DateRange.MONTH) {
37
- isIn = e.date.getMonth() === focusDate.getMonth();
38
- }
39
- if (isIn && focusRange >= Tools_1.DateRange.DAY) {
40
- isIn = e.date.getDate() === focusDate.getDate();
41
- }
42
- if (isIn && focusRange >= Tools_1.DateRange.HOUR) {
43
- isIn = e.date.getHours() === focusDate.getHours();
44
- }
45
- if (isIn && focusRange >= Tools_1.DateRange.MINUTE) {
46
- isIn = e.date.getMinutes() === focusDate.getMinutes();
47
- }
48
- return isIn;
49
- })
50
- .sort((a, b) => a.date.getTime() - b.date.getTime());
33
+ get setOfData() {
34
+ return this._setOfData;
51
35
  }
52
- static groupFocus(mapToFilter, focusDate, focusRange, min, max) {
53
- const filteredAndSorted = DateStatusElement.filterFocus(mapToFilter, focusDate, focusRange);
54
- if (focusRange === Tools_1.DateRange.CENTURY) {
55
- const groupedByYear = [];
56
- for (let i = min.getFullYear(); i <= max.getFullYear(); i++) {
57
- const yearDate = new Date(focusDate);
58
- yearDate.setFullYear(i);
59
- const sum = DateStatusElement.filterFocus(filteredAndSorted, yearDate, Tools_1.DateRange.YEAR)
60
- .reduce((partialSum, a) => partialSum + a.value, 0);
61
- groupedByYear.push(sum);
62
- }
63
- return groupedByYear;
64
- }
65
- if (focusRange === Tools_1.DateRange.YEAR) {
66
- const groupedByMonth = [];
67
- for (let i = 0; i < 12; i++) {
68
- const monthDate = new Date(focusDate);
69
- monthDate.setMonth(i);
70
- const sum = DateStatusElement.filterFocus(filteredAndSorted, monthDate, Tools_1.DateRange.MONTH)
71
- .reduce((partialSum, a) => partialSum + a.value, 0);
72
- groupedByMonth.push(sum);
73
- }
74
- return groupedByMonth;
75
- }
76
- if (focusRange === Tools_1.DateRange.MONTH) {
77
- const groupedByDay = [];
78
- const daysInMonth = new Date(focusDate.getFullYear(), focusDate.getMonth(), 0).getDate();
79
- for (let i = 0; i < daysInMonth; i++) {
80
- const dayDate = new Date(focusDate);
81
- dayDate.setDate(i);
82
- const sum = DateStatusElement.filterFocus(filteredAndSorted, dayDate, Tools_1.DateRange.DAY)
83
- .reduce((partialSum, a) => partialSum + a.value, 0);
84
- groupedByDay.push(sum);
85
- }
86
- return groupedByDay;
87
- }
88
- if (focusRange === Tools_1.DateRange.DAY) {
89
- const groupedByHour = [];
90
- for (let i = 0; i < 24; i++) {
91
- const hourDate = new Date(focusDate);
92
- hourDate.setHours(i);
93
- const sum = DateStatusElement.filterFocus(filteredAndSorted, hourDate, Tools_1.DateRange.HOUR)
94
- .reduce((partialSum, a) => partialSum + a.value, 0);
95
- groupedByHour.push(sum);
96
- }
97
- return groupedByHour;
98
- }
99
- if (focusRange === Tools_1.DateRange.HOUR) {
100
- const groupedByMinutes = [];
101
- for (let i = 0; i < 60; i++) {
102
- const minuteDate = new Date(focusDate);
103
- minuteDate.setMinutes(i);
104
- const sum = DateStatusElement.filterFocus(filteredAndSorted, minuteDate, Tools_1.DateRange.MINUTE)
105
- .reduce((partialSum, a) => partialSum + a.value, 0);
106
- groupedByMinutes.push(sum);
107
- }
108
- return groupedByMinutes;
109
- }
110
- return filteredAndSorted.map(e => e.value);
36
+ set setOfData(value) {
37
+ this._setOfData = value;
111
38
  }
112
- static focusLabels(focusDate, focusRange, min, max, data) {
113
- if (focusRange === Tools_1.DateRange.CENTURY) {
114
- const groupedByYear = [];
115
- for (let i = min.getFullYear(); i <= max.getFullYear(); i++) {
116
- groupedByYear.push(DateStatusElement.buildLabelYear(new Date(focusDate), i));
117
- }
118
- return groupedByYear;
119
- }
120
- else if (focusRange === Tools_1.DateRange.YEAR) {
121
- const groupedByMonth = [];
122
- for (let i = 0; i < 12; i++) {
123
- groupedByMonth.push(DateStatusElement.buildLabelMonth(new Date(focusDate), i));
124
- }
125
- return groupedByMonth;
126
- }
127
- else if (focusRange === Tools_1.DateRange.MONTH) {
128
- const groupedByDay = [];
129
- const daysInMonth = new Date(focusDate.getFullYear(), focusDate.getMonth(), 0).getDate();
130
- for (let i = 0; i < daysInMonth; i++) {
131
- groupedByDay.push(DateStatusElement.buildLabelDay(new Date(focusDate), i));
132
- }
133
- return groupedByDay;
134
- }
135
- else if (focusRange === Tools_1.DateRange.DAY) {
136
- const groupedByHour = [];
137
- for (let i = 0; i < 24; i++) {
138
- groupedByHour.push(DateStatusElement.buildLabelHour(new Date(focusDate), i));
139
- }
140
- return groupedByHour;
141
- }
142
- else if (focusRange === Tools_1.DateRange.HOUR) {
143
- const groupedByMinutes = [];
144
- for (let i = 0; i < 60; i++) {
145
- groupedByMinutes.push(DateStatusElement.buildLabelMinute(new Date(focusDate), i));
146
- }
147
- return groupedByMinutes;
148
- }
149
- // all elements that are in the current minute
150
- let allDates = [];
151
- data.forEach(d => {
152
- allDates = allDates.concat(d.values);
153
- });
154
- const filteredDates = DateStatusElement.filterFocus(allDates, focusDate, Tools_1.DateRange.MINUTE);
155
- const filteredDatesISO = filteredDates
156
- .map(v => DateStatusElement.buildLabel(v.date));
157
- return filteredDatesISO.filter((item, pos, self) => {
158
- return self.indexOf(item) === pos;
159
- });
39
+ get originalDataPoints() {
40
+ return this._originalDataPoints;
160
41
  }
161
- static getFocusDateAndTitle(oldFocusDate, focusRange, index, min, max) {
162
- const newFocusDate = new Date(oldFocusDate);
163
- let newTitle = '...';
164
- if (focusRange === Tools_1.DateRange.YEAR) {
165
- newTitle = DateStatusElement.buildLabelYear(newFocusDate, min.getFullYear() + index);
166
- }
167
- else if (focusRange === Tools_1.DateRange.MONTH) {
168
- newTitle = DateStatusElement.buildLabelMonth(newFocusDate, index);
169
- }
170
- else if (focusRange === Tools_1.DateRange.DAY) {
171
- newTitle = DateStatusElement.buildLabelDay(newFocusDate, index);
172
- }
173
- else if (focusRange === Tools_1.DateRange.HOUR) {
174
- newTitle = DateStatusElement.buildLabelHour(newFocusDate, index);
42
+ build(element, inputs) {
43
+ if (inputs.setOfData.length > 7) {
44
+ throw new Error('DateStatusElement: too many data to display');
175
45
  }
176
- else if (focusRange === Tools_1.DateRange.MINUTE) {
177
- newTitle = DateStatusElement.buildLabel(newFocusDate);
46
+ this.setOfData = inputs.setOfData;
47
+ this.chartMinValue = inputs.chartMinValue;
48
+ this.chartMaxValue = inputs.chartMaxValue;
49
+ const datasets = this.buildDateTimeSeries(inputs.focusDate, inputs.focusRange);
50
+ const data = {
51
+ datasets,
52
+ labels: DateStatusUtils_1.DateStatusUtils.focusLabels(inputs.focusDate, inputs.focusRange, this.minDate, this.maxDate, this.setOfData)
53
+ };
54
+ const config = this.createChartConfig(data);
55
+ this.initializeChart(element, config, inputs);
56
+ this.setupFocusHandlers(inputs);
57
+ }
58
+ getFocusPosRelative(event, chart_) {
59
+ const canvasPosition = (0, helpers_1.getRelativePosition)(event[0], chart_);
60
+ return chart_.scales.x.getValueForPixel(canvasPosition.x);
61
+ }
62
+ updateChartTitle(title) {
63
+ this.chartTitle = '' + title;
64
+ if (this.chart && this.chart.config && this.chart.config['_config']) {
65
+ this.chart.config['_config'].options.plugins.title.text = this.chartTitle;
66
+ }
67
+ }
68
+ createChartConfig(data) {
69
+ const options = {
70
+ responsive: true,
71
+ maintainAspectRatio: false,
72
+ plugins: {
73
+ title: {
74
+ display: true,
75
+ text: ' '
76
+ }
77
+ },
78
+ onClick: (...args) => {
79
+ return this.focusClick(args);
80
+ },
81
+ scales: {
82
+ x: {},
83
+ y: {}
84
+ }
85
+ };
86
+ // Add min/max configuration if chartMinValue or chartMaxValue is provided
87
+ if (this.chartMinValue !== undefined || this.chartMaxValue !== undefined) {
88
+ options.scales.y.min = this.chartMinValue;
89
+ options.scales.y.max = this.chartMaxValue;
178
90
  }
179
- // console.log('getFocusDateAndTitle:', focusRange, index, oldFocusDate?.toISOString(), newFocusDate.toISOString(), newTitle);
180
- return { newFocusDate, newTitle };
181
- }
182
- static buildLabel(date) {
183
- // "2024-03-28 13:02:48 CET" l=23
184
- return Tools_1.Tools.formatDate(date, Tools_1.DateRange.MINUTE);
91
+ return {
92
+ data,
93
+ options
94
+ };
185
95
  }
186
- static buildLabelYear(date, year) {
187
- date.setFullYear(year);
188
- return Tools_1.Tools.formatDate(date, Tools_1.DateRange.YEAR);
96
+ initializeChart(element, config, inputs) {
97
+ this.chart = new auto_1.default(element, config);
98
+ this.focusPos = this.getInitialFocusPos(inputs.focusDate, inputs.focusRange, this.minDate);
99
+ this.focusDate = inputs.focusDate;
100
+ this.focusRange = inputs.focusRange;
101
+ this.updateChartTitle(' ');
102
+ }
103
+ setupFocusHandlers(inputs) {
104
+ this.setupFocusClickHandler();
105
+ this.setupFocusResetHandler(inputs);
106
+ this.setupFocusNavigationHandlers();
107
+ }
108
+ setupFocusClickHandler() {
109
+ this.focusClick = async (e) => {
110
+ if (this.focusRange >= Tools_1.DateRange.HOUR) {
111
+ return;
112
+ }
113
+ const focusPos = this.getFocusPosRelative(e, this.chart);
114
+ const { newFocusDate, newTitle } = DateStatusUtils_1.DateStatusUtils.getFocusDateAndTitle(this.focusDate, this.focusRange + 1, focusPos, this.minDate, this.maxDate);
115
+ this.focusRange++;
116
+ this.focusPos = focusPos;
117
+ this.focusDate = new Date(newFocusDate);
118
+ this.updateChartTitle(newTitle);
119
+ this.updateChartData();
120
+ };
189
121
  }
190
- static buildLabelMonth(date, month) {
191
- date.setMonth(month);
192
- return Tools_1.Tools.formatDate(date, Tools_1.DateRange.MONTH);
122
+ setupFocusResetHandler(inputs) {
123
+ this.focusReset = async (dataPoints) => {
124
+ this.updateChartTitle(' ');
125
+ this.focusPos = 0;
126
+ this.focusDate = new Date(inputs.focusDate);
127
+ this.focusRange = inputs.focusRange;
128
+ this.chart.data.datasets.forEach((dataPoint, index) => {
129
+ dataPoint.data = this.originalDataPoints[index];
130
+ if (dataPoints) {
131
+ dataPoint.type = dataPoints[index].type;
132
+ dataPoint.borderColor = dataPoints[index].borderColor;
133
+ dataPoint.backgroundColor = dataPoints[index].backgroundColor;
134
+ dataPoint.label = dataPoints[index].label;
135
+ }
136
+ });
137
+ // Ensure we have valid min and max dates
138
+ if (this.minDate && this.maxDate) {
139
+ this.chart.data.labels = DateStatusUtils_1.DateStatusUtils.focusLabels(this.focusDate, this.focusRange, this.minDate, this.maxDate, this.setOfData);
140
+ }
141
+ this.chart.update();
142
+ };
193
143
  }
194
- static buildLabelDay(date, day) {
195
- date.setDate(day + 1);
196
- return Tools_1.Tools.formatDate(date, Tools_1.DateRange.DAY);
144
+ setupFocusNavigationHandlers() {
145
+ this.focusNext = async () => {
146
+ const { pos, newFocusDate } = this.getFocusPosAdded(1);
147
+ this.updateChart(pos, newFocusDate);
148
+ };
149
+ this.focusPrevious = async () => {
150
+ const { pos, newFocusDate } = this.getFocusPosAdded(-1);
151
+ this.updateChart(pos, newFocusDate);
152
+ };
197
153
  }
198
- static buildLabelHour(date, hour) {
199
- date.setHours(hour);
200
- return Tools_1.Tools.formatDate(date, Tools_1.DateRange.HOUR);
154
+ updateChartData() {
155
+ // Ensure we have valid min and max dates
156
+ if (!(this.minDate && this.maxDate)) {
157
+ return;
158
+ }
159
+ this.chart.data.datasets.forEach((dataset, index) => {
160
+ dataset.data = DateStatusUtils_1.DateStatusUtils.groupFocus(this.setOfData[index].values, this.focusDate, this.focusRange, this.minDate, this.maxDate);
161
+ });
162
+ this.chart.data.labels = DateStatusUtils_1.DateStatusUtils.focusLabels(this.focusDate, this.focusRange, this.minDate, this.maxDate, this.setOfData);
163
+ this.chart.update();
201
164
  }
202
- static buildLabelMinute(date, minute) {
203
- date.setMinutes(minute);
204
- return Tools_1.Tools.formatDate(date, Tools_1.DateRange.MINUTE);
165
+ updateChart(eFocusPos, eFocusDate, eFocusRange = this.focusRange) {
166
+ const { newFocusDate, newTitle } = DateStatusUtils_1.DateStatusUtils.getFocusDateAndTitle(eFocusDate, eFocusRange, eFocusPos, this.minDate, this.maxDate);
167
+ this.focusPos = eFocusPos;
168
+ this.focusDate = new Date(newFocusDate);
169
+ this.updateChartTitle(newTitle);
170
+ this.updateChartData();
205
171
  }
206
- build(element, inputs) {
207
- if (inputs.setOfData.length > 7) {
208
- return null;
209
- }
210
- const datasets = [];
172
+ buildDateTimeSeries(focusDate, focusRange) {
211
173
  const colors = [
212
174
  Tools_1.Tools.getTransparency(ChartColors_1.ChartColors.blue, 0.5),
213
175
  Tools_1.Tools.getTransparency(ChartColors_1.ChartColors.red, 0.5),
@@ -217,169 +179,77 @@ class DateStatusElement {
217
179
  Tools_1.Tools.getTransparency(ChartColors_1.ChartColors.purple, 0.5),
218
180
  Tools_1.Tools.getTransparency(ChartColors_1.ChartColors.yellow, 0.5),
219
181
  ];
220
- const originalDataPoints = [];
221
182
  let min, max;
222
- inputs.setOfData.forEach(s => {
183
+ this.setOfData.forEach(s => {
223
184
  s.values.forEach(v => {
224
185
  min = min ? Math.min(min, v.date.getTime()) : v.date.getTime();
225
186
  max = max ? Math.max(max, v.date.getTime()) : v.date.getTime();
226
187
  });
227
188
  });
228
- min = new Date(min);
229
- max = new Date(max);
230
- for (const [index, dataContainer] of inputs.setOfData.entries()) {
189
+ this.minDate = new Date(min);
190
+ this.maxDate = new Date(max);
191
+ const datasets = [];
192
+ const originalDataPoints = [];
193
+ for (const [index, dataContainer] of this.setOfData.entries()) {
231
194
  const borderColor = colors[index];
232
- const dataPoints = DateStatusElement.groupFocus(dataContainer.values, inputs.focusDate, inputs.focusRange, min, max);
195
+ const data = DateStatusUtils_1.DateStatusUtils.groupFocus(dataContainer.values, focusDate, focusRange, this.minDate, this.maxDate);
233
196
  datasets.push({
234
197
  label: dataContainer.label,
235
198
  type: dataContainer.style,
236
- data: dataPoints,
199
+ data,
237
200
  borderColor,
238
201
  backgroundColor: borderColor,
239
202
  });
240
- originalDataPoints.push(dataPoints);
203
+ originalDataPoints.push(data);
241
204
  }
242
- const data = {
243
- datasets,
244
- labels: DateStatusElement.focusLabels(inputs.focusDate, inputs.focusRange, min, max, inputs.setOfData)
245
- };
246
- this.focusClick = (e) => {
247
- const eChart = (e === null || e === void 0 ? void 0 : e.chart) ? e.chart : chart;
248
- const eFocusRange = eChart['focusRange'] + 1;
249
- const focusPos = this.getFocusPosRelative(e, eChart);
250
- const { newFocusDate, newTitle } = DateStatusElement.getFocusDateAndTitle(eChart['focusDate'], eFocusRange, focusPos, eChart['focusDateMin'], eChart['focusDateMax']);
251
- eChart['focusPos'] = focusPos;
252
- eChart['focusRange'] = eFocusRange;
253
- eChart['focusDate'] = new Date(newFocusDate);
254
- eChart.config['_config'].options.plugins.title.text = '' + newTitle;
255
- eChart.data.datasets.forEach((dataset, index) => {
256
- dataset.data = DateStatusElement.groupFocus(inputs.setOfData[index].values, eChart['focusDate'], eChart['focusRange'], eChart['focusDateMin'], eChart['focusDateMax']);
257
- });
258
- eChart.data.labels = DateStatusElement.focusLabels(eChart['focusDate'], eChart['focusRange'], eChart['focusDateMin'], eChart['focusDateMax'], inputs.setOfData);
259
- eChart.update();
260
- };
261
- const config = {
262
- data,
263
- options: {
264
- responsive: true,
265
- maintainAspectRatio: false,
266
- plugins: {
267
- legend: {
268
- // display: false,
269
- },
270
- tooltip: {
271
- callbacks: {
272
- label: (context) => {
273
- // if (context.dataset.type === 'bubble') {
274
- // return new Date(context.parsed.x).toISOString() + ': '
275
- // + context.parsed.y + ' , ' + context.parsed._custom;
276
- // }
277
- }
278
- }
279
- },
280
- title: {
281
- display: true,
282
- text: ' '
283
- }
284
- },
285
- // scales: {
286
- // x: {
287
- // ticks: {
288
- // callback: labelCallBack,
289
- // }
290
- // }
291
- // },
292
- onClick: this.focusClick
293
- },
294
- };
295
- const chart = new auto_1.default(element, config);
296
- chart['focusPos'] = this.getInitialFocusPos(inputs.focusDate, inputs.focusRange, min);
297
- chart['focusDate'] = inputs.focusDate;
298
- chart['focusRange'] = inputs.focusRange;
299
- chart['focusDateMin'] = min;
300
- chart['focusDateMax'] = max;
301
- this.focusReset = () => {
302
- chart.config['_config'].options.plugins.title.text = '...';
303
- chart['focusPos'] = 0;
304
- chart['focusDate'] = inputs.focusDate;
305
- chart['focusRange'] = Tools_1.DateRange.CENTURY;
306
- chart.data.datasets.forEach((dataset, index) => {
307
- dataset.data = originalDataPoints[index];
308
- });
309
- chart.data.labels = DateStatusElement.focusLabels(chart['focusDate'], chart['focusRange'], chart['focusDateMin'], chart['focusDateMax'], inputs.setOfData);
310
- chart.update();
311
- };
312
- const chartUpdate = (chartToUpdate, eFocusRange, eFocusPos, eFocusDate) => {
313
- const { newFocusDate, newTitle } = DateStatusElement.getFocusDateAndTitle(eFocusDate, eFocusRange, eFocusPos, chartToUpdate['focusDateMin'], chartToUpdate['focusDateMax']);
314
- chartToUpdate['focusPos'] = eFocusPos;
315
- chartToUpdate['focusDate'] = new Date(newFocusDate);
316
- chartToUpdate.config['_config'].options.plugins.title.text = '' + newTitle;
317
- chartToUpdate.data.datasets.forEach((dataset, index) => {
318
- dataset.data = DateStatusElement.groupFocus(inputs.setOfData[index].values, chartToUpdate['focusDate'], chartToUpdate['focusRange'], chartToUpdate['focusDateMin'], chartToUpdate['focusDateMax']);
319
- });
320
- chartToUpdate.data.labels = DateStatusElement.focusLabels(chartToUpdate['focusDate'], chartToUpdate['focusRange'], chartToUpdate['focusDateMin'], chartToUpdate['focusDateMax'], inputs.setOfData);
321
- chartToUpdate.update();
322
- };
323
- this.focusNext = () => {
324
- const eFocusRange = chart['focusRange'];
325
- const { pos, newFocusDate } = this.getFocusPosAdded(chart, eFocusRange, 1, chart['focusDate'], min);
326
- chartUpdate(chart, eFocusRange, pos, newFocusDate);
327
- };
328
- this.focusPrevious = () => {
329
- const eFocusRange = chart['focusRange'];
330
- const { pos, newFocusDate } = this.getFocusPosAdded(chart, eFocusRange, -1, chart['focusDate'], min);
331
- chartUpdate(chart, eFocusRange, pos, newFocusDate);
332
- };
333
- this.chart = chart;
334
- }
335
- getFocusPosRelative(event, chart) {
336
- const canvasPosition = (0, helpers_1.getRelativePosition)(event, chart);
337
- return chart.scales.x.getValueForPixel(canvasPosition.x);
205
+ this._originalDataPoints = originalDataPoints;
206
+ return datasets;
338
207
  }
339
208
  getInitialFocusPos(focusDate, focusRange, min) {
340
209
  let pos = 0;
341
210
  if (focusRange === Tools_1.DateRange.YEAR) {
342
- pos = focusDate.getFullYear() - min.getFullYear();
211
+ pos = focusDate.getUTCFullYear() - min.getUTCFullYear();
343
212
  }
344
213
  else if (focusRange === Tools_1.DateRange.MONTH) {
345
- pos = focusDate.getMonth();
214
+ pos = focusDate.getUTCMonth();
346
215
  }
347
216
  else if (focusRange === Tools_1.DateRange.DAY) {
348
- pos = focusDate.getDate() - 1;
217
+ pos = focusDate.getUTCDate() - 1;
349
218
  }
350
219
  else if (focusRange === Tools_1.DateRange.HOUR) {
351
- pos = focusDate.getHours();
220
+ pos = focusDate.getUTCHours();
352
221
  }
353
222
  else if (focusRange === Tools_1.DateRange.MINUTE) {
354
- pos = focusDate.getMinutes();
223
+ pos = focusDate.getUTCMinutes();
355
224
  }
356
225
  return pos;
357
226
  }
358
- getFocusPosAdded(chart, focusRange, toAdd, focusDate, min) {
359
- let pos = chart['focusPos'] || 0;
227
+ getFocusPosAdded(toAdd, focusDate = this.focusDate, focusRange = this.focusRange) {
228
+ let pos = this.focusPos || 0;
360
229
  const newFocusDate = new Date(focusDate);
230
+ const min = this.minDate;
361
231
  if (focusRange === Tools_1.DateRange.YEAR) {
362
- newFocusDate.setFullYear(focusDate.getFullYear() + toAdd);
363
- pos = newFocusDate.getFullYear() - min.getFullYear();
232
+ newFocusDate.setUTCFullYear(focusDate.getUTCFullYear() + toAdd);
233
+ pos = newFocusDate.getUTCFullYear() - min.getUTCFullYear();
364
234
  }
365
235
  else if (focusRange === Tools_1.DateRange.MONTH) {
366
- newFocusDate.setMonth(focusDate.getMonth() + toAdd);
367
- pos = newFocusDate.getMonth();
236
+ newFocusDate.setUTCMonth(focusDate.getUTCMonth() + toAdd);
237
+ pos = newFocusDate.getUTCMonth();
368
238
  }
369
239
  else if (focusRange === Tools_1.DateRange.DAY) {
370
- newFocusDate.setDate(focusDate.getDate() + toAdd);
371
- pos = newFocusDate.getDate() - 1;
240
+ newFocusDate.setUTCDate(focusDate.getUTCDate() + toAdd);
241
+ pos = newFocusDate.getUTCDate() - 1;
372
242
  }
373
243
  else if (focusRange === Tools_1.DateRange.HOUR) {
374
- newFocusDate.setHours(focusDate.getHours() + toAdd);
375
- pos = newFocusDate.getHours();
244
+ newFocusDate.setUTCHours(focusDate.getUTCHours() + toAdd);
245
+ pos = newFocusDate.getUTCHours();
376
246
  }
377
247
  else if (focusRange === Tools_1.DateRange.MINUTE) {
378
- newFocusDate.setMinutes(focusDate.getMinutes() + toAdd);
379
- pos = newFocusDate.getMinutes();
248
+ newFocusDate.setUTCMinutes(focusDate.getUTCMinutes() + toAdd);
249
+ pos = newFocusDate.getUTCMinutes();
380
250
  }
381
251
  return { pos, newFocusDate };
382
252
  }
383
253
  }
384
254
  exports.DateStatusElement = DateStatusElement;
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVN0YXR1c0VsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yaWVzL0RhdGVTdGF0dXNFbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlEQUFrQztBQUNsQyxtQ0FBeUM7QUFDekMsOENBQXFEO0FBQ3JELCtDQUEwQztBQUUxQyxNQUFhLHNCQUFzQjtJQUMvQixZQUNXLFlBSUQsRUFBRSxFQUNELFlBQWtCLElBQUksSUFBSSxFQUFFLEVBQzVCLGFBQXdCLGlCQUFTLENBQUMsT0FBTztRQU56QyxjQUFTLEdBQVQsU0FBUyxDQUlSO1FBQ0QsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBK0I7SUFFcEQsQ0FBQztDQUNKO0FBWEQsd0RBV0M7QUFFRCxNQUFhLGlCQUFpQjtJQVExQixZQUFzQixvQkFBb0IsS0FBSztRQUF6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUU7UUFDdkIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDMUIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDdEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVTLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBaUQsRUFBRSxTQUFlLEVBQUUsVUFBcUI7UUFJbEgsT0FBTyxXQUFXO2FBQ2IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxpQkFBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUQsQ0FB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
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVN0YXR1c0VsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFjdG9yaWVzL0RhdGVTdGF0dXNFbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlEQUFrQztBQUNsQyxtQ0FBeUM7QUFDekMsOENBQXFEO0FBQ3JELCtDQUEwQztBQUMxQyx1REFBa0Q7QUFnQmxELE1BQWEsc0JBQXNCO0lBQy9CLFlBQ1csWUFBd0IsRUFBRSxFQUMxQixZQUFrQixJQUFJLElBQUksRUFBRSxFQUM1QixhQUF3QixpQkFBUyxDQUFDLE9BQU8sRUFDekMsYUFBc0IsRUFDdEIsYUFBc0I7UUFKdEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBK0I7UUFDekMsa0JBQWEsR0FBYixhQUFhLENBQVM7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQVM7SUFFakMsQ0FBQztDQUNKO0FBVEQsd0RBU0M7QUFFRCxNQUFhLGlCQUFpQjtJQWdCMUIsWUFBc0Isb0JBQW9CLEtBQUs7UUFBekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBYnhDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFjbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUM3QixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ2hDLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDNUIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUlELElBQWMsU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWMsU0FBUyxDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFJ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