iobroker.ebus 3.2.4 → 3.2.6

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 (47) hide show
  1. package/.eslintrc.json +34 -34
  2. package/.releaseconfig.json +3 -0
  3. package/LICENSE +20 -20
  4. package/README.md +147 -130
  5. package/admin/index_m.html +419 -419
  6. package/admin/style.css +18 -18
  7. package/admin/words.js +27 -27
  8. package/io-package.json +218 -192
  9. package/lib/support_tools.js +370 -370
  10. package/lib/tools.js +99 -99
  11. package/main.js +1232 -1232
  12. package/package.json +13 -11
  13. package/widgets/ebus/lib/js/flot/jquery.canvaswrapper.js +549 -549
  14. package/widgets/ebus/lib/js/flot/jquery.colorhelpers.js +199 -199
  15. package/widgets/ebus/lib/js/flot/jquery.flot.axislabels.js +212 -212
  16. package/widgets/ebus/lib/js/flot/jquery.flot.browser.js +98 -98
  17. package/widgets/ebus/lib/js/flot/jquery.flot.categories.js +202 -202
  18. package/widgets/ebus/lib/js/flot/jquery.flot.composeImages.js +330 -330
  19. package/widgets/ebus/lib/js/flot/jquery.flot.crosshair.js +202 -202
  20. package/widgets/ebus/lib/js/flot/jquery.flot.drawSeries.js +662 -662
  21. package/widgets/ebus/lib/js/flot/jquery.flot.errorbars.js +375 -375
  22. package/widgets/ebus/lib/js/flot/jquery.flot.fillbetween.js +254 -254
  23. package/widgets/ebus/lib/js/flot/jquery.flot.flatdata.js +47 -47
  24. package/widgets/ebus/lib/js/flot/jquery.flot.hover.js +361 -361
  25. package/widgets/ebus/lib/js/flot/jquery.flot.image.js +249 -249
  26. package/widgets/ebus/lib/js/flot/jquery.flot.js +2953 -2953
  27. package/widgets/ebus/lib/js/flot/jquery.flot.legend.js +437 -437
  28. package/widgets/ebus/lib/js/flot/jquery.flot.logaxis.js +298 -298
  29. package/widgets/ebus/lib/js/flot/jquery.flot.navigate.js +834 -834
  30. package/widgets/ebus/lib/js/flot/jquery.flot.pie.js +794 -794
  31. package/widgets/ebus/lib/js/flot/jquery.flot.resize.js +60 -60
  32. package/widgets/ebus/lib/js/flot/jquery.flot.saturated.js +43 -43
  33. package/widgets/ebus/lib/js/flot/jquery.flot.selection.js +527 -527
  34. package/widgets/ebus/lib/js/flot/jquery.flot.stack.js +220 -220
  35. package/widgets/ebus/lib/js/flot/jquery.flot.symbol.js +98 -98
  36. package/widgets/ebus/lib/js/flot/jquery.flot.threshold.js +143 -143
  37. package/widgets/ebus/lib/js/flot/jquery.flot.time.js +586 -586
  38. package/widgets/ebus/lib/js/flot/jquery.flot.touch.js +320 -320
  39. package/widgets/ebus/lib/js/flot/jquery.flot.touchNavigate.js +360 -360
  40. package/widgets/ebus/lib/js/flot/jquery.flot.uiConstants.js +10 -10
  41. package/widgets/ebus/lib/js/flot/jquery.js +9473 -9473
  42. package/widgets/ebus/lib/js/lib/globalize.culture.en-US.js +33 -33
  43. package/widgets/ebus/lib/js/lib/globalize.js +1601 -1601
  44. package/widgets/ebus/lib/js/lib/jquery.event.drag.js +145 -145
  45. package/widgets/ebus/lib/js/lib/jquery.mousewheel.js +86 -86
  46. package/widgets/ebus.html +2395 -2395
  47. package/readme.txt +0 -297
package/widgets/ebus.html CHANGED
@@ -1,2395 +1,2395 @@
1
- <!--
2
- ioBroker.vis ebus Widget-Set
3
-
4
- version: "1.0.0"
5
-
6
- Copyright 2017,2018,2019 René G. info@rg-engineering.eu
7
- -->
8
- <!--
9
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.js"></script>
10
- -->
11
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/lib/jquery.event.drag.js"></script>
12
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/lib/jquery.mousewheel.js"></script>
13
-
14
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.canvaswrapper.js"></script>
15
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.colorhelpers.js"></script>
16
-
17
-
18
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.js"></script>
19
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.saturated.js"></script>
20
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.browser.js"></script>
21
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.drawSeries.js"></script>
22
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.uiConstants.js"></script>
23
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.time.js"></script>
24
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.legend.js"></script>
25
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.navigate.js"></script>
26
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.touchNavigate.js"></script>
27
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.hover.js"></script>
28
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.touch.js"></script>
29
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.selection.js"></script>
30
-
31
- <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.axislabels.js"></script>
32
-
33
- <!-- doku for flot : -->
34
- <!-- https://github.com/flot/flot/blob/master/API.md -->
35
-
36
- <style>
37
- .chart-placeholder {
38
- width: 100%;
39
- height: 100%;
40
- font-size: 14px;
41
- line-height: 1.2em;
42
- }
43
-
44
- .legendLayer .background {
45
- fill: rgba(255, 255, 255, 0.85);
46
- stroke: rgba(0, 0, 0, 0.85);
47
- stroke-width: 1;
48
- }
49
- </style>
50
-
51
- <script type="text/javascript">
52
- "use strict";
53
-
54
- var MarkingColor = "eaebe5";
55
-
56
- if (vis.editMode) {
57
- // add translations for non-edit mode
58
- $.extend(true, systemDictionary, {
59
- "ebus": {
60
- "en": "ebus",
61
- "de": "ebus",
62
- "ru": "EBUS",
63
- "pt": "ebus",
64
- "nl": "ebus",
65
- "fr": "ebus",
66
- "it": "eBUS",
67
- "es": "ebus",
68
- "pl": "ebus",
69
- "zh-cn": "巴士"
70
- },
71
- "1 second": {
72
- "en": "1 second",
73
- "de": "1 Sekunde",
74
- "ru": "1 секунда",
75
- "pt": "1 segundo",
76
- "nl": "1 seconde",
77
- "fr": "1 seconde",
78
- "it": "1 secondo",
79
- "es": "1 segundo",
80
- "pl": "1 sekunda",
81
- "zh-cn": "1秒"
82
- },
83
- "10 seconds": {
84
- "en": "10 seconds",
85
- "de": "10 Sekunden",
86
- "ru": "10 секунд",
87
- "pt": "10 segundos",
88
- "nl": "10 seconden",
89
- "fr": "10 secondes",
90
- "it": "10 secondi",
91
- "es": "10 segundos",
92
- "pl": "10 sekund",
93
- "zh-cn": "10秒"
94
- },
95
- "30 seconds": {
96
- "en": "30 seconds",
97
- "de": "30 Sekunden",
98
- "ru": "30 секунд",
99
- "pt": "30 segundos",
100
- "nl": "30 seconden",
101
- "fr": "30 secondes",
102
- "it": "30 secondi",
103
- "es": "30 segundos",
104
- "pl": "30 sekund",
105
- "zh-cn": "30秒"
106
- },
107
- "1 minute": {
108
- "en": "1 minute",
109
- "de": "1 Minute",
110
- "ru": "1 минута",
111
- "pt": "1 minuto",
112
- "nl": "1 minuut",
113
- "fr": "1 minute",
114
- "it": "1 minuto",
115
- "es": "1 minuto",
116
- "pl": "1 minuta",
117
- "zh-cn": "1分钟"
118
- },
119
- "2 minutes": {
120
- "en": "2 minutes",
121
- "de": "2 Minuten",
122
- "ru": "2 минуты",
123
- "pt": "2 minutos",
124
- "nl": "2 minuten",
125
- "fr": "2 minutes",
126
- "it": "2 minuti",
127
- "es": "2 minutos",
128
- "pl": "2 minuty",
129
- "zh-cn": "2分钟"
130
- },
131
- "5 minutes": {
132
- "en": "5 minutes",
133
- "de": "5 Minuten",
134
- "ru": "5 минут",
135
- "pt": "5 minutos",
136
- "nl": "5 minuten",
137
- "fr": "5 minutes",
138
- "it": "5 minuti",
139
- "es": "5 minutos",
140
- "pl": "5 minut",
141
- "zh-cn": "5分钟"
142
- },
143
- "10 minutes": {
144
- "en": "10 minutes",
145
- "de": "10 Minuten",
146
- "ru": "10 минут",
147
- "pt": "10 minutos",
148
- "nl": "10 minuten",
149
- "fr": "10 minutes",
150
- "it": "10 minuti",
151
- "es": "10 minutos",
152
- "pl": "10 minut",
153
- "zh-cn": "10分钟"
154
- },
155
- "30 minutes": {
156
- "en": "30 minutes",
157
- "de": "30 Minuten",
158
- "ru": "30 минут",
159
- "pt": "30 minutos",
160
- "nl": "30 minuten",
161
- "fr": "30 minutes",
162
- "it": "30 minuti",
163
- "es": "30 minutos",
164
- "pl": "30 minut",
165
- "zh-cn": "30分钟"
166
- },
167
- "1 hour": {
168
- "en": "1 hour",
169
- "de": "1 Stunde",
170
- "ru": "1 час",
171
- "pt": "1 hora",
172
- "nl": "1 uur",
173
- "fr": "1 heure",
174
- "it": "1 ora",
175
- "es": "1 hora",
176
- "pl": "1 godzina",
177
- "zh-cn": "1小时"
178
- },
179
- "2 hours": {
180
- "en": "2 hours",
181
- "de": "2 Stunden",
182
- "ru": "два часа",
183
- "pt": "2 horas",
184
- "nl": "twee uur",
185
- "fr": "2 heures",
186
- "it": "2 ore",
187
- "es": "2 horas",
188
- "pl": "2 godziny",
189
- "zh-cn": "2小时"
190
- },
191
- "4 hours": {
192
- "en": "4 hours",
193
- "de": "4 Stunden",
194
- "ru": "4 часа",
195
- "pt": "4 horas",
196
- "nl": "4 uur",
197
- "fr": "4 heures",
198
- "it": "4 ore",
199
- "es": "4 horas",
200
- "pl": "4 godziny",
201
- "zh-cn": "4个小时"
202
- },
203
- "8 hours": {
204
- "en": "8 hours",
205
- "de": "8 Stunden",
206
- "ru": "8 часов",
207
- "pt": "8 horas",
208
- "nl": "8 uur",
209
- "fr": "8 heures",
210
- "it": "8 ore",
211
- "es": "8 horas",
212
- "pl": "8 godzin",
213
- "zh-cn": "8小时"
214
- },
215
- "12 hours": {
216
- "en": "12 hours",
217
- "de": "12 Stunden",
218
- "ru": "12 часов",
219
- "pt": "12 horas",
220
- "nl": "12 uren",
221
- "fr": "12 heures",
222
- "it": "12 ore",
223
- "es": "12 horas",
224
- "pl": "12 godzin",
225
- "zh-cn": "12小时"
226
- },
227
- "24 hours": {
228
- "en": "24 hours",
229
- "de": "24 Stunden",
230
- "ru": "24 часа",
231
- "pt": "24 horas",
232
- "nl": "24 uur",
233
- "fr": "24 heures",
234
- "it": "24 ore",
235
- "es": "24 horas",
236
- "pl": "24 godziny",
237
- "zh-cn": "24小时"
238
- },
239
- "ebusinstance": {
240
- "en": "ebus instance",
241
- "de": "ebus-Instanz",
242
- "ru": "Ebus экземпляр",
243
- "pt": "instância ebus",
244
- "nl": "ebus-instantie",
245
- "fr": "instance ebus",
246
- "it": "istanza ebus",
247
- "es": "instancia de ebus",
248
- "pl": "instancja ebus",
249
- "zh-cn": "ebus实例"
250
- },
251
- "time_interval": {
252
- "en": "Time interval",
253
- "de": "Zeitintervall",
254
- "ru": "Интервал времени",
255
- "pt": "Intervalo de tempo",
256
- "nl": "Tijdsinterval",
257
- "fr": "Intervalle de temps",
258
- "it": "Intervallo di tempo",
259
- "es": "Intervalo de tiempo",
260
- "pl": "Przedział czasowy",
261
- "zh-cn": "时间间隔"
262
- },
263
- "withxaxix": {
264
- "en": "show X axis",
265
- "de": "X-Achse anzeigen",
266
- "ru": "показать ось X",
267
- "pt": "mostre o eixo X",
268
- "nl": "X-as weergeven",
269
- "fr": "afficher l'axe X",
270
- "it": "mostra l'asse X.",
271
- "es": "mostrar eje X",
272
- "pl": "pokaż oś X.",
273
- },
274
-
275
-
276
- "xDateFormat": {
277
- "en": "format for date/time on x-axis",
278
- "de": "Format für Datum / Uhrzeit auf der x-Achse",
279
- "ru": "формат даты / времени по оси X",
280
- "pt": "formato para data / hora no eixo x",
281
- "nl": "formaat voor datum / tijd op x-as",
282
- "fr": "format de date / heure sur l'axe des x",
283
- "it": "formato per data / ora sull'asse x",
284
- "es": "formato para fecha / hora en eje x",
285
- "pl": "format daty / godziny na osi x",
286
- "zh-cn": "x轴上日期/时间的格式"
287
- },
288
- /*
289
- "withborder": {
290
- "en": "show border of grid",
291
- "de": "Rahmen des Gitters anzeigen",
292
- "ru": "показать границу сетки",
293
- "pt": "mostrar borda da grade",
294
- "nl": "rand van raster weergeven",
295
- "fr": "montrer la bordure de la grille",
296
- "it": "mostra il bordo della griglia",
297
- "es": "mostrar borde de cuadrícula",
298
- "pl": "pokaż granicę siatki",
299
- "zh-cn": "显示网格边框"
300
- },*/
301
- "bordercolor": {
302
- "en": "color of grid border",
303
- "de": "Farbe des Gitterrandes",
304
- "ru": "цвет границы сетки",
305
- "pt": "cor da borda da grade",
306
- "nl": "kleur van de rasterrand",
307
- "fr": "couleur de la bordure de la grille",
308
- "it": "colore del bordo della griglia",
309
- "es": "color del borde de la cuadrícula",
310
- "pl": "kolor obramowania siatki",
311
- "zh-cn": "网格边框的颜色"
312
- },
313
-
314
- "nobgcolor": {
315
- "en": "no background color on grid",
316
- "de": "Keine Hintergrundfarbe im Raster",
317
- "ru": "нет цвета фона на сетке",
318
- "pt": "sem cor de fundo na grade",
319
- "nl": "geen achtergrondkleur op het raster",
320
- "fr": "pas de couleur d'arrière-plan sur la grille",
321
- "it": "nessun colore di sfondo sulla griglia",
322
- "es": "sin color de fondo en la cuadrícula",
323
- "pl": "brak koloru tła na siatce",
324
- "zh-cn": "网格上没有背景色"
325
- },
326
-
327
- "bgcolor": {
328
- "en": "background color on grid",
329
- "de": "Hintergrundfarbe auf Raster",
330
- "ru": "цвет фона на сетке",
331
- "pt": "cor de fundo na grade",
332
- "nl": "achtergrondkleur op het raster",
333
- "fr": "couleur de fond sur la grille",
334
- "it": "colore di sfondo sulla griglia",
335
- "es": "color de fondo en la cuadrícula",
336
- "pl": "kolor tła na siatce",
337
- "zh-cn": "网格上的背景色"
338
- },
339
- "withlegend": {
340
- "en": "show legend",
341
- "de": "Legende anzeigen",
342
- "ru": "показать легенду",
343
- "pt": "mostrar legenda",
344
- "nl": "toon legende",
345
- "fr": "montrer la légende",
346
- "it": "mostra legenda",
347
- "es": "Mostrar leyenda",
348
- "pl": "pokaż legendę",
349
- "zh-cn": "显示传奇"
350
- },
351
- "legendposition": {
352
- "en": "legend position",
353
- "de": "Legendenposition",
354
- "ru": "положение легенды",
355
- "pt": "posição da legenda",
356
- "nl": "legende positie",
357
- "fr": "position de la légende",
358
- "it": "posizione della legenda",
359
- "es": "posición de leyenda",
360
- "pl": "pozycja legendy",
361
- "zh-cn": "图例位置"
362
- },
363
-
364
-
365
-
366
- "none": {
367
- "en": "none",
368
- "de": "kein",
369
- "ru": "никто",
370
- "pt": "Nenhum",
371
- "nl": "geen",
372
- "fr": "aucun",
373
- "it": "nessuna",
374
- "es": "ninguna",
375
- "pl": "Żaden",
376
- "zh-cn": "没有"
377
- },
378
- "kWh": {
379
- "en": "kWh",
380
- "de": "kWh",
381
- "ru": "кВтч",
382
- "pt": "kWh",
383
- "nl": "kWh",
384
- "fr": "kWh",
385
- "it": "kWh",
386
- "es": "kWh",
387
- "pl": "kWh",
388
- "zh-cn": "千瓦时"
389
- },
390
- "degree": {
391
- "en": "degree",
392
- "de": "Grad",
393
- "ru": "степень",
394
- "pt": "grau",
395
- "nl": "mate",
396
- "fr": "diplôme",
397
- "it": "grado",
398
- "es": "la licenciatura",
399
- "pl": "stopień",
400
- "zh-cn": "学位"
401
- },
402
-
403
- "group_graph1": {
404
- "en": "graph 1",
405
- "de": "Grafik 1",
406
- "ru": "график 1",
407
- "pt": "gráfico 1",
408
- "nl": "grafiek 1",
409
- "fr": "graphique 1",
410
- "it": "grafico 1",
411
- "es": "gráfico 1",
412
- "pl": "wykres 1",
413
- "zh-cn": "图1"
414
- },
415
-
416
- "graph1charttype": {
417
- "en": "chart type",
418
- "de": "Diagramm Typ",
419
- "ru": "тип диаграммы",
420
- "pt": "tipo de gráfico",
421
- "nl": "grafiektype",
422
- "fr": "type de graphique",
423
- "it": "tipo di grafico",
424
- "es": "tipo de gráfico",
425
- "pl": "typ wykresu",
426
- "zh-cn": "图表类型"
427
- },
428
- "graph1visible": {
429
- "en": "visible",
430
- "de": "sichtbar",
431
- "ru": "видимый",
432
- "pt": "visível",
433
- "nl": "zichtbaar",
434
- "fr": "visible",
435
- "it": "visibile",
436
- "es": "visible",
437
- "pl": "widoczny",
438
- "zh-cn": "可见"
439
- },
440
- "graph1color": {
441
- "en": "color",
442
- "de": "Farbe",
443
- "ru": "цвет",
444
- "pt": "cor",
445
- "nl": "kleur",
446
- "fr": "Couleur",
447
- "it": "colore",
448
- "es": "color",
449
- "pl": "kolor",
450
- "zh-cn": "颜色"
451
- },
452
- "graph1withyaxix": {
453
- "en": "show y axis",
454
- "de": "y-Achse anzeigen",
455
- "ru": "показать ось у",
456
- "pt": "mostre o eixo y",
457
- "nl": "y-as weergeven",
458
- "fr": "afficher l'axe y",
459
- "it": "mostra l'asse y",
460
- "es": "mostrar eje y",
461
- "pl": "pokaż oś y",
462
- "zh-cn": "显示y轴"
463
- },
464
- "graph1YAxisFomat": { "en": "Y axis fomat", "de": "Y-Achsenformat", "ru": "graph1YAxisFomat" },
465
-
466
- "group_graph2": {
467
- "en": "graph 2",
468
- "de": "Grafik 2",
469
- "ru": "график 2",
470
- "pt": "gráfico 2",
471
- "nl": "grafiek 2",
472
- "fr": "graphique 2",
473
- "it": "grafico 2",
474
- "es": "gráfico 2",
475
- "pl": "wykres 2",
476
- "zh-cn": "图2"
477
- },
478
- "graph2charttype": {
479
- "en": "chart type",
480
- "de": "Diagramm Typ",
481
- "ru": "тип диаграммы",
482
- "pt": "tipo de gráfico",
483
- "nl": "grafiektype",
484
- "fr": "type de graphique",
485
- "it": "tipo di grafico",
486
- "es": "tipo de gráfico",
487
- "pl": "typ wykresu",
488
- "zh-cn": "图表类型"
489
- },
490
- "graph2visible": {
491
- "en": "visible",
492
- "de": "sichtbar",
493
- "ru": "видимый",
494
- "pt": "visível",
495
- "nl": "zichtbaar",
496
- "fr": "visible",
497
- "it": "visibile",
498
- "es": "visible",
499
- "pl": "widoczny",
500
- "zh-cn": "可见"
501
- },
502
- "graph2color": {
503
- "en": "color",
504
- "de": "Farbe",
505
- "ru": "цвет",
506
- "pt": "cor",
507
- "nl": "kleur",
508
- "fr": "Couleur",
509
- "it": "colore",
510
- "es": "color",
511
- "pl": "kolor",
512
- "zh-cn": "颜色"
513
- },
514
- "graph2withyaxix": {
515
- "en": "show y axis",
516
- "de": "y-Achse anzeigen",
517
- "ru": "показать ось у",
518
- "pt": "mostre o eixo y",
519
- "nl": "y-as weergeven",
520
- "fr": "afficher l'axe y",
521
- "it": "mostra l'asse y",
522
- "es": "mostrar eje y",
523
- "pl": "pokaż oś y",
524
- "zh-cn": "显示y轴"
525
- },
526
- "graph2YAxisFomat": { "en": "Y axis fomat", "de": "Y-Achsenformat", "ru": "graph1YAxisFomat" },
527
-
528
- "group_graph3": {
529
- "en": "graph 3",
530
- "de": "Grafik 3",
531
- "ru": "график 3",
532
- "pt": "gráfico 3",
533
- "nl": "grafiek 3",
534
- "fr": "graphique 3",
535
- "it": "grafico 3",
536
- "es": "gráfico 3",
537
- "pl": "wykres 3",
538
- "zh-cn": "图3"
539
- },
540
- "graph3charttype": {
541
- "en": "chart type",
542
- "de": "Diagramm Typ",
543
- "ru": "тип диаграммы",
544
- "pt": "tipo de gráfico",
545
- "nl": "grafiektype",
546
- "fr": "type de graphique",
547
- "it": "tipo di grafico",
548
- "es": "tipo de gráfico",
549
- "pl": "typ wykresu",
550
- "zh-cn": "图表类型"
551
- },
552
- "graph3visible": {
553
- "en": "visible",
554
- "de": "sichtbar",
555
- "ru": "видимый",
556
- "pt": "visível",
557
- "nl": "zichtbaar",
558
- "fr": "visible",
559
- "it": "visibile",
560
- "es": "visible",
561
- "pl": "widoczny",
562
- "zh-cn": "可见"
563
- },
564
- "graph3color": {
565
- "en": "color",
566
- "de": "Farbe",
567
- "ru": "цвет",
568
- "pt": "cor",
569
- "nl": "kleur",
570
- "fr": "Couleur",
571
- "it": "colore",
572
- "es": "color",
573
- "pl": "kolor",
574
- "zh-cn": "颜色"
575
- },
576
- "graph3withyaxix": {
577
- "en": "show y axis",
578
- "de": "y-Achse anzeigen",
579
- "ru": "показать ось у",
580
- "pt": "mostre o eixo y",
581
- "nl": "y-as weergeven",
582
- "fr": "afficher l'axe y",
583
- "it": "mostra l'asse y",
584
- "es": "mostrar eje y",
585
- "pl": "pokaż oś y",
586
- "zh-cn": "显示y轴"
587
- },
588
- "graph3YAxisFomat": { "en": "Y axis fomat", "de": "Y-Achsenformat", "ru": "graph1YAxisFomat" },
589
-
590
- "group_graph4": {
591
- "en": "graph 4",
592
- "de": "Grafik 4",
593
- "ru": "график 4",
594
- "pt": "gráfico 4",
595
- "nl": "grafiek 4",
596
- "fr": "graphique 4",
597
- "it": "grafico 4",
598
- "es": "gráfico 4",
599
- "pl": "wykres 4",
600
- "zh-cn": "图4"
601
- },
602
- "graph4charttype": {
603
- "en": "chart type",
604
- "de": "Diagramm Typ",
605
- "ru": "тип диаграммы",
606
- "pt": "tipo de gráfico",
607
- "nl": "grafiektype",
608
- "fr": "type de graphique",
609
- "it": "tipo di grafico",
610
- "es": "tipo de gráfico",
611
- "pl": "typ wykresu",
612
- "zh-cn": "图表类型"
613
- },
614
- "graph4visible": {
615
- "en": "visible",
616
- "de": "sichtbar",
617
- "ru": "видимый",
618
- "pt": "visível",
619
- "nl": "zichtbaar",
620
- "fr": "visible",
621
- "it": "visibile",
622
- "es": "visible",
623
- "pl": "widoczny",
624
- "zh-cn": "可见"
625
- },
626
- "graph4color": {
627
- "en": "color",
628
- "de": "Farbe",
629
- "ru": "цвет",
630
- "pt": "cor",
631
- "nl": "kleur",
632
- "fr": "Couleur",
633
- "it": "colore",
634
- "es": "color",
635
- "pl": "kolor",
636
- "zh-cn": "颜色"
637
- },
638
- "graph4withyaxix": {
639
- "en": "show y axis",
640
- "de": "y-Achse anzeigen",
641
- "ru": "показать ось у",
642
- "pt": "mostre o eixo y",
643
- "nl": "y-as weergeven",
644
- "fr": "afficher l'axe y",
645
- "it": "mostra l'asse y",
646
- "es": "mostrar eje y",
647
- "pl": "pokaż oś y",
648
- "zh-cn": "显示y轴"
649
- },
650
- "graph4YAxisFomat": {
651
- "en": "Y axis format",
652
- "de": "Y-Achsen-Format",
653
- "ru": "Формат оси Y",
654
- "pt": "Formato do eixo Y",
655
- "nl": "Y-as formaat",
656
- "fr": "Format de l'axe Y",
657
- "it": "Formato dell'asse Y.",
658
- "es": "Formato del eje Y",
659
- "pl": "Format osi Y.",
660
- "zh-cn": "Y轴格式"
661
- },
662
-
663
- "oid_historygraph1": {
664
- "en": "OID",
665
- "de": "OID",
666
- "ru": "OID",
667
- "pt": "OID",
668
- "nl": "OID",
669
- "fr": "OID",
670
- "it": "OID",
671
- "es": "OID",
672
- "pl": "OID",
673
- "zh-cn": "OID"
674
- },
675
- "oid_historygraph2": {
676
- "en": "OID",
677
- "de": "OID",
678
- "ru": "OID",
679
- "pt": "OID",
680
- "nl": "OID",
681
- "fr": "OID",
682
- "it": "OID",
683
- "es": "OID",
684
- "pl": "OID",
685
- "zh-cn": "OID"
686
- },
687
- "oid_historygraph3": {
688
- "en": "OID",
689
- "de": "OID",
690
- "ru": "OID",
691
- "pt": "OID",
692
- "nl": "OID",
693
- "fr": "OID",
694
- "it": "OID",
695
- "es": "OID",
696
- "pl": "OID",
697
- "zh-cn": "OID"
698
- },
699
- "oid_historygraph4": {
700
- "en": "OID",
701
- "de": "OID",
702
- "ru": "OID",
703
- "pt": "OID",
704
- "nl": "OID",
705
- "fr": "OID",
706
- "it": "OID",
707
- "es": "OID",
708
- "pl": "OID",
709
- "zh-cn": "OID"
710
- },
711
- "oid_historydate": {
712
- "en": "OID",
713
- "de": "OID",
714
- "ru": "OID",
715
- "pt": "OID",
716
- "nl": "OID",
717
- "fr": "OID",
718
- "it": "OID",
719
- "es": "OID",
720
- "pl": "OID",
721
- "zh-cn": "OID"
722
- },
723
-
724
- "graph1Name": {
725
- "en": "name on legend",
726
- "de": "Name auf Legende",
727
- "ru": "имя по легенде",
728
- "pt": "nome na legenda",
729
- "nl": "naam op legende",
730
- "fr": "nom sur la légende",
731
- "it": "nome sulla leggenda",
732
- "es": "nombre en la leyenda",
733
- "pl": "imię na legendzie",
734
- "zh-cn": "传说中的名字"
735
- },
736
- "graph2Name": {
737
- "en": "name on legend",
738
- "de": "Name auf Legende",
739
- "ru": "имя по легенде",
740
- "pt": "nome na legenda",
741
- "nl": "naam op legende",
742
- "fr": "nom sur la légende",
743
- "it": "nome sulla leggenda",
744
- "es": "nombre en la leyenda",
745
- "pl": "imię na legendzie",
746
- "zh-cn": "传说中的名字"
747
- },
748
- "graph3Name": {
749
- "en": "name on legend",
750
- "de": "Name auf Legende",
751
- "ru": "имя по легенде",
752
- "pt": "nome na legenda",
753
- "nl": "naam op legende",
754
- "fr": "nom sur la légende",
755
- "it": "nome sulla leggenda",
756
- "es": "nombre en la leyenda",
757
- "pl": "imię na legendzie",
758
- "zh-cn": "传说中的名字"
759
- },
760
- "graph4Name": {
761
- "en": "name on legend",
762
- "de": "Name auf Legende",
763
- "ru": "имя по легенде",
764
- "pt": "nome na legenda",
765
- "nl": "naam op legende",
766
- "fr": "nom sur la légende",
767
- "it": "nome sulla leggenda",
768
- "es": "nombre en la leyenda",
769
- "pl": "imię na legendzie",
770
- "zh-cn": "传说中的名字"
771
- },
772
- "axislabelcolor": {
773
- "en": "color of axis label",
774
- "de": "Farbe der Achsenbeschriftung",
775
- "ru": "цвет метки оси",
776
- "pt": "cor do rótulo do eixo",
777
- "nl": "kleur van aslabel",
778
- "fr": "couleur de l'étiquette de l'axe",
779
- "it": "colore dell'etichetta dell'asse",
780
- "es": "color de la etiqueta del eje",
781
- "pl": "kolor etykiety osi",
782
- "zh-cn": "轴标颜色"
783
- },
784
- "tickscolor": {
785
- "en": "color of axis ticks",
786
- "de": "Farbe der Achsenstriche",
787
- "ru": "цвет отметок оси",
788
- "pt": "cor dos tiques do eixo",
789
- "nl": "kleur van as tikken",
790
- "fr": "couleur des tiques des axes",
791
- "it": "colore delle zecche degli assi",
792
- "es": "color de las garrapatas del eje",
793
- "pl": "kolor znaczników osi",
794
- "zh-cn": "轴刻度的颜色"
795
- },
796
- "markingcolor": {
797
- "en": "color of marking",
798
- "de": "Farbe der Markierung",
799
- "ru": "цвет маркировки",
800
- "pt": "cor da marcação",
801
- "nl": "kleur van markering",
802
- "fr": "couleur de marquage",
803
- "it": "colore della marcatura",
804
- "es": "color de marcado",
805
- "pl": "kolor oznakowania",
806
- "zh-cn": "标记颜色"
807
- },
808
- "withmarking": {
809
- "en": "with marking",
810
- "de": "mit Markierung",
811
- "ru": "с маркировкой",
812
- "pt": "com marcação",
813
- "nl": "met markering",
814
- "fr": "avec marquage",
815
- "it": "con marcatura",
816
- "es": "con marcado",
817
- "pl": "z oznaczeniem",
818
- "zh-cn": "带标记"
819
- },
820
-
821
-
822
- "LabelFontSize": {
823
- "en": "size of Label Font",
824
- "de": "Größe der Beschriftungsschrift",
825
- "ru": "размер шрифта метки",
826
- "pt": "tamanho da fonte da etiqueta",
827
- "nl": "grootte van het lettertype",
828
- "fr": "taille de la police d'étiquette",
829
- "it": "dimensione del carattere dell'etichetta",
830
- "es": "tamaño de la fuente de la etiqueta",
831
- "pl": "rozmiar czcionki etykiety",
832
- "zh-cn": "标签字体的大小"
833
- },
834
- "LabelFontFamily": {
835
- "en": "family of label font",
836
- "de": "Schriftfamilie",
837
- "ru": "семейство меток шрифта",
838
- "pt": "família de fontes de rótulo",
839
- "nl": "familie van lettertype",
840
- "fr": "famille de polices d'étiquettes",
841
- "it": "famiglia di caratteri etichetta",
842
- "es": "familia de fuente de etiquetas",
843
- "pl": "rodzina czcionek etykiet",
844
- "zh-cn": "标签字体家族"
845
- },
846
- "graph1coloraxis": {
847
- "en": "color of axis",
848
- "de": "Farbe der Achse",
849
- "ru": "цвет оси",
850
- "pt": "cor do eixo",
851
- "nl": "kleur van de as",
852
- "fr": "couleur de l'axe",
853
- "it": "colore dell'asse",
854
- "es": "color del eje",
855
- "pl": "kolor osi",
856
- "zh-cn": "轴的颜色"
857
- },
858
- "graph1colorticklabel": {
859
- "en": "color tick label",
860
- "de": "Farbe Tick Label",
861
- "ru": "цветная метка",
862
- "pt": "etiqueta de escala de cores",
863
- "nl": "kleur maatlabel",
864
- "fr": "étiquette de couleur tique",
865
- "it": "etichetta con segno di spunta di colore",
866
- "es": "etiqueta de marca de color",
867
- "pl": "kolorowa etykieta kleszczowa",
868
- "zh-cn": "彩色刻度标签"
869
- },
870
- "graph2coloraxis": {
871
- "en": "color of axis",
872
- "de": "Farbe der Achse",
873
- "ru": "цвет оси",
874
- "pt": "cor do eixo",
875
- "nl": "kleur van de as",
876
- "fr": "couleur de l'axe",
877
- "it": "colore dell'asse",
878
- "es": "color del eje",
879
- "pl": "kolor osi",
880
- "zh-cn": "轴的颜色"
881
- },
882
- "graph2colorticklabel": {
883
- "en": "color tick label",
884
- "de": "Farbe Tick Label",
885
- "ru": "цветная метка",
886
- "pt": "etiqueta de escala de cores",
887
- "nl": "kleur maatlabel",
888
- "fr": "étiquette de couleur tique",
889
- "it": "etichetta con segno di spunta di colore",
890
- "es": "etiqueta de marca de color",
891
- "pl": "kolorowa etykieta kleszczowa",
892
- "zh-cn": "彩色刻度标签"
893
- },
894
- "graph3coloraxis": {
895
- "en": "color of axis",
896
- "de": "Farbe der Achse",
897
- "ru": "цвет оси",
898
- "pt": "cor do eixo",
899
- "nl": "kleur van de as",
900
- "fr": "couleur de l'axe",
901
- "it": "colore dell'asse",
902
- "es": "color del eje",
903
- "pl": "kolor osi",
904
- "zh-cn": "轴的颜色"
905
- },
906
- "graph3colorticklabel": {
907
- "en": "color tick label",
908
- "de": "Farbe Tick Label",
909
- "ru": "цветная метка",
910
- "pt": "etiqueta de escala de cores",
911
- "nl": "kleur maatlabel",
912
- "fr": "étiquette de couleur tique",
913
- "it": "etichetta con segno di spunta di colore",
914
- "es": "etiqueta de marca de color",
915
- "pl": "kolorowa etykieta kleszczowa",
916
- "zh-cn": "彩色刻度标签"
917
- },
918
- "graph4coloraxis": {
919
- "en": "color of axis",
920
- "de": "Farbe der Achse",
921
- "ru": "цвет оси",
922
- "pt": "cor do eixo",
923
- "nl": "kleur van de as",
924
- "fr": "couleur de l'axe",
925
- "it": "colore dell'asse",
926
- "es": "color del eje",
927
- "pl": "kolor osi",
928
- "zh-cn": "轴的颜色"
929
- },
930
- "graph4colorticklabel": {
931
- "en": "color tick label",
932
- "de": "Farbe Tick Label",
933
- "ru": "цветная метка",
934
- "pt": "etiqueta de escala de cores",
935
- "nl": "kleur maatlabel",
936
- "fr": "étiquette de couleur tique",
937
- "it": "etichetta con segno di spunta di colore",
938
- "es": "etiqueta de marca de color",
939
- "pl": "kolorowa etykieta kleszczowa",
940
- "zh-cn": "彩色刻度标签"
941
- },
942
-
943
- "graph1tickLength": {
944
- "en": "length of tick",
945
- "de": "Länge des Ticks",
946
- "ru": "длина тика",
947
- "pt": "comprimento do carrapato",
948
- "nl": "lengte van de teek",
949
- "fr": "longueur de tique",
950
- "it": "lunghezza del segno di spunta",
951
- "es": "longitud de la garrapata",
952
- "pl": "długość kleszcza",
953
- "zh-cn": "tick的长度"
954
- },
955
- "graph1showMinorTicks": {
956
- "en": "show minor tick",
957
- "de": "zeige kleine Ticks",
958
- "ru": "показать небольшую галочку",
959
- "pt": "mostre carrapato menor",
960
- "nl": "toon kleine vinkjes",
961
- "fr": "montrer une tique mineure",
962
- "it": "mostra segno di spunta minore",
963
- "es": "mostrar marca menor",
964
- "pl": "pokaż drobne kleszcze",
965
- "zh-cn": "显示小勾"
966
- },
967
- "graph1showTicks": {
968
- "en": "show tick",
969
- "de": "zeige ticks",
970
- "ru": "показать галочку",
971
- "pt": "show tick",
972
- "nl": "vinkje tonen",
973
- "fr": "montrer tique",
974
- "it": "mostra tick",
975
- "es": "mostrar marca",
976
- "pl": "pokaż tik",
977
- "zh-cn": "显示刻度"
978
- },
979
- "graph1tickDecimals": {
980
- "en": "decimals",
981
- "de": "Dezimalstellen",
982
- "ru": "десятичные",
983
- "pt": "decimais",
984
- "nl": "decimalen",
985
- "fr": "décimales",
986
- "it": "decimali",
987
- "es": "decimales",
988
- "pl": "miejsca po przecinku",
989
- "zh-cn": "小数点"
990
- },
991
- "graph1tickSize": {
992
- "en": "tick size",
993
- "de": "Tick-Größe",
994
- "ru": "размер галочки",
995
- "pt": "tamanho do carrapato",
996
- "nl": "teken grootte",
997
- "fr": "taille de la tique",
998
- "it": "dimensione tick",
999
- "es": "tamaño de la garrapata",
1000
- "pl": "rozmiar kleszcza",
1001
- "zh-cn": "刻度大小"
1002
- },
1003
- "graph1minTickSize": {
1004
- "en": "min. tick size",
1005
- "de": "Mindest. Tick-Größe",
1006
- "ru": "минимум размер галочки",
1007
- "pt": "min. tamanho do carrapato",
1008
- "nl": "min. teken grootte",
1009
- "fr": "min. taille de la tique",
1010
- "it": "min. dimensione tick",
1011
- "es": "min. tamaño de la garrapata",
1012
- "pl": "min. rozmiar kleszcza",
1013
- "zh-cn": "分钟刻度大小"
1014
- },
1015
- "graph1labelwidth": {
1016
- "en": "label width",
1017
- "de": "Labelbreite",
1018
- "ru": "ширина этикетки",
1019
- "pt": "largura da etiqueta",
1020
- "nl": "labelbreedte",
1021
- "fr": "largeur d'étiquette",
1022
- "it": "larghezza dell'etichetta",
1023
- "es": "ancho de etiqueta",
1024
- "pl": "szerokość etykiety",
1025
- "zh-cn": "标签宽度"
1026
- },
1027
-
1028
- "graph2tickLength": {
1029
- "en": "length of tick",
1030
- "de": "Länge des Ticks",
1031
- "ru": "длина тика",
1032
- "pt": "comprimento do carrapato",
1033
- "nl": "lengte van de teek",
1034
- "fr": "longueur de tique",
1035
- "it": "lunghezza del segno di spunta",
1036
- "es": "longitud de la garrapata",
1037
- "pl": "długość kleszcza",
1038
- "zh-cn": "tick的长度"
1039
- },
1040
- "graph2showMinorTicks": {
1041
- "en": "show minor tick",
1042
- "de": "zeige kleine Ticks",
1043
- "ru": "показать небольшую галочку",
1044
- "pt": "mostre carrapato menor",
1045
- "nl": "toon kleine vinkjes",
1046
- "fr": "montrer une tique mineure",
1047
- "it": "mostra segno di spunta minore",
1048
- "es": "mostrar marca menor",
1049
- "pl": "pokaż drobne kleszcze",
1050
- "zh-cn": "显示小勾"
1051
- },
1052
- "graph2showTicks": {
1053
- "en": "show tick",
1054
- "de": "zeige ticks",
1055
- "ru": "показать галочку",
1056
- "pt": "show tick",
1057
- "nl": "vinkje tonen",
1058
- "fr": "montrer tique",
1059
- "it": "mostra tick",
1060
- "es": "mostrar marca",
1061
- "pl": "pokaż tik",
1062
- "zh-cn": "显示刻度"
1063
- },
1064
- "graph2tickDecimals": {
1065
- "en": "decimals",
1066
- "de": "Dezimalstellen",
1067
- "ru": "десятичные",
1068
- "pt": "decimais",
1069
- "nl": "decimalen",
1070
- "fr": "décimales",
1071
- "it": "decimali",
1072
- "es": "decimales",
1073
- "pl": "miejsca po przecinku",
1074
- "zh-cn": "小数点"
1075
- },
1076
- "graph2tickSize": {
1077
- "en": "tick size",
1078
- "de": "Tick-Größe",
1079
- "ru": "размер галочки",
1080
- "pt": "tamanho do carrapato",
1081
- "nl": "teken grootte",
1082
- "fr": "taille de la tique",
1083
- "it": "dimensione tick",
1084
- "es": "tamaño de la garrapata",
1085
- "pl": "rozmiar kleszcza",
1086
- "zh-cn": "刻度大小"
1087
- },
1088
- "graph2minTickSize": {
1089
- "en": "min. tick size",
1090
- "de": "Mindest. Tick-Größe",
1091
- "ru": "минимум размер галочки",
1092
- "pt": "min. tamanho do carrapato",
1093
- "nl": "min. teken grootte",
1094
- "fr": "min. taille de la tique",
1095
- "it": "min. dimensione tick",
1096
- "es": "min. tamaño de la garrapata",
1097
- "pl": "min. rozmiar kleszcza",
1098
- "zh-cn": "分钟刻度大小"
1099
- },
1100
- "graph2labelwidth": {
1101
- "en": "label width",
1102
- "de": "Labelbreite",
1103
- "ru": "ширина этикетки",
1104
- "pt": "largura da etiqueta",
1105
- "nl": "labelbreedte",
1106
- "fr": "largeur d'étiquette",
1107
- "it": "larghezza dell'etichetta",
1108
- "es": "ancho de etiqueta",
1109
- "pl": "szerokość etykiety",
1110
- "zh-cn": "标签宽度"
1111
- },
1112
-
1113
- "graph3tickLength": {
1114
- "en": "length of tick",
1115
- "de": "Länge des Ticks",
1116
- "ru": "длина тика",
1117
- "pt": "comprimento do carrapato",
1118
- "nl": "lengte van de teek",
1119
- "fr": "longueur de tique",
1120
- "it": "lunghezza del segno di spunta",
1121
- "es": "longitud de la garrapata",
1122
- "pl": "długość kleszcza",
1123
- "zh-cn": "tick的长度"
1124
- },
1125
- "graph3showMinorTicks": {
1126
- "en": "show minor tick",
1127
- "de": "zeige kleine Ticks",
1128
- "ru": "показать небольшую галочку",
1129
- "pt": "mostre carrapato menor",
1130
- "nl": "toon kleine vinkjes",
1131
- "fr": "montrer une tique mineure",
1132
- "it": "mostra segno di spunta minore",
1133
- "es": "mostrar marca menor",
1134
- "pl": "pokaż drobne kleszcze",
1135
- "zh-cn": "显示小勾"
1136
- },
1137
- "graph3showTicks": {
1138
- "en": "show tick",
1139
- "de": "zeige ticks",
1140
- "ru": "показать галочку",
1141
- "pt": "show tick",
1142
- "nl": "vinkje tonen",
1143
- "fr": "montrer tique",
1144
- "it": "mostra tick",
1145
- "es": "mostrar marca",
1146
- "pl": "pokaż tik",
1147
- "zh-cn": "显示刻度"
1148
- },
1149
- "graph3tickDecimals": {
1150
- "en": "decimals",
1151
- "de": "Dezimalstellen",
1152
- "ru": "десятичные",
1153
- "pt": "decimais",
1154
- "nl": "decimalen",
1155
- "fr": "décimales",
1156
- "it": "decimali",
1157
- "es": "decimales",
1158
- "pl": "miejsca po przecinku",
1159
- "zh-cn": "小数点"
1160
- },
1161
- "graph3tickSize": {
1162
- "en": "tick size",
1163
- "de": "Tick-Größe",
1164
- "ru": "размер галочки",
1165
- "pt": "tamanho do carrapato",
1166
- "nl": "teken grootte",
1167
- "fr": "taille de la tique",
1168
- "it": "dimensione tick",
1169
- "es": "tamaño de la garrapata",
1170
- "pl": "rozmiar kleszcza",
1171
- "zh-cn": "刻度大小"
1172
- },
1173
- "graph3minTickSize": {
1174
- "en": "min. tick size",
1175
- "de": "Mindest. Tick-Größe",
1176
- "ru": "минимум размер галочки",
1177
- "pt": "min. tamanho do carrapato",
1178
- "nl": "min. teken grootte",
1179
- "fr": "min. taille de la tique",
1180
- "it": "min. dimensione tick",
1181
- "es": "min. tamaño de la garrapata",
1182
- "pl": "min. rozmiar kleszcza",
1183
- "zh-cn": "分钟刻度大小"
1184
- },
1185
- "graph3labelwidth": {
1186
- "en": "label width",
1187
- "de": "Labelbreite",
1188
- "ru": "ширина этикетки",
1189
- "pt": "largura da etiqueta",
1190
- "nl": "labelbreedte",
1191
- "fr": "largeur d'étiquette",
1192
- "it": "larghezza dell'etichetta",
1193
- "es": "ancho de etiqueta",
1194
- "pl": "szerokość etykiety",
1195
- "zh-cn": "标签宽度"
1196
- },
1197
-
1198
- "graph4tickLength": {
1199
- "en": "length of tick",
1200
- "de": "Länge des Ticks",
1201
- "ru": "длина тика",
1202
- "pt": "comprimento do carrapato",
1203
- "nl": "lengte van de teek",
1204
- "fr": "longueur de tique",
1205
- "it": "lunghezza del segno di spunta",
1206
- "es": "longitud de la garrapata",
1207
- "pl": "długość kleszcza",
1208
- "zh-cn": "tick的长度"
1209
- },
1210
- "graph4showMinorTicks": {
1211
- "en": "show minor tick",
1212
- "de": "zeige kleine Ticks",
1213
- "ru": "показать небольшую галочку",
1214
- "pt": "mostre carrapato menor",
1215
- "nl": "toon kleine vinkjes",
1216
- "fr": "montrer une tique mineure",
1217
- "it": "mostra segno di spunta minore",
1218
- "es": "mostrar marca menor",
1219
- "pl": "pokaż drobne kleszcze",
1220
- "zh-cn": "显示小勾"
1221
- },
1222
- "graph4showTicks": {
1223
- "en": "show tick",
1224
- "de": "zeige ticks",
1225
- "ru": "показать галочку",
1226
- "pt": "show tick",
1227
- "nl": "vinkje tonen",
1228
- "fr": "montrer tique",
1229
- "it": "mostra tick",
1230
- "es": "mostrar marca",
1231
- "pl": "pokaż tik",
1232
- "zh-cn": "显示刻度"
1233
- },
1234
- "graph4tickDecimals": {
1235
- "en": "decimals",
1236
- "de": "Dezimalstellen",
1237
- "ru": "десятичные",
1238
- "pt": "decimais",
1239
- "nl": "decimalen",
1240
- "fr": "décimales",
1241
- "it": "decimali",
1242
- "es": "decimales",
1243
- "pl": "miejsca po przecinku",
1244
- "zh-cn": "小数点"
1245
- },
1246
- "graph4tickSize": {
1247
- "en": "tick size",
1248
- "de": "Tick-Größe",
1249
- "ru": "размер галочки",
1250
- "pt": "tamanho do carrapato",
1251
- "nl": "teken grootte",
1252
- "fr": "taille de la tique",
1253
- "it": "dimensione tick",
1254
- "es": "tamaño de la garrapata",
1255
- "pl": "rozmiar kleszcza",
1256
- "zh-cn": "刻度大小"
1257
- },
1258
- "graph4minTickSize": {
1259
- "en": "min. tick size",
1260
- "de": "Mindest. Tick-Größe",
1261
- "ru": "минимум размер галочки",
1262
- "pt": "min. tamanho do carrapato",
1263
- "nl": "min. teken grootte",
1264
- "fr": "min. taille de la tique",
1265
- "it": "min. dimensione tick",
1266
- "es": "min. tamaño de la garrapata",
1267
- "pl": "min. rozmiar kleszcza",
1268
- "zh-cn": "分钟刻度大小"
1269
- },
1270
- "graph4labelwidth": {
1271
- "en": "label width",
1272
- "de": "Labelbreite",
1273
- "ru": "ширина этикетки",
1274
- "pt": "largura da etiqueta",
1275
- "nl": "labelbreedte",
1276
- "fr": "largeur d'étiquette",
1277
- "it": "larghezza dell'etichetta",
1278
- "es": "ancho de etiqueta",
1279
- "pl": "szerokość etykiety",
1280
- "zh-cn": "标签宽度"
1281
- },
1282
- "WithHOver": {
1283
- "en": "With Value box",
1284
- "de": "Mit Wertbox",
1285
- "ru": "С коробкой ценности",
1286
- "pt": "Com caixa de valor",
1287
- "nl": "Met Value box",
1288
- "fr": "Avec boîte de valeur",
1289
- "it": "Con Valore",
1290
- "es": "Con caja de valor",
1291
- "pl": "Wagon z Value",
1292
- "zh-cn": "价值箱"
1293
- },
1294
- "WithPoints": {
1295
- "en": "with points",
1296
- "de": "mit Punkten",
1297
- "ru": "с точками",
1298
- "pt": "com pontos",
1299
- "nl": "met punten",
1300
- "fr": "avec points",
1301
- "it": "con punti",
1302
- "es": "con puntos",
1303
- "pl": "punkty",
1304
- "zh-cn": "要点"
1305
- }
1306
-
1307
- });
1308
- }
1309
-
1310
-
1311
-
1312
- // this code can be placed directly in template.html
1313
- vis.binds.ebus = {
1314
- version: "2.4.4",
1315
- showVersion: function () {
1316
- if (vis.binds.ebus.version) {
1317
- console.log('Version vis-ebus: ' + vis.binds.ebus.version);
1318
- vis.binds.ebus.version = null;
1319
- }
1320
- },
1321
- setup: {
1322
- intervals: {
1323
- '1 second': 1000,
1324
- '10 seconds': 10000,
1325
- '30 seconds': 30000,
1326
- '1 minute': 60000,
1327
- '2 minutes': 120000,
1328
- '5 minutes': 300000,
1329
- '10 minutes': 600000,
1330
- '30 minutes': 1800000,
1331
- '1 hour': 3600000,
1332
- '2 hours': 7200000,
1333
- '4 hours': 14400000,
1334
- '8 hours': 28800000,
1335
- '12 hours': 43200000,
1336
- '24 hours': 86400000
1337
- },
1338
-
1339
- },
1340
- history: {
1341
-
1342
- init: function (widgetID, view, data1, style) {
1343
- var $div = $('#' + widgetID);
1344
- console.log("ebus history (" + widgetID + ")");
1345
- var data = {};
1346
- for (var s in data1) {
1347
- if (s[0] !== '_' && data1.hasOwnProperty(s) && typeof data1[s] !== 'object' && typeof data1[s] !== 'function') {
1348
- data[s] = data1[s];
1349
- }
1350
-
1351
- }
1352
-
1353
- //****************************************************************************************
1354
- //hover
1355
-
1356
- if (data.WithHOver) {
1357
- //das muss in's init...
1358
-
1359
-
1360
-
1361
- $("<div id='ebustooltip'></div>").css({
1362
- position: "absolute",
1363
- display: "none",
1364
- border: "1px solid #fdd",
1365
- padding: "2px",
1366
- "background-color": "#fee",
1367
- opacity: 1
1368
- }).appendTo("body");
1369
- //****************************************************************************************
1370
- }
1371
-
1372
- function SetMarkingColor(color) {
1373
- MarkingColor = color;
1374
- }
1375
- function noneFormatter(val, axis) {
1376
-
1377
- let myval;
1378
- if (typeof val == "string") {
1379
- console.log('noneFormatter convert to number ');
1380
- myval = Number(val);
1381
- }
1382
- else {
1383
- myval = val;
1384
- }
1385
-
1386
- console.log('noneFormatter for ' + val + " " + typeof val);
1387
-
1388
- return (myval * 1).toFixed(axis.tickDecimals);
1389
- }
1390
-
1391
- function degreeFormatter(val, axis) {
1392
- let myval;
1393
- if (typeof val == "string") {
1394
- console.log('degreeFormatter convert to number ');
1395
- myval = Number(val);
1396
- }
1397
- else {
1398
- myval = val;
1399
- }
1400
-
1401
- console.log('degreeFormatter for ' + val + " " + typeof val);
1402
-
1403
- return (myval * 1).toFixed(axis.tickDecimals) + "°C";
1404
- }
1405
-
1406
- function xwhFormatter(val, axis) {
1407
- let myval;
1408
- if (typeof val == "string") {
1409
- console.log('xwhFormatter convert to number ');
1410
- myval = Number(val);
1411
- }
1412
- else {
1413
- myval = val;
1414
- }
1415
-
1416
- console.log('xwhFormatter for ' + val + " " + typeof val);
1417
-
1418
- if (myval > 1000000)
1419
- return (myval / 1000000).toFixed(axis.tickDecimals) + " MWh";
1420
- else if (myval > 1000)
1421
- return (myval / 1000).toFixed(axis.tickDecimals) + " kWh";
1422
- else
1423
- return (myval*1).toFixed(axis.tickDecimals) + " Wh";
1424
- }
1425
-
1426
- function xwFormatter(val, axis) {
1427
-
1428
- let myval;
1429
- if (typeof val == "string") {
1430
- console.log('xwFormatter convert to number ');
1431
- myval = Number(val);
1432
- }
1433
- else {
1434
- myval = val;
1435
- }
1436
-
1437
- console.log('xwFormatter for ' + val + " " + typeof val);
1438
-
1439
- if (myval > 1000000)
1440
- return (myval / 1000000).toFixed(axis.tickDecimals) + " MW";
1441
- else if (myval > 1000)
1442
- return (myval / 1000).toFixed(axis.tickDecimals) + " kW";
1443
- else
1444
- return (myval*1).toFixed(axis.tickDecimals) + " W";
1445
- }
1446
-
1447
- function xkwFormatter(val, axis) {
1448
-
1449
- let myval;
1450
- if (typeof val == "string") {
1451
- console.log('xkwFormatter convert to number ');
1452
- myval = Number(val);
1453
- }
1454
- else {
1455
- myval = val;
1456
- }
1457
-
1458
- console.log('xkwFormatter for ' + val + " " + typeof val);
1459
-
1460
- if (myval > 1000)
1461
- return (myval / 1000).toFixed(axis.tickDecimals) + " MW";
1462
- else if (myval > 1)
1463
- return (myval / 1).toFixed(axis.tickDecimals) + " kW";
1464
- else
1465
- return (myval * 0.001).toFixed(axis.tickDecimals) + " W";
1466
- }
1467
-
1468
- function legendformater(label, series) {
1469
-
1470
- //wenn keine Daten, dann ausblenden -> (return null)
1471
- if (series.data == null || typeof series.data == "undefined" || typeof series.data[0] == "undefined") {
1472
-
1473
- console.log('legendformater no label because no data ');
1474
- return null;
1475
- }
1476
- else {
1477
- console.log('legendformater label ' + label);
1478
- return label;
1479
- }
1480
- }
1481
-
1482
- function GridMarkings(axes) {
1483
-
1484
- var markings = [];
1485
- var minDate = new Date(axes.xaxis.min);
1486
-
1487
- const dayDiff = (axes.xaxis.max - axes.xaxis.min) / 1000 / 60 / 60 / 24;
1488
- console.log('GridMarkings: DayDiff ' + dayDiff + ' (' + axes.xaxis.max + ' ' + axes.xaxis.min + ')');
1489
-
1490
- var i = minDate.getTime();
1491
-
1492
- let limit = 0;
1493
- //if we only few hours then we need markings per hour otherwise per day
1494
- if (dayDiff > 2) {
1495
- do {
1496
- markings.push({ xaxis: { from: i, to: i + 24 * 60 * 60 * 1000 }, color: MarkingColor });
1497
- i += 2 * 24 * 60 * 60 * 1000;
1498
- limit++;
1499
- } while (i < axes.xaxis.max || limit > 200);
1500
-
1501
- }
1502
- else {
1503
- do {
1504
- markings.push({ xaxis: { from: i, to: i + 60 * 60 * 1000 }, color: MarkingColor });
1505
- i += 2 * 60 * 60 * 1000;
1506
- limit++;
1507
- } while (i < axes.xaxis.max || limit > 200);
1508
- }
1509
- return markings;
1510
-
1511
- }
1512
-
1513
- function CalcTicks4X(axis) {
1514
-
1515
- var ticks = [];
1516
-
1517
- var minDate = new Date(axis.min);
1518
-
1519
- const dayDiff = (axis.max - axis.min) / 1000 / 60 / 60 / 24;
1520
-
1521
- console.log('CalcTicks4X: DayDiff ' + dayDiff + ' (' + axis.max + ' ' + axis.min + ')');
1522
-
1523
- let limit = 0;
1524
- //if we only few hours then we need markings per hour otherwise per day
1525
- //Achtung, wenn zuwenige Punkte, dann wird X-Achse Beschriftung nicht angezeigt
1526
- if (dayDiff > 2) {
1527
- minDate.setHours(12);
1528
- minDate.setMinutes(0);
1529
- var i = minDate.getTime();
1530
- console.log('CalcTicks4X: start ' + i);
1531
- do {
1532
- ticks.push([i]);
1533
- i += 24 * 60 * 60 * 1000;
1534
- console.log('CalcTicks4X: next ' + i + " limit " + limit);
1535
- limit++;
1536
- } while (i < axis.max || limit > 200);
1537
- }
1538
- else if (dayDiff > 0.24) {
1539
- minDate.setHours(12);
1540
- minDate.setMinutes(0);
1541
- var i = minDate.getTime();
1542
- console.log('CalcTicks4X: start ' + i);
1543
- do {
1544
- ticks.push([i]);
1545
- i += 4 * 60 * 60 * 1000;
1546
- console.log('CalcTicks4X: next ' + i + " limit " + limit);
1547
- limit++;
1548
- } while (i < axis.max || limit > 200);
1549
- }
1550
- else {
1551
- minDate.setHours(0);
1552
- minDate.setMinutes(0);
1553
- var i = minDate.getTime();
1554
- console.log('CalcTicks4X: start ' + i);
1555
- do {
1556
- ticks.push([i]);
1557
- i += 1 * 60 * 60 * 1000;
1558
- console.log('CalcTicks4X: next ' + i + " limit " + limit);
1559
- limit++;
1560
- } while (i < axis.max || limit > 200);
1561
- }
1562
- return ticks;
1563
- }
1564
-
1565
-
1566
-
1567
-
1568
-
1569
- //should avoid endles loops
1570
- let UpdateRetryCounter = 0;
1571
-
1572
-
1573
-
1574
-
1575
- function update() {
1576
-
1577
- console.log("ShowChart ebus (" + widgetID + ") retry counter " + UpdateRetryCounter);
1578
-
1579
- var $div = $('#' + widgetID);
1580
- // if nothing found => wait
1581
- if (!$div.length) {
1582
- return setTimeout(function () {
1583
- console.log("need to wait... (" + widgetID + ")");
1584
- if (UpdateRetryCounter < 5) {
1585
- UpdateRetryCounter++;
1586
- update();
1587
- }
1588
- }, 1000);
1589
- }
1590
-
1591
- UpdateRetryCounter = 0;
1592
- console.log("ShowChart ebus begin (" + widgetID + ")");
1593
-
1594
- if (!data || !data.ebusinstance) {
1595
- console.log("keine instanz (" + widgetID + ")");
1596
- $div.html("<br> <center> <font color='red'> no instance for ebus specified </font> </center></br>");
1597
- }
1598
-
1599
- else {
1600
-
1601
- SetMarkingColor(data.markingcolor);
1602
-
1603
- var dateMin = -1;
1604
- var dateMax = -1;
1605
-
1606
- //parse data
1607
- var oid_historydate = data.oid_historydate;
1608
- var oid_historygraph1 = data.oid_historygraph1;
1609
- var oid_historygraph2 = data.oid_historygraph2;
1610
- var oid_historygraph3 = data.oid_historygraph3;
1611
- var oid_historygraph4 = data.oid_historygraph4;
1612
-
1613
- var data_value1 = null;
1614
- var data_value2 = null;
1615
- var data_value3 = null;
1616
- var data_value4 = null;
1617
-
1618
- if (data.graph1visible) {
1619
- try {
1620
- var data_date = JSON.parse(vis.states[oid_historydate + '.val']);
1621
-
1622
- if (oid_historygraph1 != "") {
1623
- data_value1 = JSON.parse(vis.states[oid_historygraph1 + '.val']);
1624
- }
1625
- } catch (e) {
1626
- console.warn('parse error [' + e + ']');
1627
- $div.html("<br> <center> <font color='red'>exception in parse data graph1 </font> </center></br>");
1628
- return;
1629
- }
1630
- }
1631
- if (data.graph2visible) {
1632
-
1633
- try {
1634
-
1635
- if (oid_historygraph2 != "") {
1636
- data_value2 = JSON.parse(vis.states[oid_historygraph2 + '.val']);
1637
- }
1638
- } catch (e) {
1639
- console.warn('parse error [' + e + ']');
1640
- $div.html("<br> <center> <font color='red'>exception in parse data graph2 </font> </center></br>");
1641
- return;
1642
- }
1643
- }
1644
- if (data.graph3visible) {
1645
-
1646
- try {
1647
-
1648
- if (oid_historygraph3 != "") {
1649
- data_value3 = JSON.parse(vis.states[oid_historygraph3 + '.val']);
1650
- }
1651
- } catch (e) {
1652
- console.warn('parse error [' + e + ']');
1653
- $div.html("<br> <center> <font color='red'>exception in parse data graph3 </font> </center></br>");
1654
- return;
1655
- }
1656
- }
1657
- if (data.graph4visible) {
1658
-
1659
- try {
1660
-
1661
- if (oid_historygraph4 != "") {
1662
- data_value4 = JSON.parse(vis.states[oid_historygraph4 + '.val']);
1663
- }
1664
- } catch (e) {
1665
- console.warn('parse error [' + e + ']');
1666
- $div.html("<br> <center> <font color='red'>exception in parse data graph4 </font> </center></br>");
1667
- return;
1668
- }
1669
- }
1670
- if (data_date === null || typeof data_date == "undefined" || data_date.length < 1) {
1671
- $div.html("<br> <center> <font color='red'>no data available yet for ebus </font> </center></br>");
1672
- return;
1673
- }
1674
-
1675
- var values_graph1 = [];
1676
- var maxY_graph = [-99, -99, -99, -99];
1677
- var minY_graph = [999999, 999999, 999999, 999999];
1678
-
1679
- var values_graph2 = [];
1680
-
1681
- var values_graph3 = [];
1682
-
1683
- var values_graph4 = [];
1684
-
1685
- //since all datpoints should have the same length we use date datapoint as master
1686
- for (var i = 0; i < data_date.length; i++) {
1687
- try {
1688
- var oValDate = data_date[i];
1689
-
1690
- var sDate = oValDate[0]["date"];
1691
- var sTime = oValDate[0]["time"];
1692
-
1693
- var DateArray = sDate.split(".");
1694
- var TimeArray = sTime.split(":");
1695
- var hour = TimeArray[0];
1696
- var minute = TimeArray[1];
1697
- var day = DateArray[0];
1698
- var month = DateArray[1];
1699
- var year = DateArray[2];
1700
-
1701
- var oDate = new Date();
1702
- oDate.setHours(hour);
1703
- oDate.setMinutes(minute);
1704
- oDate.setDate(day);
1705
- oDate.setMonth(month - 1);
1706
- oDate.setYear(year);
1707
-
1708
- var date = oDate.getTime();
1709
-
1710
- if (dateMin === -1) {
1711
- dateMin = date;
1712
- }
1713
- dateMax = date;
1714
-
1715
- var oValGraph1 = null;
1716
- if (data_value1 != null) {
1717
- oValGraph1 = data_value1[i];
1718
- }
1719
- var oValGraph2 = null;
1720
- if (data_value2 != null) {
1721
- var oValGraph2 = data_value2[i];
1722
- }
1723
- var oValGraph3 = null;
1724
- if (data_value3 != null) {
1725
- var oValGraph3 = data_value3[i];
1726
- }
1727
- var oValGraph4 = null;
1728
- if (data_value4 != null) {
1729
- var oValGraph4 = data_value4[i];
1730
- }
1731
- var sVal = oValGraph1;
1732
- if (sVal != null && typeof sVal != "undefined") {
1733
- var names = Object.keys(sVal[0]);
1734
- var sValGraph1 = sVal[0][names[0]];
1735
- //console.log("graph1 " + sDate + " " + sTime + ": " + sValGraph1);
1736
- //console.log("graph1 " + oDate.toISOString() + " " + sValGraph1);
1737
- values_graph1.push([oDate, sValGraph1]);
1738
-
1739
- if (sValGraph1 > maxY_graph[0]) maxY_graph[0] = sValGraph1;
1740
- if (sValGraph1 < minY_graph[0]) minY_graph[0] = sValGraph1;
1741
-
1742
- if (vis.editMode) {
1743
- if (vis.views[view].widgets[widgetID].data.graph1Name == "") {
1744
- vis.views[view].widgets[widgetID].data.graph1Name = names[0];
1745
- vis.widgets[widgetID].data.graph1Name = names[0];
1746
- }
1747
- }
1748
-
1749
- }
1750
-
1751
- sVal = oValGraph2;
1752
- if (sVal != null && typeof sVal != "undefined") {
1753
- var names = Object.keys(sVal[0]);
1754
- var sValGraph2 = sVal[0][names[0]];
1755
- //console.log("graph2 " + sDate + " " + sTime + ": " + sValGraph2);
1756
- //console.log("graph2 " + oDate.toISOString() + " " + sValGraph2);
1757
- values_graph2.push([oDate, sValGraph2]);
1758
-
1759
- if (sValGraph2 > maxY_graph[1]) maxY_graph[1] = sValGraph2;
1760
- if (sValGraph2 < minY_graph[1]) minY_graph[1] = sValGraph2;
1761
-
1762
- if (vis.editMode) {
1763
- if (vis.views[view].widgets[widgetID].data.graph2Name == "") {
1764
- vis.views[view].widgets[widgetID].data.graph2Name = names[0];
1765
- vis.widgets[widgetID].data.graph2Name = names[0];
1766
- }
1767
- }
1768
- }
1769
-
1770
- sVal = oValGraph3;
1771
- if (sVal != null && typeof sVal != "undefined") {
1772
- var names = Object.keys(sVal[0]);
1773
- var sValGraph3 = sVal[0][names[0]];
1774
- //console.log("graph3 " + sDate + " " + sTime + ": " + sValGraph3);
1775
- //console.log("graph3 " + oDate.toISOString() + " " + sValGraph3);
1776
- values_graph3.push([oDate, sValGraph3]);
1777
-
1778
- if (sValGraph3 > maxY_graph[2]) maxY_graph[2] = sValGraph3;
1779
- if (sValGraph3 < minY_graph[2]) minY_graph[2] = sValGraph3;
1780
-
1781
- if (vis.editMode) {
1782
- if (vis.views[view].widgets[widgetID].data.graph3Name == "") {
1783
- vis.views[view].widgets[widgetID].data.graph3Name = names[0];
1784
- vis.widgets[widgetID].data.graph3Name = names[0];
1785
- }
1786
- }
1787
- }
1788
-
1789
- sVal = oValGraph4;
1790
- if (sVal != null && typeof sVal != "undefined") {
1791
- var names = Object.keys(sVal[0]);
1792
- var sValGraph4 = sVal[0][names[0]];
1793
- //console.log("graph4 " + sDate + " " + sTime + ": " + sValGraph4);
1794
- //console.log("graph4 " + oDate.toISOString() + " " + sValGraph4);
1795
- values_graph4.push([oDate, sValGraph4]);
1796
-
1797
- if (sValGraph4 > maxY_graph[3]) maxY_graph[3] = sValGraph4;
1798
- if (sValGraph4 < minY_graph[3]) minY_graph[3] = sValGraph4;
1799
-
1800
-
1801
- if (vis.editMode) {
1802
- if (vis.views[view].widgets[widgetID].data.graph4Name == "") {
1803
- vis.views[view].widgets[widgetID].data.graph4Name = names[0];
1804
- vis.widgets[widgetID].data.graph4Name = names[0];
1805
- }
1806
- }
1807
- }
1808
-
1809
- }
1810
- catch (e) {
1811
- console.warn('parse error [' + e + ']');
1812
- $div.html("<br> <center> <font color='red'>data parse error </font> </center></br>");
1813
- return;
1814
- }
1815
- }
1816
-
1817
-
1818
- for (var n = 0; n < 4; n++) {
1819
-
1820
- //console.log("****** before Graph" + n + " max " + maxY_graph[n] + " min " + minY_graph[n]);
1821
-
1822
- var nTemp = parseFloat(maxY_graph[n]);
1823
- //console.log(nTemp);
1824
- nTemp = nTemp + 1;
1825
- //console.log(nTemp);
1826
- nTemp = nTemp / 10;
1827
- //console.log(nTemp);
1828
- maxY_graph[n] = Math.ceil(nTemp) * 10;
1829
- if (minY_graph[n] >= 0 && minY_graph[n] < 1000) { //only for temperature and pressure values
1830
- minY_graph[n] = 0;
1831
- }
1832
- else if (minY_graph[n] < 0) {
1833
- var temp1 = Math.abs(minY_graph[n]);
1834
-
1835
- minY_graph[n] = Math.ceil((temp1 + 1) / 10) * 10;
1836
- minY_graph[n] = -1.0 * minY_graph[n];
1837
- }
1838
- else {
1839
- nTemp = parseFloat(minY_graph[n]);
1840
- //console.log(nTemp);
1841
- nTemp = nTemp + 1;
1842
- //console.log(nTemp);
1843
- nTemp = nTemp / 10;
1844
- //console.log(nTemp);
1845
- minY_graph[n] = Math.ceil(nTemp) * 10;
1846
- }
1847
- //console.log("****** after Graph" + n + "max " + maxY_graph[n] + " min " + minY_graph[n]);
1848
- }
1849
-
1850
- var barwidth = 1000 * 60 * 5; //5 Minuten
1851
-
1852
- console.log("barwidth = " + barwidth); // in ms
1853
-
1854
- var Graph1Formatter = noneFormatter;
1855
- switch (data.graph1YAxisFomat) {
1856
- case "kWh":
1857
- Graph1Formatter = xwhFormatter;
1858
- console.log("kWh format");
1859
- break;
1860
- case "W":
1861
- Graph1Formatter = xwFormatter;
1862
- console.log("W format");
1863
- break;
1864
- case "kW":
1865
- Graph1Formatter = xkwFormatter;
1866
- console.log("kW format");
1867
- break;
1868
- case "degree":
1869
- Graph1Formatter = degreeFormatter;
1870
- console.log("degree format");
1871
- break;
1872
- default:
1873
- console.log("unknown format: " + data.graph1YAxisFomat);
1874
- break;
1875
-
1876
- }
1877
-
1878
- var Graph2Formatter = noneFormatter;
1879
- switch (data.graph2YAxisFomat) {
1880
- case "kWh":
1881
- Graph2Formatter = xwhFormatter;
1882
- console.log("kWh format");
1883
- break;
1884
- case "W":
1885
- Graph1Formatter = xwFormatter;
1886
- console.log("W format");
1887
- break;
1888
- case "kW":
1889
- Graph2Formatter = xkwFormatter;
1890
- console.log("kW format");
1891
- break;
1892
- case "degree":
1893
- Graph2Formatter = degreeFormatter;
1894
- console.log("degree format");
1895
- break;
1896
- default:
1897
- console.log("unknown format " + data.graph2YAxisFomat);
1898
- break;
1899
-
1900
- }
1901
-
1902
- var Graph3Formatter = noneFormatter;
1903
- switch (data.graph3YAxisFomat) {
1904
- case "kWh":
1905
- Graph3Formatter = xwhFormatter;
1906
- console.log("kWh format");
1907
- break;
1908
- case "W":
1909
- Graph1Formatter = xwFormatter;
1910
- console.log("W format");
1911
- break;
1912
- case "kW":
1913
- Graph3Formatter = xkwFormatter;
1914
- console.log("kW format");
1915
- break;
1916
-
1917
- case "degree":
1918
- Graph3Formatter = degreeFormatter;
1919
- console.log("degree format");
1920
- break;
1921
- default:
1922
- console.log("unknown format " + data.graph3YAxisFomat);
1923
- break;
1924
-
1925
- }
1926
-
1927
- var Graph4Formatter = noneFormatter;
1928
- switch (data.graph4YAxisFomat) {
1929
- case "kWh":
1930
- Graph4Formatter = xwhFormatter;
1931
- console.log("kWh format");
1932
- break;
1933
- case "W":
1934
- Graph1Formatter = xwFormatter;
1935
- console.log("W format");
1936
- break;
1937
- case "kW":
1938
- Graph4Formatter = xkwFormatter;
1939
- console.log("kW format");
1940
- break;
1941
- case "degree":
1942
- Graph4Formatter = degreeFormatter;
1943
- console.log("degree format");
1944
- break;
1945
- default:
1946
- console.log("unknown format " + data.graph4YAxisFomat);
1947
- break;
1948
-
1949
- }
1950
-
1951
-
1952
- $.plot($div,
1953
- [
1954
- {
1955
- data: data.graph1visible ? values_graph1 : {},
1956
- color: data.graph1color,
1957
- label: data.graph1Name,
1958
- xaxis: 1,
1959
- yaxis: 1,
1960
- lines: { show: data.graph1charttype == "charttypeline" },
1961
- points: { show: data.WithPoints },
1962
- bars:
1963
- {
1964
- show: data.graph1charttype == "charttypebar",
1965
- barWidth: [barwidth, true],
1966
- align: "left", //"center",
1967
- horizontal: false
1968
- }
1969
- },
1970
- {
1971
- data: data.graph2visible ? values_graph2 : {},
1972
- color: data.graph2color,
1973
- label: data.graph2Name,
1974
- xaxis: 1,
1975
- yaxis: 2,
1976
- lines: { show: data.graph2charttype == "charttypeline" },
1977
- points: { show: data.WithPoints },
1978
- bars:
1979
- {
1980
- show: data.graph2charttype == "charttypebar",
1981
- barWidth: [barwidth, true],
1982
- align: "left", //"center",
1983
- horizontal: false
1984
- }
1985
- },
1986
- {
1987
- data: data.graph3visible ? values_graph3 : {},
1988
- color: data.graph3color,
1989
- label: data.graph3Name,
1990
- xaxis: 1,
1991
- yaxis: 3,
1992
- lines: { show: data.graph3charttype == "charttypeline" },
1993
- points: { show: data.WithPoints },
1994
- bars:
1995
- {
1996
- show: data.graph3charttype == "charttypebar",
1997
- barWidth: [barwidth, true],
1998
- align: "left", //"center",
1999
- horizontal: false
2000
- }
2001
- },
2002
- {
2003
- data: data.graph4visible ? values_graph4 : {},
2004
- color: data.graph4color,
2005
- label: data.graph4Name,
2006
- xaxis: 1,
2007
- yaxis: 4,
2008
- lines: { show: data.graph4charttype == "charttypeline" },
2009
- points: { show: data.WithPoints },
2010
- bars:
2011
- {
2012
- show: data.graph4charttype == "charttypebar",
2013
- barWidth: [barwidth, true],
2014
- align: "left", //"center",
2015
- horizontal: false
2016
- }
2017
- }
2018
- ],
2019
- {
2020
-
2021
- xaxes:
2022
- [
2023
- {
2024
- axisLabelUseCanvas: true,
2025
- axisLabelColour: 'orange',
2026
-
2027
- show: data.withxaxix,
2028
- mode: "time",
2029
- timeBase: "milliseconds",
2030
- tickLength: 5,
2031
-
2032
- min: dateMin,
2033
- max: dateMax,
2034
- //ticks: data.ticksonxaxix > 0 ? parseInt(data.ticksonxaxix, 10) : 5,
2035
- ticks: CalcTicks4X,
2036
- autoScale: "none",
2037
- timeformat: data.xDateFormat,
2038
- monthNames: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
2039
- color: data.tickscolor,
2040
- tickColor: data.tickscolor,
2041
- font: {
2042
- size: data.LabelFontSize,
2043
- lineHeight: 13,
2044
- style: "normal", //"italic",
2045
- weight: "bold",
2046
- family: data.LabelFontFamily,
2047
- variant: "small-caps",
2048
- color: data.axislabelcolor,
2049
- },
2050
- timezone: "browser"
2051
- }
2052
- ],
2053
- yaxes:
2054
- [
2055
- {
2056
- axisLabelUseCanvas: true,
2057
- axisLabelColour: 'orange',
2058
-
2059
- show: data.graph1visible && data.graph1withyaxix,
2060
- max: maxY_graph[0],
2061
- min: minY_graph[0],
2062
- autoScale: "none", // Available modes: "none", "loose", "exact"
2063
-
2064
- showTickLabels: "major",
2065
- alignTicksWithAxis: null, //1,
2066
-
2067
- position: 'left',
2068
- //ticks: 3,
2069
- tickLength: parseFloat(data.graph1tickLength), //20, // size in pixels of major tick marks
2070
- showMinorTicks: data.graph1showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2071
- showTicks: data.graph1showTicks, //true, // true = show tick marks, false = hide all tick marks
2072
- tickDecimals: data.graph1tickDecimals, //1, // no. of decimals, null means auto
2073
- tickSize: data.graph1tickSize, //3, // number or [number, "unit"]
2074
- minTickSize: data.graph1minTickSize, //1, // number or [number, "unit"]
2075
-
2076
- color: data.tickscolor,
2077
-
2078
- tickColor: data.graph1coloraxis,
2079
-
2080
- labelWidth: parseFloat(data.graph1labelwidth),
2081
-
2082
- font: {
2083
- size: data.LabelFontSize,
2084
- lineHeight: 13,
2085
- style: "normal", //"italic",
2086
- weight: "bold",
2087
- family: data.LabelFontFamily,
2088
- variant: "small-caps",
2089
- color: data.graph1color,
2090
- },
2091
- tickFormatter: Graph1Formatter
2092
- },
2093
- {
2094
- axisLabelUseCanvas: true,
2095
- axisLabelColour: 'orange',
2096
-
2097
- show: data.graph2visible && data.graph2withyaxix,
2098
- max: maxY_graph[1],
2099
- min: minY_graph[1],
2100
- autoScale: "none", // Available modes: "none", "loose", "exact"
2101
- showTickLabels: "major",
2102
- alignTicksWithAxis: null, //1,
2103
-
2104
- position: 'left',
2105
- //ticks: 3,
2106
-
2107
- tickLength: parseFloat(data.graph2tickLength), //20, // size in pixels of major tick marks
2108
- showMinorTicks: data.graph2showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2109
- showTicks: data.graph2showTicks, //true, // true = show tick marks, false = hide all tick marks
2110
- tickDecimals: data.graph2tickDecimals, //1, // no. of decimals, null means auto
2111
- tickSize: data.graph2tickSize, //3, // number or [number, "unit"]
2112
- minTickSize: data.graph2minTickSize, //1, // number or [number, "unit"]
2113
-
2114
- color: data.tickscolor,
2115
- tickColor: data.graph2coloraxis,
2116
-
2117
- labelWidth: parseFloat(data.graph2labelwidth),
2118
- font: {
2119
- size: data.LabelFontSize,
2120
- lineHeight: 13,
2121
- style: "normal", //"italic",
2122
- weight: "bold",
2123
- family: data.LabelFontFamily,
2124
- variant: "small-caps",
2125
- color: data.graph2color,
2126
- },
2127
- tickFormatter: Graph2Formatter
2128
- },
2129
- {
2130
- axisLabelUseCanvas: true,
2131
- axisLabelColour: 'orange',
2132
-
2133
- show: data.graph3visible && data.graph3withyaxix,
2134
- max: maxY_graph[2],
2135
- min: minY_graph[2],
2136
- autoScale: "none", // Available modes: "none", "loose", "exact"
2137
- showTickLabels: "major",
2138
- alignTicksWithAxis: null, //1,
2139
-
2140
- position: 'left',
2141
- //ticks: 3,
2142
-
2143
- tickLength: parseFloat(data.graph3tickLength), //20, // size in pixels of major tick marks
2144
- showMinorTicks: data.graph3showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2145
- showTicks: data.graph3showTicks, //true, // true = show tick marks, false = hide all tick marks
2146
- tickDecimals: data.graph3tickDecimals, //1, // no. of decimals, null means auto
2147
- tickSize: data.graph3tickSize, //3, // number or [number, "unit"]
2148
- minTickSize: data.graph3minTickSize, //1, // number or [number, "unit"]
2149
-
2150
- color: data.tickscolor,
2151
- tickColor: data.graph3coloraxis,
2152
-
2153
- labelWidth: parseFloat(data.graph3labelwidth),
2154
- font: {
2155
- size: data.LabelFontSize,
2156
- lineHeight: 13,
2157
- style: "normal", //"italic",
2158
- weight: "bold",
2159
- family: data.LabelFontFamily,
2160
- variant: "small-caps",
2161
- color: data.graph3color,
2162
- },
2163
- tickFormatter: Graph3Formatter
2164
- },
2165
- {
2166
- axisLabelUseCanvas: true,
2167
- axisLabelColour: 'orange',
2168
-
2169
- show: data.graph4visible && data.graph4withyaxix,
2170
- max: maxY_graph[3],
2171
- min: minY_graph[3],
2172
- autoScale: "none", // Available modes: "none", "loose", "exact"
2173
- showTickLabels: "major",
2174
- alignTicksWithAxis: null, //1,
2175
-
2176
- position: 'left',
2177
- //ticks: 3,
2178
-
2179
- tickLength: parseFloat(data.graph4tickLength), //20, // size in pixels of major tick marks
2180
- showMinorTicks: data.graph4showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2181
- showTicks: data.graph4showTicks, //true, // true = show tick marks, false = hide all tick marks
2182
- tickDecimals: data.graph4tickDecimals, //1, // no. of decimals, null means auto
2183
- tickSize: data.graph4tickSize, //3, // number or [number, "unit"]
2184
- minTickSize: data.graph4minTickSize, //1, // number or [number, "unit"]
2185
-
2186
- color: data.tickscolor,
2187
- tickColor: data.graph4coloraxis,
2188
-
2189
- labelWidth: parseFloat(data.graph4labelwidth),
2190
- font: {
2191
- size: data.LabelFontSize,
2192
- lineHeight: 13,
2193
- style: "normal", //"italic",
2194
- weight: "bold",
2195
- family: data.LabelFontFamily,
2196
- variant: "small-caps",
2197
- color: data.graph4color,
2198
- },
2199
- tickFormatter: Graph4Formatter
2200
- }
2201
- ],
2202
- grid:
2203
- {
2204
- //hover
2205
- hoverable: true, //to trigger plothover event on mouse hover or tap on a point
2206
- clickable: true, //to trigger plotclick event on mouse hover
2207
-
2208
- markings: data.withmarking ? GridMarkings : null,
2209
-
2210
- // backgroundColor: data.nobgcolor ? null : { colors: ["#fff", "#eee"] },
2211
- backgroundColor: data.nobgcolor ? null : data.bgcolor,
2212
- borderWidth: parseFloat(data.borderWidth), //data.withborder,
2213
- borderColor: data.bordercolor,
2214
- margin: 1,
2215
- /*
2216
- borderWidth: {
2217
- top: data.withborder ? 1 : 0,
2218
- right: data.withborder ? 1 : 0,
2219
- bottom: data.withborder ? 2 : 0,
2220
- left: data.withborder ? 2 : 0
2221
- },*/
2222
-
2223
- },
2224
- legend: {
2225
- show: data.withlegend,
2226
- labelFormatter: legendformater,
2227
- //labelBoxBorderColor: color,
2228
- //noColumns: number,
2229
- position: data.legendposition,
2230
- //margin: number of pixels or [x margin, y margin]
2231
- backgroundColor: null,
2232
- backgroundOpacity: 0,
2233
- container: null,
2234
- sorted: false
2235
- }
2236
- }
2237
- );
2238
-
2239
-
2240
- //****************************************************************************************
2241
- //hover
2242
-
2243
- console.log("hover start " + widgetID + " " + data.WithHOver);
2244
- if (data.WithHOver) {
2245
- console.log("hover start " + widgetID);
2246
- $('#' + widgetID).bind("plotclick", function (event, pos, item) {
2247
- console.log("clicked at " + pos.x + ", " + pos.y);
2248
- // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ...
2249
- // if you need global screen coordinates, they are pos.pageX, pos.pageY
2250
-
2251
- if (item) {
2252
-
2253
- let x = item.datapoint[0];
2254
- let y = item.datapoint[1].toFixed(2);
2255
-
2256
- var xDate = new Date(x);
2257
-
2258
- console.log("clicked a point!" + item.series.label + " " + y + " on " + xDate.toLocaleString() + " = " + $.plot.formatDate(xDate, data.xDateFormat));
2259
-
2260
- let zindex = $div.css("z-index");
2261
- zindex++;
2262
- console.log("z-index " + zindex);
2263
- //damit Tooltip in Vordergrund erscheind, muss z-index vom widget kleiner sein...
2264
-
2265
- $("#ebustooltip").html($.plot.formatDate(xDate, data.xDateFormat) + "<br> " + item.series.yaxis.tickFormatter(y, item.series.yaxis))
2266
- .css({ top: item.pageY + 5, left: item.pageX + 5, "z-index": zindex })
2267
- .fadeIn(200);
2268
-
2269
- }
2270
- else {
2271
- $("#ebustooltip").stop().hide();
2272
- }
2273
- });
2274
- }
2275
- //****************************************************************************************
2276
-
2277
-
2278
- }
2279
- };
2280
-
2281
- if (data.ebusinstance) {
2282
-
2283
- //bind to oid to be informed about updates
2284
- var oid_historydate = data.oid_historydate;
2285
- console.log("bind " + oid_historydate);
2286
- vis.states.bind(oid_historydate + '.val', function () {
2287
- update();
2288
- });
2289
-
2290
- var oid_historygraph1 = data.oid_historygraph1;
2291
- console.log("bind " + oid_historygraph1);
2292
- vis.states.bind(oid_historygraph1 + '.val', function () {
2293
- update();
2294
- });
2295
- var oid_historygraph2 = data.oid_historygraph2;
2296
- console.log("bind " + oid_historygraph2);
2297
- vis.states.bind(oid_historygraph2 + '.val', function () {
2298
- update();
2299
- });
2300
- var oid_historygraph3 = data.oid_historygraph3;
2301
- console.log("bind " + oid_historygraph3);
2302
- vis.states.bind(oid_historygraph3 + '.val', function () {
2303
- update();
2304
- });
2305
- var oid_historygraph4 = data.oid_historygraph4;
2306
- console.log("bind " + oid_historygraph4);
2307
- vis.states.bind(oid_historygraph4 + '.val', function () {
2308
- update();
2309
- });
2310
- // update every x seconds
2311
- if (!vis.editMode) {
2312
-
2313
- console.log("interval " + vis.binds.ebus.setup.intervals[data.time_interval]);
2314
-
2315
- $div.data('timer', setInterval(function () {
2316
- update();
2317
- }, parseInt(vis.binds.ebus.setup.intervals[data.time_interval], 10)));
2318
- }
2319
-
2320
- }
2321
- else {
2322
- console.log("instance not set ");
2323
- }
2324
- update();
2325
- if (vis.editMode) {
2326
- console.log("flot version " + $.plot.version + " for ebus");
2327
- }
2328
- }
2329
- },
2330
- };
2331
-
2332
- if (vis.editMode) {
2333
- vis.binds.ebus.onInstanceChanged = function (widgetID, view, newId, fields) {
2334
- console.log('---------: ' + widgetID + ' - ' + view + ' - ' + newId + ' - ' + fields);
2335
-
2336
- var changed = [];
2337
- //delete all
2338
- vis.views[view].widgets[widgetID].data.oid_historydate = "";
2339
- vis.views[view].widgets[widgetID].data.oid_historygraph1 = "";
2340
- vis.views[view].widgets[widgetID].data.oid_historygraph2 = "";
2341
- vis.views[view].widgets[widgetID].data.oid_historygraph3 = "";
2342
- vis.views[view].widgets[widgetID].data.oid_historygraph4 = "";
2343
- //then copy new values
2344
- if (newId.indexOf("ebus") > -1) {
2345
-
2346
- //ebus.0.data.history
2347
- console.log('calc new oids');
2348
- vis.views[view].widgets[widgetID].data.oid_historydate = newId + ".history.date";
2349
- vis.widgets[widgetID].data.oid_historydate = newId + ".history.date";
2350
-
2351
- vis.views[view].widgets[widgetID].data.oid_historygraph1 = newId + ".history.value1";
2352
- vis.widgets[widgetID].data.oid_historygraph1 = newId + ".history.value1";
2353
-
2354
- vis.views[view].widgets[widgetID].data.oid_historygraph2 = newId + ".history.value2";
2355
- vis.widgets[widgetID].data.oid_historygraph2 = newId + ".history.value2";
2356
-
2357
- vis.views[view].widgets[widgetID].data.oid_historygraph3 = newId + ".history.value3";
2358
- vis.widgets[widgetID].data.oid_historygraph3 = newId + ".history.value3";
2359
-
2360
- vis.views[view].widgets[widgetID].data.oid_historygraph4 = newId + ".history.value4";
2361
- vis.widgets[widgetID].data.oid_historygraph4 = newId + ".history.value4";
2362
- }
2363
- return changed;
2364
- }
2365
- }
2366
-
2367
- vis.binds.ebus.showVersion();
2368
-
2369
- </script>
2370
-
2371
- <script id="tplEbusShowInstance"
2372
- type="text/ejs"
2373
- class="vis-tpl"
2374
- data-vis-prev='<img src="widgets/ebus/img/Prev_tplebus.png"></img>'
2375
- data-vis-set="ebus"
2376
- data-vis-type="ebus"
2377
- data-vis-name="ebus"
2378
- data-vis-update-style="true"
2379
- data-vis-attrs="ebusinstance/ebus/onInstanceChanged;"
2380
- data-vis-attrs0="time_interval[30 minutes]/select,1 second,10 seconds,30 seconds,1 minute,2 minutes,5 minutes,10 minutes,30 minutes,1 hour,2 hours,4 hours,8 hours,12 hours,24 hours;withxaxix[true]/checkbox;axislabelcolor[#ffffff]/color;tickscolor[#ffffff]/color;LabelFontSize[8];LabelFontFamily[Arial]/fontname;withmarking[true]/checkbox;markingcolor[#eaebe5]/color;xDateFormat[%H:%M];borderWidth[1];bordercolor[#000000]/color;nobgcolor[true]/checkbox;bgcolor[#FFFFFF]/color;withlegend[false]/checkbox;legendposition[ne]/select,ne,nw,se,sw;WithHOver[true]/checkbox;WithPoints[true]/checkbox;"
2381
- data-vis-attrs1="group.graph1;graph1visible[true]/checkbox;oid_historygraph1/id;graph1charttype[charttypeline]/select,charttypeline,charttypebar;graph1Name;graph1color[#f1f113]/color;graph1coloraxis[#1d0ed8]/color;graph1colorticklabel[#1d0ed8]/color;graph1withyaxix[true]/checkbox;graph1YAxisFomat[none]/select,none,kWh,W,kW,degree;graph1tickLength[5];graph1showMinorTicks[true]/checkbox;graph1showTicks[true]/checkbox;graph1tickDecimals[1];graph1tickSize[3];graph1minTickSize[2];graph1labelwidth[30];"
2382
- data-vis-attrs2="group.graph2;graph2visible[true]/checkbox;oid_historygraph2/id;graph2charttype[charttypeline]/select,charttypeline,charttypebar;graph2Name;graph2color[#f1f113]/color;graph2coloraxis[#1d0ed8]/color;graph2colorticklabel[#1d0ed8]/color;graph2withyaxix[true]/checkbox;graph2YAxisFomat[none]/select,none,kWh,W,kW,degree;graph2tickLength[5];graph2showMinorTicks[true]/checkbox;graph2showTicks[true]/checkbox;graph2tickDecimals[1];graph2tickSize[3];graph2minTickSize[2];graph2labelwidth[30];"
2383
- data-vis-attrs3="group.graph3;graph3visible[true]/checkbox;oid_historygraph3/id;graph3charttype[charttypeline]/select,charttypeline,charttypebar;graph3Name;graph3color[#f1f113]/color;graph3coloraxis[#1d0ed8]/color;graph3colorticklabel[#1d0ed8]/color;graph3withyaxix[true]/checkbox;graph3YAxisFomat[none]/select,none,kWh,W,kW,degree;graph3tickLength[5];graph3showMinorTicks[true]/checkbox;graph3showTicks[true]/checkbox;graph3tickDecimals[1];graph3tickSize[3];graph3minTickSize[2];graph3labelwidth[30];"
2384
- data-vis-attrs4="group.graph4;graph4visible[true]/checkbox;oid_historygraph4/id;graph4charttype[charttypeline]/select,charttypeline,charttypebar;graph4Name;graph4color[#f1f113]/color;graph4coloraxis[#1d0ed8]/color;graph4colorticklabel[#1d0ed8]/color;graph4withyaxix[true]/checkbox;graph4YAxisFomat[none]/select,none,kWh,W,kW,degree;graph4tickLength[5];graph4showMinorTicks[true]/checkbox;graph4showTicks[true]/checkbox;graph4tickDecimals[1];graph4tickSize[3];graph4minTickSize[2];graph4labelwidth[30];"
2385
- data-vis-attrs5="group.oids;oid_historydate/id;">
2386
-
2387
- <div class="vis-widget <%== this.data.attr('class') %>" style="width:210px; height:170px;" id="<%= this.data.attr('wid') %>">
2388
- <div class="vis-ebus-widget-body"
2389
- <% vis.binds.ebus.history.init(this.data.wid, this.view, this.data, this.style) %>>
2390
- </div>
2391
- </div>
2392
-
2393
- </script>
2394
-
2395
-
1
+ <!--
2
+ ioBroker.vis ebus Widget-Set
3
+
4
+ version: "1.0.0"
5
+
6
+ Copyright 2017,2018,2019 René G. info@rg-engineering.eu
7
+ -->
8
+ <!--
9
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.js"></script>
10
+ -->
11
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/lib/jquery.event.drag.js"></script>
12
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/lib/jquery.mousewheel.js"></script>
13
+
14
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.canvaswrapper.js"></script>
15
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.colorhelpers.js"></script>
16
+
17
+
18
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.js"></script>
19
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.saturated.js"></script>
20
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.browser.js"></script>
21
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.drawSeries.js"></script>
22
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.uiConstants.js"></script>
23
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.time.js"></script>
24
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.legend.js"></script>
25
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.navigate.js"></script>
26
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.touchNavigate.js"></script>
27
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.hover.js"></script>
28
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.touch.js"></script>
29
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.selection.js"></script>
30
+
31
+ <script language="javascript" type="text/javascript" src="widgets/ebus/lib/js/flot/jquery.flot.axislabels.js"></script>
32
+
33
+ <!-- doku for flot : -->
34
+ <!-- https://github.com/flot/flot/blob/master/API.md -->
35
+
36
+ <style>
37
+ .chart-placeholder {
38
+ width: 100%;
39
+ height: 100%;
40
+ font-size: 14px;
41
+ line-height: 1.2em;
42
+ }
43
+
44
+ .legendLayer .background {
45
+ fill: rgba(255, 255, 255, 0.85);
46
+ stroke: rgba(0, 0, 0, 0.85);
47
+ stroke-width: 1;
48
+ }
49
+ </style>
50
+
51
+ <script type="text/javascript">
52
+ "use strict";
53
+
54
+ var MarkingColor = "eaebe5";
55
+
56
+ if (vis.editMode) {
57
+ // add translations for non-edit mode
58
+ $.extend(true, systemDictionary, {
59
+ "ebus": {
60
+ "en": "ebus",
61
+ "de": "ebus",
62
+ "ru": "EBUS",
63
+ "pt": "ebus",
64
+ "nl": "ebus",
65
+ "fr": "ebus",
66
+ "it": "eBUS",
67
+ "es": "ebus",
68
+ "pl": "ebus",
69
+ "zh-cn": "巴士"
70
+ },
71
+ "1 second": {
72
+ "en": "1 second",
73
+ "de": "1 Sekunde",
74
+ "ru": "1 секунда",
75
+ "pt": "1 segundo",
76
+ "nl": "1 seconde",
77
+ "fr": "1 seconde",
78
+ "it": "1 secondo",
79
+ "es": "1 segundo",
80
+ "pl": "1 sekunda",
81
+ "zh-cn": "1秒"
82
+ },
83
+ "10 seconds": {
84
+ "en": "10 seconds",
85
+ "de": "10 Sekunden",
86
+ "ru": "10 секунд",
87
+ "pt": "10 segundos",
88
+ "nl": "10 seconden",
89
+ "fr": "10 secondes",
90
+ "it": "10 secondi",
91
+ "es": "10 segundos",
92
+ "pl": "10 sekund",
93
+ "zh-cn": "10秒"
94
+ },
95
+ "30 seconds": {
96
+ "en": "30 seconds",
97
+ "de": "30 Sekunden",
98
+ "ru": "30 секунд",
99
+ "pt": "30 segundos",
100
+ "nl": "30 seconden",
101
+ "fr": "30 secondes",
102
+ "it": "30 secondi",
103
+ "es": "30 segundos",
104
+ "pl": "30 sekund",
105
+ "zh-cn": "30秒"
106
+ },
107
+ "1 minute": {
108
+ "en": "1 minute",
109
+ "de": "1 Minute",
110
+ "ru": "1 минута",
111
+ "pt": "1 minuto",
112
+ "nl": "1 minuut",
113
+ "fr": "1 minute",
114
+ "it": "1 minuto",
115
+ "es": "1 minuto",
116
+ "pl": "1 minuta",
117
+ "zh-cn": "1分钟"
118
+ },
119
+ "2 minutes": {
120
+ "en": "2 minutes",
121
+ "de": "2 Minuten",
122
+ "ru": "2 минуты",
123
+ "pt": "2 minutos",
124
+ "nl": "2 minuten",
125
+ "fr": "2 minutes",
126
+ "it": "2 minuti",
127
+ "es": "2 minutos",
128
+ "pl": "2 minuty",
129
+ "zh-cn": "2分钟"
130
+ },
131
+ "5 minutes": {
132
+ "en": "5 minutes",
133
+ "de": "5 Minuten",
134
+ "ru": "5 минут",
135
+ "pt": "5 minutos",
136
+ "nl": "5 minuten",
137
+ "fr": "5 minutes",
138
+ "it": "5 minuti",
139
+ "es": "5 minutos",
140
+ "pl": "5 minut",
141
+ "zh-cn": "5分钟"
142
+ },
143
+ "10 minutes": {
144
+ "en": "10 minutes",
145
+ "de": "10 Minuten",
146
+ "ru": "10 минут",
147
+ "pt": "10 minutos",
148
+ "nl": "10 minuten",
149
+ "fr": "10 minutes",
150
+ "it": "10 minuti",
151
+ "es": "10 minutos",
152
+ "pl": "10 minut",
153
+ "zh-cn": "10分钟"
154
+ },
155
+ "30 minutes": {
156
+ "en": "30 minutes",
157
+ "de": "30 Minuten",
158
+ "ru": "30 минут",
159
+ "pt": "30 minutos",
160
+ "nl": "30 minuten",
161
+ "fr": "30 minutes",
162
+ "it": "30 minuti",
163
+ "es": "30 minutos",
164
+ "pl": "30 minut",
165
+ "zh-cn": "30分钟"
166
+ },
167
+ "1 hour": {
168
+ "en": "1 hour",
169
+ "de": "1 Stunde",
170
+ "ru": "1 час",
171
+ "pt": "1 hora",
172
+ "nl": "1 uur",
173
+ "fr": "1 heure",
174
+ "it": "1 ora",
175
+ "es": "1 hora",
176
+ "pl": "1 godzina",
177
+ "zh-cn": "1小时"
178
+ },
179
+ "2 hours": {
180
+ "en": "2 hours",
181
+ "de": "2 Stunden",
182
+ "ru": "два часа",
183
+ "pt": "2 horas",
184
+ "nl": "twee uur",
185
+ "fr": "2 heures",
186
+ "it": "2 ore",
187
+ "es": "2 horas",
188
+ "pl": "2 godziny",
189
+ "zh-cn": "2小时"
190
+ },
191
+ "4 hours": {
192
+ "en": "4 hours",
193
+ "de": "4 Stunden",
194
+ "ru": "4 часа",
195
+ "pt": "4 horas",
196
+ "nl": "4 uur",
197
+ "fr": "4 heures",
198
+ "it": "4 ore",
199
+ "es": "4 horas",
200
+ "pl": "4 godziny",
201
+ "zh-cn": "4个小时"
202
+ },
203
+ "8 hours": {
204
+ "en": "8 hours",
205
+ "de": "8 Stunden",
206
+ "ru": "8 часов",
207
+ "pt": "8 horas",
208
+ "nl": "8 uur",
209
+ "fr": "8 heures",
210
+ "it": "8 ore",
211
+ "es": "8 horas",
212
+ "pl": "8 godzin",
213
+ "zh-cn": "8小时"
214
+ },
215
+ "12 hours": {
216
+ "en": "12 hours",
217
+ "de": "12 Stunden",
218
+ "ru": "12 часов",
219
+ "pt": "12 horas",
220
+ "nl": "12 uren",
221
+ "fr": "12 heures",
222
+ "it": "12 ore",
223
+ "es": "12 horas",
224
+ "pl": "12 godzin",
225
+ "zh-cn": "12小时"
226
+ },
227
+ "24 hours": {
228
+ "en": "24 hours",
229
+ "de": "24 Stunden",
230
+ "ru": "24 часа",
231
+ "pt": "24 horas",
232
+ "nl": "24 uur",
233
+ "fr": "24 heures",
234
+ "it": "24 ore",
235
+ "es": "24 horas",
236
+ "pl": "24 godziny",
237
+ "zh-cn": "24小时"
238
+ },
239
+ "ebusinstance": {
240
+ "en": "ebus instance",
241
+ "de": "ebus-Instanz",
242
+ "ru": "Ebus экземпляр",
243
+ "pt": "instância ebus",
244
+ "nl": "ebus-instantie",
245
+ "fr": "instance ebus",
246
+ "it": "istanza ebus",
247
+ "es": "instancia de ebus",
248
+ "pl": "instancja ebus",
249
+ "zh-cn": "ebus实例"
250
+ },
251
+ "time_interval": {
252
+ "en": "Time interval",
253
+ "de": "Zeitintervall",
254
+ "ru": "Интервал времени",
255
+ "pt": "Intervalo de tempo",
256
+ "nl": "Tijdsinterval",
257
+ "fr": "Intervalle de temps",
258
+ "it": "Intervallo di tempo",
259
+ "es": "Intervalo de tiempo",
260
+ "pl": "Przedział czasowy",
261
+ "zh-cn": "时间间隔"
262
+ },
263
+ "withxaxix": {
264
+ "en": "show X axis",
265
+ "de": "X-Achse anzeigen",
266
+ "ru": "показать ось X",
267
+ "pt": "mostre o eixo X",
268
+ "nl": "X-as weergeven",
269
+ "fr": "afficher l'axe X",
270
+ "it": "mostra l'asse X.",
271
+ "es": "mostrar eje X",
272
+ "pl": "pokaż oś X.",
273
+ },
274
+
275
+
276
+ "xDateFormat": {
277
+ "en": "format for date/time on x-axis",
278
+ "de": "Format für Datum / Uhrzeit auf der x-Achse",
279
+ "ru": "формат даты / времени по оси X",
280
+ "pt": "formato para data / hora no eixo x",
281
+ "nl": "formaat voor datum / tijd op x-as",
282
+ "fr": "format de date / heure sur l'axe des x",
283
+ "it": "formato per data / ora sull'asse x",
284
+ "es": "formato para fecha / hora en eje x",
285
+ "pl": "format daty / godziny na osi x",
286
+ "zh-cn": "x轴上日期/时间的格式"
287
+ },
288
+ /*
289
+ "withborder": {
290
+ "en": "show border of grid",
291
+ "de": "Rahmen des Gitters anzeigen",
292
+ "ru": "показать границу сетки",
293
+ "pt": "mostrar borda da grade",
294
+ "nl": "rand van raster weergeven",
295
+ "fr": "montrer la bordure de la grille",
296
+ "it": "mostra il bordo della griglia",
297
+ "es": "mostrar borde de cuadrícula",
298
+ "pl": "pokaż granicę siatki",
299
+ "zh-cn": "显示网格边框"
300
+ },*/
301
+ "bordercolor": {
302
+ "en": "color of grid border",
303
+ "de": "Farbe des Gitterrandes",
304
+ "ru": "цвет границы сетки",
305
+ "pt": "cor da borda da grade",
306
+ "nl": "kleur van de rasterrand",
307
+ "fr": "couleur de la bordure de la grille",
308
+ "it": "colore del bordo della griglia",
309
+ "es": "color del borde de la cuadrícula",
310
+ "pl": "kolor obramowania siatki",
311
+ "zh-cn": "网格边框的颜色"
312
+ },
313
+
314
+ "nobgcolor": {
315
+ "en": "no background color on grid",
316
+ "de": "Keine Hintergrundfarbe im Raster",
317
+ "ru": "нет цвета фона на сетке",
318
+ "pt": "sem cor de fundo na grade",
319
+ "nl": "geen achtergrondkleur op het raster",
320
+ "fr": "pas de couleur d'arrière-plan sur la grille",
321
+ "it": "nessun colore di sfondo sulla griglia",
322
+ "es": "sin color de fondo en la cuadrícula",
323
+ "pl": "brak koloru tła na siatce",
324
+ "zh-cn": "网格上没有背景色"
325
+ },
326
+
327
+ "bgcolor": {
328
+ "en": "background color on grid",
329
+ "de": "Hintergrundfarbe auf Raster",
330
+ "ru": "цвет фона на сетке",
331
+ "pt": "cor de fundo na grade",
332
+ "nl": "achtergrondkleur op het raster",
333
+ "fr": "couleur de fond sur la grille",
334
+ "it": "colore di sfondo sulla griglia",
335
+ "es": "color de fondo en la cuadrícula",
336
+ "pl": "kolor tła na siatce",
337
+ "zh-cn": "网格上的背景色"
338
+ },
339
+ "withlegend": {
340
+ "en": "show legend",
341
+ "de": "Legende anzeigen",
342
+ "ru": "показать легенду",
343
+ "pt": "mostrar legenda",
344
+ "nl": "toon legende",
345
+ "fr": "montrer la légende",
346
+ "it": "mostra legenda",
347
+ "es": "Mostrar leyenda",
348
+ "pl": "pokaż legendę",
349
+ "zh-cn": "显示传奇"
350
+ },
351
+ "legendposition": {
352
+ "en": "legend position",
353
+ "de": "Legendenposition",
354
+ "ru": "положение легенды",
355
+ "pt": "posição da legenda",
356
+ "nl": "legende positie",
357
+ "fr": "position de la légende",
358
+ "it": "posizione della legenda",
359
+ "es": "posición de leyenda",
360
+ "pl": "pozycja legendy",
361
+ "zh-cn": "图例位置"
362
+ },
363
+
364
+
365
+
366
+ "none": {
367
+ "en": "none",
368
+ "de": "kein",
369
+ "ru": "никто",
370
+ "pt": "Nenhum",
371
+ "nl": "geen",
372
+ "fr": "aucun",
373
+ "it": "nessuna",
374
+ "es": "ninguna",
375
+ "pl": "Żaden",
376
+ "zh-cn": "没有"
377
+ },
378
+ "kWh": {
379
+ "en": "kWh",
380
+ "de": "kWh",
381
+ "ru": "кВтч",
382
+ "pt": "kWh",
383
+ "nl": "kWh",
384
+ "fr": "kWh",
385
+ "it": "kWh",
386
+ "es": "kWh",
387
+ "pl": "kWh",
388
+ "zh-cn": "千瓦时"
389
+ },
390
+ "degree": {
391
+ "en": "degree",
392
+ "de": "Grad",
393
+ "ru": "степень",
394
+ "pt": "grau",
395
+ "nl": "mate",
396
+ "fr": "diplôme",
397
+ "it": "grado",
398
+ "es": "la licenciatura",
399
+ "pl": "stopień",
400
+ "zh-cn": "学位"
401
+ },
402
+
403
+ "group_graph1": {
404
+ "en": "graph 1",
405
+ "de": "Grafik 1",
406
+ "ru": "график 1",
407
+ "pt": "gráfico 1",
408
+ "nl": "grafiek 1",
409
+ "fr": "graphique 1",
410
+ "it": "grafico 1",
411
+ "es": "gráfico 1",
412
+ "pl": "wykres 1",
413
+ "zh-cn": "图1"
414
+ },
415
+
416
+ "graph1charttype": {
417
+ "en": "chart type",
418
+ "de": "Diagramm Typ",
419
+ "ru": "тип диаграммы",
420
+ "pt": "tipo de gráfico",
421
+ "nl": "grafiektype",
422
+ "fr": "type de graphique",
423
+ "it": "tipo di grafico",
424
+ "es": "tipo de gráfico",
425
+ "pl": "typ wykresu",
426
+ "zh-cn": "图表类型"
427
+ },
428
+ "graph1visible": {
429
+ "en": "visible",
430
+ "de": "sichtbar",
431
+ "ru": "видимый",
432
+ "pt": "visível",
433
+ "nl": "zichtbaar",
434
+ "fr": "visible",
435
+ "it": "visibile",
436
+ "es": "visible",
437
+ "pl": "widoczny",
438
+ "zh-cn": "可见"
439
+ },
440
+ "graph1color": {
441
+ "en": "color",
442
+ "de": "Farbe",
443
+ "ru": "цвет",
444
+ "pt": "cor",
445
+ "nl": "kleur",
446
+ "fr": "Couleur",
447
+ "it": "colore",
448
+ "es": "color",
449
+ "pl": "kolor",
450
+ "zh-cn": "颜色"
451
+ },
452
+ "graph1withyaxix": {
453
+ "en": "show y axis",
454
+ "de": "y-Achse anzeigen",
455
+ "ru": "показать ось у",
456
+ "pt": "mostre o eixo y",
457
+ "nl": "y-as weergeven",
458
+ "fr": "afficher l'axe y",
459
+ "it": "mostra l'asse y",
460
+ "es": "mostrar eje y",
461
+ "pl": "pokaż oś y",
462
+ "zh-cn": "显示y轴"
463
+ },
464
+ "graph1YAxisFomat": { "en": "Y axis fomat", "de": "Y-Achsenformat", "ru": "graph1YAxisFomat" },
465
+
466
+ "group_graph2": {
467
+ "en": "graph 2",
468
+ "de": "Grafik 2",
469
+ "ru": "график 2",
470
+ "pt": "gráfico 2",
471
+ "nl": "grafiek 2",
472
+ "fr": "graphique 2",
473
+ "it": "grafico 2",
474
+ "es": "gráfico 2",
475
+ "pl": "wykres 2",
476
+ "zh-cn": "图2"
477
+ },
478
+ "graph2charttype": {
479
+ "en": "chart type",
480
+ "de": "Diagramm Typ",
481
+ "ru": "тип диаграммы",
482
+ "pt": "tipo de gráfico",
483
+ "nl": "grafiektype",
484
+ "fr": "type de graphique",
485
+ "it": "tipo di grafico",
486
+ "es": "tipo de gráfico",
487
+ "pl": "typ wykresu",
488
+ "zh-cn": "图表类型"
489
+ },
490
+ "graph2visible": {
491
+ "en": "visible",
492
+ "de": "sichtbar",
493
+ "ru": "видимый",
494
+ "pt": "visível",
495
+ "nl": "zichtbaar",
496
+ "fr": "visible",
497
+ "it": "visibile",
498
+ "es": "visible",
499
+ "pl": "widoczny",
500
+ "zh-cn": "可见"
501
+ },
502
+ "graph2color": {
503
+ "en": "color",
504
+ "de": "Farbe",
505
+ "ru": "цвет",
506
+ "pt": "cor",
507
+ "nl": "kleur",
508
+ "fr": "Couleur",
509
+ "it": "colore",
510
+ "es": "color",
511
+ "pl": "kolor",
512
+ "zh-cn": "颜色"
513
+ },
514
+ "graph2withyaxix": {
515
+ "en": "show y axis",
516
+ "de": "y-Achse anzeigen",
517
+ "ru": "показать ось у",
518
+ "pt": "mostre o eixo y",
519
+ "nl": "y-as weergeven",
520
+ "fr": "afficher l'axe y",
521
+ "it": "mostra l'asse y",
522
+ "es": "mostrar eje y",
523
+ "pl": "pokaż oś y",
524
+ "zh-cn": "显示y轴"
525
+ },
526
+ "graph2YAxisFomat": { "en": "Y axis fomat", "de": "Y-Achsenformat", "ru": "graph1YAxisFomat" },
527
+
528
+ "group_graph3": {
529
+ "en": "graph 3",
530
+ "de": "Grafik 3",
531
+ "ru": "график 3",
532
+ "pt": "gráfico 3",
533
+ "nl": "grafiek 3",
534
+ "fr": "graphique 3",
535
+ "it": "grafico 3",
536
+ "es": "gráfico 3",
537
+ "pl": "wykres 3",
538
+ "zh-cn": "图3"
539
+ },
540
+ "graph3charttype": {
541
+ "en": "chart type",
542
+ "de": "Diagramm Typ",
543
+ "ru": "тип диаграммы",
544
+ "pt": "tipo de gráfico",
545
+ "nl": "grafiektype",
546
+ "fr": "type de graphique",
547
+ "it": "tipo di grafico",
548
+ "es": "tipo de gráfico",
549
+ "pl": "typ wykresu",
550
+ "zh-cn": "图表类型"
551
+ },
552
+ "graph3visible": {
553
+ "en": "visible",
554
+ "de": "sichtbar",
555
+ "ru": "видимый",
556
+ "pt": "visível",
557
+ "nl": "zichtbaar",
558
+ "fr": "visible",
559
+ "it": "visibile",
560
+ "es": "visible",
561
+ "pl": "widoczny",
562
+ "zh-cn": "可见"
563
+ },
564
+ "graph3color": {
565
+ "en": "color",
566
+ "de": "Farbe",
567
+ "ru": "цвет",
568
+ "pt": "cor",
569
+ "nl": "kleur",
570
+ "fr": "Couleur",
571
+ "it": "colore",
572
+ "es": "color",
573
+ "pl": "kolor",
574
+ "zh-cn": "颜色"
575
+ },
576
+ "graph3withyaxix": {
577
+ "en": "show y axis",
578
+ "de": "y-Achse anzeigen",
579
+ "ru": "показать ось у",
580
+ "pt": "mostre o eixo y",
581
+ "nl": "y-as weergeven",
582
+ "fr": "afficher l'axe y",
583
+ "it": "mostra l'asse y",
584
+ "es": "mostrar eje y",
585
+ "pl": "pokaż oś y",
586
+ "zh-cn": "显示y轴"
587
+ },
588
+ "graph3YAxisFomat": { "en": "Y axis fomat", "de": "Y-Achsenformat", "ru": "graph1YAxisFomat" },
589
+
590
+ "group_graph4": {
591
+ "en": "graph 4",
592
+ "de": "Grafik 4",
593
+ "ru": "график 4",
594
+ "pt": "gráfico 4",
595
+ "nl": "grafiek 4",
596
+ "fr": "graphique 4",
597
+ "it": "grafico 4",
598
+ "es": "gráfico 4",
599
+ "pl": "wykres 4",
600
+ "zh-cn": "图4"
601
+ },
602
+ "graph4charttype": {
603
+ "en": "chart type",
604
+ "de": "Diagramm Typ",
605
+ "ru": "тип диаграммы",
606
+ "pt": "tipo de gráfico",
607
+ "nl": "grafiektype",
608
+ "fr": "type de graphique",
609
+ "it": "tipo di grafico",
610
+ "es": "tipo de gráfico",
611
+ "pl": "typ wykresu",
612
+ "zh-cn": "图表类型"
613
+ },
614
+ "graph4visible": {
615
+ "en": "visible",
616
+ "de": "sichtbar",
617
+ "ru": "видимый",
618
+ "pt": "visível",
619
+ "nl": "zichtbaar",
620
+ "fr": "visible",
621
+ "it": "visibile",
622
+ "es": "visible",
623
+ "pl": "widoczny",
624
+ "zh-cn": "可见"
625
+ },
626
+ "graph4color": {
627
+ "en": "color",
628
+ "de": "Farbe",
629
+ "ru": "цвет",
630
+ "pt": "cor",
631
+ "nl": "kleur",
632
+ "fr": "Couleur",
633
+ "it": "colore",
634
+ "es": "color",
635
+ "pl": "kolor",
636
+ "zh-cn": "颜色"
637
+ },
638
+ "graph4withyaxix": {
639
+ "en": "show y axis",
640
+ "de": "y-Achse anzeigen",
641
+ "ru": "показать ось у",
642
+ "pt": "mostre o eixo y",
643
+ "nl": "y-as weergeven",
644
+ "fr": "afficher l'axe y",
645
+ "it": "mostra l'asse y",
646
+ "es": "mostrar eje y",
647
+ "pl": "pokaż oś y",
648
+ "zh-cn": "显示y轴"
649
+ },
650
+ "graph4YAxisFomat": {
651
+ "en": "Y axis format",
652
+ "de": "Y-Achsen-Format",
653
+ "ru": "Формат оси Y",
654
+ "pt": "Formato do eixo Y",
655
+ "nl": "Y-as formaat",
656
+ "fr": "Format de l'axe Y",
657
+ "it": "Formato dell'asse Y.",
658
+ "es": "Formato del eje Y",
659
+ "pl": "Format osi Y.",
660
+ "zh-cn": "Y轴格式"
661
+ },
662
+
663
+ "oid_historygraph1": {
664
+ "en": "OID",
665
+ "de": "OID",
666
+ "ru": "OID",
667
+ "pt": "OID",
668
+ "nl": "OID",
669
+ "fr": "OID",
670
+ "it": "OID",
671
+ "es": "OID",
672
+ "pl": "OID",
673
+ "zh-cn": "OID"
674
+ },
675
+ "oid_historygraph2": {
676
+ "en": "OID",
677
+ "de": "OID",
678
+ "ru": "OID",
679
+ "pt": "OID",
680
+ "nl": "OID",
681
+ "fr": "OID",
682
+ "it": "OID",
683
+ "es": "OID",
684
+ "pl": "OID",
685
+ "zh-cn": "OID"
686
+ },
687
+ "oid_historygraph3": {
688
+ "en": "OID",
689
+ "de": "OID",
690
+ "ru": "OID",
691
+ "pt": "OID",
692
+ "nl": "OID",
693
+ "fr": "OID",
694
+ "it": "OID",
695
+ "es": "OID",
696
+ "pl": "OID",
697
+ "zh-cn": "OID"
698
+ },
699
+ "oid_historygraph4": {
700
+ "en": "OID",
701
+ "de": "OID",
702
+ "ru": "OID",
703
+ "pt": "OID",
704
+ "nl": "OID",
705
+ "fr": "OID",
706
+ "it": "OID",
707
+ "es": "OID",
708
+ "pl": "OID",
709
+ "zh-cn": "OID"
710
+ },
711
+ "oid_historydate": {
712
+ "en": "OID",
713
+ "de": "OID",
714
+ "ru": "OID",
715
+ "pt": "OID",
716
+ "nl": "OID",
717
+ "fr": "OID",
718
+ "it": "OID",
719
+ "es": "OID",
720
+ "pl": "OID",
721
+ "zh-cn": "OID"
722
+ },
723
+
724
+ "graph1Name": {
725
+ "en": "name on legend",
726
+ "de": "Name auf Legende",
727
+ "ru": "имя по легенде",
728
+ "pt": "nome na legenda",
729
+ "nl": "naam op legende",
730
+ "fr": "nom sur la légende",
731
+ "it": "nome sulla leggenda",
732
+ "es": "nombre en la leyenda",
733
+ "pl": "imię na legendzie",
734
+ "zh-cn": "传说中的名字"
735
+ },
736
+ "graph2Name": {
737
+ "en": "name on legend",
738
+ "de": "Name auf Legende",
739
+ "ru": "имя по легенде",
740
+ "pt": "nome na legenda",
741
+ "nl": "naam op legende",
742
+ "fr": "nom sur la légende",
743
+ "it": "nome sulla leggenda",
744
+ "es": "nombre en la leyenda",
745
+ "pl": "imię na legendzie",
746
+ "zh-cn": "传说中的名字"
747
+ },
748
+ "graph3Name": {
749
+ "en": "name on legend",
750
+ "de": "Name auf Legende",
751
+ "ru": "имя по легенде",
752
+ "pt": "nome na legenda",
753
+ "nl": "naam op legende",
754
+ "fr": "nom sur la légende",
755
+ "it": "nome sulla leggenda",
756
+ "es": "nombre en la leyenda",
757
+ "pl": "imię na legendzie",
758
+ "zh-cn": "传说中的名字"
759
+ },
760
+ "graph4Name": {
761
+ "en": "name on legend",
762
+ "de": "Name auf Legende",
763
+ "ru": "имя по легенде",
764
+ "pt": "nome na legenda",
765
+ "nl": "naam op legende",
766
+ "fr": "nom sur la légende",
767
+ "it": "nome sulla leggenda",
768
+ "es": "nombre en la leyenda",
769
+ "pl": "imię na legendzie",
770
+ "zh-cn": "传说中的名字"
771
+ },
772
+ "axislabelcolor": {
773
+ "en": "color of axis label",
774
+ "de": "Farbe der Achsenbeschriftung",
775
+ "ru": "цвет метки оси",
776
+ "pt": "cor do rótulo do eixo",
777
+ "nl": "kleur van aslabel",
778
+ "fr": "couleur de l'étiquette de l'axe",
779
+ "it": "colore dell'etichetta dell'asse",
780
+ "es": "color de la etiqueta del eje",
781
+ "pl": "kolor etykiety osi",
782
+ "zh-cn": "轴标颜色"
783
+ },
784
+ "tickscolor": {
785
+ "en": "color of axis ticks",
786
+ "de": "Farbe der Achsenstriche",
787
+ "ru": "цвет отметок оси",
788
+ "pt": "cor dos tiques do eixo",
789
+ "nl": "kleur van as tikken",
790
+ "fr": "couleur des tiques des axes",
791
+ "it": "colore delle zecche degli assi",
792
+ "es": "color de las garrapatas del eje",
793
+ "pl": "kolor znaczników osi",
794
+ "zh-cn": "轴刻度的颜色"
795
+ },
796
+ "markingcolor": {
797
+ "en": "color of marking",
798
+ "de": "Farbe der Markierung",
799
+ "ru": "цвет маркировки",
800
+ "pt": "cor da marcação",
801
+ "nl": "kleur van markering",
802
+ "fr": "couleur de marquage",
803
+ "it": "colore della marcatura",
804
+ "es": "color de marcado",
805
+ "pl": "kolor oznakowania",
806
+ "zh-cn": "标记颜色"
807
+ },
808
+ "withmarking": {
809
+ "en": "with marking",
810
+ "de": "mit Markierung",
811
+ "ru": "с маркировкой",
812
+ "pt": "com marcação",
813
+ "nl": "met markering",
814
+ "fr": "avec marquage",
815
+ "it": "con marcatura",
816
+ "es": "con marcado",
817
+ "pl": "z oznaczeniem",
818
+ "zh-cn": "带标记"
819
+ },
820
+
821
+
822
+ "LabelFontSize": {
823
+ "en": "size of Label Font",
824
+ "de": "Größe der Beschriftungsschrift",
825
+ "ru": "размер шрифта метки",
826
+ "pt": "tamanho da fonte da etiqueta",
827
+ "nl": "grootte van het lettertype",
828
+ "fr": "taille de la police d'étiquette",
829
+ "it": "dimensione del carattere dell'etichetta",
830
+ "es": "tamaño de la fuente de la etiqueta",
831
+ "pl": "rozmiar czcionki etykiety",
832
+ "zh-cn": "标签字体的大小"
833
+ },
834
+ "LabelFontFamily": {
835
+ "en": "family of label font",
836
+ "de": "Schriftfamilie",
837
+ "ru": "семейство меток шрифта",
838
+ "pt": "família de fontes de rótulo",
839
+ "nl": "familie van lettertype",
840
+ "fr": "famille de polices d'étiquettes",
841
+ "it": "famiglia di caratteri etichetta",
842
+ "es": "familia de fuente de etiquetas",
843
+ "pl": "rodzina czcionek etykiet",
844
+ "zh-cn": "标签字体家族"
845
+ },
846
+ "graph1coloraxis": {
847
+ "en": "color of axis",
848
+ "de": "Farbe der Achse",
849
+ "ru": "цвет оси",
850
+ "pt": "cor do eixo",
851
+ "nl": "kleur van de as",
852
+ "fr": "couleur de l'axe",
853
+ "it": "colore dell'asse",
854
+ "es": "color del eje",
855
+ "pl": "kolor osi",
856
+ "zh-cn": "轴的颜色"
857
+ },
858
+ "graph1colorticklabel": {
859
+ "en": "color tick label",
860
+ "de": "Farbe Tick Label",
861
+ "ru": "цветная метка",
862
+ "pt": "etiqueta de escala de cores",
863
+ "nl": "kleur maatlabel",
864
+ "fr": "étiquette de couleur tique",
865
+ "it": "etichetta con segno di spunta di colore",
866
+ "es": "etiqueta de marca de color",
867
+ "pl": "kolorowa etykieta kleszczowa",
868
+ "zh-cn": "彩色刻度标签"
869
+ },
870
+ "graph2coloraxis": {
871
+ "en": "color of axis",
872
+ "de": "Farbe der Achse",
873
+ "ru": "цвет оси",
874
+ "pt": "cor do eixo",
875
+ "nl": "kleur van de as",
876
+ "fr": "couleur de l'axe",
877
+ "it": "colore dell'asse",
878
+ "es": "color del eje",
879
+ "pl": "kolor osi",
880
+ "zh-cn": "轴的颜色"
881
+ },
882
+ "graph2colorticklabel": {
883
+ "en": "color tick label",
884
+ "de": "Farbe Tick Label",
885
+ "ru": "цветная метка",
886
+ "pt": "etiqueta de escala de cores",
887
+ "nl": "kleur maatlabel",
888
+ "fr": "étiquette de couleur tique",
889
+ "it": "etichetta con segno di spunta di colore",
890
+ "es": "etiqueta de marca de color",
891
+ "pl": "kolorowa etykieta kleszczowa",
892
+ "zh-cn": "彩色刻度标签"
893
+ },
894
+ "graph3coloraxis": {
895
+ "en": "color of axis",
896
+ "de": "Farbe der Achse",
897
+ "ru": "цвет оси",
898
+ "pt": "cor do eixo",
899
+ "nl": "kleur van de as",
900
+ "fr": "couleur de l'axe",
901
+ "it": "colore dell'asse",
902
+ "es": "color del eje",
903
+ "pl": "kolor osi",
904
+ "zh-cn": "轴的颜色"
905
+ },
906
+ "graph3colorticklabel": {
907
+ "en": "color tick label",
908
+ "de": "Farbe Tick Label",
909
+ "ru": "цветная метка",
910
+ "pt": "etiqueta de escala de cores",
911
+ "nl": "kleur maatlabel",
912
+ "fr": "étiquette de couleur tique",
913
+ "it": "etichetta con segno di spunta di colore",
914
+ "es": "etiqueta de marca de color",
915
+ "pl": "kolorowa etykieta kleszczowa",
916
+ "zh-cn": "彩色刻度标签"
917
+ },
918
+ "graph4coloraxis": {
919
+ "en": "color of axis",
920
+ "de": "Farbe der Achse",
921
+ "ru": "цвет оси",
922
+ "pt": "cor do eixo",
923
+ "nl": "kleur van de as",
924
+ "fr": "couleur de l'axe",
925
+ "it": "colore dell'asse",
926
+ "es": "color del eje",
927
+ "pl": "kolor osi",
928
+ "zh-cn": "轴的颜色"
929
+ },
930
+ "graph4colorticklabel": {
931
+ "en": "color tick label",
932
+ "de": "Farbe Tick Label",
933
+ "ru": "цветная метка",
934
+ "pt": "etiqueta de escala de cores",
935
+ "nl": "kleur maatlabel",
936
+ "fr": "étiquette de couleur tique",
937
+ "it": "etichetta con segno di spunta di colore",
938
+ "es": "etiqueta de marca de color",
939
+ "pl": "kolorowa etykieta kleszczowa",
940
+ "zh-cn": "彩色刻度标签"
941
+ },
942
+
943
+ "graph1tickLength": {
944
+ "en": "length of tick",
945
+ "de": "Länge des Ticks",
946
+ "ru": "длина тика",
947
+ "pt": "comprimento do carrapato",
948
+ "nl": "lengte van de teek",
949
+ "fr": "longueur de tique",
950
+ "it": "lunghezza del segno di spunta",
951
+ "es": "longitud de la garrapata",
952
+ "pl": "długość kleszcza",
953
+ "zh-cn": "tick的长度"
954
+ },
955
+ "graph1showMinorTicks": {
956
+ "en": "show minor tick",
957
+ "de": "zeige kleine Ticks",
958
+ "ru": "показать небольшую галочку",
959
+ "pt": "mostre carrapato menor",
960
+ "nl": "toon kleine vinkjes",
961
+ "fr": "montrer une tique mineure",
962
+ "it": "mostra segno di spunta minore",
963
+ "es": "mostrar marca menor",
964
+ "pl": "pokaż drobne kleszcze",
965
+ "zh-cn": "显示小勾"
966
+ },
967
+ "graph1showTicks": {
968
+ "en": "show tick",
969
+ "de": "zeige ticks",
970
+ "ru": "показать галочку",
971
+ "pt": "show tick",
972
+ "nl": "vinkje tonen",
973
+ "fr": "montrer tique",
974
+ "it": "mostra tick",
975
+ "es": "mostrar marca",
976
+ "pl": "pokaż tik",
977
+ "zh-cn": "显示刻度"
978
+ },
979
+ "graph1tickDecimals": {
980
+ "en": "decimals",
981
+ "de": "Dezimalstellen",
982
+ "ru": "десятичные",
983
+ "pt": "decimais",
984
+ "nl": "decimalen",
985
+ "fr": "décimales",
986
+ "it": "decimali",
987
+ "es": "decimales",
988
+ "pl": "miejsca po przecinku",
989
+ "zh-cn": "小数点"
990
+ },
991
+ "graph1tickSize": {
992
+ "en": "tick size",
993
+ "de": "Tick-Größe",
994
+ "ru": "размер галочки",
995
+ "pt": "tamanho do carrapato",
996
+ "nl": "teken grootte",
997
+ "fr": "taille de la tique",
998
+ "it": "dimensione tick",
999
+ "es": "tamaño de la garrapata",
1000
+ "pl": "rozmiar kleszcza",
1001
+ "zh-cn": "刻度大小"
1002
+ },
1003
+ "graph1minTickSize": {
1004
+ "en": "min. tick size",
1005
+ "de": "Mindest. Tick-Größe",
1006
+ "ru": "минимум размер галочки",
1007
+ "pt": "min. tamanho do carrapato",
1008
+ "nl": "min. teken grootte",
1009
+ "fr": "min. taille de la tique",
1010
+ "it": "min. dimensione tick",
1011
+ "es": "min. tamaño de la garrapata",
1012
+ "pl": "min. rozmiar kleszcza",
1013
+ "zh-cn": "分钟刻度大小"
1014
+ },
1015
+ "graph1labelwidth": {
1016
+ "en": "label width",
1017
+ "de": "Labelbreite",
1018
+ "ru": "ширина этикетки",
1019
+ "pt": "largura da etiqueta",
1020
+ "nl": "labelbreedte",
1021
+ "fr": "largeur d'étiquette",
1022
+ "it": "larghezza dell'etichetta",
1023
+ "es": "ancho de etiqueta",
1024
+ "pl": "szerokość etykiety",
1025
+ "zh-cn": "标签宽度"
1026
+ },
1027
+
1028
+ "graph2tickLength": {
1029
+ "en": "length of tick",
1030
+ "de": "Länge des Ticks",
1031
+ "ru": "длина тика",
1032
+ "pt": "comprimento do carrapato",
1033
+ "nl": "lengte van de teek",
1034
+ "fr": "longueur de tique",
1035
+ "it": "lunghezza del segno di spunta",
1036
+ "es": "longitud de la garrapata",
1037
+ "pl": "długość kleszcza",
1038
+ "zh-cn": "tick的长度"
1039
+ },
1040
+ "graph2showMinorTicks": {
1041
+ "en": "show minor tick",
1042
+ "de": "zeige kleine Ticks",
1043
+ "ru": "показать небольшую галочку",
1044
+ "pt": "mostre carrapato menor",
1045
+ "nl": "toon kleine vinkjes",
1046
+ "fr": "montrer une tique mineure",
1047
+ "it": "mostra segno di spunta minore",
1048
+ "es": "mostrar marca menor",
1049
+ "pl": "pokaż drobne kleszcze",
1050
+ "zh-cn": "显示小勾"
1051
+ },
1052
+ "graph2showTicks": {
1053
+ "en": "show tick",
1054
+ "de": "zeige ticks",
1055
+ "ru": "показать галочку",
1056
+ "pt": "show tick",
1057
+ "nl": "vinkje tonen",
1058
+ "fr": "montrer tique",
1059
+ "it": "mostra tick",
1060
+ "es": "mostrar marca",
1061
+ "pl": "pokaż tik",
1062
+ "zh-cn": "显示刻度"
1063
+ },
1064
+ "graph2tickDecimals": {
1065
+ "en": "decimals",
1066
+ "de": "Dezimalstellen",
1067
+ "ru": "десятичные",
1068
+ "pt": "decimais",
1069
+ "nl": "decimalen",
1070
+ "fr": "décimales",
1071
+ "it": "decimali",
1072
+ "es": "decimales",
1073
+ "pl": "miejsca po przecinku",
1074
+ "zh-cn": "小数点"
1075
+ },
1076
+ "graph2tickSize": {
1077
+ "en": "tick size",
1078
+ "de": "Tick-Größe",
1079
+ "ru": "размер галочки",
1080
+ "pt": "tamanho do carrapato",
1081
+ "nl": "teken grootte",
1082
+ "fr": "taille de la tique",
1083
+ "it": "dimensione tick",
1084
+ "es": "tamaño de la garrapata",
1085
+ "pl": "rozmiar kleszcza",
1086
+ "zh-cn": "刻度大小"
1087
+ },
1088
+ "graph2minTickSize": {
1089
+ "en": "min. tick size",
1090
+ "de": "Mindest. Tick-Größe",
1091
+ "ru": "минимум размер галочки",
1092
+ "pt": "min. tamanho do carrapato",
1093
+ "nl": "min. teken grootte",
1094
+ "fr": "min. taille de la tique",
1095
+ "it": "min. dimensione tick",
1096
+ "es": "min. tamaño de la garrapata",
1097
+ "pl": "min. rozmiar kleszcza",
1098
+ "zh-cn": "分钟刻度大小"
1099
+ },
1100
+ "graph2labelwidth": {
1101
+ "en": "label width",
1102
+ "de": "Labelbreite",
1103
+ "ru": "ширина этикетки",
1104
+ "pt": "largura da etiqueta",
1105
+ "nl": "labelbreedte",
1106
+ "fr": "largeur d'étiquette",
1107
+ "it": "larghezza dell'etichetta",
1108
+ "es": "ancho de etiqueta",
1109
+ "pl": "szerokość etykiety",
1110
+ "zh-cn": "标签宽度"
1111
+ },
1112
+
1113
+ "graph3tickLength": {
1114
+ "en": "length of tick",
1115
+ "de": "Länge des Ticks",
1116
+ "ru": "длина тика",
1117
+ "pt": "comprimento do carrapato",
1118
+ "nl": "lengte van de teek",
1119
+ "fr": "longueur de tique",
1120
+ "it": "lunghezza del segno di spunta",
1121
+ "es": "longitud de la garrapata",
1122
+ "pl": "długość kleszcza",
1123
+ "zh-cn": "tick的长度"
1124
+ },
1125
+ "graph3showMinorTicks": {
1126
+ "en": "show minor tick",
1127
+ "de": "zeige kleine Ticks",
1128
+ "ru": "показать небольшую галочку",
1129
+ "pt": "mostre carrapato menor",
1130
+ "nl": "toon kleine vinkjes",
1131
+ "fr": "montrer une tique mineure",
1132
+ "it": "mostra segno di spunta minore",
1133
+ "es": "mostrar marca menor",
1134
+ "pl": "pokaż drobne kleszcze",
1135
+ "zh-cn": "显示小勾"
1136
+ },
1137
+ "graph3showTicks": {
1138
+ "en": "show tick",
1139
+ "de": "zeige ticks",
1140
+ "ru": "показать галочку",
1141
+ "pt": "show tick",
1142
+ "nl": "vinkje tonen",
1143
+ "fr": "montrer tique",
1144
+ "it": "mostra tick",
1145
+ "es": "mostrar marca",
1146
+ "pl": "pokaż tik",
1147
+ "zh-cn": "显示刻度"
1148
+ },
1149
+ "graph3tickDecimals": {
1150
+ "en": "decimals",
1151
+ "de": "Dezimalstellen",
1152
+ "ru": "десятичные",
1153
+ "pt": "decimais",
1154
+ "nl": "decimalen",
1155
+ "fr": "décimales",
1156
+ "it": "decimali",
1157
+ "es": "decimales",
1158
+ "pl": "miejsca po przecinku",
1159
+ "zh-cn": "小数点"
1160
+ },
1161
+ "graph3tickSize": {
1162
+ "en": "tick size",
1163
+ "de": "Tick-Größe",
1164
+ "ru": "размер галочки",
1165
+ "pt": "tamanho do carrapato",
1166
+ "nl": "teken grootte",
1167
+ "fr": "taille de la tique",
1168
+ "it": "dimensione tick",
1169
+ "es": "tamaño de la garrapata",
1170
+ "pl": "rozmiar kleszcza",
1171
+ "zh-cn": "刻度大小"
1172
+ },
1173
+ "graph3minTickSize": {
1174
+ "en": "min. tick size",
1175
+ "de": "Mindest. Tick-Größe",
1176
+ "ru": "минимум размер галочки",
1177
+ "pt": "min. tamanho do carrapato",
1178
+ "nl": "min. teken grootte",
1179
+ "fr": "min. taille de la tique",
1180
+ "it": "min. dimensione tick",
1181
+ "es": "min. tamaño de la garrapata",
1182
+ "pl": "min. rozmiar kleszcza",
1183
+ "zh-cn": "分钟刻度大小"
1184
+ },
1185
+ "graph3labelwidth": {
1186
+ "en": "label width",
1187
+ "de": "Labelbreite",
1188
+ "ru": "ширина этикетки",
1189
+ "pt": "largura da etiqueta",
1190
+ "nl": "labelbreedte",
1191
+ "fr": "largeur d'étiquette",
1192
+ "it": "larghezza dell'etichetta",
1193
+ "es": "ancho de etiqueta",
1194
+ "pl": "szerokość etykiety",
1195
+ "zh-cn": "标签宽度"
1196
+ },
1197
+
1198
+ "graph4tickLength": {
1199
+ "en": "length of tick",
1200
+ "de": "Länge des Ticks",
1201
+ "ru": "длина тика",
1202
+ "pt": "comprimento do carrapato",
1203
+ "nl": "lengte van de teek",
1204
+ "fr": "longueur de tique",
1205
+ "it": "lunghezza del segno di spunta",
1206
+ "es": "longitud de la garrapata",
1207
+ "pl": "długość kleszcza",
1208
+ "zh-cn": "tick的长度"
1209
+ },
1210
+ "graph4showMinorTicks": {
1211
+ "en": "show minor tick",
1212
+ "de": "zeige kleine Ticks",
1213
+ "ru": "показать небольшую галочку",
1214
+ "pt": "mostre carrapato menor",
1215
+ "nl": "toon kleine vinkjes",
1216
+ "fr": "montrer une tique mineure",
1217
+ "it": "mostra segno di spunta minore",
1218
+ "es": "mostrar marca menor",
1219
+ "pl": "pokaż drobne kleszcze",
1220
+ "zh-cn": "显示小勾"
1221
+ },
1222
+ "graph4showTicks": {
1223
+ "en": "show tick",
1224
+ "de": "zeige ticks",
1225
+ "ru": "показать галочку",
1226
+ "pt": "show tick",
1227
+ "nl": "vinkje tonen",
1228
+ "fr": "montrer tique",
1229
+ "it": "mostra tick",
1230
+ "es": "mostrar marca",
1231
+ "pl": "pokaż tik",
1232
+ "zh-cn": "显示刻度"
1233
+ },
1234
+ "graph4tickDecimals": {
1235
+ "en": "decimals",
1236
+ "de": "Dezimalstellen",
1237
+ "ru": "десятичные",
1238
+ "pt": "decimais",
1239
+ "nl": "decimalen",
1240
+ "fr": "décimales",
1241
+ "it": "decimali",
1242
+ "es": "decimales",
1243
+ "pl": "miejsca po przecinku",
1244
+ "zh-cn": "小数点"
1245
+ },
1246
+ "graph4tickSize": {
1247
+ "en": "tick size",
1248
+ "de": "Tick-Größe",
1249
+ "ru": "размер галочки",
1250
+ "pt": "tamanho do carrapato",
1251
+ "nl": "teken grootte",
1252
+ "fr": "taille de la tique",
1253
+ "it": "dimensione tick",
1254
+ "es": "tamaño de la garrapata",
1255
+ "pl": "rozmiar kleszcza",
1256
+ "zh-cn": "刻度大小"
1257
+ },
1258
+ "graph4minTickSize": {
1259
+ "en": "min. tick size",
1260
+ "de": "Mindest. Tick-Größe",
1261
+ "ru": "минимум размер галочки",
1262
+ "pt": "min. tamanho do carrapato",
1263
+ "nl": "min. teken grootte",
1264
+ "fr": "min. taille de la tique",
1265
+ "it": "min. dimensione tick",
1266
+ "es": "min. tamaño de la garrapata",
1267
+ "pl": "min. rozmiar kleszcza",
1268
+ "zh-cn": "分钟刻度大小"
1269
+ },
1270
+ "graph4labelwidth": {
1271
+ "en": "label width",
1272
+ "de": "Labelbreite",
1273
+ "ru": "ширина этикетки",
1274
+ "pt": "largura da etiqueta",
1275
+ "nl": "labelbreedte",
1276
+ "fr": "largeur d'étiquette",
1277
+ "it": "larghezza dell'etichetta",
1278
+ "es": "ancho de etiqueta",
1279
+ "pl": "szerokość etykiety",
1280
+ "zh-cn": "标签宽度"
1281
+ },
1282
+ "WithHOver": {
1283
+ "en": "With Value box",
1284
+ "de": "Mit Wertbox",
1285
+ "ru": "С коробкой ценности",
1286
+ "pt": "Com caixa de valor",
1287
+ "nl": "Met Value box",
1288
+ "fr": "Avec boîte de valeur",
1289
+ "it": "Con Valore",
1290
+ "es": "Con caja de valor",
1291
+ "pl": "Wagon z Value",
1292
+ "zh-cn": "价值箱"
1293
+ },
1294
+ "WithPoints": {
1295
+ "en": "with points",
1296
+ "de": "mit Punkten",
1297
+ "ru": "с точками",
1298
+ "pt": "com pontos",
1299
+ "nl": "met punten",
1300
+ "fr": "avec points",
1301
+ "it": "con punti",
1302
+ "es": "con puntos",
1303
+ "pl": "punkty",
1304
+ "zh-cn": "要点"
1305
+ }
1306
+
1307
+ });
1308
+ }
1309
+
1310
+
1311
+
1312
+ // this code can be placed directly in template.html
1313
+ vis.binds.ebus = {
1314
+ version: "2.4.4",
1315
+ showVersion: function () {
1316
+ if (vis.binds.ebus.version) {
1317
+ console.log('Version vis-ebus: ' + vis.binds.ebus.version);
1318
+ vis.binds.ebus.version = null;
1319
+ }
1320
+ },
1321
+ setup: {
1322
+ intervals: {
1323
+ '1 second': 1000,
1324
+ '10 seconds': 10000,
1325
+ '30 seconds': 30000,
1326
+ '1 minute': 60000,
1327
+ '2 minutes': 120000,
1328
+ '5 minutes': 300000,
1329
+ '10 minutes': 600000,
1330
+ '30 minutes': 1800000,
1331
+ '1 hour': 3600000,
1332
+ '2 hours': 7200000,
1333
+ '4 hours': 14400000,
1334
+ '8 hours': 28800000,
1335
+ '12 hours': 43200000,
1336
+ '24 hours': 86400000
1337
+ },
1338
+
1339
+ },
1340
+ history: {
1341
+
1342
+ init: function (widgetID, view, data1, style) {
1343
+ var $div = $('#' + widgetID);
1344
+ console.log("ebus history (" + widgetID + ")");
1345
+ var data = {};
1346
+ for (var s in data1) {
1347
+ if (s[0] !== '_' && data1.hasOwnProperty(s) && typeof data1[s] !== 'object' && typeof data1[s] !== 'function') {
1348
+ data[s] = data1[s];
1349
+ }
1350
+
1351
+ }
1352
+
1353
+ //****************************************************************************************
1354
+ //hover
1355
+
1356
+ if (data.WithHOver) {
1357
+ //das muss in's init...
1358
+
1359
+
1360
+
1361
+ $("<div id='ebustooltip'></div>").css({
1362
+ position: "absolute",
1363
+ display: "none",
1364
+ border: "1px solid #fdd",
1365
+ padding: "2px",
1366
+ "background-color": "#fee",
1367
+ opacity: 1
1368
+ }).appendTo("body");
1369
+ //****************************************************************************************
1370
+ }
1371
+
1372
+ function SetMarkingColor(color) {
1373
+ MarkingColor = color;
1374
+ }
1375
+ function noneFormatter(val, axis) {
1376
+
1377
+ let myval;
1378
+ if (typeof val == "string") {
1379
+ console.log('noneFormatter convert to number ');
1380
+ myval = Number(val);
1381
+ }
1382
+ else {
1383
+ myval = val;
1384
+ }
1385
+
1386
+ console.log('noneFormatter for ' + val + " " + typeof val);
1387
+
1388
+ return (myval * 1).toFixed(axis.tickDecimals);
1389
+ }
1390
+
1391
+ function degreeFormatter(val, axis) {
1392
+ let myval;
1393
+ if (typeof val == "string") {
1394
+ console.log('degreeFormatter convert to number ');
1395
+ myval = Number(val);
1396
+ }
1397
+ else {
1398
+ myval = val;
1399
+ }
1400
+
1401
+ console.log('degreeFormatter for ' + val + " " + typeof val);
1402
+
1403
+ return (myval * 1).toFixed(axis.tickDecimals) + "°C";
1404
+ }
1405
+
1406
+ function xwhFormatter(val, axis) {
1407
+ let myval;
1408
+ if (typeof val == "string") {
1409
+ console.log('xwhFormatter convert to number ');
1410
+ myval = Number(val);
1411
+ }
1412
+ else {
1413
+ myval = val;
1414
+ }
1415
+
1416
+ console.log('xwhFormatter for ' + val + " " + typeof val);
1417
+
1418
+ if (myval > 1000000)
1419
+ return (myval / 1000000).toFixed(axis.tickDecimals) + " MWh";
1420
+ else if (myval > 1000)
1421
+ return (myval / 1000).toFixed(axis.tickDecimals) + " kWh";
1422
+ else
1423
+ return (myval*1).toFixed(axis.tickDecimals) + " Wh";
1424
+ }
1425
+
1426
+ function xwFormatter(val, axis) {
1427
+
1428
+ let myval;
1429
+ if (typeof val == "string") {
1430
+ console.log('xwFormatter convert to number ');
1431
+ myval = Number(val);
1432
+ }
1433
+ else {
1434
+ myval = val;
1435
+ }
1436
+
1437
+ console.log('xwFormatter for ' + val + " " + typeof val);
1438
+
1439
+ if (myval > 1000000)
1440
+ return (myval / 1000000).toFixed(axis.tickDecimals) + " MW";
1441
+ else if (myval > 1000)
1442
+ return (myval / 1000).toFixed(axis.tickDecimals) + " kW";
1443
+ else
1444
+ return (myval*1).toFixed(axis.tickDecimals) + " W";
1445
+ }
1446
+
1447
+ function xkwFormatter(val, axis) {
1448
+
1449
+ let myval;
1450
+ if (typeof val == "string") {
1451
+ console.log('xkwFormatter convert to number ');
1452
+ myval = Number(val);
1453
+ }
1454
+ else {
1455
+ myval = val;
1456
+ }
1457
+
1458
+ console.log('xkwFormatter for ' + val + " " + typeof val);
1459
+
1460
+ if (myval > 1000)
1461
+ return (myval / 1000).toFixed(axis.tickDecimals) + " MW";
1462
+ else if (myval > 1)
1463
+ return (myval / 1).toFixed(axis.tickDecimals) + " kW";
1464
+ else
1465
+ return (myval * 0.001).toFixed(axis.tickDecimals) + " W";
1466
+ }
1467
+
1468
+ function legendformater(label, series) {
1469
+
1470
+ //wenn keine Daten, dann ausblenden -> (return null)
1471
+ if (series.data == null || typeof series.data == "undefined" || typeof series.data[0] == "undefined") {
1472
+
1473
+ console.log('legendformater no label because no data ');
1474
+ return null;
1475
+ }
1476
+ else {
1477
+ console.log('legendformater label ' + label);
1478
+ return label;
1479
+ }
1480
+ }
1481
+
1482
+ function GridMarkings(axes) {
1483
+
1484
+ var markings = [];
1485
+ var minDate = new Date(axes.xaxis.min);
1486
+
1487
+ const dayDiff = (axes.xaxis.max - axes.xaxis.min) / 1000 / 60 / 60 / 24;
1488
+ console.log('GridMarkings: DayDiff ' + dayDiff + ' (' + axes.xaxis.max + ' ' + axes.xaxis.min + ')');
1489
+
1490
+ var i = minDate.getTime();
1491
+
1492
+ let limit = 0;
1493
+ //if we only few hours then we need markings per hour otherwise per day
1494
+ if (dayDiff > 2) {
1495
+ do {
1496
+ markings.push({ xaxis: { from: i, to: i + 24 * 60 * 60 * 1000 }, color: MarkingColor });
1497
+ i += 2 * 24 * 60 * 60 * 1000;
1498
+ limit++;
1499
+ } while (i < axes.xaxis.max || limit > 200);
1500
+
1501
+ }
1502
+ else {
1503
+ do {
1504
+ markings.push({ xaxis: { from: i, to: i + 60 * 60 * 1000 }, color: MarkingColor });
1505
+ i += 2 * 60 * 60 * 1000;
1506
+ limit++;
1507
+ } while (i < axes.xaxis.max || limit > 200);
1508
+ }
1509
+ return markings;
1510
+
1511
+ }
1512
+
1513
+ function CalcTicks4X(axis) {
1514
+
1515
+ var ticks = [];
1516
+
1517
+ var minDate = new Date(axis.min);
1518
+
1519
+ const dayDiff = (axis.max - axis.min) / 1000 / 60 / 60 / 24;
1520
+
1521
+ console.log('CalcTicks4X: DayDiff ' + dayDiff + ' (' + axis.max + ' ' + axis.min + ')');
1522
+
1523
+ let limit = 0;
1524
+ //if we only few hours then we need markings per hour otherwise per day
1525
+ //Achtung, wenn zuwenige Punkte, dann wird X-Achse Beschriftung nicht angezeigt
1526
+ if (dayDiff > 2) {
1527
+ minDate.setHours(12);
1528
+ minDate.setMinutes(0);
1529
+ var i = minDate.getTime();
1530
+ console.log('CalcTicks4X: start ' + i);
1531
+ do {
1532
+ ticks.push([i]);
1533
+ i += 24 * 60 * 60 * 1000;
1534
+ console.log('CalcTicks4X: next ' + i + " limit " + limit);
1535
+ limit++;
1536
+ } while (i < axis.max || limit > 200);
1537
+ }
1538
+ else if (dayDiff > 0.24) {
1539
+ minDate.setHours(12);
1540
+ minDate.setMinutes(0);
1541
+ var i = minDate.getTime();
1542
+ console.log('CalcTicks4X: start ' + i);
1543
+ do {
1544
+ ticks.push([i]);
1545
+ i += 4 * 60 * 60 * 1000;
1546
+ console.log('CalcTicks4X: next ' + i + " limit " + limit);
1547
+ limit++;
1548
+ } while (i < axis.max || limit > 200);
1549
+ }
1550
+ else {
1551
+ minDate.setHours(0);
1552
+ minDate.setMinutes(0);
1553
+ var i = minDate.getTime();
1554
+ console.log('CalcTicks4X: start ' + i);
1555
+ do {
1556
+ ticks.push([i]);
1557
+ i += 1 * 60 * 60 * 1000;
1558
+ console.log('CalcTicks4X: next ' + i + " limit " + limit);
1559
+ limit++;
1560
+ } while (i < axis.max || limit > 200);
1561
+ }
1562
+ return ticks;
1563
+ }
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+ //should avoid endles loops
1570
+ let UpdateRetryCounter = 0;
1571
+
1572
+
1573
+
1574
+
1575
+ function update() {
1576
+
1577
+ console.log("ShowChart ebus (" + widgetID + ") retry counter " + UpdateRetryCounter);
1578
+
1579
+ var $div = $('#' + widgetID);
1580
+ // if nothing found => wait
1581
+ if (!$div.length) {
1582
+ return setTimeout(function () {
1583
+ console.log("need to wait... (" + widgetID + ")");
1584
+ if (UpdateRetryCounter < 5) {
1585
+ UpdateRetryCounter++;
1586
+ update();
1587
+ }
1588
+ }, 1000);
1589
+ }
1590
+
1591
+ UpdateRetryCounter = 0;
1592
+ console.log("ShowChart ebus begin (" + widgetID + ")");
1593
+
1594
+ if (!data || !data.ebusinstance) {
1595
+ console.log("keine instanz (" + widgetID + ")");
1596
+ $div.html("<br> <center> <font color='red'> no instance for ebus specified </font> </center></br>");
1597
+ }
1598
+
1599
+ else {
1600
+
1601
+ SetMarkingColor(data.markingcolor);
1602
+
1603
+ var dateMin = -1;
1604
+ var dateMax = -1;
1605
+
1606
+ //parse data
1607
+ var oid_historydate = data.oid_historydate;
1608
+ var oid_historygraph1 = data.oid_historygraph1;
1609
+ var oid_historygraph2 = data.oid_historygraph2;
1610
+ var oid_historygraph3 = data.oid_historygraph3;
1611
+ var oid_historygraph4 = data.oid_historygraph4;
1612
+
1613
+ var data_value1 = null;
1614
+ var data_value2 = null;
1615
+ var data_value3 = null;
1616
+ var data_value4 = null;
1617
+
1618
+ if (data.graph1visible) {
1619
+ try {
1620
+ var data_date = JSON.parse(vis.states[oid_historydate + '.val']);
1621
+
1622
+ if (oid_historygraph1 != "") {
1623
+ data_value1 = JSON.parse(vis.states[oid_historygraph1 + '.val']);
1624
+ }
1625
+ } catch (e) {
1626
+ console.warn('parse error [' + e + ']');
1627
+ $div.html("<br> <center> <font color='red'>exception in parse data graph1 </font> </center></br>");
1628
+ return;
1629
+ }
1630
+ }
1631
+ if (data.graph2visible) {
1632
+
1633
+ try {
1634
+
1635
+ if (oid_historygraph2 != "") {
1636
+ data_value2 = JSON.parse(vis.states[oid_historygraph2 + '.val']);
1637
+ }
1638
+ } catch (e) {
1639
+ console.warn('parse error [' + e + ']');
1640
+ $div.html("<br> <center> <font color='red'>exception in parse data graph2 </font> </center></br>");
1641
+ return;
1642
+ }
1643
+ }
1644
+ if (data.graph3visible) {
1645
+
1646
+ try {
1647
+
1648
+ if (oid_historygraph3 != "") {
1649
+ data_value3 = JSON.parse(vis.states[oid_historygraph3 + '.val']);
1650
+ }
1651
+ } catch (e) {
1652
+ console.warn('parse error [' + e + ']');
1653
+ $div.html("<br> <center> <font color='red'>exception in parse data graph3 </font> </center></br>");
1654
+ return;
1655
+ }
1656
+ }
1657
+ if (data.graph4visible) {
1658
+
1659
+ try {
1660
+
1661
+ if (oid_historygraph4 != "") {
1662
+ data_value4 = JSON.parse(vis.states[oid_historygraph4 + '.val']);
1663
+ }
1664
+ } catch (e) {
1665
+ console.warn('parse error [' + e + ']');
1666
+ $div.html("<br> <center> <font color='red'>exception in parse data graph4 </font> </center></br>");
1667
+ return;
1668
+ }
1669
+ }
1670
+ if (data_date === null || typeof data_date == "undefined" || data_date.length < 1) {
1671
+ $div.html("<br> <center> <font color='red'>no data available yet for ebus </font> </center></br>");
1672
+ return;
1673
+ }
1674
+
1675
+ var values_graph1 = [];
1676
+ var maxY_graph = [-99, -99, -99, -99];
1677
+ var minY_graph = [999999, 999999, 999999, 999999];
1678
+
1679
+ var values_graph2 = [];
1680
+
1681
+ var values_graph3 = [];
1682
+
1683
+ var values_graph4 = [];
1684
+
1685
+ //since all datpoints should have the same length we use date datapoint as master
1686
+ for (var i = 0; i < data_date.length; i++) {
1687
+ try {
1688
+ var oValDate = data_date[i];
1689
+
1690
+ var sDate = oValDate[0]["date"];
1691
+ var sTime = oValDate[0]["time"];
1692
+
1693
+ var DateArray = sDate.split(".");
1694
+ var TimeArray = sTime.split(":");
1695
+ var hour = TimeArray[0];
1696
+ var minute = TimeArray[1];
1697
+ var day = DateArray[0];
1698
+ var month = DateArray[1];
1699
+ var year = DateArray[2];
1700
+
1701
+ var oDate = new Date();
1702
+ oDate.setHours(hour);
1703
+ oDate.setMinutes(minute);
1704
+ oDate.setDate(day);
1705
+ oDate.setMonth(month - 1);
1706
+ oDate.setYear(year);
1707
+
1708
+ var date = oDate.getTime();
1709
+
1710
+ if (dateMin === -1) {
1711
+ dateMin = date;
1712
+ }
1713
+ dateMax = date;
1714
+
1715
+ var oValGraph1 = null;
1716
+ if (data_value1 != null) {
1717
+ oValGraph1 = data_value1[i];
1718
+ }
1719
+ var oValGraph2 = null;
1720
+ if (data_value2 != null) {
1721
+ var oValGraph2 = data_value2[i];
1722
+ }
1723
+ var oValGraph3 = null;
1724
+ if (data_value3 != null) {
1725
+ var oValGraph3 = data_value3[i];
1726
+ }
1727
+ var oValGraph4 = null;
1728
+ if (data_value4 != null) {
1729
+ var oValGraph4 = data_value4[i];
1730
+ }
1731
+ var sVal = oValGraph1;
1732
+ if (sVal != null && typeof sVal != "undefined") {
1733
+ var names = Object.keys(sVal[0]);
1734
+ var sValGraph1 = sVal[0][names[0]];
1735
+ //console.log("graph1 " + sDate + " " + sTime + ": " + sValGraph1);
1736
+ //console.log("graph1 " + oDate.toISOString() + " " + sValGraph1);
1737
+ values_graph1.push([oDate, sValGraph1]);
1738
+
1739
+ if (sValGraph1 > maxY_graph[0]) maxY_graph[0] = sValGraph1;
1740
+ if (sValGraph1 < minY_graph[0]) minY_graph[0] = sValGraph1;
1741
+
1742
+ if (vis.editMode) {
1743
+ if (vis.views[view].widgets[widgetID].data.graph1Name == "") {
1744
+ vis.views[view].widgets[widgetID].data.graph1Name = names[0];
1745
+ vis.widgets[widgetID].data.graph1Name = names[0];
1746
+ }
1747
+ }
1748
+
1749
+ }
1750
+
1751
+ sVal = oValGraph2;
1752
+ if (sVal != null && typeof sVal != "undefined") {
1753
+ var names = Object.keys(sVal[0]);
1754
+ var sValGraph2 = sVal[0][names[0]];
1755
+ //console.log("graph2 " + sDate + " " + sTime + ": " + sValGraph2);
1756
+ //console.log("graph2 " + oDate.toISOString() + " " + sValGraph2);
1757
+ values_graph2.push([oDate, sValGraph2]);
1758
+
1759
+ if (sValGraph2 > maxY_graph[1]) maxY_graph[1] = sValGraph2;
1760
+ if (sValGraph2 < minY_graph[1]) minY_graph[1] = sValGraph2;
1761
+
1762
+ if (vis.editMode) {
1763
+ if (vis.views[view].widgets[widgetID].data.graph2Name == "") {
1764
+ vis.views[view].widgets[widgetID].data.graph2Name = names[0];
1765
+ vis.widgets[widgetID].data.graph2Name = names[0];
1766
+ }
1767
+ }
1768
+ }
1769
+
1770
+ sVal = oValGraph3;
1771
+ if (sVal != null && typeof sVal != "undefined") {
1772
+ var names = Object.keys(sVal[0]);
1773
+ var sValGraph3 = sVal[0][names[0]];
1774
+ //console.log("graph3 " + sDate + " " + sTime + ": " + sValGraph3);
1775
+ //console.log("graph3 " + oDate.toISOString() + " " + sValGraph3);
1776
+ values_graph3.push([oDate, sValGraph3]);
1777
+
1778
+ if (sValGraph3 > maxY_graph[2]) maxY_graph[2] = sValGraph3;
1779
+ if (sValGraph3 < minY_graph[2]) minY_graph[2] = sValGraph3;
1780
+
1781
+ if (vis.editMode) {
1782
+ if (vis.views[view].widgets[widgetID].data.graph3Name == "") {
1783
+ vis.views[view].widgets[widgetID].data.graph3Name = names[0];
1784
+ vis.widgets[widgetID].data.graph3Name = names[0];
1785
+ }
1786
+ }
1787
+ }
1788
+
1789
+ sVal = oValGraph4;
1790
+ if (sVal != null && typeof sVal != "undefined") {
1791
+ var names = Object.keys(sVal[0]);
1792
+ var sValGraph4 = sVal[0][names[0]];
1793
+ //console.log("graph4 " + sDate + " " + sTime + ": " + sValGraph4);
1794
+ //console.log("graph4 " + oDate.toISOString() + " " + sValGraph4);
1795
+ values_graph4.push([oDate, sValGraph4]);
1796
+
1797
+ if (sValGraph4 > maxY_graph[3]) maxY_graph[3] = sValGraph4;
1798
+ if (sValGraph4 < minY_graph[3]) minY_graph[3] = sValGraph4;
1799
+
1800
+
1801
+ if (vis.editMode) {
1802
+ if (vis.views[view].widgets[widgetID].data.graph4Name == "") {
1803
+ vis.views[view].widgets[widgetID].data.graph4Name = names[0];
1804
+ vis.widgets[widgetID].data.graph4Name = names[0];
1805
+ }
1806
+ }
1807
+ }
1808
+
1809
+ }
1810
+ catch (e) {
1811
+ console.warn('parse error [' + e + ']');
1812
+ $div.html("<br> <center> <font color='red'>data parse error </font> </center></br>");
1813
+ return;
1814
+ }
1815
+ }
1816
+
1817
+
1818
+ for (var n = 0; n < 4; n++) {
1819
+
1820
+ //console.log("****** before Graph" + n + " max " + maxY_graph[n] + " min " + minY_graph[n]);
1821
+
1822
+ var nTemp = parseFloat(maxY_graph[n]);
1823
+ //console.log(nTemp);
1824
+ nTemp = nTemp + 1;
1825
+ //console.log(nTemp);
1826
+ nTemp = nTemp / 10;
1827
+ //console.log(nTemp);
1828
+ maxY_graph[n] = Math.ceil(nTemp) * 10;
1829
+ if (minY_graph[n] >= 0 && minY_graph[n] < 1000) { //only for temperature and pressure values
1830
+ minY_graph[n] = 0;
1831
+ }
1832
+ else if (minY_graph[n] < 0) {
1833
+ var temp1 = Math.abs(minY_graph[n]);
1834
+
1835
+ minY_graph[n] = Math.ceil((temp1 + 1) / 10) * 10;
1836
+ minY_graph[n] = -1.0 * minY_graph[n];
1837
+ }
1838
+ else {
1839
+ nTemp = parseFloat(minY_graph[n]);
1840
+ //console.log(nTemp);
1841
+ nTemp = nTemp + 1;
1842
+ //console.log(nTemp);
1843
+ nTemp = nTemp / 10;
1844
+ //console.log(nTemp);
1845
+ minY_graph[n] = Math.ceil(nTemp) * 10;
1846
+ }
1847
+ //console.log("****** after Graph" + n + "max " + maxY_graph[n] + " min " + minY_graph[n]);
1848
+ }
1849
+
1850
+ var barwidth = 1000 * 60 * 5; //5 Minuten
1851
+
1852
+ console.log("barwidth = " + barwidth); // in ms
1853
+
1854
+ var Graph1Formatter = noneFormatter;
1855
+ switch (data.graph1YAxisFomat) {
1856
+ case "kWh":
1857
+ Graph1Formatter = xwhFormatter;
1858
+ console.log("kWh format");
1859
+ break;
1860
+ case "W":
1861
+ Graph1Formatter = xwFormatter;
1862
+ console.log("W format");
1863
+ break;
1864
+ case "kW":
1865
+ Graph1Formatter = xkwFormatter;
1866
+ console.log("kW format");
1867
+ break;
1868
+ case "degree":
1869
+ Graph1Formatter = degreeFormatter;
1870
+ console.log("degree format");
1871
+ break;
1872
+ default:
1873
+ console.log("unknown format: " + data.graph1YAxisFomat);
1874
+ break;
1875
+
1876
+ }
1877
+
1878
+ var Graph2Formatter = noneFormatter;
1879
+ switch (data.graph2YAxisFomat) {
1880
+ case "kWh":
1881
+ Graph2Formatter = xwhFormatter;
1882
+ console.log("kWh format");
1883
+ break;
1884
+ case "W":
1885
+ Graph1Formatter = xwFormatter;
1886
+ console.log("W format");
1887
+ break;
1888
+ case "kW":
1889
+ Graph2Formatter = xkwFormatter;
1890
+ console.log("kW format");
1891
+ break;
1892
+ case "degree":
1893
+ Graph2Formatter = degreeFormatter;
1894
+ console.log("degree format");
1895
+ break;
1896
+ default:
1897
+ console.log("unknown format " + data.graph2YAxisFomat);
1898
+ break;
1899
+
1900
+ }
1901
+
1902
+ var Graph3Formatter = noneFormatter;
1903
+ switch (data.graph3YAxisFomat) {
1904
+ case "kWh":
1905
+ Graph3Formatter = xwhFormatter;
1906
+ console.log("kWh format");
1907
+ break;
1908
+ case "W":
1909
+ Graph1Formatter = xwFormatter;
1910
+ console.log("W format");
1911
+ break;
1912
+ case "kW":
1913
+ Graph3Formatter = xkwFormatter;
1914
+ console.log("kW format");
1915
+ break;
1916
+
1917
+ case "degree":
1918
+ Graph3Formatter = degreeFormatter;
1919
+ console.log("degree format");
1920
+ break;
1921
+ default:
1922
+ console.log("unknown format " + data.graph3YAxisFomat);
1923
+ break;
1924
+
1925
+ }
1926
+
1927
+ var Graph4Formatter = noneFormatter;
1928
+ switch (data.graph4YAxisFomat) {
1929
+ case "kWh":
1930
+ Graph4Formatter = xwhFormatter;
1931
+ console.log("kWh format");
1932
+ break;
1933
+ case "W":
1934
+ Graph1Formatter = xwFormatter;
1935
+ console.log("W format");
1936
+ break;
1937
+ case "kW":
1938
+ Graph4Formatter = xkwFormatter;
1939
+ console.log("kW format");
1940
+ break;
1941
+ case "degree":
1942
+ Graph4Formatter = degreeFormatter;
1943
+ console.log("degree format");
1944
+ break;
1945
+ default:
1946
+ console.log("unknown format " + data.graph4YAxisFomat);
1947
+ break;
1948
+
1949
+ }
1950
+
1951
+
1952
+ $.plot($div,
1953
+ [
1954
+ {
1955
+ data: data.graph1visible ? values_graph1 : {},
1956
+ color: data.graph1color,
1957
+ label: data.graph1Name,
1958
+ xaxis: 1,
1959
+ yaxis: 1,
1960
+ lines: { show: data.graph1charttype == "charttypeline" },
1961
+ points: { show: data.WithPoints },
1962
+ bars:
1963
+ {
1964
+ show: data.graph1charttype == "charttypebar",
1965
+ barWidth: [barwidth, true],
1966
+ align: "left", //"center",
1967
+ horizontal: false
1968
+ }
1969
+ },
1970
+ {
1971
+ data: data.graph2visible ? values_graph2 : {},
1972
+ color: data.graph2color,
1973
+ label: data.graph2Name,
1974
+ xaxis: 1,
1975
+ yaxis: 2,
1976
+ lines: { show: data.graph2charttype == "charttypeline" },
1977
+ points: { show: data.WithPoints },
1978
+ bars:
1979
+ {
1980
+ show: data.graph2charttype == "charttypebar",
1981
+ barWidth: [barwidth, true],
1982
+ align: "left", //"center",
1983
+ horizontal: false
1984
+ }
1985
+ },
1986
+ {
1987
+ data: data.graph3visible ? values_graph3 : {},
1988
+ color: data.graph3color,
1989
+ label: data.graph3Name,
1990
+ xaxis: 1,
1991
+ yaxis: 3,
1992
+ lines: { show: data.graph3charttype == "charttypeline" },
1993
+ points: { show: data.WithPoints },
1994
+ bars:
1995
+ {
1996
+ show: data.graph3charttype == "charttypebar",
1997
+ barWidth: [barwidth, true],
1998
+ align: "left", //"center",
1999
+ horizontal: false
2000
+ }
2001
+ },
2002
+ {
2003
+ data: data.graph4visible ? values_graph4 : {},
2004
+ color: data.graph4color,
2005
+ label: data.graph4Name,
2006
+ xaxis: 1,
2007
+ yaxis: 4,
2008
+ lines: { show: data.graph4charttype == "charttypeline" },
2009
+ points: { show: data.WithPoints },
2010
+ bars:
2011
+ {
2012
+ show: data.graph4charttype == "charttypebar",
2013
+ barWidth: [barwidth, true],
2014
+ align: "left", //"center",
2015
+ horizontal: false
2016
+ }
2017
+ }
2018
+ ],
2019
+ {
2020
+
2021
+ xaxes:
2022
+ [
2023
+ {
2024
+ axisLabelUseCanvas: true,
2025
+ axisLabelColour: 'orange',
2026
+
2027
+ show: data.withxaxix,
2028
+ mode: "time",
2029
+ timeBase: "milliseconds",
2030
+ tickLength: 5,
2031
+
2032
+ min: dateMin,
2033
+ max: dateMax,
2034
+ //ticks: data.ticksonxaxix > 0 ? parseInt(data.ticksonxaxix, 10) : 5,
2035
+ ticks: CalcTicks4X,
2036
+ autoScale: "none",
2037
+ timeformat: data.xDateFormat,
2038
+ monthNames: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
2039
+ color: data.tickscolor,
2040
+ tickColor: data.tickscolor,
2041
+ font: {
2042
+ size: data.LabelFontSize,
2043
+ lineHeight: 13,
2044
+ style: "normal", //"italic",
2045
+ weight: "bold",
2046
+ family: data.LabelFontFamily,
2047
+ variant: "small-caps",
2048
+ color: data.axislabelcolor,
2049
+ },
2050
+ timezone: "browser"
2051
+ }
2052
+ ],
2053
+ yaxes:
2054
+ [
2055
+ {
2056
+ axisLabelUseCanvas: true,
2057
+ axisLabelColour: 'orange',
2058
+
2059
+ show: data.graph1visible && data.graph1withyaxix,
2060
+ max: maxY_graph[0],
2061
+ min: minY_graph[0],
2062
+ autoScale: "none", // Available modes: "none", "loose", "exact"
2063
+
2064
+ showTickLabels: "major",
2065
+ alignTicksWithAxis: null, //1,
2066
+
2067
+ position: 'left',
2068
+ //ticks: 3,
2069
+ tickLength: parseFloat(data.graph1tickLength), //20, // size in pixels of major tick marks
2070
+ showMinorTicks: data.graph1showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2071
+ showTicks: data.graph1showTicks, //true, // true = show tick marks, false = hide all tick marks
2072
+ tickDecimals: data.graph1tickDecimals, //1, // no. of decimals, null means auto
2073
+ tickSize: data.graph1tickSize, //3, // number or [number, "unit"]
2074
+ minTickSize: data.graph1minTickSize, //1, // number or [number, "unit"]
2075
+
2076
+ color: data.tickscolor,
2077
+
2078
+ tickColor: data.graph1coloraxis,
2079
+
2080
+ labelWidth: parseFloat(data.graph1labelwidth),
2081
+
2082
+ font: {
2083
+ size: data.LabelFontSize,
2084
+ lineHeight: 13,
2085
+ style: "normal", //"italic",
2086
+ weight: "bold",
2087
+ family: data.LabelFontFamily,
2088
+ variant: "small-caps",
2089
+ color: data.graph1color,
2090
+ },
2091
+ tickFormatter: Graph1Formatter
2092
+ },
2093
+ {
2094
+ axisLabelUseCanvas: true,
2095
+ axisLabelColour: 'orange',
2096
+
2097
+ show: data.graph2visible && data.graph2withyaxix,
2098
+ max: maxY_graph[1],
2099
+ min: minY_graph[1],
2100
+ autoScale: "none", // Available modes: "none", "loose", "exact"
2101
+ showTickLabels: "major",
2102
+ alignTicksWithAxis: null, //1,
2103
+
2104
+ position: 'left',
2105
+ //ticks: 3,
2106
+
2107
+ tickLength: parseFloat(data.graph2tickLength), //20, // size in pixels of major tick marks
2108
+ showMinorTicks: data.graph2showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2109
+ showTicks: data.graph2showTicks, //true, // true = show tick marks, false = hide all tick marks
2110
+ tickDecimals: data.graph2tickDecimals, //1, // no. of decimals, null means auto
2111
+ tickSize: data.graph2tickSize, //3, // number or [number, "unit"]
2112
+ minTickSize: data.graph2minTickSize, //1, // number or [number, "unit"]
2113
+
2114
+ color: data.tickscolor,
2115
+ tickColor: data.graph2coloraxis,
2116
+
2117
+ labelWidth: parseFloat(data.graph2labelwidth),
2118
+ font: {
2119
+ size: data.LabelFontSize,
2120
+ lineHeight: 13,
2121
+ style: "normal", //"italic",
2122
+ weight: "bold",
2123
+ family: data.LabelFontFamily,
2124
+ variant: "small-caps",
2125
+ color: data.graph2color,
2126
+ },
2127
+ tickFormatter: Graph2Formatter
2128
+ },
2129
+ {
2130
+ axisLabelUseCanvas: true,
2131
+ axisLabelColour: 'orange',
2132
+
2133
+ show: data.graph3visible && data.graph3withyaxix,
2134
+ max: maxY_graph[2],
2135
+ min: minY_graph[2],
2136
+ autoScale: "none", // Available modes: "none", "loose", "exact"
2137
+ showTickLabels: "major",
2138
+ alignTicksWithAxis: null, //1,
2139
+
2140
+ position: 'left',
2141
+ //ticks: 3,
2142
+
2143
+ tickLength: parseFloat(data.graph3tickLength), //20, // size in pixels of major tick marks
2144
+ showMinorTicks: data.graph3showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2145
+ showTicks: data.graph3showTicks, //true, // true = show tick marks, false = hide all tick marks
2146
+ tickDecimals: data.graph3tickDecimals, //1, // no. of decimals, null means auto
2147
+ tickSize: data.graph3tickSize, //3, // number or [number, "unit"]
2148
+ minTickSize: data.graph3minTickSize, //1, // number or [number, "unit"]
2149
+
2150
+ color: data.tickscolor,
2151
+ tickColor: data.graph3coloraxis,
2152
+
2153
+ labelWidth: parseFloat(data.graph3labelwidth),
2154
+ font: {
2155
+ size: data.LabelFontSize,
2156
+ lineHeight: 13,
2157
+ style: "normal", //"italic",
2158
+ weight: "bold",
2159
+ family: data.LabelFontFamily,
2160
+ variant: "small-caps",
2161
+ color: data.graph3color,
2162
+ },
2163
+ tickFormatter: Graph3Formatter
2164
+ },
2165
+ {
2166
+ axisLabelUseCanvas: true,
2167
+ axisLabelColour: 'orange',
2168
+
2169
+ show: data.graph4visible && data.graph4withyaxix,
2170
+ max: maxY_graph[3],
2171
+ min: minY_graph[3],
2172
+ autoScale: "none", // Available modes: "none", "loose", "exact"
2173
+ showTickLabels: "major",
2174
+ alignTicksWithAxis: null, //1,
2175
+
2176
+ position: 'left',
2177
+ //ticks: 3,
2178
+
2179
+ tickLength: parseFloat(data.graph4tickLength), //20, // size in pixels of major tick marks
2180
+ showMinorTicks: data.graph4showMinorTicks, //false, // true = show minor tick marks, false = hide minor tick marks
2181
+ showTicks: data.graph4showTicks, //true, // true = show tick marks, false = hide all tick marks
2182
+ tickDecimals: data.graph4tickDecimals, //1, // no. of decimals, null means auto
2183
+ tickSize: data.graph4tickSize, //3, // number or [number, "unit"]
2184
+ minTickSize: data.graph4minTickSize, //1, // number or [number, "unit"]
2185
+
2186
+ color: data.tickscolor,
2187
+ tickColor: data.graph4coloraxis,
2188
+
2189
+ labelWidth: parseFloat(data.graph4labelwidth),
2190
+ font: {
2191
+ size: data.LabelFontSize,
2192
+ lineHeight: 13,
2193
+ style: "normal", //"italic",
2194
+ weight: "bold",
2195
+ family: data.LabelFontFamily,
2196
+ variant: "small-caps",
2197
+ color: data.graph4color,
2198
+ },
2199
+ tickFormatter: Graph4Formatter
2200
+ }
2201
+ ],
2202
+ grid:
2203
+ {
2204
+ //hover
2205
+ hoverable: true, //to trigger plothover event on mouse hover or tap on a point
2206
+ clickable: true, //to trigger plotclick event on mouse hover
2207
+
2208
+ markings: data.withmarking ? GridMarkings : null,
2209
+
2210
+ // backgroundColor: data.nobgcolor ? null : { colors: ["#fff", "#eee"] },
2211
+ backgroundColor: data.nobgcolor ? null : data.bgcolor,
2212
+ borderWidth: parseFloat(data.borderWidth), //data.withborder,
2213
+ borderColor: data.bordercolor,
2214
+ margin: 1,
2215
+ /*
2216
+ borderWidth: {
2217
+ top: data.withborder ? 1 : 0,
2218
+ right: data.withborder ? 1 : 0,
2219
+ bottom: data.withborder ? 2 : 0,
2220
+ left: data.withborder ? 2 : 0
2221
+ },*/
2222
+
2223
+ },
2224
+ legend: {
2225
+ show: data.withlegend,
2226
+ labelFormatter: legendformater,
2227
+ //labelBoxBorderColor: color,
2228
+ //noColumns: number,
2229
+ position: data.legendposition,
2230
+ //margin: number of pixels or [x margin, y margin]
2231
+ backgroundColor: null,
2232
+ backgroundOpacity: 0,
2233
+ container: null,
2234
+ sorted: false
2235
+ }
2236
+ }
2237
+ );
2238
+
2239
+
2240
+ //****************************************************************************************
2241
+ //hover
2242
+
2243
+ console.log("hover start " + widgetID + " " + data.WithHOver);
2244
+ if (data.WithHOver) {
2245
+ console.log("hover start " + widgetID);
2246
+ $('#' + widgetID).bind("plotclick", function (event, pos, item) {
2247
+ console.log("clicked at " + pos.x + ", " + pos.y);
2248
+ // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ...
2249
+ // if you need global screen coordinates, they are pos.pageX, pos.pageY
2250
+
2251
+ if (item) {
2252
+
2253
+ let x = item.datapoint[0];
2254
+ let y = item.datapoint[1].toFixed(2);
2255
+
2256
+ var xDate = new Date(x);
2257
+
2258
+ console.log("clicked a point!" + item.series.label + " " + y + " on " + xDate.toLocaleString() + " = " + $.plot.formatDate(xDate, data.xDateFormat));
2259
+
2260
+ let zindex = $div.css("z-index");
2261
+ zindex++;
2262
+ console.log("z-index " + zindex);
2263
+ //damit Tooltip in Vordergrund erscheind, muss z-index vom widget kleiner sein...
2264
+
2265
+ $("#ebustooltip").html($.plot.formatDate(xDate, data.xDateFormat) + "<br> " + item.series.yaxis.tickFormatter(y, item.series.yaxis))
2266
+ .css({ top: item.pageY + 5, left: item.pageX + 5, "z-index": zindex })
2267
+ .fadeIn(200);
2268
+
2269
+ }
2270
+ else {
2271
+ $("#ebustooltip").stop().hide();
2272
+ }
2273
+ });
2274
+ }
2275
+ //****************************************************************************************
2276
+
2277
+
2278
+ }
2279
+ };
2280
+
2281
+ if (data.ebusinstance) {
2282
+
2283
+ //bind to oid to be informed about updates
2284
+ var oid_historydate = data.oid_historydate;
2285
+ console.log("bind " + oid_historydate);
2286
+ vis.states.bind(oid_historydate + '.val', function () {
2287
+ update();
2288
+ });
2289
+
2290
+ var oid_historygraph1 = data.oid_historygraph1;
2291
+ console.log("bind " + oid_historygraph1);
2292
+ vis.states.bind(oid_historygraph1 + '.val', function () {
2293
+ update();
2294
+ });
2295
+ var oid_historygraph2 = data.oid_historygraph2;
2296
+ console.log("bind " + oid_historygraph2);
2297
+ vis.states.bind(oid_historygraph2 + '.val', function () {
2298
+ update();
2299
+ });
2300
+ var oid_historygraph3 = data.oid_historygraph3;
2301
+ console.log("bind " + oid_historygraph3);
2302
+ vis.states.bind(oid_historygraph3 + '.val', function () {
2303
+ update();
2304
+ });
2305
+ var oid_historygraph4 = data.oid_historygraph4;
2306
+ console.log("bind " + oid_historygraph4);
2307
+ vis.states.bind(oid_historygraph4 + '.val', function () {
2308
+ update();
2309
+ });
2310
+ // update every x seconds
2311
+ if (!vis.editMode) {
2312
+
2313
+ console.log("interval " + vis.binds.ebus.setup.intervals[data.time_interval]);
2314
+
2315
+ $div.data('timer', setInterval(function () {
2316
+ update();
2317
+ }, parseInt(vis.binds.ebus.setup.intervals[data.time_interval], 10)));
2318
+ }
2319
+
2320
+ }
2321
+ else {
2322
+ console.log("instance not set ");
2323
+ }
2324
+ update();
2325
+ if (vis.editMode) {
2326
+ console.log("flot version " + $.plot.version + " for ebus");
2327
+ }
2328
+ }
2329
+ },
2330
+ };
2331
+
2332
+ if (vis.editMode) {
2333
+ vis.binds.ebus.onInstanceChanged = function (widgetID, view, newId, fields) {
2334
+ console.log('---------: ' + widgetID + ' - ' + view + ' - ' + newId + ' - ' + fields);
2335
+
2336
+ var changed = [];
2337
+ //delete all
2338
+ vis.views[view].widgets[widgetID].data.oid_historydate = "";
2339
+ vis.views[view].widgets[widgetID].data.oid_historygraph1 = "";
2340
+ vis.views[view].widgets[widgetID].data.oid_historygraph2 = "";
2341
+ vis.views[view].widgets[widgetID].data.oid_historygraph3 = "";
2342
+ vis.views[view].widgets[widgetID].data.oid_historygraph4 = "";
2343
+ //then copy new values
2344
+ if (newId.indexOf("ebus") > -1) {
2345
+
2346
+ //ebus.0.data.history
2347
+ console.log('calc new oids');
2348
+ vis.views[view].widgets[widgetID].data.oid_historydate = newId + ".history.date";
2349
+ vis.widgets[widgetID].data.oid_historydate = newId + ".history.date";
2350
+
2351
+ vis.views[view].widgets[widgetID].data.oid_historygraph1 = newId + ".history.value1";
2352
+ vis.widgets[widgetID].data.oid_historygraph1 = newId + ".history.value1";
2353
+
2354
+ vis.views[view].widgets[widgetID].data.oid_historygraph2 = newId + ".history.value2";
2355
+ vis.widgets[widgetID].data.oid_historygraph2 = newId + ".history.value2";
2356
+
2357
+ vis.views[view].widgets[widgetID].data.oid_historygraph3 = newId + ".history.value3";
2358
+ vis.widgets[widgetID].data.oid_historygraph3 = newId + ".history.value3";
2359
+
2360
+ vis.views[view].widgets[widgetID].data.oid_historygraph4 = newId + ".history.value4";
2361
+ vis.widgets[widgetID].data.oid_historygraph4 = newId + ".history.value4";
2362
+ }
2363
+ return changed;
2364
+ }
2365
+ }
2366
+
2367
+ vis.binds.ebus.showVersion();
2368
+
2369
+ </script>
2370
+
2371
+ <script id="tplEbusShowInstance"
2372
+ type="text/ejs"
2373
+ class="vis-tpl"
2374
+ data-vis-prev='<img src="widgets/ebus/img/Prev_tplebus.png"></img>'
2375
+ data-vis-set="ebus"
2376
+ data-vis-type="ebus"
2377
+ data-vis-name="ebus"
2378
+ data-vis-update-style="true"
2379
+ data-vis-attrs="ebusinstance/ebus/onInstanceChanged;"
2380
+ data-vis-attrs0="time_interval[30 minutes]/select,1 second,10 seconds,30 seconds,1 minute,2 minutes,5 minutes,10 minutes,30 minutes,1 hour,2 hours,4 hours,8 hours,12 hours,24 hours;withxaxix[true]/checkbox;axislabelcolor[#ffffff]/color;tickscolor[#ffffff]/color;LabelFontSize[8];LabelFontFamily[Arial]/fontname;withmarking[true]/checkbox;markingcolor[#eaebe5]/color;xDateFormat[%H:%M];borderWidth[1];bordercolor[#000000]/color;nobgcolor[true]/checkbox;bgcolor[#FFFFFF]/color;withlegend[false]/checkbox;legendposition[ne]/select,ne,nw,se,sw;WithHOver[true]/checkbox;WithPoints[true]/checkbox;"
2381
+ data-vis-attrs1="group.graph1;graph1visible[true]/checkbox;oid_historygraph1/id;graph1charttype[charttypeline]/select,charttypeline,charttypebar;graph1Name;graph1color[#f1f113]/color;graph1coloraxis[#1d0ed8]/color;graph1colorticklabel[#1d0ed8]/color;graph1withyaxix[true]/checkbox;graph1YAxisFomat[none]/select,none,kWh,W,kW,degree;graph1tickLength[5];graph1showMinorTicks[true]/checkbox;graph1showTicks[true]/checkbox;graph1tickDecimals[1];graph1tickSize[3];graph1minTickSize[2];graph1labelwidth[30];"
2382
+ data-vis-attrs2="group.graph2;graph2visible[true]/checkbox;oid_historygraph2/id;graph2charttype[charttypeline]/select,charttypeline,charttypebar;graph2Name;graph2color[#f1f113]/color;graph2coloraxis[#1d0ed8]/color;graph2colorticklabel[#1d0ed8]/color;graph2withyaxix[true]/checkbox;graph2YAxisFomat[none]/select,none,kWh,W,kW,degree;graph2tickLength[5];graph2showMinorTicks[true]/checkbox;graph2showTicks[true]/checkbox;graph2tickDecimals[1];graph2tickSize[3];graph2minTickSize[2];graph2labelwidth[30];"
2383
+ data-vis-attrs3="group.graph3;graph3visible[true]/checkbox;oid_historygraph3/id;graph3charttype[charttypeline]/select,charttypeline,charttypebar;graph3Name;graph3color[#f1f113]/color;graph3coloraxis[#1d0ed8]/color;graph3colorticklabel[#1d0ed8]/color;graph3withyaxix[true]/checkbox;graph3YAxisFomat[none]/select,none,kWh,W,kW,degree;graph3tickLength[5];graph3showMinorTicks[true]/checkbox;graph3showTicks[true]/checkbox;graph3tickDecimals[1];graph3tickSize[3];graph3minTickSize[2];graph3labelwidth[30];"
2384
+ data-vis-attrs4="group.graph4;graph4visible[true]/checkbox;oid_historygraph4/id;graph4charttype[charttypeline]/select,charttypeline,charttypebar;graph4Name;graph4color[#f1f113]/color;graph4coloraxis[#1d0ed8]/color;graph4colorticklabel[#1d0ed8]/color;graph4withyaxix[true]/checkbox;graph4YAxisFomat[none]/select,none,kWh,W,kW,degree;graph4tickLength[5];graph4showMinorTicks[true]/checkbox;graph4showTicks[true]/checkbox;graph4tickDecimals[1];graph4tickSize[3];graph4minTickSize[2];graph4labelwidth[30];"
2385
+ data-vis-attrs5="group.oids;oid_historydate/id;">
2386
+
2387
+ <div class="vis-widget <%== this.data.attr('class') %>" style="width:210px; height:170px;" id="<%= this.data.attr('wid') %>">
2388
+ <div class="vis-ebus-widget-body"
2389
+ <% vis.binds.ebus.history.init(this.data.wid, this.view, this.data, this.style) %>>
2390
+ </div>
2391
+ </div>
2392
+
2393
+ </script>
2394
+
2395
+