Initial commit

This commit is contained in:
2018-09-14 13:57:28 +08:00
commit 2f97305223
104 changed files with 17598 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
.idea
node_modules
src/i18n/flat.txt
src/i18n/*/flat.txt
www
package-lock.json
iob_npm.done
tmp
+9
View File
@@ -0,0 +1,9 @@
gulpfile.js
src
.idea
node_modules
.git
test
.travis.yml
iob_npm.done
appveyor.yml
+7
View File
@@ -0,0 +1,7 @@
os:
- linux
language: node_js
node_js:
- '4'
- '8'
- '10'
+21
View File
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014-2018 bluefox<dogafox@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+214
View File
@@ -0,0 +1,214 @@
![Logo](admin/flot.png)
# yunkong2.flot
=================
[![NPM version](http://img.shields.io/npm/v/yunkong2.flot.svg)](https://www.npmjs.com/package/yunkong2.flot)
[![Downloads](https://img.shields.io/npm/dm/yunkong2.flot.svg)](https://www.npmjs.com/package/yunkong2.flot)
[![NPM](https://nodei.co/npm/yunkong2.flot.png?downloads=true)](https://nodei.co/npm/yunkong2.flot/)
Draw charts with [flot](http://www.flotcharts.org/)
![Example](img/example.png)
![Example](img/screen1.jpg)
![Example](img/screen2.jpg)
![Example](img/screen3.jpg)
![Example](img/screen4.jpg)
![Example](img/screen5.jpg)
![Example](img/screen6.jpg)
![Example](img/screen7.jpg)
To use the charts one of the history adapters is required: history, sql or InfluxDB
To **edit** created chart again, you should replace index.html with edit.html and call this link in browser, e.g:
http://localhost:8082/flot/**index**.html?l%5B0%5D%5Bid%5D=system.adapter.admin.0.memRss
to
http://localhost:8082/flot/**edit**.html?l%5B0%5D%5Bid%5D=system.adapter.admin.0.memRss
## How to use
- install "web"-adapter and create one instance if not installed.
- Select in settings of "web"-adapter the instance of installed "socket.io"-instance.
- install "flot"-adapter and call
- Go to http://ip:8082/flot/edit.html
## Changelog
### 1.9.2 (2018-08-18)
* (Seqway) Translations
### 1.9.1 (2018-06-04)
* (bluefox) Added dashed lines
* (bluefox) All JS files together are concatenated
* (bluefox) Show days of week (dow) in time axis.
### 1.8.0 (2018-05-04)
* (bluefox) Optimize communication
### 1.7.9 (2018-05-01)
* (bluefox) Added support of multi-languages in names
### 1.7.7 (2018-03-04)
* (Apollon77) fix month range
### 1.7.6 (2018-02-16)
* (Apollon77) remove alert windows from errors, log instead
### 1.7.5 (2018-01-13)
* (bluefox) try to fix small error
### 1.7.4 (2018-01-05)
* (bluefox) The loading via cloud is fixed
### 1.7.1 (2017-12-14)
* (bluefox) Fixed the loading of presets
* (bluefox) Added new date formats for X axis
### 1.7.0 (2017-10-17)
* (bluefox) Add presets
### 1.6.2 (2017-08-12)
* (bluefox) Show chart at start
### 1.6.1 (2017-03-25)
* (bluefox) Change edit layout
### 1.5.9 (2017-02-27)
* (bluefox) New color picker
* (bluefox) If 'none' for title selected => do not show any title
* (bluefox) add date format 'dd.mm.'
### 1.5.8 (2017-02-01)
* (bluefox) Add series as X ticks
### 1.5.7 (2017-01-26)
* (bluefox) Small fix in smoothing algorithm
### 1.5.6 (2016-11-04)
* (bluefox) fix marking line
### 1.5.4 (2016-10-13)
* (bluefox) remove area, line plot
* (bluefox) add fill value, points option
### 1.5.3 (2016-10-08)
* (bluefox) Allow using of IDs in the marking
* (bluefox) Support of filled markings
### 1.5.2 (2016-09-30)
* (bluefox) fix range and offset if month or year
* (bluefox) fix after comma settings
### 1.5.1 (2016-09-15)
* (bluefox) Filter IDs depends on storage instance
### 1.5.0 (2016-09-10)
* (bluefox) Support of marking lines
### 1.4.0 (2016-08-30)
* (bluefox) support bar chart (only one bar chart possible)
### 1.3.5 (2016-08-14)
* (bluefox) support of web-sockets force
### 1.3.4 (2016-07-23)
* (nobodyMO) Add app support
* (nobodyMO) Fix for jquery to the current version in vis
### 1.3.3 (2016-06-16)
* (bluefox) remove RTL direction in id field
### 1.3.2 (2016-06-13)
* (bluefox) add settings for border color and border width
* (bluefox) make splines work
### 1.3.1 (2016-06-07)
* (bluefox) add spline file
### 1.3.0 (2016-05-29)
* (bluefox) add animation
* (bluefox) remove smoothing, because does not work
* (bluefox) try to add splines, but it does not work always
### 1.2.5 (2016-05-28)
* (bluefox) do not include nulls by smoothing
### 1.2.4 (2016-05-27)
* (bluefox) show edit button
### 1.2.3 (2016-05-25)
* (bluefox) fix digits after comma
* (bluefox) fix start and finish points
### 1.2.2 (2016-05-22)
* (bluefox) change default aggregation name
* (bluefox) add units in tooltip
### 1.2.1 (2016-05-13)
* (bluefox) implement loading indicator
### 1.2.0 (2016-05-05)
* (bluefox) implement zoom and pan
* (bluefox) support ms
* (bluefox) support m4
* (bluefox) support of pan and zoom on touchable devices
* (bluefox) support of 3 types of "null" handling: use nulls, use last value instead of null, use 0 instead of 0
* (bluefox) update interval in seconds
* (bluefox) smoothing and "after comma" per variable
### 1.1.0 (2016-04-09)
* (bluefox) change splash screen
* (bluefox) ignoreNull per variable
* (bluefox) fix x axis
### 1.0.0 (2016-04-09)
* (bluefox) enable editing of created charts
* (bluefox) enable set of label colors
* (bluefox) enable set of window background
### 0.2.6 (2016-02-24)
* (Pmant) remove ignore null per state
### 0.2.5 (2016-02-14)
* (Pmant) add ignore null per state
* (Pmant) change commonYAxis per state
### 0.2.4 (2016-01-31)
* (ldsign) Title/help attribute for lineWidth and ShadowSize table head
* (ldsign) option for shadowSize
* (nobodyMO) Add option commonYAxis
* (bluefox) add favicon and title
### 0.2.3 (2016-01-26)
* (ldsign) user selectable time (hours/minutes) for static timeArt
### 0.2.2 (2015-12-17)
* (bluefox) fix SelectID for safary
### 0.2.1 (2015-12-14)
* (Smiling_Jack) support of new History concept
* (Smiling_Jack) new editor & working on axis
* (bluefox) add onchange aggregation
* (Smiling_Jack) add ignoreNull
* (Smiling_Jack) working on flot nav
* (bluefox) import old settings
### 0.1.1 (2015-07-13)
* (bluefox) fix time format
### 0.1.0 (2015-07-10)
* (bluefox) lines are implemented
### 0.0.2 (2015-07-09)
* (bluefox) implement title and sort points
### 0.0.1 (2015-03-27)
* (bluefox) initial commit
## License
The MIT License (MIT)
Copyright (c) 2014-2018 bluefox<dogafox@gmail.com>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

+456
View File
@@ -0,0 +1,456 @@
# flot
<span style="font-size: 16px;">Der Adapter dient der grafischen Darstellung von Messwerten. Mit ihm kann man die mit einem History-Adapter geloggten Daten visualisieren. Zum einen direkt beim Aufruf eines geloggten Datenpunktes über das History Icon im Reiter Objects, er kann jedoch auch als eigenständige Applikation zur gleichzeitigen Darstellung mehrerer Datenpunkte benutzt werden.</span>
[![](img/flot-2_yunkong2_Adapter_Flot_001.jpg)](img/flot-2_yunkong2_Adapter_Flot_001.jpg)Ein so generierter Chart kann in einem iFrame-Widget in .vis dargestellt werden
* * *
# [](https://github.com/yunkong2/yunkong2/wiki/yunkong2-Adapter-rickshaw#konfiguration)**Konfiguration**
[![](img/flot-2_yunkong2_Adapter_Flot_000.jpg)](img/flot-2_yunkong2_Adapter_Flot_000.jpg) Eine Konfiguration ist nicht nötig. Hier wird deswegen auch das Konfigurationsmenü nicht angeboten.
* * *
# [](https://github.com/yunkong2/yunkong2/wiki/yunkong2-Adapter-rickshaw#bedienung)**Bedienung**
Der Editor des Flot-Adapters wird über `<IPdesServers>:8082/flot/edit.html/` oder über den Hyperlink im Reiter Instanzen des admin-Adapter aufgerufen.
Die Eingabefelder gliedern sich in 4 Blöcke:
####  [![](img/flot-2_yunkong2_Adapter_Flot_Groups.jpg)](img/flot-2_yunkong2_Adapter_Flot_Groups.jpg)
## [](https://github.com/yunkong2/yunkong2/wiki/yunkong2-Adapter-rickshaw#input-data)**Input data (1)**
Die aktuell installierte Version wird oben rechts angezeigt.
[![](img/flot-2_yunkong2_Adapter_Flot_Input_Data.jpg)](img/flot-2_yunkong2_Adapter_Flot_Input_Data.jpg)
### Einstellungen löschen (Mülleimer)
Löscht alle Eingaben in diesem Chart. Wenn man /flot/edit.html/ aufruft wird üblicherweise das zuletzt bearbeitete Projekt in dem Editor aufgerufen. Will man jedoch einen ganz anderen Chart erstellen, kann man mit diesem Button alle Einstellungen auf Standardwerte zurücksetzen.
### Linie hinzufügen
Eine weitere Zeile wird in der darunterliegenden Tabelle am Ende eingefügt. Diese bekommt eine weitere Farbe zugewiesen.
### Auto update
Wenn das Vorschaubild in der unteren Hälfte der Seite bei jeder Änderung aktualisiert werden soll, muss diese Checkbox aktiviert werden. Bei sehr komplexen Charts kann dies einige Zeit dauern. Standardmäßig ist diese Checkbox nicht aktiviert.
Wenn die Checkbox aktiviert ist, verschwindet der Button **_Update Preview_** rechts über dem Vorschaufenster, über den ansonsten die Vorschau aktualisiert werden würde.
### Platziere Booleans
Mit diesem Button wird der Graph in mehrere vertikal übereinanderliegende Abschnitte unterteilt, in denen jeweils der Zustand eines Datenpunktes dargestellt wird. Dies dient der besseren Übersicht bei bool'schen Datenpunkten (on/off; true/false)
### Datenpunktparameter
In der folgenden Tabelle werden die Parameter festgelegt mit der die jeweiligen Datenpunkte dargestellt werden sollen
#### Instanz
Hier wird festgelegt aus welcher History-Instanz die geloggten Daten für den Graph entnommen werden sollen.
![](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Instanz.jpg)
default bezieht sich auf die in den Systemeinstellungen festgelegte Default-Instanz zur Datensammlung. Die weiteren Punkte entsprechen den installierten Instanzen.
#### ID
Hier wird der darzustellende Datenpunkt ausgewählt. Der Datenpunkt muss im Reiter _**Objekte**_ des Adapter _**Admin**_ mit der unter _**Instanz**_ ausgewählten History-Instanz geloggt werden.
#### Art
Hier findet die Auswahl der Art und Weise der Darstellung der Datenpunkte in der Linie statt
[![](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Art.jpg)](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Art.jpg)
**-minmax (default):** Es werden sowohl der höchste, als auch der niedrigste Wert innerhalb des Aggregationsintervalls angezeigt
**-mittel:**  Es wird der Mittelwert innerhalb des Aggregationsintervalls angezeigt
**-min:**  Es wird sowohl der niedrigste Wert innerhalb des Aggregationsintervalls angezeigt
**-max:**  Es wird der höchste Wert innerhalb des Aggregationsintervalls angezeigt
**-total:**  Es wird der ??? Wert innerhalb des Aggregationsintervalls angezeigt
 **-bei Änderung:** Es werden nur Werte angezeigt, wenn sich der Wert ändert
#### Chart Type
Hier wird festgelegt in welcher Form die Daten dargestellt werden sollen.
[![](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Chart_Type.jpg)](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Chart_Type.jpg)
**Linie:** Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden als Gerade miteinander verbunden.
**Bar:** Jeder einzelne Messpunkt der Daten wird als vertikaler Balken dargestellt. Diese Darstellung empfiehlt sich nur bei wenigen Messpunkten.
**Scatter plot:** Die Daten werden als isolierte Punkte dargestellt. Die einzelnen Punkte werden nicht miteinander verbunden.
**Schritte:** Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden bis zur nächsten Änderung horizontal als Gerade miteinander verbunden. Zum Zeitpunkt der Änderung wird eine Stufe eingelegt.
**Spline:** Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden als gebogene Kurve miteinander verbunden.
#### Füllen (0-1)
Hier kann festgelegt werden, ob zwischen der gezeichneten Linie und der X-Achse (oder der Linie durch 0) eine Fläche gezeichent werden soll. Mit einem Wert zwischen 0 und 1 (z.B. 0.4) wird die Deckung der Farbe angegeben (0=transparent; 1= deckend).
#### Punkte
Sollen zusätzlich zur Linie auch noch die Messpunkte hervorgehoben werden, kann man diese Checkbox anhaken.
#### Farbe
Die Farbe mit der die Daten für diesen Datenpunkt angezeigt werden sollen kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Min
Hier kann der Mindestwert für die Y-Achse eingegeben werden. Wird kein Wert eingegeben wird die Achse dynamisch skaliert.
#### Max
Hier kann der Höchstwert für die Y-Achse eingegeben werden. Wird kein Wert eingegeben wird die Achse dynamisch skaliert.
#### Einheiten
Hier kann eine Einheit für die Skalierung der Y-Achse angegeben werden
#### Y-Achse
Es gibt mehrere Möglichkeiten, wie die Y-Achse jedes Datenpunktes dargestellt werden kann. Standardmäßig wird für jeden Datenpunkt eine eigene Y-Achse gezeichnet. Dies kann jedoch leicht unübersichtlich werden. Daher gibt es die folgenden Optionen.
[![](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Y_Achse.jpg)](img/flot-2_yunkong2_Adapter_Flot_Input_Data_Y_Achse.jpg)
**-nichts:** für diesen Datenpunkt soll keine eigene Y-Achse gezeichnet werden.
**-links:** die Y-Achse für diesen Datenpunkt soll links von dem Chart gezeichnet werden
**-rechts:** die Y-Achse für diesen Datenpunkt soll rechts von dem Chart gezeichnet werden
**-links farblich:** die Y-Achse für diesen Datenpunkt soll links von dem Chart in der Farbe des Datenpunktes gezeichnet werden
**-rechts farblich:** die Y-Achse für diesen Datenpunkt soll rechts von dem Chart in der Farbe des Datenpunktes gezeichnet werden
#### X-Achse
Es gibt mehrere Möglichkeiten, wie die X-Achse jedes Datenpunktes dargestellt werden kann. Standardmäßig wird für jeden Datenpunkt eine eigene X-Achse gezeichnet. Dies kann jedoch leicht unübersichtlich werden. Daher gibt es die folgenden Optionen.
[![](img/flot-2_yunkong2_Adapter_Flot_Input_Data_X_Achse.jpg)](img/flot-2_yunkong2_Adapter_Flot_Input_Data_X_Achse.jpg)
**-nichts:** für diesen Datenpunkt soll keine eigene Y-Achse gezeichnet werden.
**-oben:** die X-Achse für diesen Datenpunkt soll über dem Chart gezeichnet werden
**-unten:** die X-Achse für diesen Datenpunkt soll unter dem Chart gezeichnet werden
**-oben farblich:** die X-Achse für diesen Datenpunkt soll über dem Chart in der Farbe des Datenpunktes gezeichnet werden
**-unten farblich:** die X-Achse für diesen Datenpunkt soll unter dem Chart in der Farbe des Datenpunktes gezeichnet werden
#### Name
Hier kann eine Bezeichnung für den Datenpunkt festgelegt werden, die auch in der Legende angezeigt wird. Wird hier nichts eingegeben wird die vollständige Datenpunktbezeichnung verwendet.
#### mehr
Hinter diesem Icon verbergen sich weitere Einstellungen
[![](img/flot-2_yunkong2_Adapter_Flot_Input_Data_more.jpg)](img/flot-2_yunkong2_Adapter_Flot_Input_Data_more.jpg)
**X-Offset:** Um die Kurve von der Y-Achse abzusetzen, kann hier ein Wert eingegeben werden um welchen Betrag diese Absetzung durchgeführt werden soll.
**Y-Offset:** Um die Kurve von der X-Achse abzusetzen, kann hier ein Wert eingegeben werden um welchen Betrag diese Absetzung durchgeführt werden soll. Dadurch wird u.a. verhindert, dass die Linienstärke die X-Achse überlagert
**X-Achse Ticks:** Anzahl der Markierungen der X-Achse
**Y-Achse Ticks: **Anzahl der Markierungen der Y-Achse
**ØL:** Dicke der Linie in Pixeln
**ØS:** Dicke des Schattens in Pixeln
**Gemeinsame Y-Achse:** default = jede Linie eine eigene Achse, jede Ziffer steht für die entsprechende Linie
**NULL als:** Hier wird festgelegt wie die Linie gezeichnet werden soll, wenn keine Daten vorliegen.
default: keine Linie;
null-Werte ignorieren: Linie wird horizontal weitergeführt
0 statt null benutzen: die Linie wird auf den Wert 0 gezogen.
**Smoothing:** Glättung der Kurve. Im Prinzip wird ein gleitender Mittelwert über die eingestellte Anzahl Punkte gezogen.
**Nach Komma:** Anzahl der Nachkommastellen.
#### Datenpunkt löschen (Mülleimer)
Mit einem Klick auf dieses Icon wird die gesamte Zeile der Tabelle mit allen Einstellungen gelöscht.
## Markierungen (2)
Mit dieser Option können horizontale Linien in einen Chart eingetragen werden um Schwellwerte darzustellen. Die Markierungen können auch Bereiche (z.B. Wohlfühlbereich bei Temperatur oder Luftfeuchte) anzeigen. Dann muss ein obererer und unterer Trigger angegeben werden.
![](img/flot-2_yunkong2_Adapter_Flot_Markierungen.jpg)
### Neue Markierung hinzufügen
Mit einem Klick auf diese Schaltfläche wird in der darunterliegenden Tabelle eine weitere Reihe eingefügt, um eine weitere Markierung zu definieren.
### Markierungsparameter
Die Eigenschaften einer ausgewählten Markierung werden in je einer Zeile festgelegt:
#### Linie ID
Hier wird eine Datenreihe aus dem Chart ausgewählt. Dies ist nötig, damit die Markierung sich an den Werten der zugehörigen Y-Achse orientiert.
#### Oberer Wert oder ID
Hier wird wahlweise ein absoluter Wert oder ein Datenpunkt, der als Trigger für die obere Grenze des Bereichs gelten soll, eingegeben. Der Datenpunkt kann über den Objekt-Explorer gesucht werden.
#### Unterer Wert oder ID
Hier wird wahlweise ein absoluter Wert oder ein Datenpunkt, der als Trigger für die untere Grenze des Bereichs gelten soll, eingegeben. Der Datenpunkt kann über den Objekt-Explorer gesucht werden.
#### Farbe
Die Farbe mit der die Linien für diese Markierung angezeigt werden sollen kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Füllen
Hier kann festgelegt werden, ob zwischen den gezeichneten Linie, bzw. zwischen der Linie und der X-Achse (oder der Linie durch 0) eine Fläche gezeichnet werden soll.
#### <span style="text-align: justify; line-height: 1.5;">ØL</span>
Dicke der Linie in Pixeln
#### ØS
Dicke des Schattens in Pixeln
#### Text
Hier kann eine Information zu der Markierung eingegeben werden, die im Chart erscheint.
#### Textposition
Man kann festlegen, ob diese Information an der rechten oder linken Y-Achse angezeigt werden soll.
#### Textoffset
Dies ist der Abstand zur Markierungslinie. Der Wert kann positiv oder negativ angegeben werden.
#### Textgröße
Textgröße in px. Auch eine Angabe in pt ist möglich
#### Textfarbe
Die Farbe mit der die Information zu dieser Markierung angezeigt werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
## Zeit (3)
![](img/flot-2_yunkong2_Adapter_Flot_Zeit-e1484938214253.jpg)
### Zeitspanne
#### Art
Hier kann man zwischen statisch und relativ auswählen.
[![](img/flot-2_yunkong2_Adapter_Flot_Zeit_statisch.jpg)](img/flot-2_yunkong2_Adapter_Flot_Zeit_statisch.jpg)
Bei statisch werden fixe Zeitpunkte definiert, bei relativ die Zeitbereiche zu einem variablen Zeitpunkt, wie z.B. _**heute**_.
#### Ende
Dieser Punkt kann je nach Einstellung in dem darüber liegenden Punkt _**Art**_ ein fester Zeitpunkt oder im Falle dass relativ ausgewählt wurde ein variabler wiederholender Zeitpunkt sein.
![](img/flot-2_yunkong2_Adapter_Flot_Zeit_relativ_Ende.jpg)
#### Range
Hier wird der Zeitbereich (die Dauer) eingegeben, über die die X-Achse die Daten anzeigen soll.
[![](img/flot-2_yunkong2_Adapter_Flot_Zeit_relativ_Range.jpg)](img/flot-2_yunkong2_Adapter_Flot_Zeit_relativ_Range.jpg)
#### Autoupdate alle:
Mit diesem Wert wird festgelegt, wie oft sich die Darstellung der Datenpunkte in dem Chart automatisch updaten soll:
[![](img/flot-2_yunkong2_Adapter_Flot_Zeit_autoupdate.jpg)](img/flot-2_yunkong2_Adapter_Flot_Zeit_autoupdate.jpg)
Wenn z.B. bei Homematic Funksensoren sich die Daten sowieso nur alle 3 Minuten ändern ist ein häufigerer Refresh nicht nötig.
### Aggregation
Dieser Punkt dient der Verringerung der Datenmenge in dem Chart. Es kann die Anzahl der geloggten Punkte pro Datenpunkt festgelegt werden (Anzahl) oder der zeitliche Abstand der einzelnen Punkte in Sekunden.
## Options (4)
Der vierte Block enthält jede Menge Zusatzoptionen um ein Chart ansehnlich zu gestalten [![](img/flot-2_yunkong2_Adapter_Flot_Options_all.jpg)](img/flot-2_yunkong2_Adapter_Flot_Options_all.jpg)
### Erscheinung
#### Breite
Gibt an wie breit der Chart dargestellt werden soll. Angabe in px.
#### Höhe
Gibt an wie hoch der Chart dargestellt werden soll. Angabe in px.
#### kein Rahmen
Auswahl, ob ein Rahmen um die gesamte Fläche von Chart, Achsen und deren Beschriftung gezeichnet werden soll
#### Fenster-Hintergrund
Die Farbe mit der dieses Fenster gefüllt werden sollen kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann. Dieser Parameter bezieht sich auf die gesamte Fläche inkl. der Achsen mit ihren Beschriftungen.
#### Anwender Chart-Hintergrund
Wird diese Checkbox aktiviert, verschwindet die darunter liegende Pulldownmenü und statt dessen erscheint ein Eingabefeld.
#### Chart-Hintergrund
Dieser Parameter bezieht sich nur auf den Hintergrund des eigentlichen Charts. Ist die Checkbox darüber aktiviert kann hiereine eigene Beschreibung oder rgb(a) Farbe eingegeben werden. Wenn nicht, kann in dem Pulldownmenü unter verschiedenen vorgefertigten Hintergründen gewählt werden.
#### Y-Beschriftungsfarbe
Die Farbe mit der die Beschriftung der Y-Achse gezeigt werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
Diese Farbe gilt nicht, wenn in der Datenpunktbeschreibung _**Y-Achse rechts/links farblich**_ gewählt wurde.
#### X-Beschriftungsfarbe
Die Farbe mit der die Beschriftung der X-Achse gezeigt werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
Diese Farbe gilt nicht, wenn in der Datenpunktbeschreibung **_X-Achse rechts/links farblich_** gewählt wurde.
#### Rahmenfarbe
Die Farbe mit der der Rahmen um den eigentlichen Chart gezeichnet werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Gitterfarbe
Die Farbe mit der das Gitter auf dem Chart-Hintergrund gezeichnet werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Rahmenbreite
Angabe der Rahmenbreite, die um den Chart-Hintergrund gezeichnet werden soll. Angabe in px.
### Bar-Einstellungen
Die hier eingegeben Werte gelten nur, wenn der Chart Typ auf Bar gestellt ist.
#### Füllfarbe
Die Farbe mit der eine Füllung der Balken gezeichnet werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Zeige Labels
Soll die Bezeichnung der Datenpunkte an den Balken angezeigt werden kann man hier die Position dieser Bezeichnung bestimmen.
**nichts:** keine Bezeichnung
**oben über:** oberhalb des Balkens
**oben unten:** oben innerhalb des Balkens unter der Oberkante
**unten:** unten im Balken
**mittig:** auf halber Höhe im Balken
#### Barbreite
Angabe der Balkenbreite in px
#### Labelschriftgröße
Angabe der Schriftgröße in px
#### Labelfarbe
Die Farbe mit der die Bezeichnung der Balken gezeigt werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
### Beschriftung
In dieser Kategorie geht es um die mögliche Beschriftung des Charts
#### Beschriftung
Hier wird eine Beschriftung festgelegt, die im oder am Chart erscheinen soll eingegeben. In den meisten Fällen wird dies der Titel des Charts sein.
#### Beschriftungsposition
Der Titel kann an verschiedenen Stellen des Charts platziert werden. Diese sind über das Pulldownmenü verfügbar.
#### Titelfarbe
Die Farbe mit der Titel des Charts gezeigt werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Titelgröße
Die Schriftgröße der Beschriftung kann in % einer Standardgröße, in px oder in pt angegeben werden. Soll der Chart später in einem skalierbaren Fenster dargestellt werden empfiehlt sich die Größenangabe in %.
### Options
In dieser Kategorie werden zusätzliche Items und Features konfiguriert um dem Chart den letzten Schliff zu geben.
#### Zeige Legende
Hier wird ausgewählt ob eine Legende angezeigt werden soll und wenn ja, wo diese platziert wird. Damit die Legende nicht die Kurven verdeckt, ist die Position sinnvollerweise davon abhängig wie der Chart aufgebaut ist.
#### Spalten in Legende
Bei sehr vielen Datenpunkten bietet es sich an, die Datenpunkte in der Legende in mehreren Spalten anzuzeigen.
#### Legende Opacity (0-1)
Die Farbdichte der Legende wirde mit Werten von 0 bis 1 angegeben (0=transparent; 1= dicht)
#### Legende Hintergrund
Die Farbe mit derder Hintergrund der Legende gezeigt werden soll kann als Hex (#FF0000), rgb (rgb(21, 120, 210)) oder als rgba (rgba(0, 0, 255, 0.6)) eingegeben werden. Klickt man auf das Feld, öffnet sich ein rgba Colorpicker in dem der Wert graphisch ermittelt werden kann.
#### Hover Details
Ist diese Checkbox angehakt, werden die Daten zu der Kurve angezeigt, wenn man mit der Maus die Linie abfährt.
#### Time Format
Standardmäßig wird das Zeitformat verwendet wie es in den Systemeinstellungen vorgegeben wurde. Alternativ können viele andere Frormate für den Chart verwendet werden.
#### Benutze Komma
Ist diese Checkbox angehakt wird als Dezimaltrennzeichen ein Komma benutz. Ansonsten wird der Dezimalpunkt verwendet
#### Aktiviere Zoom und Schieben
Die Aktivierung dieser Checkbox ermöglicht die Charts in der Live-Darstellung durch Mausbewegungen in der Zeitachse zu zoomen und zu verschieben.
#### Kein 'Edit'-Knopf
Ist diese Checkbox aktiviert wird das "Bleistift-Icon" in der rechten oberen Ecke des Chart-Fensters nicht angezeigt. Dieses Icon öffnet ansonsten diesen Chart im edit-Modus
#### Animation
Hier kann angegeben werden ob bei dem Öffnen des Charts dieser sofort zur Verfügung stehen soll, oder durch eine Animation aufgebaut wird. Hier wird die Dauer dieser Animation festgelegt.
## Link
In diesem Feld werden sämtliche Daten, die in den vorausgegangenen Menüs konfiguriert wurden in Textform zusammengefasst. Wenn man diesen Link bei vis in ein iFrame-Widget kopiert wird dort der Chart komplett angezeigt. Der Button _**zeige im Fenster**_ öffnet einen weiteren Tab im Browser und zeigt dort den Chart an. Diese Seite kann man zum Speichern des Charts bookmarken. Die Schaltfläche _**Update preview**_ zeigt in dem Vorschaufenster die letzten Änderungen. Wenn unter _**input data**_ die Checkbox autoupdate angehakt ist, steht diese Schaltfläche nicht zur Verfügung. Das Vorschaufenster aktualisiert dann bei jeder Änderung automatisch
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

+105
View File
@@ -0,0 +1,105 @@
# Flot - Charts
## Desctiption
[Flot](http://www.flotcharts.org/) is JavaScript JQuery library for plotting, with a focus on the simple use, attractive appearance and
interactive opportunities. yunkong2 driver with the same name allows you to plot archived data (for access to historical data in
the system should be installed driver History, SQL History or History with InfluxDB). It can be used as a standalone application
for simultaneous display of several charts to analyze the different states of the system in time.
## Installation
Installation is on the **Driver** tab page of the [administration](http://www.yunkong2.net/?page_id=4179&lang=en) system.
In the driver group Visualization find a line called **Flot Charts**, and press the button with the plus icon in the right side of the line.
You will see a pop-up window driver installation, after installation, it will automatically close.
If all goes well,
on the Setup driver tab appears **flot.0** installed instance of the driver. Please note that **Flot** driver must have access to
historical data (DB), so the system must be installed and configured at
least one driver from the **Storage** groups (History, SQL History or History with InfluxDB).
For Flot also required driver Web, but it is usually installed automatically.
![](img/flot_Adapter-Flot-EN-Pic1.png)
## Setting
The driver does not require special settings. It runs as a separate WEB-service on the web yunkong2 system driver port (usually 8082).
To get started with the driver, you must click on the button **Open the application** on the **Settings driver** tab in the line of the selected instance.
## Using
Flot charts window you can open the **Open app** button or type the link into your browser: `http://IP-адрес:8082/flot/edit.html`
The window can be divided into three zones (top to bottom): Settings, URL page to display graphics and preview charts.
![](img/flot_Flot_en_pic2.png)
In order to display the graph in another application, or simply call again in a browser, you need to copy the generated URL,
and it will again plot a graph with the specified parameters. If you want to change the graphics settings, insert the resulting
URL in the browser string path, replacing ```index.html``` on ```edit.html```:
```http://IP:8082/flot/**index**.html?params.... => http://IP:8082/flot/**edit**.html?params....```
### Input data
Setting the source data to draw a graph/graphs.
![](img/flot_Flot_en_pic3.png)
* You can add / delete the data series,
* The checkmark **Update once** allows you to apply the setting changes immediately after it (if not set, lower the Refresh button **updates** the preview charts in accordance with the settings),
* **ID** - you must use the buttons to select the variable to construct a time series (graphics) in the window only those variables that are configured to keep a history,
* **Driver** - You can choose from the list of driver instances, which is tied to a particular database, consequently data for construction will be requested from that database,
* **The shift in the X-axis** (shift on the Y axis) - You can specify a time period for which you need to move the chart to the right (deeper in the archive) or the absolute value of the shift on the Y axis,
* **Type** - points output mode on the chart (in the time group has a **Data Merge** (by time or number)setting - is taken a segment of the data and only rendered maximum, minimum, average, all values or special algorithms MinMax),
* **The type of graph** – drawing mode (Line, Area, Line with points,etc.),
* **Min**, **Max**, **Unit** - the interval on the Y axis (values) and units of measurements if not specified, the interval is automatically selected, units are taken from the yunkong2 system,
* **Y Axis, X Axis** - position of the axes X and Y,
* **ØL**, **ØS** - the thickness of lines and size of the shadow graph,
* **Name** – value to show the name of the time series in the legend (if enabled), if not specified, take the value from the yunkong2 (object name),
* **Coaxis Y** – the union of the Y-axis (values) for two or more time series,
* **NULL** as – interpretation of empty records the values of a variable (do not use, use a value of 0 or to take the previous),
* Settings **Smoothing and after the decimal point** – smoothing peaks graph and rounding values of the time series.
### Time
Setting time interval graph display data.
![](img/flot_Flot_en_pic4.png)
* Time interval **type** - relative (starting point is tied to the current time slot, and the ability to update automatically) and permanent (precise indication of the time frame),
* **Data Merge** - combine the values of time (in seconds), or a certain amount.
### Options
Here you can customize the appearance of the graphs, grids, axes and legends and captions. All settings are intuitive.
![](img/flot_Flot_en_pic5.png)
For example, you can add a few variables to records in the database (host variables work yunkong2 - CPU load, memory and so on.).
To do this, **objects** in the upper left corner of the tab, click the **Show system objects**,
the table looking for a group **system.host.host’s_name**, drop-down list and insist to keep a history of selected variables (extreme right button at the prompt):
* put a check **active** in the group **sql.o** (pre-configure an instance of the driver to work with the database),
* other settings can be left default,
* click the **Save** button.
![](img/flot_Flot_en_pic6.png)
   
![](img/flot_Flot_en_pic7.png)
After a while, when the database will accumulate records to display on the chart, you can try to build a time series:
![](img/flot_Flot_en_pic8.png)
 
## System integration
For example, consider the integration of graphics in the driver VIS visualization system yunkong2.
There are several options you can place on the desktop object static-iFrame iframe group.
In the settings you can specify the update interval (in ms), and then the graph will update and
display the current data (if the timeline is set to the current time).
![](img/flot_Flot_en_pic9.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 KiB

+106
View File
@@ -0,0 +1,106 @@
# Flot - Графики
## Описание
[Flot](http://www.flotcharts.org/) является JavaScript библиотекой JQuery для построения графиков, с акцентом на
простом использовании, привлекательном внешнем виде и интерактивных возможностях. Драйвер yunkong2 с одноименным
названием позволяет строить графики архивных данных (для доступа к историческим данным в системе должен быть установлен
драйвер [History](http://www.yunkong2.net/?page_id=3636&lang=ru), [SQL History](http://www.yunkong2.net/?page_id=4044&lang=ru) или
History with InfluxDB). Он может быть использован как отдельное приложение для одновременного отображения нескольких графиков
для анализа различных состояний системы во времени.
## Установка
Установка осуществляется на вкладке **Драйвера** странички [администрирования](http://www.yunkong2.net/?page_id=3800&lang=ru) системы.
В группе драйверов **Визуализация** находим строчку с названием **Flot Charts** и нажимаем кнопку со значком плюса в этой строке справа.
На экране появится всплывающее окно установки драйвера, в конце установки оно автоматически закроется. Если все прошло удачно,
на вкладке **Настройка драйверов** появится строка **flot.0** с установленным экземпляром драйвера. Обращаем ваше внимание на то,
что драйвер **Flot** должен иметь доступ к историческим данным (БД), поэтому в системе должен быть установлен и настроен как минимум
один драйвер из группы **Хранилище** ([History](http://www.yunkong2.net/?page_id=3636&lang=ru),
[SQL History](http://www.yunkong2.net/?page_id=4044&lang=ru) или History with InfluxDB).
Так же для работы flot необходим драйвер web, но он устанавливается обычно автоматически.
![](img/Flot-setting1.jpg)
## Настройка
Определенных настроек драйвер не требует. Он работает как отдельный WEB-сервис на порту драйвера web системы yunkong2 (обычно 8082).
Чтобы начать работу с драйвером, необходимо нажать на кнопку **Открыть приложение** на вкладке **Настройка драйверов** в строчке выбранного экземпляра.
## Использование
Окно графиков Flot можно открыть кнопкой **Открыть приложение** или в строке браузер набрать адрес: `http://IP-адрес:8082/flot/edit.html`
Окно можно условно поделить на три зоны (сверху вниз):
Настройки, URL странички для вывода графика и предварительный просмотр графиков.
![](img/Flot-setting6.jpg)
Для того, что бы отобразить график в другой программе или просто вызвать ещё раз в браузере, надо скопировать сгенерированный URL и
по нему график построится снова с заданными параметрами. Если необходимо изменить настройки графика, вставьте получившийся URL в
строку пути браузера, заменив ```index.html``` на ```edit.html```:
```http://IP:8082/flot/**index**.html?params.... => http://IP:8082/flot/**edit**.html?params....```
## Входные данные
Настройка исходных данных для построения графика/графиков.
![](img/Flot-setting7.jpg)
* Можно добавить/удалить ряд данных,
* Галочка **Обновлять сразу** позволяет применять настройку сразу после её изменения (если не установлена, ниже будет кнопка **Обновить**, которая обновляет превью графиков в соответствии с настройками),
* **ID** - необходимо с помощью кнопки выбрать переменную для построения временного ряда (графика), в окне будут только те переменные, для которых настроено хранение истории,
* **Драйвер** - можно выбрать из списка экземпляр драйвера, который привязан к конкретной БД, соответственно данные для построения будут запрошены из этой БД,
* **Сдвиг по оси Х** (Сдвиг по оси Y) - можно указать промежуток времени, на который необходимо сдвинуть график вправо (глубже в архиве) или абсолютное значение для сдвига по оси Y,
* **Тип** - режим вывода точек на график (в группе время есть настройка **Объединение данных** (по времени или количеству) - берется отрезок этих данных и отрисовывается только максимум, минимум, среднее, все значения или специальный алгоритм MinMax),
* **Тип графика** - режим отрисовки (Линия, Область, Линия с точками и пр.),
* **Min**, **Max**, **Unit** - интервал по оси Y (значений) и единицы измерений, если не указано, то интервал выбирается автоматически, юниты берутся из системы yunkong2,
* **Y Axis, X Axis** - положение осей X и Y,
* **ØL**, **ØS** - толщина линий и размер тени графика,
* **Имя** - значение для отображения названия временного ряда в легенде (если она включена), если не указано, то берется значение из yunkong2 (имя объекта),
* **Общая ось Y** - объединение оси Y (значений) для двух и более временных рядов,
* **NULL как** - интерпретация пустых записей значения переменной (не использовать, использовать значение 0 или брать предыдущее),
* Настройки **Сглаживание** и **После запятой** - сглаживание пиков графика и округление значений временного ряда.
## Время
Настройка временного интервала отображения данных графика.
![](img/Flot-setting8.jpg)
* Временной интервал **тип** - относительный (начальная точка привязана к текущему времени, интервал, и возможность обновлять автоматически) и постоянный (точное указание временных рамок),
* Объединение данных - объединять значения по времени (в секундах) или определенное количество.
## Опции
Здесь можно настроить внешний вид графиков, сетки, осей и легенды и подписи. Все настройки интуитивно-понятны.
![](img/Flot-setting9.jpg)
Для примера можно добавить несколько переменных для записи в БД (переменные работы хоста yunkong2 - нагрузку ЦП, память и пр.).
Для этого на вкладке **Объекты** в верхнем левом углу нажимаем кнопку **Показать системные объекты**,
в таблице ищем группу **system.host.имя_хоста**, раскрываем список и настаиваем хранение истории для выбранных
переменных (кнопка в строке крайняя справа):
* ставим галочку **активно** в группе **sql.o** (предварительно должен быть настроен экземпляр этого драйвера на работу с БД),
* остальные настройки можно оставить по-умолчанию,
* нажимаем кнопку **Сохранить**.
![](img/Flot-setting3.jpg)
![](img/Flot-setting4.jpg)
Через некоторое время, когда в БД накопятся записи для отображения на графике, можно попробовать построить временные ряды:
![](img/Flot-use2.jpg)
## Интеграция в систему
Для примера, рассмотрим интеграцию графиков в драйвер **VIS** системы визуализации yunkong2.
Есть несколько вариантов, можно на рабочем поле разместить объект static-iFrame группы iframe.
В настройках можно указать интервал обновления (в ms) и тогда график будет обновляться и отображать
текущие данные (если временная шкала настроена относительно текущего времени).
![](img/Flot-use1.jpg)
Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

+501
View File
@@ -0,0 +1,501 @@
'use strict';
const gulp = require('gulp');
const fs = require('fs');
const pkg = require('./package.json');
const iopackage = require('./io-package.json');
const version = (pkg && pkg.version) ? pkg.version : iopackage.common.version;
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');
const sourcemaps = require('gulp-sourcemaps');
const gutil = require('gulp-util');
const htmlmin = require('gulp-htmlmin');
const del = require('del');
/*var appName = getAppName();
function getAppName() {
var parts = __dirname.replace(/\\/g, '/').split('/');
return parts[parts.length - 1].split('.')[0].toLowerCase();
}
*/
const fileName = 'words.js';
let languages = {
en: {},
de: {},
ru: {},
pt: {},
nl: {},
fr: {},
it: {},
es: {},
pl: {}
};
function lang2data(lang, isFlat) {
let str = isFlat ? '' : '{\n';
let count = 0;
for (const w in lang) {
if (lang.hasOwnProperty(w)) {
count++;
if (isFlat) {
str += (lang[w] === '' ? (isFlat[w] || w) : lang[w]) + '\n';
} else {
const key = ' "' + w.replace(/"/g, '\\"') + '": ';
str += key + '"' + lang[w].replace(/"/g, '\\"') + '",\n';
}
}
}
if (!count) return isFlat ? '' : '{\n}';
if (isFlat) {
return str;
} else {
return str.substring(0, str.length - 2) + '\n}';
}
}
function readWordJs(src) {
try {
let words;
if (fs.existsSync(src + 'js/' + fileName)) {
words = fs.readFileSync(src + 'js/' + fileName).toString();
} else {
words = fs.readFileSync(src + fileName).toString();
}
const lines = words.split(/\r\n|\r|\n/g);
let i = 0;
while (!lines[i].match(/^systemDictionary = {/)) {
i++;
}
lines.splice(0, i);
// remove last empty lines
i = lines.length - 1;
while (!lines[i]) {
i--;
}
if (i < lines.length - 1) {
lines.splice(i + 1);
}
lines[0] = lines[0].replace('systemDictionary = ', '');
lines[lines.length - 1] = lines[lines.length - 1].trim().replace(/};$/, '}');
words = lines.join('\n');
const resultFunc = new Function('return ' + words + ';');
return resultFunc();
} catch (e) {
return null;
}
}
function padRight(text, totalLength) {
return text + (text.length < totalLength ? new Array(totalLength - text.length).join(' ') : '');
}
function writeWordJs(data, src) {
let text = '// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n\n';
text += '/*global systemDictionary:true */\n';
text += '\'use strict\';\n\n';
text += 'systemDictionary = {\n';
for (const word in data) {
if (data.hasOwnProperty(word)) {
text += ' ' + padRight('"' + word.replace(/"/g, '\\"') + '": {', 50);
let line = '';
for (const lang in data[word]) {
if (data[word].hasOwnProperty(lang)) {
line += '"' + lang + '": "' + padRight(data[word][lang].replace(/"/g, '\\"') + '",', 50) + ' ';
}
}
if (line) {
line = line.trim();
line = line.substring(0, line.length - 1);
}
text += line + '},\n';
}
}
text += '};';
if (fs.existsSync(src + 'js/')) {
fs.writeFileSync(src + 'js/' + fileName, text);
} else {
fs.writeFileSync(src + '' + fileName, text);
}
}
const EMPTY = '';
function words2languages(src) {
const langs = Object.assign({}, languages);
const data = readWordJs(src);
if (data) {
for (const word in data) {
if (data.hasOwnProperty(word)) {
for (const lang in data[word]) {
if (data[word].hasOwnProperty(lang)) {
langs[lang][word] = data[word][lang];
// pre-fill all other languages
for (const j in langs) {
if (langs.hasOwnProperty(j)) {
langs[j][word] = langs[j][word] || EMPTY;
}
}
}
}
}
}
if (!fs.existsSync(src + 'i18n/')) {
fs.mkdirSync(src + 'i18n/');
}
for (const l in langs) {
if (!langs.hasOwnProperty(l)) continue;
const keys = Object.keys(langs[l]);
//keys.sort();
let obj = {};
for (let k = 0; k < keys.length; k++) {
obj[keys[k]] = langs[l][keys[k]];
}
if (!fs.existsSync(src + 'i18n/' + l)) {
fs.mkdirSync(src + 'i18n/' + l);
}
fs.writeFileSync(src + 'i18n/' + l + '/translations.json', lang2data(obj));
}
} else {
console.error('Cannot read or parse ' + fileName);
}
}
function words2languagesFlat(src) {
const langs = Object.assign({}, languages);
const data = readWordJs(src);
if (data) {
for (const word in data) {
if (data.hasOwnProperty(word)) {
for (const lang in data[word]) {
if (data[word].hasOwnProperty(lang)) {
langs[lang][word] = data[word][lang];
// pre-fill all other languages
for (const j in langs) {
if (langs.hasOwnProperty(j)) {
langs[j][word] = langs[j][word] || EMPTY;
}
}
}
}
}
}
const keys = Object.keys(langs.en);
//keys.sort();
for (const l in langs) {
if (!langs.hasOwnProperty(l)) continue;
let obj = {};
for (let k = 0; k < keys.length; k++) {
obj[keys[k]] = langs[l][keys[k]];
}
langs[l] = obj;
}
if (!fs.existsSync(src + 'i18n/')) {
fs.mkdirSync(src + 'i18n/');
}
for (const ll in langs) {
if (!langs.hasOwnProperty(ll)) continue;
if (!fs.existsSync(src + 'i18n/' + ll)) {
fs.mkdirSync(src + 'i18n/' + ll);
}
fs.writeFileSync(src + 'i18n/' + ll + '/flat.txt', lang2data(langs[ll], langs.en));
}
fs.writeFileSync(src + 'i18n/flat.txt', keys.join('\n'));
} else {
console.error('Cannot read or parse ' + fileName);
}
}
function languagesFlat2words(src) {
const dirs = fs.readdirSync(src + 'i18n/');
let langs = {};
let bigOne = {};
const order = Object.keys(languages);
dirs.sort((a, b) => {
const posA = order.indexOf(a);
const posB = order.indexOf(b);
if (posA === -1 && posB === -1) {
if (a > b) return 1;
if (a < b) return -1;
return 0;
} else if (posA === -1) {
return -1;
} else if (posB === -1) {
return 1;
} else {
if (posA > posB) return 1;
if (posA < posB) return -1;
return 0;
}
});
const keys = fs.readFileSync(src + 'i18n/flat.txt').toString().split('\n');
for (let l = 0; l < dirs.length; l++) {
if (dirs[l] === 'flat.txt') continue;
const lang = dirs[l];
const values = fs.readFileSync(src + 'i18n/' + lang + '/flat.txt').toString().split('\n');
langs[lang] = {};
keys.forEach(function (word, i) {
langs[lang][word] = values[i].replace(/<\/ i>/g, '</i>').replace(/<\/ b>/g, '</b>').replace(/<\/ span>/g, '</span>').replace(/% s/g, ' %s');
});
const words = langs[lang];
for (const word in words) {
if (words.hasOwnProperty(word)) {
bigOne[word] = bigOne[word] || {};
if (words[word] !== EMPTY) {
bigOne[word][lang] = words[word];
}
}
}
}
// read actual words.js
const aWords = readWordJs();
const temporaryIgnore = ['pt', 'fr', 'nl', 'flat.txt'];
if (aWords) {
// Merge words together
for (const w in aWords) {
if (aWords.hasOwnProperty(w)) {
if (!bigOne[w]) {
console.warn('Take from actual words.js: ' + w);
bigOne[w] = aWords[w]
}
dirs.forEach(function (lang) {
if (temporaryIgnore.indexOf(lang) !== -1) return;
if (!bigOne[w][lang]) {
console.warn('Missing "' + lang + '": ' + w);
}
});
}
}
}
writeWordJs(bigOne, src);
}
function languages2words(src) {
const dirs = fs.readdirSync(src + 'i18n/');
const langs = {};
const bigOne = {};
const order = Object.keys(languages);
dirs.sort((a, b) => {
const posA = order.indexOf(a);
const posB = order.indexOf(b);
if (posA === -1 && posB === -1) {
if (a > b) return 1;
if (a < b) return -1;
return 0;
} else if (posA === -1) {
return -1;
} else if (posB === -1) {
return 1;
} else {
if (posA > posB) return 1;
if (posA < posB) return -1;
return 0;
}
});
for (let l = 0; l < dirs.length; l++) {
if (dirs[l] === 'flat.txt') continue;
const lang = dirs[l];
langs[lang] = fs.readFileSync(src + 'i18n/' + lang + '/translations.json').toString();
langs[lang] = JSON.parse(langs[lang]);
const words = langs[lang];
for (const word in words) {
if (words.hasOwnProperty(word)) {
bigOne[word] = bigOne[word] || {};
if (words[word] !== EMPTY) {
bigOne[word][lang] = words[word];
}
}
}
}
// read actual words.js
const aWords = readWordJs();
const temporaryIgnore = ['pt', 'fr', 'nl', 'it'];
if (aWords) {
// Merge words together
for (const w in aWords) {
if (aWords.hasOwnProperty(w)) {
if (!bigOne[w]) {
console.warn('Take from actual words.js: ' + w);
bigOne[w] = aWords[w]
}
dirs.forEach(function (lang) {
if (temporaryIgnore.indexOf(lang) !== -1) return;
if (!bigOne[w][lang]) {
console.warn('Missing "' + lang + '": ' + w);
}
});
}
}
}
writeWordJs(bigOne, src);
}
gulp.task('words2languages', done => {
words2languages('./src/');
done();
});
gulp.task('words2languagesFlat', done => {
words2languagesFlat('./src/');
done();
});
gulp.task('languagesFlat2words', done => {
languagesFlat2words('./src/');
done();
});
gulp.task('languages2words', done => {
languages2words('./src/');
done();
});
gulp.task('updateEditHtml', done => {
let text = fs.readFileSync('./src/edit.html').toString('utf-8');
let newText = text.replace(/Version: \d+\.\d+\.\d+<\/div>/, `Version: ${pkg.version}</div>`);
if (newText !== text) {
fs.writeFileSync('./src/edit.html', newText);
}
done();
});
gulp.task('updatePackages', done => {
iopackage.common.version = pkg.version;
iopackage.common.news = iopackage.common.news || {};
if (!iopackage.common.news[pkg.version]) {
const news = iopackage.common.news;
const newNews = {};
newNews[pkg.version] = {
en: 'news',
de: 'neues',
ru: 'новое'
};
iopackage.common.news = Object.assign(newNews, news);
}
fs.writeFileSync('io-package.json', JSON.stringify(iopackage, null, 4));
done();
});
gulp.task('updateReadme', done => {
const readme = fs.readFileSync('README.md').toString();
const pos = readme.indexOf('## Changelog\n');
if (pos !== -1) {
const readmeStart = readme.substring(0, pos + '## Changelog\n'.length);
const readmeEnd = readme.substring(pos + '## Changelog\n'.length);
if (readme.indexOf(version) === -1) {
const timestamp = new Date();
const date = timestamp.getFullYear() + '-' +
('0' + (timestamp.getMonth() + 1).toString(10)).slice(-2) + '-' +
('0' + (timestamp.getDate()).toString(10)).slice(-2);
let news = '';
if (iopackage.common.news && iopackage.common.news[pkg.version]) {
news += '* ' + iopackage.common.news[pkg.version].en;
}
fs.writeFileSync('README.md', readmeStart + '### ' + version + ' (' + date + ')\n' + (news ? news + '\n\n' : '\n') + readmeEnd);
}
}
done();
});
gulp.task('clean', () => {
return del([
'src/js/words.js',
'www/**/*'
]);
});
gulp.task('flotJS', () => {
return gulp.src([
'./src/lib/js/jquery.flot.min.js',
'./src/lib/js/jquery.flot.resize.min.js',
'./src/lib/js/jquery.flot.time.min.js',
'./src/lib/js/jquery.flot.categories.min.js',
'./src/lib/js/jquery.flot.spline.min.js',
'./src/lib/js/jquery.flot.selection.min.js',
'./src/lib/js/jquery.flot.hiddengraphs.js',
'./src/lib/js/jquery.flot.fillbetween.js',
'./src/lib/js/jquery.flot.navigate.min.js',
'./src/lib/js/jquery.flot.dashes.js',
'./src/lib/js/jquery.flot.grow.js',
'./src/lib/js/jquery-deparam.js',
'./src/js/days.js',
'./src/js/chart.js',
'./src/js/data.js'
])
.pipe(sourcemaps.init())
.pipe(concat('flot.js'))
.pipe(uglify())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./www/js'));
});
gulp.task('editJS', ['languages2words'], () => {
return gulp.src([
'./src/lib/js/jquery-deparam.js',
'./src/lib/js/jquery.colorpicker.js',
'./src/js/words.js',
'./src/js/settings.js',
'./src/js/edit.js',
])
.pipe(sourcemaps.init())
.pipe(concat('edit.js'))
.pipe(uglify())
.on('error', function (err) {
gutil.log(gutil.colors.red('[Error]'), err.toString());
})
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./www/js'));
});
gulp.task('indexHTML', () => {
return gulp.src([
'./src/index.html'
])
.pipe(sourcemaps.init())
.pipe(concat('index.html'))
.pipe(htmlmin({collapseWhitespace: true, removeComments: true}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./www/'));
});
gulp.task('editHTML', ['updateEditHtml'], () => {
return gulp.src([
'./src/edit.html'
])
.pipe(sourcemaps.init())
.pipe(concat('edit.html'))
.pipe(htmlmin({collapseWhitespace: true, removeComments: true}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./www/'));
});
gulp.task('copyCSS', () => {
return gulp.src([
'./src/lib/css/**/*'
])
.pipe(gulp.dest('./www/css'));
});
gulp.task('copyImg', () => {
return gulp.src([
'./src/img/favicon.png'
])
.pipe(gulp.dest('./www/img'));
});
gulp.task('default', ['flotJS', 'editJS', 'indexHTML', 'editHTML', 'copyCSS', 'copyImg']);
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

+200
View File
@@ -0,0 +1,200 @@
{
"common": {
"name": "flot",
"version": "1.9.2",
"news": {
"1.9.2": {
"en": "Translations",
"de": "Übersetzungen",
"ru": "Переводы",
"pt": "Traduções",
"nl": "vertaalwerk",
"fr": "Traductions",
"it": "Traduzioni",
"es": "Traducciones",
"pl": "Tłumaczenia"
},
"1.9.1": {
"en": "Added dashed lines\nAll JS files together are concatenated",
"de": "Gestrichelte Linien hinzugefügt\nAlle JS-Dateien zusammen sind verkettet",
"ru": "Добавлены пунктирные линии\nВсе файлы JS вместе объединены",
"pt": "Adicionado linhas tracejadas\nTodos os arquivos JS juntos são concatenados",
"nl": "Gestreepte lijnen toegevoegd\nAlle JS-bestanden samen zijn aaneengeschakeld",
"fr": "Ajout de lignes pointillées\nTous les fichiers JS sont concaténés",
"it": "Aggiunte linee tratteggiate\nTutti i file JS insieme sono concatenati",
"es": "Líneas discontinuas agregadas\nTodos los archivos JS juntos están concatenados",
"pl": "Dodano przerywane linie\nWszystkie pliki JS są ze sobą połączone"
},
"1.8.0": {
"en": "Optimize communication",
"de": "Kommunikation optimieren",
"ru": "Оптимизация связи",
"pt": "Otimizar a comunicação",
"nl": "Optimaliseer communicatie",
"fr": "Optimiser la communication",
"it": "Ottimizza la comunicazione",
"es": "Optimizar la comunicación",
"pl": "Zoptymalizuj komunikację"
},
"1.7.9": {
"en": "Added support of multi-languages in names",
"de": "Unterstützung von Multi-Sprachen in Namen hinzugefügt",
"ru": "Добавлена ​​поддержка нескольких языков в именах",
"pt": "Adicionado suporte de multi-idiomas em nomes",
"nl": "Ondersteuning van meerdere talen toegevoegd aan namen",
"fr": "Ajout du support de plusieurs langues dans les noms",
"it": "Aggiunto il supporto di più lingue nei nomi",
"es": "Se agregó soporte de múltiples idiomas en los nombres",
"pl": "Dodano obsługę wielu języków w nazwach"
},
"1.7.7": {
"en": "fix month range",
"de": "Monatsspanne festlegen",
"ru": "исправить месячный диапазон",
"pt": "intervalo mensal fixo",
"nl": "bereik maandbereik",
"fr": "fixer la plage de mois",
"it": "fissare il range del mese",
"es": "arreglar rango de mes",
"pl": "popraw zakres miesięcy"
},
"1.7.6": {
"en": "remove alert windows from errors, log instead",
"de": "Entfernen Sie Warnfenster von Fehlern, loggen Sie sich stattdessen ein",
"ru": "удалять окна предупреждений из ошибок, вместо этого записывать журнал",
"pt": "remova janelas de alerta de erros, registre em vez disso",
"nl": "verwijder waarschuwingsvensters van fouten, log in plaats daarvan",
"fr": "supprimer les fenêtres d'alerte des erreurs, consigner à la place",
"it": "rimuovere le finestre di avviso dagli errori, invece registrare",
"es": "eliminar ventanas de alerta de errores, registrar en su lugar",
"pl": "usuń okna alertów z błędów, zamiast tego zaloguj się"
},
"1.7.5": {
"en": "try to fix small error",
"de": "Versuch einen kleinen Fehler zu beheben",
"ru": "попытка исправить небольшую ошибку",
"pt": "tente corrigir pequenos erros",
"nl": "probeer een kleine fout op te lossen",
"fr": "essayer de réparer une petite erreur",
"it": "prova a correggere un piccolo errore",
"es": "intenta arreglar un pequeño error",
"pl": "spróbuj naprawić mały błąd"
},
"1.7.4": {
"en": "The loading via cloud is fixed",
"de": "Das Laden über die Cloud ist behoben",
"ru": "Погрузка через облако фиксирована",
"pt": "O carregamento por nuvem é fixo",
"nl": "Het laden via cloud is opgelost",
"fr": "Le chargement via le cloud est fixe",
"it": "Il caricamento tramite cloud è fisso"
},
"1.7.1": {
"en": "Fixed the loading of presets\nAdded new date formats for X axis",
"de": "Das Laden von Presets wurde korrigiert\nNeue Datumsformate für die X-Achse hinzugefügt",
"ru": "Исправлена загрузка пресетов\nДобавлены новые форматы дат для оси X",
"pt": "Corrigido o carregamento de predefinições\nAdicionado novos formatos de data para o eixo X",
"fr": "Correction du chargement des presets\nAjout de nouveaux formats de date pour l'axe X",
"nl": "Het laden van presets verholpen\nNieuwe datumnotaties voor X-as toegevoegd"
},
"1.7.0": {
"en": "Add presets",
"de": "Presets sind jinzugefügt",
"ru": "Добавлены пресеты"
},
"1.6.2": {
"en": "Show chart at start",
"de": "Zeige Chart am Anfang",
"ru": "Показывать график при старте"
},
"1.6.1": {
"en": "Change edit layout",
"de": "Ändere Edit Layout",
"ru": "Изменено положение элементов при редактировании "
},
"1.5.9": {
"en": "New color picker\nIf 'none' for title selected => do not show any title\nadd date format 'dd.mm.'",
"de": "Neuer Farbselektor\nZeige keine Beschriftung falls 'none'\nNeues Datumformat 'dd.mm.'",
"ru": "Новый выбор цвета\nЕсли 'ничего' выбрано для подписи, то ничего не показывать\nдобавлен формат даты 'dd.mm.'"
},
"1.5.8": {
"en": "Add series as X ticks",
"de": "Möglichkeit ein Wert als X Beschriftung zu benutzen",
"ru": "Возможность показывать X подписи из истории"
}
},
"title": "Flot Charts",
"titleLang": {
"en": "Flot Charts",
"de": "Flot-Diagrammen",
"ru": "Графики c Flot",
"pt": "Flot Charts",
"nl": "Flot charts",
"fr": "Graphiques des Flot",
"it": "Grafici Flot",
"es": "Gráficos de Flot",
"pl": "Wykresy Flot"
},
"desc": {
"en": "This adapter draws charts with Flot in yunkong2.",
"de": "Dieser Adapter zeichnet Diagramme mit Flot in yunkong2.",
"ru": "Драйвер строит графики с помощью Flot",
"nl": "Deze adapter tekent grafieken met Flot in yunkong2",
"fr": "Cet adaptateur dessine des graphiques avec Flot dans yunkong2",
"pt": "Este adaptador desenha gráficos com o Flot no yunkong2",
"it": "Questo adattatore disegna i grafici con Flot in yunkong2.",
"es": "Este adaptador dibuja tablas con Flot en yunkong2",
"pl": "Ten adapter rysuje wykresy za pomocą Flot w programie yunkong2"
},
"authors": [
"bluefox <dogafox@gmail.com>"
],
"docs": {
"en": "docs/en/flot.md",
"ru": "docs/ru/flot.md",
"de": "docs/de/flot.md"
},
"platform": "javascript/Node.js",
"icon": "flot.png",
"mode": "none",
"keywords": [
"charts",
"graphics",
"grafiken"
],
"extIcon": "https://git.spacen.net/yunkong2/yunkong2.flot/raw/master/admin/flot.png",
"readme": "https://git.spacen.net/yunkong2/yunkong2.flot/blob/master/README.md",
"loglevel": "info",
"dependencies": [
{
"web": ">=1.7.1"
}
],
"localLink": "%web_protocol%://%ip%:%web_port%/flot/edit.html",
"enabled": true,
"onlyWWW": true,
"singleton": true,
"type": "visualization",
"noConfig": true,
"nogit": true,
"welcomeScreen": {
"link": "flot/edit.html",
"name": "flot editor",
"img": "flot.admin/flot.png",
"color": "gray",
"order": 4
}
},
"native": {},
"objects": [
{
"_id": "_design/chart",
"language": "javascript",
"views": {
"chart": {
"map": "function(doc) { if (doc.type === 'chart') emit(doc.common.name, doc); }"
}
}
}
]
}
+52
View File
@@ -0,0 +1,52 @@
{
"name": "yunkong2.flot",
"description": "This adapter draws charts with Flot in yunkong2.",
"version": "1.9.2",
"author": {
"name": "bluefox",
"email": "dogafox@gmail.com"
},
"contributors": [
{
"name": "bluefox",
"email": "dogafox@gmail.com"
}
],
"homepage": "https://git.spacen.net/yunkong2/yunkong2.flot",
"repository": {
"type": "git",
"url": "https://git.spacen.net/yunkong2/yunkong2.flot"
},
"licenses": [
{
"type": "MIT",
"url": "https://git.spacen.net/yunkong2/yunkong2.flot/blob/master/LICENSE"
}
],
"keywords": [
"yunkong2",
"flot",
"chart"
],
"dependencies": {},
"devDependencies": {
"gulp": "^3.9.1",
"gulp-uglify": "^3.0.0",
"gulp-concat": "^2.6.1",
"gulp-sourcemaps": "^2.6.4",
"gulp-htmlmin": "^4.0.0",
"del": "^3.0.0",
"gulp-util": "^3.0.8",
"mocha": "^5.2.0",
"chai": "^4.1.2"
},
"bugs": {
"url": "https://git.spacen.net/yunkong2/yunkong2.flot/issues"
},
"main": "Gruntfile.js",
"scripts": {
"test": "node node_modules/mocha/bin/mocha --exit",
"prepublish": "node node_modules/gulp/bin/gulp default"
},
"license": "MIT"
}
+621
View File
@@ -0,0 +1,621 @@
<html>
<head>
<title>Flot Edit</title>
<link href="img/favicon.png" rel="shortcut icon" type="image/x-icon" />
<link type="text/css" rel="stylesheet" href="../../lib/css/themes/jquery-ui/default/jquery-ui.min.css">
<link type="text/css" rel="stylesheet" href="../../lib/css/fancytree/ui.fancytree.min.css"/>
<link type="text/css" rel="stylesheet" href="lib/css/jquery.colorpicker.css"/>
<link rel="stylesheet" type="text/css" href="../../lib/css/iob/selectID.css"/>
<script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script>
<script type="text/javascript" src="../../lib/js/jquery.fancytree-all.min.js"></script>
<script type="text/javascript" src="../../lib/js/translate.js"></script>
<script type="text/javascript" src="../../lib/js/selectID.js"></script>
<script type="text/javascript" src="../../lib/js/socket.io.js"></script>
<script type="text/javascript" src="../../_socket/info.js"></script>
<style>
.ui-resizable-s {
cursor: s-resize;
height: 10px;
width: 100%;
bottom: -6px;
background: #a0a0a0;
left: 0;
}
.save {
/*position: absolute;
top: 10px;
right: 130px;*/
margin-top: 1px;
margin-left: 10px;
}
.save[aria-disabled="false"] {
background: #ff7474;
color: white;
border-color: #8e8e8e;
}
.input {
/*width: 150px;*/
}
.input_time {
width: 80px;
}
.label {
width: 130px;
}
.ui-widget input {
font-size: 14px;
}
.header {
font-weight: bold;
background: white;
color: black;
}
body {
font-family: Arial;
}
h3 {
line-height: 0.3!important;
font-size: 15px!important;
}
.ui-accordion-content {
padding: 5px 10px !important;
}
#accordion {
font-size: 14px !important;
height: 100%;
}
#accordion>div {
padding: 3px;
}
table.fixed td { overflow: hidden; }
table.fixed th { overflow: hidden; }
.no-spaces {
border-collapse: collapse;
border-spacing: 0;
}
/*.ui-resizable-s {
cursor: s-resize;
height: 10px;
bottom: -5px;
left: 0;
right: 0;
background-color: gray;
}*/
.version {
position: absolute;
top: 16px;
right: 10px;
color: white;
}
.presets_table_all {
width: 100%
}
.presets_table_all th {
background: grey;
color: white;
font-weight: bold;
text-align: left;
padding: 5px;
}
.presets_table_all td {
padding: 5px;
}
.presets_table_all tr:nth-child(even) {
background: #dcdbdb;
}
.presets-selected {
background: #7598b9 !important;
}
.presets_table_th_load {
width: 70px;
}
.presets_table_th_name {
width: 20%;
}
.presets_table_th_ids {
width: calc(80 - 150px);
}
.presets_table_th_buttons {
width: 70px;
}
</style>
</head>
<body style="height: calc(100% - 16px); width: 100%; margin: 0; padding: 0;">
<div id="resizable1" style="overflow: hidden; height: 360px">
<div style="height: calc(100% - 75px); position: relative; overflow: hidden;">
<div id="accordion">
<ul>
<li><a href="#chapter_presets" class="translate">Presets</a></li>
<li><a href="#chapter_ids" class="translate">Input data</a></li>
<li><a href="#chapter_markline" class="translate">Markings</a></li>
<li><a href="#chapter_time" class="translate">Time</a></li>
<li><a href="#chapter_options" class="translate">Options</a></li>
<li><button class="save">Save</button></li>
</ul>
<div id="chapter_presets" style="width: 100%; height: calc(100% - 50px); overflow: auto;">
<table class="presets_table_all">
<thead>
<tr>
<th class="presets_table_th_load"></th>
<th class="presets_table_th_name translate">Name</th>
<th class="presets_table_th_ids translate">IDs</th>
<th class="presets_table_th_buttons"></th>
</tr>
</thead>
<tbody id="presets_table">
</tbody>
</table>
</div>
<!--h3><span class="translate">Input data</span><span style="float:right; font-weight: normal; color: #959595">Version: 1.5.7</span></h3-->
<div id="chapter_ids" style="width: 100%; height: calc(100% - 50px); overflow: auto;">
<table>
<tr>
<td colspan="7">
<button style="margin-left: 1px" id="ids_add" class="translateB">Add new line</button>
<button id="clear" title="Reset settings" class="translateT" style="float: left;">Clear</button>
<label class="translate" style="padding-left: 20px" for="autoUpdate">Auto-update:</label><input type="checkbox" id="autoUpdate"/>
<button id="arrangeBools" class="translateB button_arrange_bools">Arrange bools</button>
</td>
</tr>
</table>
<div style="width: 100%;">
<table style="table-layout: fixed;" class="fixed" id="idslist_table" border="0" cellspacing="0" cellpadding="0">
<tbody id="idslist"></tbody>
</table>
</div>
</div>
<!--h3 class="markline-option"><span class="translate">Markings</span></h3-->
<div id="chapter_markline" class="markline-option" style="width: 100%; height: calc(100% - 50px); overflow: auto;">
<table style="width: 100%">
<tr>
<td colspan="7">
<button style="margin-left: 1px" id="markline_add" class="translateB">Add new markings</button>
</td>
</tr>
</table>
<div style="width: 100%; height: 100%">
<table style="table-layout: fixed;" class="fixed" id="markline_table" border="0" cellspacing="0" cellpadding="0">
<thead id="markline_head">
<tr class="header">
<td class="translate" style="width: 30%; white-space: nowrap">Line ID</td>
<td class="translate" style="width: 130px; white-space: nowrap">Upper value or ID</td>
<td class="translate" style="width: 40px;"></td>
<td class="translate" style="width: 130px; white-space: nowrap">Lower value or ID</td>
<td class="translate" style="width: 40px;"></td>
<td class="translate" style="width: 180px">Color</td>
<td class="translate" style="width: 80px">Fill</td>
<td class="translate" style="width: 80px">&#216L</td>
<td class="translate" style="width: 80px">&#216S</td>
<td class="translate" style="width: 30%">Text</td>
<td class="translate" style="width: 150px; white-space: nowrap">Text position</td>
<td class="translate" style="width: 100px; white-space: nowrap">Text offset</td>
<td class="translate" style="width: 100px; white-space: nowrap">Text size</td>
<td class="translate" style="width: 180px; white-space: nowrap">Text color</td>
<td class="translate" style="width: 80px"></td>
</tr>
</thead>
<tbody id="markline_list"></tbody>
</table>
</div>
</div>
<!--h3 class="chapter_time"><span class="translate">Time</span> <span id="time_span"></span></h3-->
<div id="chapter_time" style="display: flex; height: calc(100% - 50px); overflow: auto;" class="chapter_time">
<table >
<tr>
<td class="translate header" colspan="2" style="text-align: center">Time Span</td>
</tr>
<tr class="time_timeType">
<td><label class="translate" for="timeType">Aggregation:</label></td>
<td><select id="timeType" class="input value">
<option value="relative" class="translate">relative</option>
<option value="static" class="translate">static</option>
</select></td>
</tr>
<tr class="relative time_relativeEnd">
<td><label class="translate" for="relativeEnd">End:</label></td>
<td><select id="relativeEnd" class="input value">
<option value="now" class="translate">now</option>
<option value="1minute" class="translate">end of minute</option>
<option value="5minutes" class="translate">end of 5 minutes</option>
<option value="10minutes" class="translate">end of 10 minutes</option>
<option value="30minutes" class="translate">end of 30 minutes</option>
<option value="1hour" class="translate">end of hour</option>
<option value="2hours" class="translate">end of 2 hours</option>
<option value="3hours" class="translate">end of 3 hours</option>
<option value="4hours" class="translate">end of 4 hours</option>
<option value="6hours" class="translate">end of 6 hours</option>
<option value="8hours" class="translate">end of 8 hours</option>
<option value="12hours" class="translate">end of 12 hours</option>
<option value="today" class="translate">end of day</option>
<option value="weekEurope" class="translate">end of sunday</option>
<option value="weekUsa" class="translate">end of saturday</option>
<option value="month" class="translate">this month</option>
<option value="year" class="translate">this year</option>
</select></td>
</tr>
<tr class="relative time_range">
<td><label class="translate" for="range">Range:</label></td>
<td><select id="range" class="value input">
<option value="10" class="translate">10 minutes</option>
<option value="30" class="translate">30 minutes</option>
<option value="60" class="translate">1 hour</option>
<option value="120" class="translate">2 hours</option>
<option value="180" class="translate">3 hours</option>
<option value="360" class="translate">6 hours</option>
<option value="720" class="translate">12 hours</option>
<option value="1440" class="translate">1 day</option>
<option value="2880" class="translate">2 days</option>
<option value="4320" class="translate">3 days</option>
<option value="10080" class="translate">7 days</option>
<option value="20160" class="translate">14 days</option>
<option value="1m" class="translate">1 month</option>
<option value="2m" class="translate">2 months</option>
<option value="3m" class="translate">3 months</option>
<option value="6m" class="translate">6 months</option>
<option value="1y" class="translate">1 year</option>
<option value="2y" class="translate">2 years</option>
</select></td>
</tr>
<tr class="relative time_live">
<td><label class="translate" for="live">Live update every:</label></td>
<td><select class="value" id="live">
<option value="" class="translate">none</option>
<option value="5" class="translate">5 seconds</option>
<option value="10" class="translate">10 seconds</option>
<option value="15" class="translate">15 seconds</option>
<option value="20" class="translate">20 seconds</option>
<option value="30" class="translate">30 seconds</option>
<option value="60" class="translate">1 minute</option>
<option value="120" class="translate">2 minutes</option>
<option value="300" class="translate">5 minutes</option>
<option value="600" class="translate">10 minutes</option>
<option value="900" class="translate">15 minutes</option>
<option value="1200" class="translate">20 minutes</option>
<option value="1800" class="translate">30 minutes</option>
<option value="3600" class="translate">1 hour</option>
<option value="7200" class="translate">2 hours</option>
<option value="10800" class="translate">3 hours</option>
<option value="21600" class="translate">6 hours</option>
<option value="43200" class="translate">12 hours</option>
<option value="86400" class="translate">1 day</option>
</select></td>
</tr>
<tr class="static time_start">
<td><label class="translate" for="start">Start:</label></td>
<td><input type="date" id="start" class="value input"> <input type="time" id="start_time" class="value input_time"></td>
</tr>
<tr class="static time_end">
<td><label class="translate" for="end">End:</label></td>
<td><input type="date" id="end" class="value input"> <input type="time" id="end_time" class="value input_time"></td>
</tr>
</table>
<table style="margin-left: 25px">
<tr>
<td class="translate header" colspan="2" style="text-align: center">Aggregate</td>
</tr>
<tr class="time_aggregateType">
<td><label class="translate" for="aggregateType">Step type:</label></td>
<td><select id="aggregateType" class="value input">
<option value="count" class="translate">counts</option>
<option value="step" class="translate">seconds</option>
</select></td>
</tr>
<tr class="time_aggregateSpan">
<td><label id="spanName" class="translate" for="aggregateSpan">Step span:</label></td>
<td><input id="aggregateSpan" value="300" class="value input"></td>
</tr>
<tr class="time_ticks">
<td><label class="translate" for="ticks">Ticks from:</label></td>
<td><table class="no-spaces"><tr><td><input id="ticks" class="value input" style="display: inline;" /></td><td><button style="display: inline; margin-right: 15px;" id="ticks_select"></button></td></tr></table></td>
</tr>
</table>
</div>
<!--h3 class="translate chapter_options">Options</h3-->
<div id="chapter_options" style="display: flex; height: calc(100% - 50px); overflow: auto;" class="chapter_options">
<table style="width: 380px">
<tr>
<td class="translate header" colspan="2" style="text-align: center">Appearance</td>
</tr>
<tr class="options_width">
<td style="width: 270px"><label class="translate" for="width">Width:</label></td>
<td><input id="width" class="value input spinner"/></td>
</tr>
<tr class="options_height">
<td><label class="translate" for="height">Height:</label></td>
<td><input id="height" class="value input spinner"></td>
</tr>
<tr class="options_noborder">
<td><label class="translate" for="noBorder">No border:</label></td>
<td><select class="value input" id="noBorder">
<option value="" class="translate"></option>
<option value="noborder" class="translate">yes</option>
</select></td>
</tr>
<tr class="options_window_bg">
<td class="label"><label class="translate" for="window_bg">Window background:</label></td>
<td>
<table class="no-spaces"><tr><td><input id="window_bg" class="value input input-static-color" style="display: inline-block"></td><td><button data-clear="window_bg" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
<tr class="options_bg_custom">
<td class="label"><label class="translate" for="bg_custom">Custom chart background:</label></td>
<td>
<input type="checkbox" id="bg_custom">
</td>
</tr>
<tr class="options_bg">
<td class="label"><label class="bg_predefined" for="bg_predefined">Chart background:</label></td>
<td>
<select id="bg_predefined">
<option value="" class="translate">default</option>
<option value="0">Portrait</option>
<option value="1">Instagram</option>
<option value="2">ServQuick</option>
<option value="3">Metallic Toad</option>
<option value="4">Clouds</option>
<option value="5">Mirage</option>
<option value="6">Steel Gray</option>
<option value="7">Horizon</option>
<option value="8">Koko Caramel</option>
<option value="9">Turquoise flow</option>
</select>
<input id="bg" class="value input" style="display: none"/>
</td>
</tr>
<tr class="options_x_labels_color">
<td class="label"><label class="translate" for="x_labels_color">X axis labels color:</label></td>
<td>
<table class="no-spaces"><tr><td><input class="value input input-static-color" id="x_labels_color"></td><td><button data-clear="x_labels_color" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
<tr class="options_y_labels_color">
<td class="label">><label class="translate" for="y_labels_color">Y axis labels color:</label></td>
<td>
<table class="no-spaces"><tr><td><input class="value input input-static-color" id="y_labels_color"></td><td><button data-clear="y_labels_color" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
<tr class="options_border_color">
<td><label class="translate label" for="border_color">Border color:</label></td>
<td>
<table class="no-spaces"><tr><td><input class="value input input-static-color" id="border_color"></td><td><button data-clear="border_color" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
<tr class="options_grid_color">
<td class="label"><label class="translate" for="grid_color">Grid color:</label></td>
<td>
<table class="no-spaces"><tr><td><input class="value input input-static-color" id="grid_color"></td><td><button data-clear="grid_color" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
<tr class="options_border_width">
<td class="label"><label class="translate" for="border_width">Border width:</label></td>
<td>
<input class="value input" id="border_width">
</td>
</tr>
</table>
<table style="width: 340px" class="options-bar">
<tr>
<td class="translate header" colspan="2" style="text-align: center">Bar settings</td>
</tr>
<tr class="options_barColor">
<td><label class="translate" for="barColor">Fill color:</label></td>
<td>
<table class="no-spaces"><tr><td><input class="value input input-static-color" id="barColor"></td><td><button data-clear="barColor" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
<tr class="options_barLabels">
<td><label class="translate" for="barLabels">Show labels:</label></td>
<td><select id="barLabels" class="value input">
<option value="" class="translate">none</option>
<option value="topover" class="translate">top over</option>
<option value="topunder" class="translate">top under</option>
<option value="bottom" class="translate">bottom</option>
<option value="middle" class="translate">middle</option>
</select></td>
</tr>
<tr class="options_barWidth">
<td><label class="translate" for="barWidth">Bars width:</label></td>
<td><input id="barWidth" class="value input"></td>
</tr>
<tr class="options_barFontSize">
<td><label class="translate" for="barFontSize">Label font size:</label></td>
<td><input id="barFontSize" class="value input"></td>
</tr>
<tr class="options_barFontColor">
<td><label class="translate" for="barFontColor">Label color:</label></td>
<td>
<table class="no-spaces"><tr><td><input class="value input input-static-color" id="barFontColor"></td><td><button data-clear="barFontColor" class="clear-button" style="display: inline-block"></button></td></tr></table>
</td>
</tr>
</table>
<table style="margin-left: 25px; width: 300px">
<tr><td class="translate header" colspan="2" style="text-align: center">Title</td></tr>
<tr class="options_title">
<td><label for="title" class="translate">Title:</label></td>
<td><input id="title" class="value input"></td>
</tr>
<!-- Do not use values 50, 5, and -5. They are reserved for 50-middle/center, 5-inside at edge, -5 outside at edge -->
<tr class="options_titlePos">
<td><label for="titlePos" class="translate">Title position:</label></td>
<td><select class="value input" id="titlePos">
<option value="" class="translate">none</option>
<option value="top:35;left:65" class="translate">Top, left, inside</option>
<option value="top:35;right:5" class="translate">Top, right, inside</option>
<option value="top:35;left:50" class="translate">Top, center, inside</option>
<option value="top:50;left:65" class="translate">Middle, left, inside</option>
<option value="top:50;right:5" class="translate">Middle, right, inside</option>
<option value="bottom:5;left:65" class="translate">Bottom, left, inside</option>
<option value="bottom:5;right:5" class="translate">Bottom, right, inside</option>
<option value="bottom:5;left:50" class="translate">Bottom, center, inside</option>
<option value="top:5;right:-5" class="translate">Top, right, outside</option>
<option value="top:50;right:-5" class="translate">Middle, right, outside</option>
<option value="bottom:5;right:-5" class="translate">Bottom, right, outside</option>
<option value="bottom:-5;left:50" class="translate">Bottom, center, outside</option>
</select></td>
</tr>
<tr class="options_titleColor">
<td><label class="translate" for="titleColor">Title color:</label></td>
<td><table class="no-spaces"><tr><td><input id="titleColor" class="value input input-static-color"></td><td><button data-clear="titleColor" class="clear-button" style="display: inline-block"></button></td></tr></table></td>
</tr>
<tr class="options_titleSize">
<td><label for="titleSize" class="translate">Title size:</label></td>
<td><input id="titleSize" class="value input"></td>
</tr>
</table>
<table style="margin-left: 25px; width: 400px">
<tr><td class="translate header" colspan="2" style="text-align: center">Options</td></tr>
<tr class="options_legend">
<td><label class="translate" for="legend">Show legend:</label></td>
<td><select class="value input" id="legend">
<option value="" class="translate">none</option>
<option value="nw" class="translate">Top, left</option>
<option value="ne" class="translate">Top, right</option>
<option value="sw" class="translate">Bottom, left</option>
<option value="se" class="translate">Bottom, right</option>
</select></td>
</tr>
<tr class="options_legColumns">
<td><label class="translate" for="legColumns">Legend columns:</label></td>
<td><input type="number" class="value" id="legColumns"></td>
</tr>
<tr class="options_legBgOpacity">
<td><label class="translate" for="legBgOpacity">Legend opacity (from 0 to 1):</label></td>
<td><input class="value input" id="legBgOpacity"/></td>
</tr>
<tr class="options_legBg">
<td><label class="translate" for="legBg">Legend background:</label></td>
<td><table class="no-spaces"><tr><td><input class="value input input-static-color" id="legBg" style="display: inline-block"></td><td><button data-clear="legBg" class="clear-button" style="display: inline-block"></button></td></tr></table></td>
</tr>
<tr class="options_hoverDetail">
<td><label class="translate" for="hoverDetail">Hover details:</label></td>
<td><input type="checkbox" class="value" id="hoverDetail"></td>
</tr>
<tr class="options_timeFormat">
<td><label class="translate" for="timeFormat">Time format:</label></td>
<td><select class="value input" id="timeFormat">
<option value="" class="translate">Default</option>
<option value="%H:%M %d.%m">HH:MM dd.mm</option>
<option value="%H:%M %d.%m.">HH:MM dd.mm.</option>
<option value="%H:%M <br> %d.%m">HH:MM / dd.mm</option>
<option value="%H:%M <br> %d.%m.">HH:MM / dd.mm.</option>
<option value="%H:%M <br> %d.%m.%y">HH:MM / dd.mm.yy</option>
<option value="%H:%M:%S %d.%m.%y">HH:MM:SS dd.mm.yy</option>
<option value="%H:%M %d.%m.%y">HH:MM dd.mm.yy</option>
<option value="%I:%M:%S %x %p">HH:MM:SS mm/dd/yy am (US)</option>
<option value="%H:%M:%S %d/%m/%y">HH:MM:SS dd/mm/yy (UK)</option>
<option value="%H:%M:%S %m.%d.%y">HH:MM:SS mm.dd.yy</option>
<option value="%H:%M %a">HH:MM dow</option>
<option value="%H:%M:%S %a">HH:MM:SS dow</option>
<option value="%H:%M %m.%d">HH:MM mm.dd</option>
<option value="%H:%M:%S">HH:MM:SS</option>
<option value="%H:%M">HH:MM</option>
<option value="%d.%m">dd.mm</option>
<option value="%d.%m.">dd.mm.</option>
<option value="%m/%d">mm/dd</option>
<option value="%d">dd</option>
<option value="%m">mm</option>
<option value="%y">y</option>
<option value="%H">HH</option>
<option value="%M">MM</option>
<option value="%a">dow</option>
<option value="%d.%m.%y">dd.mm.yy</option>
</select></td>
</tr>
<tr class="options_smoothing">
<td><label class="translate" for="smoothing">Smoothing:</label></td>
<td><input class="value input" id="smoothing"></td>
</tr>
<!--tr class="options_afterComma">
<td class="translate">After comma:</td>
<td><input class="value input" id="afterComma"></td>
</tr-->
<tr class="options_useComma">
<td><label class="translate" for="useComma">Use comma:</label></td>
<td><input type="checkbox" class="value" id="useComma"></td>
</tr>
<tr class="options_zoom">
<td><label class="translate" for="zoom">Enable zoom and pan:</label></td>
<td><input type="checkbox" class="value" id="zoom"></td>
</tr>
<tr class="options_noedit">
<td><label class="translate" for="noedit">Hide edit button:</label></td>
<td><input type="checkbox" class="value" id="noedit"></td>
</tr>
<tr class="options_animation">
<td><label class="translate" for="animation">Animation:</label></td>
<td><select class="value input" id="animation">
<option value="0" class="translate">no</option>
<option value="300" class="translate">300ms</option>
<option value="500" class="translate">500ms</option>
<option value="1000" class="translate">1s</option>
<option value="2000" class="translate">2s</option>
<option value="3000" class="translate">3s</option>
<option value="5000" class="translate">5s</option>
<option value="10000" class="translate">10s</option>
</select></td>
</tr>
</table>
</div>
</div>
<div class="version">Version: 1.9.2</div>
</div>
<div style="height: 70px; display: flex; justify-content: space-around; align-items: center; margin-top: 4px; margin-bottom: 0">
<label class="translate" for="link">Link</label>
<textarea id="link" style="width: calc(100% - 260px); height: 55px; word-break: break-all; resize: none"></textarea>
<button style="padding-left: 2px" id="open" class="translateB">Open</button>
<button style="padding-left: 5px" id="updatePreview" class="translateB">update Preview</button>
</div>
</div>
<iframe style="width: calc(100% - 20px); bottom: 0; height: calc(100% - 380px); border: 1px solid #afafaf; border-radius: 2px" id="chart"></iframe>
<div id="dialog-select-member" style="display: none"></div>
<div id="dialog-line-options" style="display: none">
<table>
</table>
</div>
<div id="dialog-new-preset" style="display: none">
<table>
<tr id="dialog-new-preset-info-tr">
<td><label for="dialog-new-preset-into" class="translate">Save into:</label></td>
<td><select id="dialog-new-preset-into" style="width: 100%;"></select></td>
</tr>
<tr id="dialog-new-preset-name-tr">
<td><label for="dialog-new-preset-name" class="translate">Name:</label></td>
<td><input id="dialog-new-preset-name" style="width: 100%;"/></td>
</tr>
</table>
</div>
<script type="text/javascript" src="js/edit.js"></script>
</body>
</html>
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "Ok",
"role": "Rolle",
"Update objects": "Objekte aktualisieren",
"All": "Alle",
"With": "mit",
"Without": "ohne",
"Update states": "States aktualisieren",
"edit file": "Datei editieren",
"restart script": "Skript neu starten",
"Select": "Auswählen",
"Select ID": "ID Auswählen",
"add children": "Sub-enums einfügen",
"edit enum": "Enum ändern",
"System settings": "Systemeinstellungen",
"reload": "Neu laden",
"Delete object": "Object löschen",
"no null": "&nbsp;kein NULL",
"%s ago": "vor %s",
"Y-Offset": "Y-Offset",
"ID": "ID",
"Role": "Rolle",
"Room": "Raum",
"Value": "Wert",
"none": "nichts",
"Save into:": "Save into:",
"Name:": "Name:",
"save": "Speichern",
"load": "laden",
"Presets": "Voreinstellung",
"IDs": "IDs",
"new": "unter neuen Namen",
"Enter chart name": "Chartname eintragen",
"save %s": "Speichern %s",
"Input data": "Eingangsdaten",
"Options": "Optionen",
"Range:": "Umfang:",
"5 seconds": "5 Sekunden",
"10 seconds": "10 Sekunden",
"15 seconds": "15 Sekunden",
"20 seconds": "20 Sekunden",
"30 seconds": "30 Sekunden",
"1 minute": "1 Minute",
"2 minutes": "2 Minuten",
"5 minutes": "5 Minuten",
"10 minutes": "10 Minuten",
"15 minutes": "15 Minuten",
"20 minutes": "20 Minuten",
"30 minutes": "30 Minuten",
"1 hour": "1 Stunde",
"2 hours": "2 Stunden",
"3 hours": "3 Stunden",
"6 hours": "6 Stunden",
"12 hours": "12 Stunden",
"1 day": "1 Tag",
"2 days": "2 Tage",
"3 days": "3 Tage",
"7 days": "7 Tage",
"14 days": "14 Tage",
"1 month": "1 Monat",
"2 months": "2 Monate",
"3 months": "3 Monate",
"6 months": "6 Monate",
"1 year": "1 Jahr",
"2 years": "2 Jahren",
"Width:": "Breite:",
"Height:": "Höhe:",
"line": "Linie",
"area": "Area",
"bar": "Bar",
"lineplot": "Liniendiagramm",
"scatterplot": "Streudiagramm",
"steps": "Schritte",
"spline": "Spline",
"Stack": "Stack",
"Window background:": "Fenster-Hintergrund:",
"Custom chart background:": "Anwender-Chart-Hintergrund:",
"Chart background:": "Chart-Hintergrund:",
"X axis labels color:": "X Beschriftungsfarbe:",
"Y axis labels color:": "Y Beschriftungsfarbe:",
"Show legend:": "Zeige Legende:",
"Title:": "Beschriftung:",
"Title position:": "Beschriftungs-Position:",
"Top, left, inside": "Oben, links, innen",
"Top, right, inside": "Oben, rechts, innen",
"Top, center, inside": "Oben, mittig, innen",
"Middle, left, inside": "Middle, links, innen",
"Middle, right, inside": "Middle, rechts, innen",
"Bottom, left, inside": "Unten, links, innen",
"Bottom, right, inside": "Unten, rechts, innen",
"Bottom, center, inside": "Unten, mittig, innen",
"Top, right, outside": "Oben, rechts, außen",
"Middle, right, outside": "Middle, rechts, außen",
"Bottom, right, outside": "Unten, rechts, außen",
"Bottom, center, outside": "Unten, mittig, außen",
"Min:": "Minimum:",
"Max:": "Maximum:",
"User defined names:": "Benutzerdefinierte Namen:",
"Predefined background:": "Vordefinierter Hintergrund:",
"User defined": "Anwenderdefiniert",
"Background:": "Hintergrund:",
"Hover details:": "Hover details:",
"Time format:": "Zeitformat:",
"Default": "Standard",
"Smoothing": "Glätten",
"After comma": "Nach Komma",
"Open": "Zeige im Fenster",
"Update": "Aktualisieren",
"Reset settings": "Einstellungen löschen",
"From": "Von",
"Last changed": "Letze Änderung",
"Time stamp": "Zeitstempel",
"Acknowledged": "Bestätigt",
"Edit": "Editieren",
"Members": "Mitglied",
"Loading...": "Lade...",
"Processing...": "Bearbeite...",
"With lines": "mit Linien",
"Without lines": "ohne Linien",
"Inside / With lines": "Innen / mit Linien",
"Outside/ With lines": "Außen/ mit Linien",
"Inside / No lines": "Innen / ohne Linien",
"Outside / No lines": "Außen / ohne Linien",
"Interpolate:": "Interpolieren:",
"Steps": "Schritte",
"Pie": "Kuchen",
"Top, left": "Oben, links",
"Top, right": "Oben, rechts",
"Bottom, left": "Unten, links",
"Bottom, right": "Unten, rechts",
"Title color:": "Titelfarbe:",
"Title size:": "Titelgröße:",
"Fill range:": "Ganzer Bereich:",
"Units:": "Einheiten:",
"yes": "ja",
"bottom": "unten",
"top": "oben",
"left": "links",
"right": "rechts",
"No border:": "Kein Rahmen:",
"Time": "Zeit",
"day": "Tag",
"month": "Monat",
"year": "Jahr",
"Individual": "Individuell",
"Aggregation:": "Art:",
"relative": "relative",
"static": "statik",
"now": "jetzt",
"today": "heute",
"this month": "dieser Monat",
"this year": "dieses Jahr",
"Start:": "Start:",
"End:": "Ende:",
"Aggregate": "Aggregation",
"Step type:": "Schritttyp:",
"seconds": "Sekunden",
"Seconds": "Sekunden",
"Step span:": "Schrittweite:",
"Link": "Link",
"Counts": "Anzahl",
"ignore 'null'": "'null' ignorieren",
"Time Span": "Zeit Spanne",
"Appearance": "Erscheinung",
"Title": "Beschriftung",
"Offset": "X-Offset",
"Aggregation": "Art",
"Chart Type": "Chart Type",
"Color": "Farbe",
"Min": "Min",
"Max": "Max",
"Unit": "Einheiten",
"Y Axis": "Y Axe",
"X Axis": "X Axe",
"update Preview": "Vorschau aktualisieren",
"Cancel": "Abbrechen",
"Name": "Name",
"Live update every:": "Autoupdate alle:",
"counts": "Anzahl",
"Add new line": "Linie hinzufügen",
"Animation:": "Animation:",
"no": "keine",
"0s": "0s",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 Sekunde",
"2s": "2 Sekunden",
"3s": "3 Sekunden",
"5s": "5 Sekunden",
"10s": "10 Sekunden",
"30s": "30 Sekunden",
"60s": "60 Sekunden",
"2m": "2 Minuten",
"3m": "3 Minuten",
"4m": "4 Minuten",
"5m": "5 Minuten",
"10m": "10 Minuten",
"15m": "15 Minuten",
"30m": "30 Minuten",
"45m": "45 Minuten",
"1H": "1 Stunde",
"2H": "2 Stunden",
"6H": "6 Stunden",
"12H": "12 Stunden",
"1D": "1 Tag",
"2D": "2 Tage",
"3D": "3 Tage",
"4D": "4 Tage",
"1W": "1 Woche",
"2W": "2 Wochen",
"4W": "4 Wochen",
"8W": "8 Wochen",
"12W": "12 Wochen",
"26W": "26 Wochen",
"1M": "1 Monat",
"2M": "2 Monate",
"3M": "3 Monate",
"6M": "6 Monate",
"1Y": "1 Jahr",
"2Y": "2 Jahre",
"average": "mittel",
"max": "max",
"min": "min",
"total": "total",
"off": "nichts",
"leftColor": "links farblich",
"rightColor": "rechts farblich",
"topColor": "oben farblich",
"bottomColor": "unten farblich",
"default": "default",
"Auto-update:": "Auto-update:",
"Use comma:": "Benutze Komma:",
"Common Y Axis": "Gemeinsame Y-Achse",
"Instance": "Instanz",
"Line Width": "Linienstärke",
"Shadow Size": "Schattengröße",
"ignore 'null':": "'null' ignorieren:",
"onchange": "bei Änderung",
"Border color:": "Rahmenfarbe:",
"Grid color:": "Gitterfarbe:",
"Border width:": "Rahmenbreite:",
"Enable zoom and pan:": "Aktiviere Zoom und Schieben:",
"Arrange bools": "Platziere Booleans",
"NULL as": "NULL als",
"MinMax": "MinMax",
"null": "null",
"true": "letztes Wert",
"last value": "letztes Wert",
"Hide edit button:": "Kein 'Edit'-Knopf:",
"minmax": "minmax",
"&#216L": "&#216L",
"&#216S": "&#216S",
"Line": "Linie",
"false": "null",
"end of minute": "Minutenende",
"end of 5 minutes": "Ende von 5 Minuten",
"end of 10 minutes": "Ende von 10 Minuten",
"end of 30 minutes": "Ende von 30 Minuten",
"end of hour": "Stundenende",
"end of 2 hours": "Ende von 2 Stunden",
"end of 3 hours": "Ende von 3 Stunden",
"end of 4 hours": "Ende von 4 Stunden",
"end of 6 hours": "Ende von 6 Stunden",
"end of 8 hours": "Ende von 8 Stunden",
"end of 12 hours": "Ende von 12 Stunden",
"end of day": "Tagesende",
"end of sunday": "Wochenssende",
"end of saturday": "Samstagsende",
"1minute": "Minutenende",
"5minutes": "Ende von 5 Minuten",
"10minutes": "Ende von 10 Minuten",
"30minutes": "Ende von 30 Minuten",
"1hour": "Stundenende",
"2hours": "Ende von 2 Stunden",
"3hours": "Ende von 3 Stunden",
"4hours": "Ende von 4 Stunden",
"6hours": "Ende von 6 Stunden",
"8hours": "Ende von 8 Stunden",
"12hours": "Ende von 12 Stunden",
"weekEurope": "Tagesende",
"weekUsa": "Wochenssende",
"Bar settings": "Bar-Einstellungen",
"Fill color:": "Füllfarbe color:",
"Show labels:": "Zeige Labels:",
"top over": "oben über",
"top under": "oben unten",
"middle": "mittig",
"Bars width:": "Barbreite:",
"Label font size:": "Labelschriftgröße:",
"Label color:": "Labelfarbe:",
"Markings": "Markierungen",
"Line ID": "Linie ID",
"Fill": "Füllen",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Text",
"Text position": "Textposition",
"Text offset": "Text-Offset",
"Text size": "Textgröße",
"Text color": "Textfarbe",
"Add new markings": "Neue Markierung hinzufügen",
"Left": "Links",
"Right": "Rechts",
"Upper value or ID": "Oberes Wert oder ID",
"Lower value or ID": "Unteres Wert oder ID",
"X-Axis ticks": "X-Achse-Ticks",
"Y-Axis ticks": "Y-Achse-Ticks",
"ignore null values": "null-Werte ignorieren",
"Ticks from:": "Benutze X-Ticks aus:",
"use 0 instead of null values": "0 statt null benutzen",
"More": "mehr",
"Edit options for line %s": "Editieren weitere Einstellungen für Linie %s",
"Legend columns:": "Spalten in Legende:",
"Legend opacity (from 0 to 1):": "Legende-Opacity (von 0 bis 1):",
"Legend background:": "Legende-Hintergrund:",
"Fill(0to1)": "Füllen(0bis1)",
"Points": "Punkte"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "Ok",
"role": "role",
"Update objects": "Update objects",
"All": "All",
"With": "With",
"Without": "Without",
"Update states": "Update states",
"edit file": "edit file",
"restart script": "restart script",
"Select": "Select",
"Select ID": "Select ID",
"add children": "add children",
"edit enum": "edit enum",
"System settings": "System settings",
"reload": "reload",
"Delete object": "Delete object",
"no null": "&nbsp;no null",
"%s ago": "%s ago",
"Y-Offset": "Y-Offset",
"ID": "ID",
"Role": "Role",
"Room": "Room",
"Value": "Value",
"none": "none",
"Save into:": "Save into:",
"Name:": "Name:",
"save": "save",
"load": "load",
"Presets": "Presets",
"IDs": "IDs",
"new": "new",
"Enter chart name": "Enter chart name",
"save %s": "save %s",
"Input data": "Input data",
"Options": "Options",
"Range:": "Range:",
"5 seconds": "5 seconds",
"10 seconds": "10 seconds",
"15 seconds": "15 seconds",
"20 seconds": "20 seconds",
"30 seconds": "30 seconds",
"1 minute": "1 minute",
"2 minutes": "2 minutes",
"5 minutes": "5 minutes",
"10 minutes": "10 minutes",
"15 minutes": "15 minutes",
"20 minutes": "20 minutes",
"30 minutes": "30 minutes",
"1 hour": "1 hour",
"2 hours": "2 hours",
"3 hours": "3 hours",
"6 hours": "6 hours",
"12 hours": "12 hours",
"1 day": "1 day",
"2 days": "2 days",
"3 days": "3 days",
"7 days": "7 days",
"14 days": "14 days",
"1 month": "1 month",
"2 months": "2 months",
"3 months": "3 months",
"6 months": "6 months",
"1 year": "1 year",
"2 years": "2 years",
"Width:": "Width:",
"Height:": "Height:",
"line": "Line",
"area": "Area",
"bar": "Bar",
"lineplot": "Line plot",
"scatterplot": "Scatter plot",
"steps": "Steps",
"spline": "Spline",
"Stack": "Stack",
"Window background:": "Window background:",
"Custom chart background:": "Custom chart background:",
"Chart background:": "Chart background:",
"X axis labels color:": "X labels color:",
"Y axis labels color:": "Y labels color:",
"Show legend:": "Show legend:",
"Title:": "Title:",
"Title position:": "Title position:",
"Top, left, inside": "Top, left, inside",
"Top, right, inside": "Top, right, inside",
"Top, center, inside": "Top, center, inside",
"Middle, left, inside": "Middle, left, inside",
"Middle, right, inside": "Middle, right, inside",
"Bottom, left, inside": "Bottom, left, inside",
"Bottom, right, inside": "Bottom, right, inside",
"Bottom, center, inside": "Bottom, center, inside",
"Top, right, outside": "Top, right, outside",
"Middle, right, outside": "Middle, right, outside",
"Bottom, right, outside": "Bottom, right, outside",
"Bottom, center, outside": "Bottom, center, outside",
"Min:": "Minimum:",
"Max:": "Maximum:",
"User defined names:": "User defined names:",
"Predefined background:": "Predefined background:",
"User defined": "User defined",
"Background:": "Background:",
"Hover details:": "Hover details:",
"Time format:": "Time format:",
"Default": "Default",
"Smoothing": "Smoothing",
"After comma": "After comma",
"Open": "Open",
"Update": "Update",
"Reset settings": "Reset settings",
"From": "From: ",
"Last changed": "Last changed",
"Time stamp": "Time stamp",
"Acknowledged": "Acknowledged",
"Edit": "Edit",
"Members": "Members",
"Loading...": "Loading...",
"Processing...": "Processing...",
"With lines": "With lines",
"Without lines": "Without lines",
"Inside / With lines": "Inside / With lines",
"Outside/ With lines": "Outside/ With lines",
"Inside / No lines": "Inside / No lines",
"Outside / No lines": "Outside / No lines",
"Interpolate:": "Interpolate:",
"Steps": "Steps",
"Pie": "Pie",
"Top, left": "Top, left",
"Top, right": "Top, right",
"Bottom, left": "Bottom, left",
"Bottom, right": "Bottom, right",
"Title color:": "Title color:",
"Title size:": "Title size:",
"Fill range:": "Fill range:",
"Units:": "Units:",
"yes": "yes",
"bottom": "bottom",
"top": "top",
"left": "left",
"right": "right",
"No border:": "No border:",
"Time": "Time",
"day": "day",
"month": "month",
"year": "year",
"Individual": "Individual",
"Aggregation:": "Type:",
"relative": "relative",
"static": "static",
"now": "now",
"today": "today",
"this month": "this month",
"this year": "this year",
"Start:": "Start:",
"End:": "End:",
"Aggregate": "Aggregate",
"Step type:": "Step type:",
"seconds": "seconds",
"Seconds": "Seconds",
"Step span:": "Step span:",
"Link": "Link",
"Counts": "Counts",
"ignore 'null'": "ignore 'null'",
"Time Span": "Time Span",
"Appearance": "Appearance",
"Title": "Title",
"Offset": "X-Offset",
"Aggregation": "Type",
"Chart Type": "Chart Type",
"Color": "Color",
"Min": "Min",
"Max": "Max",
"Unit": "Unit",
"Y Axis": "Y Axis",
"X Axis": "X Axis",
"update Preview": "update Preview",
"Cancel": "Cancel",
"Name": "Name",
"Live update every:": "Live update every:",
"counts": "counts",
"Add new line": "Add new line",
"Animation:": "Animation:",
"no": "no",
"0s": "0 seconds",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 second",
"2s": "2 seconds",
"3s": "3 seconds",
"5s": "5 seconds",
"10s": "10 seconds",
"30s": "30 seconds",
"60s": "60 seconds",
"2m": "2 minutes",
"3m": "3 minutes",
"4m": "4 minutes",
"5m": "5 minutes",
"10m": "10 minutes",
"15m": "15 minutes",
"30m": "30 minutes",
"45m": "45 minutes",
"1H": "1 hour",
"2H": "2 hours",
"6H": "6 hours",
"12H": "12 hours",
"1D": "1 day",
"2D": "2 days",
"3D": "3 days",
"4D": "4 days",
"1W": "1 week",
"2W": "2 weeks",
"4W": "4 weeks",
"8W": "8 weeks",
"12W": "12 weeks",
"26W": "26 weeks",
"1M": "1 month",
"2M": "2 months",
"3M": "3 months",
"6M": "6 months",
"1Y": "1 year",
"2Y": "2 years",
"average": "average",
"max": "max",
"min": "min",
"total": "total",
"off": "off",
"leftColor": "left colored",
"rightColor": "right colored",
"topColor": "top colored",
"bottomColor": "bottom colored",
"default": "default",
"Auto-update:": "Auto-update:",
"Use comma:": "Use comma:",
"Common Y Axis": "Common Y Axis",
"Instance": "Instance",
"Line Width": "Line Width",
"Shadow Size": "Shadow Size",
"ignore 'null':": "ignore 'null':",
"onchange": "on change",
"Border color:": "Border color:",
"Grid color:": "Grid color:",
"Border width:": "Border width:",
"Enable zoom and pan:": "Enable zoom and pan:",
"Arrange bools": "Arrange booleans",
"NULL as": "NULL as",
"MinMax": "MinMax",
"null": "null",
"true": "last value",
"last value": "last value",
"Hide edit button:": "Hide edit button:",
"minmax": "minmax",
"&#216L": "&#216L",
"&#216S": "&#216S",
"Line": "Line",
"false": "null",
"end of minute": "end of minute",
"end of 5 minutes": "end of 5 minutes",
"end of 10 minutes": "end of 10 minutes",
"end of 30 minutes": "end of 30 minutes",
"end of hour": "end of hour",
"end of 2 hours": "end of 2 hours",
"end of 3 hours": "end of 3 hours",
"end of 4 hours": "end of 4 hours",
"end of 6 hours": "end of 6 hours",
"end of 8 hours": "end of 8 hours",
"end of 12 hours": "end of 12 hours",
"end of day": "end of day",
"end of sunday": "end of sunday",
"end of saturday": "end of saturday",
"1minute": "end of minute",
"5minutes": "end of 5 minutes",
"10minutes": "end of 10 minutes",
"30minutes": "end of 30 minutes",
"1hour": "end of hour",
"2hours": "end of 2 hours",
"3hours": "end of 3 hours",
"4hours": "end of 4 hours",
"6hours": "end of 6 hours",
"8hours": "end of 8 hours",
"12hours": "end of 12 hours",
"weekEurope": "end of day",
"weekUsa": "end of sunday",
"Bar settings": "Bar settings",
"Fill color:": "Fill color:",
"Show labels:": "Show labels:",
"top over": "top over",
"top under": "top under",
"middle": "middle",
"Bars width:": "Bars width:",
"Label font size:": "Label font size:",
"Label color:": "Label color:",
"Markings": "Markings",
"Line ID": "Line ID",
"Fill": "Fill",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Text",
"Text position": "Text position",
"Text offset": "Text offset",
"Text size": "Text size",
"Text color": "Text color",
"Add new markings": "Add new markings",
"Left": "Left",
"Right": "Right",
"Upper value or ID": "Upper value or ID",
"Lower value or ID": "Lower value or ID",
"X-Axis ticks": "X-Axis ticks",
"Y-Axis ticks": "Y-Axis ticks",
"ignore null values": "ignore null values",
"Ticks from:": "Use X-ticks from:",
"use 0 instead of null values": "use 0 instead of null values",
"More": "more",
"Edit options for line %s": "Edit options for line %s",
"Legend columns:": "Legend columns:",
"Legend opacity (from 0 to 1):": "Legend opacity (from 0 to 1):",
"Legend background:": "Legend background:",
"Fill(0to1)": "Fill(0to1)",
"Points": "Points"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "De acuerdo",
"role": "papel",
"Update objects": "Actualizar objetos",
"All": "Todas",
"With": "Con",
"Without": "Sin",
"Update states": "Actualizar estados",
"edit file": "editar archivo",
"restart script": "script de reinicio",
"Select": "Seleccionar",
"Select ID": "Seleccionar ID",
"add children": "agregar niños",
"edit enum": "editar enum",
"System settings": "Ajustes del sistema",
"reload": "recargar",
"Delete object": "Eliminar objeto",
"no null": "& nbsp; no null",
"%s ago": "hace% s",
"Y-Offset": "Y-Offset",
"ID": "CARNÉ DE IDENTIDAD",
"Role": "Papel",
"Room": "Habitación",
"Value": "Valor",
"none": "ninguna",
"Save into:": "Guardar en:",
"Name:": "Nombre:",
"save": "salvar",
"load": "carga",
"Presets": "Presets",
"IDs": "IDs",
"new": "nuevo",
"Enter chart name": "Ingrese el nombre del gráfico",
"save %s": "ahorra",
"Input data": "Datos de entrada",
"Options": "Opciones",
"Range:": "Distancia:",
"5 seconds": "5 segundos",
"10 seconds": "10 segundos",
"15 seconds": "15 segundos",
"20 seconds": "20 segundos",
"30 seconds": "30 segundos",
"1 minute": "1 minuto",
"2 minutes": "2 minutos",
"5 minutes": "5 minutos",
"10 minutes": "10 minutos",
"15 minutes": "15 minutos",
"20 minutes": "20 minutos",
"30 minutes": "30 minutos",
"1 hour": "1 hora",
"2 hours": "2 horas",
"3 hours": "3 horas",
"6 hours": "6 horas",
"12 hours": "12 horas",
"1 day": "1 día",
"2 days": "2 días",
"3 days": "3 días",
"7 days": "7 días",
"14 days": "14 dias",
"1 month": "1 mes",
"2 months": "2 meses",
"3 months": "3 meses",
"6 months": "6 meses",
"1 year": "1 año",
"2 years": "2 años",
"Width:": "Anchura:",
"Height:": "Altura:",
"line": "Línea",
"area": "Zona",
"bar": "Bar",
"lineplot": "Linear plot",
"scatterplot": "Gráfico de dispersión",
"steps": "Pasos",
"spline": "Ranura",
"Stack": "Apilar",
"Window background:": "Fondo de la ventana:",
"Custom chart background:": "Fondo de carta personalizada:",
"Chart background:": "Fondo de la carta:",
"X axis labels color:": "X etiquetas de color:",
"Y axis labels color:": "Color de etiquetas Y:",
"Show legend:": "Mostrar leyenda:",
"Title:": "Título:",
"Title position:": "Posición del título:",
"Top, left, inside": "Arriba, izquierda, adentro",
"Top, right, inside": "Arriba, derecha, adentro",
"Top, center, inside": "Arriba, centro, adentro",
"Middle, left, inside": "Medio, izquierdo, adentro",
"Middle, right, inside": "Medio, derecho, adentro",
"Bottom, left, inside": "Abajo, izquierda, adentro",
"Bottom, right, inside": "Abajo, derecha, adentro",
"Bottom, center, inside": "Abajo, centro, adentro",
"Top, right, outside": "Arriba, a la derecha, afuera",
"Middle, right, outside": "Medio, derecho, afuera",
"Bottom, right, outside": "Abajo, a la derecha, afuera",
"Bottom, center, outside": "Abajo, centro, afuera",
"Min:": "Mínimo:",
"Max:": "Máximo:",
"User defined names:": "Nombres definidos por el usuario:",
"Predefined background:": "Antecedentes predefinidos:",
"User defined": "Usuario definido",
"Background:": "Fondo:",
"Hover details:": "Hover detalles:",
"Time format:": "Formato de tiempo:",
"Default": "Defecto",
"Smoothing": "Suavizado",
"After comma": "Después de la coma",
"Open": "Abierto",
"Update": "Actualizar",
"Reset settings": "Reiniciar ajustes",
"From": "De:",
"Last changed": "Último cambio",
"Time stamp": "Marca de tiempo",
"Acknowledged": "Admitido",
"Edit": "Editar",
"Members": "Miembros",
"Loading...": "Cargando...",
"Processing...": "Tratamiento...",
"With lines": "Con líneas",
"Without lines": "Sin líneas",
"Inside / With lines": "Dentro / Con líneas",
"Outside/ With lines": "Fuera / Con líneas",
"Inside / No lines": "Dentro / Sin líneas",
"Outside / No lines": "Fuera / Sin líneas",
"Interpolate:": "Interpolar:",
"Steps": "Pasos",
"Pie": "Tarta",
"Top, left": "Arriba a la izquierda",
"Top, right": "Parte superior derecha",
"Bottom, left": "Abajo, izquierda",
"Bottom, right": "Abajo a la derecha",
"Title color:": "Color del título:",
"Title size:": "Tamaño del título:",
"Fill range:": "Rango de llenado:",
"Units:": "Unidades:",
"yes": "sí",
"bottom": "fondo",
"top": "parte superior",
"left": "izquierda",
"right": "derecho",
"No border:": "Sin bordes:",
"Time": "Hora",
"day": "día",
"month": "mes",
"year": "año",
"Individual": "Individual",
"Aggregation:": "Tipo:",
"relative": "relativo",
"static": "estático",
"now": "ahora",
"today": "hoy",
"this month": "este mes",
"this year": "este año",
"Start:": "Comienzo:",
"End:": "Fin:",
"Aggregate": "Agregar",
"Step type:": "Tipo de paso:",
"seconds": "segundos",
"Seconds": "Segundos",
"Step span:": "Lapso de paso:",
"Link": "Enlazar",
"Counts": "Cuenta",
"ignore 'null'": "ignorar 'nulo'",
"Time Span": "Espacio de tiempo",
"Appearance": "Apariencia",
"Title": "Título",
"Offset": "X-Offset",
"Aggregation": "Tipo",
"Chart Type": "Tipo de gráfico",
"Color": "Color",
"Min": "Min.",
"Max": "Max",
"Unit": "Unidad",
"Y Axis": "Eje Y",
"X Axis": "Eje X",
"update Preview": "actualización de Vista previa",
"Cancel": "Cancelar",
"Name": "Nombre",
"Live update every:": "Actualización en vivo cada:",
"counts": "conteos",
"Add new line": "Agregar nueva línea",
"Animation:": "Animación:",
"no": "no",
"0s": "0 segundos",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 segundo",
"2s": "2 segundos",
"3s": "3 segundos",
"5s": "5 segundos",
"10s": "10 segundos",
"30s": "30 segundos",
"60s": "60 segundos",
"2m": "2 minutos",
"3m": "3 minutos",
"4m": "4 minutos",
"5m": "5 minutos",
"10m": "10 minutos",
"15m": "15 minutos",
"30m": "30 minutos",
"45m": "45 minutos",
"1H": "1 hora",
"2H": "2 horas",
"6H": "6 horas",
"12H": "12 horas",
"1D": "1 día",
"2D": "2 días",
"3D": "3 días",
"4D": "4 dias",
"1W": "1 semana",
"2W": "2 semanas",
"4W": "4 semanas",
"8W": "8 semanas",
"12W": "12 semanas",
"26W": "26 semanas",
"1M": "1 mes",
"2M": "2 meses",
"3M": "3 meses",
"6M": "6 meses",
"1Y": "1 año",
"2Y": "2 años",
"average": "promedio",
"max": "máximo",
"min": "min",
"total": "total",
"off": "apagado",
"leftColor": "color izquierdo",
"rightColor": "color derecho",
"topColor": "tapa coloreada",
"bottomColor": "color de fondo",
"default": "defecto",
"Auto-update:": "Actualización automática:",
"Use comma:": "Usa la coma",
"Common Y Axis": "Eje Y común",
"Instance": "Ejemplo",
"Line Width": "Ancho de línea",
"Shadow Size": "Tamaño de las Sombras",
"ignore 'null':": "ignorar 'nulo':",
"onchange": "en cambio",
"Border color:": "Color del borde:",
"Grid color:": "Color de cuadrícula",
"Border width:": "Ancho del borde:",
"Enable zoom and pan:": "Habilitar zoom y pan:",
"Arrange bools": "Organizar booleanos",
"NULL as": "NULL como",
"MinMax": "Mínimo máximo",
"null": "nulo",
"true": "último valor",
"last value": "último valor",
"Hide edit button:": "Ocultar botón de edición:",
"minmax": "mínimo máximo",
"&#216L": "& # 216L",
"&#216S": "& # 216S",
"Line": "Línea",
"false": "nulo",
"end of minute": "fin del minuto",
"end of 5 minutes": "fin de 5 minutos",
"end of 10 minutes": "fin de 10 minutos",
"end of 30 minutes": "fin de 30 minutos",
"end of hour": "fin de hora",
"end of 2 hours": "fin de 2 horas",
"end of 3 hours": "fin de 3 horas",
"end of 4 hours": "fin de 4 horas",
"end of 6 hours": "fin de 6 horas",
"end of 8 hours": "fin de 8 horas",
"end of 12 hours": "fin de 12 horas",
"end of day": "fin del día",
"end of sunday": "fin del domingo",
"end of saturday": "fin de sabado",
"1minute": "fin del minuto",
"5minutes": "fin de 5 minutos",
"10minutes": "fin de 10 minutos",
"30minutes": "fin de 30 minutos",
"1hour": "fin de hora",
"2hours": "fin de 2 horas",
"3hours": "fin de 3 horas",
"4hours": "fin de 4 horas",
"6hours": "fin de 6 horas",
"8hours": "fin de 8 horas",
"12hours": "fin de 12 horas",
"weekEurope": "fin del día",
"weekUsa": "fin del domingo",
"Bar settings": "Configuración de barra",
"Fill color:": "Color de relleno:",
"Show labels:": "Mostrar etiquetas:",
"top over": "arriba encima",
"top under": "arriba debajo",
"middle": "medio",
"Bars width:": "Ancho de barras:",
"Label font size:": "Tamaño de letra de la etiqueta:",
"Label color:": "Color de etiqueta:",
"Markings": "Marcas",
"Line ID": "Identificación de línea",
"Fill": "Llenar",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Texto",
"Text position": "Posición del texto",
"Text offset": "Offset de texto",
"Text size": "Tamano del texto",
"Text color": "Color de texto",
"Add new markings": "Agregar nuevas marcas",
"Left": "Izquierda",
"Right": "Derecha",
"Upper value or ID": "Valor superior o ID",
"Lower value or ID": "Menor valor o ID",
"X-Axis ticks": "Garrapatas X-Axis",
"Y-Axis ticks": "Señales del eje Y",
"ignore null values": "ignorar valores nulos",
"Ticks from:": "Use X-ticks desde:",
"use 0 instead of null values": "use 0 en lugar de valores nulos",
"More": "Más",
"Edit options for line %s": "Editar opciones para la línea% s",
"Legend columns:": "Columnas leyenda",
"Legend opacity (from 0 to 1):": "Opacidad de la leyenda (de 0 a 1):",
"Legend background:": "Antecedentes de leyenda:",
"Fill(0to1)": "Rellenar (0to1)",
"Points": "Puntos"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "D'accord",
"role": "rôle",
"Update objects": "Mettre à jour",
"All": "Tout",
"With": "Avec",
"Without": "Sans pour autant",
"Update states": "Mettre à jour",
"edit file": "modifier le fichier",
"restart script": "redémarrer le script",
"Select": "Sélectionner",
"Select ID": "Sélectionner un identifiant",
"add children": "ajouter des enfants",
"edit enum": "éditer enum",
"System settings": "Les paramètres du système",
"reload": "recharger",
"Delete object": "Supprimer un objet",
"no null": "& nbsp; non nul",
"%s ago": "il y a% s",
"Y-Offset": "Y-Offset",
"ID": "ID",
"Role": "Rôle",
"Room": "Chambre",
"Value": "Valeur",
"none": "aucun",
"Save into:": "Enregistrer dans:",
"Name:": "Prénom:",
"save": "enregistrer",
"load": "charge",
"Presets": "Presets",
"IDs": "ID",
"new": "Nouveau",
"Enter chart name": "Entrez le nom du diagramme",
"save %s": "enregistrer% s",
"Input data": "Des données d'entrée",
"Options": "Options",
"Range:": "Gamme:",
"5 seconds": "5 secondes",
"10 seconds": "10 secondes",
"15 seconds": "15 secondes",
"20 seconds": "20 secondes",
"30 seconds": "30 secondes",
"1 minute": "1 minute",
"2 minutes": "2 minutes",
"5 minutes": "5 minutes",
"10 minutes": "10 minutes",
"15 minutes": "15 minutes",
"20 minutes": "20 minutes",
"30 minutes": "30 minutes",
"1 hour": "1 heure",
"2 hours": "2 heures",
"3 hours": "3 heures",
"6 hours": "6 heures",
"12 hours": "12 heures",
"1 day": "Un jour",
"2 days": "2 jours",
"3 days": "3 jours",
"7 days": "7 jours",
"14 days": "14 jours",
"1 month": "1 mois",
"2 months": "2 mois",
"3 months": "3 mois",
"6 months": "6 mois",
"1 year": "1 an",
"2 years": "2 ans",
"Width:": "Largeur:",
"Height:": "La taille:",
"line": "Ligne",
"area": "Région",
"bar": "Bar",
"lineplot": "Graphique linéaire",
"scatterplot": "Scatter plot",
"steps": "Pas",
"spline": "Spline",
"Stack": "Empiler",
"Window background:": "Fond de fenêtre:",
"Custom chart background:": "Arrière-plan de graphique personnalisé:",
"Chart background:": "Arrière-plan du graphique",
"X axis labels color:": "X étiquettes couleur:",
"Y axis labels color:": "Couleur des étiquettes Y:",
"Show legend:": "Afficher la légende:",
"Title:": "Titre:",
"Title position:": "Titre du poste:",
"Top, left, inside": "Haut, gauche, intérieur",
"Top, right, inside": "En haut, à droite, à l'intérieur",
"Top, center, inside": "Haut, centre, intérieur",
"Middle, left, inside": "Milieu, gauche, intérieur",
"Middle, right, inside": "Moyen, droit, intérieur",
"Bottom, left, inside": "Bas, gauche, intérieur",
"Bottom, right, inside": "En bas, à droite, à l'intérieur",
"Bottom, center, inside": "Bas, centre, intérieur",
"Top, right, outside": "Haut, droit, dehors",
"Middle, right, outside": "Moyen, droit, dehors",
"Bottom, right, outside": "En bas, à droite, à l'extérieur",
"Bottom, center, outside": "Bas, centre, extérieur",
"Min:": "Le minimum:",
"Max:": "Maximum:",
"User defined names:": "Noms définis par l'utilisateur:",
"Predefined background:": "Arrière-plan prédéfini:",
"User defined": "Défini par l'utilisateur",
"Background:": "Contexte:",
"Hover details:": "Hover détails:",
"Time format:": "Format de l'heure:",
"Default": "Défaut",
"Smoothing": "Lissage",
"After comma": "Après la virgule",
"Open": "Ouvrir",
"Update": "Mettre à jour",
"Reset settings": "Réinitialiser les options",
"From": "De:",
"Last changed": "Dernière modification",
"Time stamp": "Horodatage",
"Acknowledged": "Reconnu",
"Edit": "modifier",
"Members": "Membres",
"Loading...": "Chargement...",
"Processing...": "En traitement...",
"With lines": "Avec des lignes",
"Without lines": "Sans lignes",
"Inside / With lines": "À l'intérieur / Avec des lignes",
"Outside/ With lines": "Extérieur / Avec lignes",
"Inside / No lines": "À l'intérieur / Pas de lignes",
"Outside / No lines": "Extérieur / Pas de lignes",
"Interpolate:": "Interpoler:",
"Steps": "Pas",
"Pie": "Tarte",
"Top, left": "En haut à gauche",
"Top, right": "En haut à droite",
"Bottom, left": "En bas à gauche",
"Bottom, right": "En bas à droite",
"Title color:": "Couleur du titre:",
"Title size:": "Taille du titre:",
"Fill range:": "Remplir gamme:",
"Units:": "Unités:",
"yes": "Oui",
"bottom": "bas",
"top": "Haut",
"left": "la gauche",
"right": "droite",
"No border:": "Pas de frontière:",
"Time": "Temps",
"day": "journée",
"month": "mois",
"year": "an",
"Individual": "Individuel",
"Aggregation:": "Type:",
"relative": "relatif",
"static": "statique",
"now": "à présent",
"today": "aujourd'hui",
"this month": "ce mois-ci",
"this year": "cette année",
"Start:": "Début:",
"End:": "Fin:",
"Aggregate": "Agrégat",
"Step type:": "Type d'étape:",
"seconds": "secondes",
"Seconds": "Secondes",
"Step span:": "Étape span:",
"Link": "Lien",
"Counts": "Compte",
"ignore 'null'": "ignore 'null'",
"Time Span": "Durée",
"Appearance": "Apparence",
"Title": "Titre",
"Offset": "X-Offset",
"Aggregation": "Type",
"Chart Type": "Type de graphique",
"Color": "Couleur",
"Min": "Min",
"Max": "Max",
"Unit": "Unité",
"Y Axis": "Axe Y",
"X Axis": "Axe X",
"update Preview": "aperçu de mise à jour",
"Cancel": "Annuler",
"Name": "prénom",
"Live update every:": "Mise à jour en direct tous les:",
"counts": "compte",
"Add new line": "Ajouter une nouvelle ligne",
"Animation:": "Animation:",
"no": "non",
"0s": "0 seconde",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 seconde",
"2s": "2 secondes",
"3s": "3 secondes",
"5s": "5 secondes",
"10s": "10 secondes",
"30s": "30 secondes",
"60s": "60 secondes",
"2m": "2 minutes",
"3m": "3 minutes",
"4m": "4 minutes",
"5m": "5 minutes",
"10m": "10 minutes",
"15m": "15 minutes",
"30m": "30 minutes",
"45m": "45 minutes",
"1H": "1 heure",
"2H": "2 heures",
"6H": "6 heures",
"12H": "12 heures",
"1D": "Un jour",
"2D": "2 jours",
"3D": "3 jours",
"4D": "4 jours",
"1W": "1 semaine",
"2W": "2 semaines",
"4W": "4 semaines",
"8W": "8 semaines",
"12W": "12 semaines",
"26W": "26 semaines",
"1M": "1 mois",
"2M": "2 mois",
"3M": "3 mois",
"6M": "6 mois",
"1Y": "1 an",
"2Y": "2 ans",
"average": "moyenne",
"max": "max",
"min": "min",
"total": "total",
"off": "de",
"leftColor": "laissé coloré",
"rightColor": "couleur droite",
"topColor": "top coloré",
"bottomColor": "fond coloré",
"default": "défaut",
"Auto-update:": "Mise à jour automatique:",
"Use comma:": "Utilisez une virgule:",
"Common Y Axis": "Axe Y commun",
"Instance": "Exemple",
"Line Width": "Largeur de ligne",
"Shadow Size": "Taille de l'ombre",
"ignore 'null':": "ignore 'null':",
"onchange": "sur le changement",
"Border color:": "Couleur de la bordure:",
"Grid color:": "Couleur de la grille:",
"Border width:": "Largeur de la bordure:",
"Enable zoom and pan:": "Activer le zoom et le panoramique:",
"Arrange bools": "Organiser les booléens",
"NULL as": "NULL comme",
"MinMax": "Min max",
"null": "nul",
"true": "dernière valeur",
"last value": "dernière valeur",
"Hide edit button:": "Masquer le bouton d'édition:",
"minmax": "min max",
"&#216L": "& # 216L",
"&#216S": "& # 216S",
"Line": "Ligne",
"false": "nul",
"end of minute": "fin de minute",
"end of 5 minutes": "fin de 5 minutes",
"end of 10 minutes": "fin de 10 minutes",
"end of 30 minutes": "fin de 30 minutes",
"end of hour": "fin de l'heure",
"end of 2 hours": "fin de 2 heures",
"end of 3 hours": "fin de 3 heures",
"end of 4 hours": "fin de 4 heures",
"end of 6 hours": "fin de 6 heures",
"end of 8 hours": "fin de 8 heures",
"end of 12 hours": "fin de 12 heures",
"end of day": "fin de la journée",
"end of sunday": "fin de dimanche",
"end of saturday": "fin de samedi",
"1minute": "fin de minute",
"5minutes": "fin de 5 minutes",
"10minutes": "fin de 10 minutes",
"30minutes": "fin de 30 minutes",
"1hour": "fin de l'heure",
"2hours": "fin de 2 heures",
"3hours": "fin de 3 heures",
"4hours": "fin de 4 heures",
"6hours": "fin de 6 heures",
"8hours": "fin de 8 heures",
"12hours": "fin de 12 heures",
"weekEurope": "fin de la journée",
"weekUsa": "fin de dimanche",
"Bar settings": "Paramètres du bar",
"Fill color:": "La couleur de remplissage:",
"Show labels:": "Afficher les étiquettes:",
"top over": "dessus",
"top under": "haut sous",
"middle": "milieu",
"Bars width:": "Largeur des barres:",
"Label font size:": "Étiquette taille de la police:",
"Label color:": "Étiquette couleur:",
"Markings": "Marquages",
"Line ID": "Id de ligne",
"Fill": "Remplir",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Texte",
"Text position": "Position du texte",
"Text offset": "Décalage de texte",
"Text size": "Taille du texte",
"Text color": "Couleur du texte",
"Add new markings": "Ajouter de nouvelles marques",
"Left": "La gauche",
"Right": "Droite",
"Upper value or ID": "Valeur supérieure ou ID",
"Lower value or ID": "Valeur inférieure ou ID",
"X-Axis ticks": "Tiques de l'axe des X",
"Y-Axis ticks": "Tiques de l'axe des Y",
"ignore null values": "ignorer les valeurs nulles",
"Ticks from:": "Utilisez les X-ticks de:",
"use 0 instead of null values": "utilise 0 au lieu de valeurs nulles",
"More": "plus",
"Edit options for line %s": "Modifier les options pour la ligne% s",
"Legend columns:": "Colonnes de légende:",
"Legend opacity (from 0 to 1):": "Opacité de la légende (de 0 à 1):",
"Legend background:": "Contexte de la légende",
"Fill(0to1)": "Remplir (0to1)",
"Points": "Points"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "Ok",
"role": "ruolo",
"Update objects": "Aggiorna oggetti",
"All": "Tutti",
"With": "Con",
"Without": "Senza",
"Update states": "Stati di aggiornamento",
"edit file": "modifica file",
"restart script": "riavviare lo script",
"Select": "Selezionare",
"Select ID": "Seleziona ID",
"add children": "aggiungi bambini",
"edit enum": "modifica enum",
"System settings": "Impostazioni di sistema",
"reload": "ricaricare",
"Delete object": "Elimina oggetto",
"no null": "& nbsp; non null",
"%s ago": "% s fa",
"Y-Offset": "Y-Offset",
"ID": "ID",
"Role": "Ruolo",
"Room": "Camera",
"Value": "Valore",
"none": "nessuna",
"Save into:": "Salva in:",
"Name:": "Nome:",
"save": "salvare",
"load": "caricare",
"Presets": "Presets",
"IDs": "ID",
"new": "nuovo",
"Enter chart name": "Inserisci il nome del grafico",
"save %s": "salva% s",
"Input data": "Dati in ingresso",
"Options": "Opzioni",
"Range:": "Gamma:",
"5 seconds": "5 secondi",
"10 seconds": "10 secondi",
"15 seconds": "15 secondi",
"20 seconds": "20 secondi",
"30 seconds": "30 secondi",
"1 minute": "1 minuto",
"2 minutes": "2 minuti",
"5 minutes": "5 minuti",
"10 minutes": "10 minuti",
"15 minutes": "15 minuti",
"20 minutes": "20 minuti",
"30 minutes": "30 minuti",
"1 hour": "1 ora",
"2 hours": "2 ore",
"3 hours": "3 ore",
"6 hours": "6 ore",
"12 hours": "12 ore",
"1 day": "1 giorno",
"2 days": "2 giorni",
"3 days": "3 giorni",
"7 days": "7 giorni",
"14 days": "14 giorni",
"1 month": "1 mese",
"2 months": "Due mesi",
"3 months": "3 mesi",
"6 months": "6 mesi",
"1 year": "1 anno",
"2 years": "2 anni",
"Width:": "Larghezza:",
"Height:": "Altezza:",
"line": "Linea",
"area": "La zona",
"bar": "Bar",
"lineplot": "Trama di linea",
"scatterplot": "Trama sparsa",
"steps": "passi",
"spline": "linguetta",
"Stack": "Pila",
"Window background:": "Sfondo della finestra:",
"Custom chart background:": "Sfondo grafico personalizzato:",
"Chart background:": "Sfondo del grafico:",
"X axis labels color:": "Colore etichette X:",
"Y axis labels color:": "Il colore delle etichette Y:",
"Show legend:": "Mostra legenda:",
"Title:": "Titolo:",
"Title position:": "Posizione del titolo:",
"Top, left, inside": "In alto, a sinistra, dentro",
"Top, right, inside": "In alto, a destra, dentro",
"Top, center, inside": "In alto, al centro, dentro",
"Middle, left, inside": "Medio, a sinistra, dentro",
"Middle, right, inside": "Medio, giusto, dentro",
"Bottom, left, inside": "In basso, a sinistra, dentro",
"Bottom, right, inside": "In basso, a destra, dentro",
"Bottom, center, inside": "In basso, al centro, dentro",
"Top, right, outside": "In alto, a destra, fuori",
"Middle, right, outside": "Medio, giusto, esterno",
"Bottom, right, outside": "In basso, a destra, fuori",
"Bottom, center, outside": "In basso, al centro, fuori",
"Min:": "Minimo:",
"Max:": "Massimo:",
"User defined names:": "Nomi definiti dall'utente:",
"Predefined background:": "Sfondo predefinito:",
"User defined": "Definito dall'utente",
"Background:": "Sfondo:",
"Hover details:": "Dettagli al passaggio del mouse:",
"Time format:": "Formato orario:",
"Default": "Predefinito",
"Smoothing": "lisciatura",
"After comma": "Dopo la virgola",
"Open": "Aperto",
"Update": "Aggiornare",
"Reset settings": "Ripristina le impostazioni",
"From": "A partire dal:",
"Last changed": "Ultima modifica",
"Time stamp": "Data e ora",
"Acknowledged": "Riconosciuto",
"Edit": "modificare",
"Members": "Utenti",
"Loading...": "Caricamento in corso...",
"Processing...": "In lavorazione...",
"With lines": "Con le linee",
"Without lines": "Senza linee",
"Inside / With lines": "Interno / Con linee",
"Outside/ With lines": "Esterno / Con linee",
"Inside / No lines": "Dentro / Nessuna linea",
"Outside / No lines": "Fuori / Nessuna linea",
"Interpolate:": "Interpolare:",
"Steps": "passi",
"Pie": "Torta",
"Top, left": "A sinistra in alto",
"Top, right": "In alto a destra",
"Bottom, left": "In basso a sinistra",
"Bottom, right": "In basso a destra",
"Title color:": "Colore del titolo:",
"Title size:": "Dimensione del titolo:",
"Fill range:": "Gamma di riempimento:",
"Units:": "unità:",
"yes": "sì",
"bottom": "parte inferiore",
"top": "superiore",
"left": "sinistra",
"right": "destra",
"No border:": "Nessun confine:",
"Time": "Tempo",
"day": "giorno",
"month": "mese",
"year": "anno",
"Individual": "Individuale",
"Aggregation:": "Genere:",
"relative": "parente",
"static": "statico",
"now": "adesso",
"today": "oggi",
"this month": "questo mese",
"this year": "quest'anno",
"Start:": "Inizio:",
"End:": "Fine:",
"Aggregate": "Aggregato",
"Step type:": "Tipo di passaggio:",
"seconds": "secondi",
"Seconds": "secondi",
"Step span:": "Intervallo:",
"Link": "collegamento",
"Counts": "Conti",
"ignore 'null'": "ignora 'null'",
"Time Span": "Arco di tempo",
"Appearance": "Aspetto",
"Title": "Titolo",
"Offset": "X-Offset",
"Aggregation": "genere",
"Chart Type": "Tipo di grafico",
"Color": "Colore",
"Min": "min",
"Max": "Max",
"Unit": "Unità",
"Y Axis": "Asse Y.",
"X Axis": "Asse X.",
"update Preview": "Aggiorna anteprima",
"Cancel": "Annulla",
"Name": "Nome",
"Live update every:": "Aggiornamento live ogni:",
"counts": "conta",
"Add new line": "Aggiungi una nuova linea",
"Animation:": "Animazione:",
"no": "no",
"0s": "0 secondi",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 secondo",
"2s": "2 secondi",
"3s": "3 secondi",
"5s": "5 secondi",
"10s": "10 secondi",
"30s": "30 secondi",
"60s": "60 secondi",
"2m": "2 minuti",
"3m": "3 minuti",
"4m": "4 minuti",
"5m": "5 minuti",
"10m": "10 minuti",
"15m": "15 minuti",
"30m": "30 minuti",
"45m": "45 minuti",
"1H": "1 ora",
"2H": "2 ore",
"6H": "6 ore",
"12H": "12 ore",
"1D": "1 giorno",
"2D": "2 giorni",
"3D": "3 giorni",
"4D": "4 giorni",
"1W": "1 settimana",
"2W": "2 settimane",
"4W": "4 settimane",
"8W": "8 settimane",
"12W": "12 settimane",
"26W": "26 settimane",
"1M": "1 mese",
"2M": "Due mesi",
"3M": "3 mesi",
"6M": "6 mesi",
"1Y": "1 anno",
"2Y": "2 anni",
"average": "media",
"max": "max",
"min": "min",
"total": "totale",
"off": "via",
"leftColor": "lasciato colorato",
"rightColor": "giusto colorato",
"topColor": "top colorato",
"bottomColor": "fondo colorato",
"default": "predefinito",
"Auto-update:": "Aggiornamento automatico:",
"Use comma:": "Usa la virgola:",
"Common Y Axis": "Asse Y comune",
"Instance": "Esempio",
"Line Width": "Larghezza della linea",
"Shadow Size": "Dimensione dell'ombra",
"ignore 'null':": "ignora 'null':",
"onchange": "sul cambiamento",
"Border color:": "Colore del bordo:",
"Grid color:": "Colore griglia:",
"Border width:": "Larghezza del bordo:",
"Enable zoom and pan:": "Abilita zoom e panoramica:",
"Arrange bools": "Disporre i booleani",
"NULL as": "NULL come",
"MinMax": "Minimo Massimo",
"null": "nullo",
"true": "ultimo valore",
"last value": "ultimo valore",
"Hide edit button:": "Nascondi pulsante di modifica:",
"minmax": "minimo Massimo",
"&#216L": "& # 216L",
"&#216S": "& # 216S",
"Line": "Linea",
"false": "nullo",
"end of minute": "fine del minuto",
"end of 5 minutes": "fine di 5 minuti",
"end of 10 minutes": "fine di 10 minuti",
"end of 30 minutes": "fine di 30 minuti",
"end of hour": "fine dell'ora",
"end of 2 hours": "fine di 2 ore",
"end of 3 hours": "fine di 3 ore",
"end of 4 hours": "fine di 4 ore",
"end of 6 hours": "fine di 6 ore",
"end of 8 hours": "fine di 8 ore",
"end of 12 hours": "fine di 12 ore",
"end of day": "fine del giorno",
"end of sunday": "fine della domenica",
"end of saturday": "fine di sabato",
"1minute": "fine del minuto",
"5minutes": "fine di 5 minuti",
"10minutes": "fine di 10 minuti",
"30minutes": "fine di 30 minuti",
"1hour": "fine dell'ora",
"2hours": "fine di 2 ore",
"3hours": "fine di 3 ore",
"4hours": "fine di 4 ore",
"6hours": "fine di 6 ore",
"8hours": "fine di 8 ore",
"12hours": "fine di 12 ore",
"weekEurope": "fine del giorno",
"weekUsa": "fine della domenica",
"Bar settings": "Impostazioni della barra",
"Fill color:": "Colore di riempimento:",
"Show labels:": "Mostra etichette:",
"top over": "sopra",
"top under": "sopra sotto",
"middle": "mezzo",
"Bars width:": "Larghezza delle barre:",
"Label font size:": "Dimensione del carattere dell'etichetta:",
"Label color:": "Colore dell'etichetta:",
"Markings": "marcature",
"Line ID": "ID linea",
"Fill": "Riempire",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Testo",
"Text position": "Posizione del testo",
"Text offset": "Offset del testo",
"Text size": "Dimensione del testo",
"Text color": "Colore del testo",
"Add new markings": "Aggiungi nuovi segni",
"Left": "Sinistra",
"Right": "Destra",
"Upper value or ID": "Valore massimo o ID",
"Lower value or ID": "Valore più basso o ID",
"X-Axis ticks": "Zecche X-Axis",
"Y-Axis ticks": "Zecche dell'asse Y.",
"ignore null values": "ignora valori nulli",
"Ticks from:": "Usa X-tick da:",
"use 0 instead of null values": "usa 0 invece di valori nulli",
"More": "Di Più",
"Edit options for line %s": "Modifica le opzioni per la riga% s",
"Legend columns:": "Colonne della legenda:",
"Legend opacity (from 0 to 1):": "Opacità della legenda (da 0 a 1):",
"Legend background:": "Sfondo leggenda:",
"Fill(0to1)": "Fill (0to1)",
"Points": "Punti"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "OK",
"role": "rol",
"Update objects": "Objecten bijwerken",
"All": "Alle",
"With": "Met",
"Without": "Zonder",
"Update states": "Status bijwerken",
"edit file": "bestand bewerken",
"restart script": "herstart script",
"Select": "kiezen",
"Select ID": "Selecteer ID",
"add children": "voeg kinderen toe",
"edit enum": "edit enum",
"System settings": "Systeem instellingen",
"reload": "herladen",
"Delete object": "Object verwijderen",
"no null": "& nbsp; geen null",
"%s ago": "% s geleden",
"Y-Offset": "Y-offset",
"ID": "ID kaart",
"Role": "Rol",
"Room": "Kamer",
"Value": "Waarde",
"none": "geen",
"Save into:": "Bewaar in:",
"Name:": "Naam:",
"save": "opslaan",
"load": "laden",
"Presets": "presets",
"IDs": "IDs",
"new": "nieuwe",
"Enter chart name": "Voer de diagramnaam in",
"save %s": "bespaar% s",
"Input data": "Invoergegevens",
"Options": "opties",
"Range:": "bereik:",
"5 seconds": "5 seconden",
"10 seconds": "10 seconden",
"15 seconds": "15 seconden",
"20 seconds": "20 seconden",
"30 seconds": "30 seconden",
"1 minute": "1 minuut",
"2 minutes": "2 minuten",
"5 minutes": "5 minuten",
"10 minutes": "10 minuten",
"15 minutes": "15 minuten",
"20 minutes": "20 minuten",
"30 minutes": "30 minuten",
"1 hour": "1 uur",
"2 hours": "twee uur",
"3 hours": "3 uur",
"6 hours": "6 uur",
"12 hours": "12 uren",
"1 day": "1 dag",
"2 days": "2 dagen",
"3 days": "3 dagen",
"7 days": "7 dagen",
"14 days": "14 dagen",
"1 month": "1 maand",
"2 months": "2 maanden",
"3 months": "3 maanden",
"6 months": "6 maanden",
"1 year": "1 jaar",
"2 years": "2 jaar",
"Width:": "Breedte:",
"Height:": "Hoogte:",
"line": "Lijn",
"area": "Gebied",
"bar": "Bar",
"lineplot": "Lijnplot",
"scatterplot": "Scatterplot",
"steps": "Stappen",
"spline": "spline",
"Stack": "stack",
"Window background:": "Venster achtergrond:",
"Custom chart background:": "Aangepaste grafiek achtergrond:",
"Chart background:": "Grafiek achtergrond:",
"X axis labels color:": "X labels kleur:",
"Y axis labels color:": "Y-labels kleur:",
"Show legend:": "Legenda weergeven:",
"Title:": "Titel:",
"Title position:": "Titel positie:",
"Top, left, inside": "Boven, links, binnen",
"Top, right, inside": "Boven, rechts, binnen",
"Top, center, inside": "Boven, midden, binnenkant",
"Middle, left, inside": "Midden, links, binnenkant",
"Middle, right, inside": "Midden, rechts, binnenkant",
"Bottom, left, inside": "Onder, links, binnen",
"Bottom, right, inside": "Onder, rechts, binnen",
"Bottom, center, inside": "Onder, midden, binnen",
"Top, right, outside": "Boven, rechts, buiten",
"Middle, right, outside": "Midden, rechts, buiten",
"Bottom, right, outside": "Onder, rechts, buiten",
"Bottom, center, outside": "Onder, midden, buiten",
"Min:": "Minimum:",
"Max:": "maximaal:",
"User defined names:": "Door de gebruiker gedefinieerde namen:",
"Predefined background:": "Voorgedefinieerde achtergrond:",
"User defined": "Gebruiker gedefinieerde",
"Background:": "Achtergrond:",
"Hover details:": "Hover details:",
"Time format:": "Tijd formaat:",
"Default": "Standaard",
"Smoothing": "smoothing",
"After comma": "Na een komma",
"Open": "Open",
"Update": "Bijwerken",
"Reset settings": "Reset instellingen",
"From": "Van:",
"Last changed": "Laatst gewijzigd",
"Time stamp": "Tijdstempel",
"Acknowledged": "Erkend",
"Edit": "Bewerk",
"Members": "leden",
"Loading...": "Bezig met laden...",
"Processing...": "Verwerken...",
"With lines": "Met lijnen",
"Without lines": "Zonder lijnen",
"Inside / With lines": "Binnen / met lijnen",
"Outside/ With lines": "Buiten / met lijnen",
"Inside / No lines": "Binnenkant / Geen regels",
"Outside / No lines": "Buiten / Geen lijnen",
"Interpolate:": "Interpoleren:",
"Steps": "Stappen",
"Pie": "Taart",
"Top, left": "Linksboven",
"Top, right": "Rechtsboven",
"Bottom, left": "Linksonder",
"Bottom, right": "Rechts onder",
"Title color:": "Titel kleur:",
"Title size:": "Titel grootte:",
"Fill range:": "Vulbereik:",
"Units:": "units:",
"yes": "Ja",
"bottom": "bodem",
"top": "top",
"left": "links",
"right": "rechts",
"No border:": "Geen grens:",
"Time": "Tijd",
"day": "dag",
"month": "maand",
"year": "jaar",
"Individual": "individu",
"Aggregation:": "Type:",
"relative": "familielid",
"static": "statisch",
"now": "nu",
"today": "vandaag",
"this month": "deze maand",
"this year": "dit jaar",
"Start:": "Begin:",
"End:": "Einde:",
"Aggregate": "Aggregaat",
"Step type:": "Stap type:",
"seconds": "seconden",
"Seconds": "seconden",
"Step span:": "Stap overspanning:",
"Link": "Link",
"Counts": "tellingen",
"ignore 'null'": "negeer 'null'",
"Time Span": "Tijdspanne",
"Appearance": "Uiterlijk",
"Title": "Titel",
"Offset": "-X Offset",
"Aggregation": "Type",
"Chart Type": "Diagramtype",
"Color": "Kleur",
"Min": "min",
"Max": "Max",
"Unit": "Eenheid",
"Y Axis": "Y-as",
"X Axis": "X-as",
"update Preview": "voorproefje van de nieuwe versie",
"Cancel": "Annuleer",
"Name": "Naam",
"Live update every:": "Live update elke:",
"counts": "tellingen",
"Add new line": "Voeg een nieuwe regel toe",
"Animation:": "animatie:",
"no": "Nee",
"0s": "0 seconden",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 seconde",
"2s": "2 seconden",
"3s": "3 seconden",
"5s": "5 seconden",
"10s": "10 seconden",
"30s": "30 seconden",
"60s": "60 seconden",
"2m": "2 minuten",
"3m": "3 minuten",
"4m": "4 minuten",
"5m": "5 minuten",
"10m": "10 minuten",
"15m": "15 minuten",
"30m": "30 minuten",
"45m": "45 minuten",
"1H": "1 uur",
"2H": "twee uur",
"6H": "6 uur",
"12H": "12 uren",
"1D": "1 dag",
"2D": "2 dagen",
"3D": "3 dagen",
"4D": "4 dagen",
"1W": "1 week",
"2W": "2 weken",
"4W": "4 weken",
"8W": "8 weken",
"12W": "12 weken",
"26W": "26 weken",
"1M": "1 maand",
"2M": "2 maanden",
"3M": "3 maanden",
"6M": "6 maanden",
"1Y": "1 jaar",
"2Y": "2 jaar",
"average": "gemiddelde",
"max": "max",
"min": "min",
"total": "totaal",
"off": "uit",
"leftColor": "links gekleurd",
"rightColor": "rechts gekleurd",
"topColor": "bovenaan gekleurd",
"bottomColor": "onderaan gekleurd",
"default": "standaard",
"Auto-update:": "Auto update:",
"Use comma:": "Gebruik komma:",
"Common Y Axis": "Gemeenschappelijke Y-as",
"Instance": "Aanleg",
"Line Width": "Lijnbreedte",
"Shadow Size": "Schaduwgrootte",
"ignore 'null':": "negeer 'null':",
"onchange": "over verandering",
"Border color:": "Rand kleur:",
"Grid color:": "Raster kleur:",
"Border width:": "Grensbreedte:",
"Enable zoom and pan:": "Zoom en pan inschakelen:",
"Arrange bools": "Booleans regelen",
"NULL as": "NULL als",
"MinMax": "MinMax",
"null": "nul",
"true": "laatste waarde",
"last value": "laatste waarde",
"Hide edit button:": "Verberg bewerken knop:",
"minmax": "MinMax",
"&#216L": "& # 216L",
"&#216S": "& # 216S",
"Line": "Lijn",
"false": "nul",
"end of minute": "einde van de minuut",
"end of 5 minutes": "einde van 5 minuten",
"end of 10 minutes": "einde van 10 minuten",
"end of 30 minutes": "einde van 30 minuten",
"end of hour": "einde van het uur",
"end of 2 hours": "einde van 2 uur",
"end of 3 hours": "einde van 3 uur",
"end of 4 hours": "einde van 4 uur",
"end of 6 hours": "einde van 6 uur",
"end of 8 hours": "einde van 8 uur",
"end of 12 hours": "einde van 12 uur",
"end of day": "einde van de dag",
"end of sunday": "einde van zondag",
"end of saturday": "einde van zaterdag",
"1minute": "einde van de minuut",
"5minutes": "einde van 5 minuten",
"10minutes": "einde van 10 minuten",
"30minutes": "einde van 30 minuten",
"1hour": "einde van het uur",
"2hours": "einde van 2 uur",
"3hours": "einde van 3 uur",
"4hours": "einde van 4 uur",
"6hours": "einde van 6 uur",
"8hours": "einde van 8 uur",
"12hours": "einde van 12 uur",
"weekEurope": "einde van de dag",
"weekUsa": "einde van zondag",
"Bar settings": "Bar-instellingen",
"Fill color:": "Opvulkleur:",
"Show labels:": "Toon labels:",
"top over": "opnieuw gedaan",
"top under": "top onder",
"middle": "midden-",
"Bars width:": "Staaf breedte:",
"Label font size:": "Label lettergrootte:",
"Label color:": "Label kleur:",
"Markings": "markeringen",
"Line ID": "Lijn-ID",
"Fill": "Vullen",
"ØL": "ØL",
"ØS": "Os",
"Text": "Tekst",
"Text position": "Tekstpositie",
"Text offset": "Tekst offset",
"Text size": "Lettergrootte",
"Text color": "Tekst kleur",
"Add new markings": "Voeg nieuwe markeringen toe",
"Left": "Links",
"Right": "Rechts",
"Upper value or ID": "Hoogste waarde of ID",
"Lower value or ID": "Lagere waarde of ID",
"X-Axis ticks": "X-as-teken",
"Y-Axis ticks": "Y-as tikken",
"ignore null values": "Negeer waarden negeren",
"Ticks from:": "Gebruik X-ticks van:",
"use 0 instead of null values": "gebruik 0 in plaats van nulwaarden",
"More": "meer",
"Edit options for line %s": "Bewerk opties voor regel% s",
"Legend columns:": "Legenda kolommen:",
"Legend opacity (from 0 to 1):": "Legenda opaciteit (van 0 tot 1):",
"Legend background:": "Legenda achtergrond:",
"Fill(0to1)": "Fill (0to1)",
"Points": "punten"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "Ok",
"role": "rola",
"Update objects": "Zaktualizuj obiekty",
"All": "Wszystko",
"With": "Z",
"Without": "Bez",
"Update states": "Zaktualizuj stany",
"edit file": "edytuj plik",
"restart script": "zrestartuj skrypt",
"Select": "Wybierz",
"Select ID": "Wybierz ID",
"add children": "dodaj dzieci",
"edit enum": "edytuj wyliczenie",
"System settings": "Ustawienia systemowe",
"reload": "przeładować",
"Delete object": "Usuń obiekt",
"no null": "& nbsp; no null",
"%s ago": "% s temu",
"Y-Offset": "Przesunięcie Y",
"ID": "ID",
"Role": "Rola",
"Room": "Pokój",
"Value": "Wartość",
"none": "Żaden",
"Save into:": "Zapisz w:",
"Name:": "Nazwa:",
"save": "zapisać",
"load": "obciążenie",
"Presets": "Presets",
"IDs": "ID",
"new": "Nowy",
"Enter chart name": "Wprowadź nazwę wykresu",
"save %s": "zapisz% s",
"Input data": "Dane wejściowe",
"Options": "Opcje",
"Range:": "Zasięg:",
"5 seconds": "5 sekund",
"10 seconds": "10 sekund",
"15 seconds": "15 sekund",
"20 seconds": "20 sekund",
"30 seconds": "30 sekund",
"1 minute": "1 minuta",
"2 minutes": "2 minuty",
"5 minutes": "5 minut",
"10 minutes": "10 minut",
"15 minutes": "15 minut",
"20 minutes": "20 minut",
"30 minutes": "30 minut",
"1 hour": "1 godzina",
"2 hours": "2 godziny",
"3 hours": "3 godziny",
"6 hours": "6 godzin",
"12 hours": "12 godzin",
"1 day": "1 dzień",
"2 days": "2 dni",
"3 days": "3 dni",
"7 days": "7 dni",
"14 days": "14 dni",
"1 month": "1 miesiąc",
"2 months": "2 miesiące",
"3 months": "3 miesiące",
"6 months": "6 miesięcy",
"1 year": "1 rok",
"2 years": "2 lata",
"Width:": "Szerokość:",
"Height:": "Wysokość:",
"line": "Linia",
"area": "Powierzchnia",
"bar": "Bar",
"lineplot": "Fabuła linii",
"scatterplot": "Wykres punktowy",
"steps": "Kroki",
"spline": "Klin",
"Stack": "Stos",
"Window background:": "Tło okna:",
"Custom chart background:": "Niestandardowe tło wykresu:",
"Chart background:": "Tło wykresu:",
"X axis labels color:": "Kolor etykiet X:",
"Y axis labels color:": "Kolor etykiet Y:",
"Show legend:": "Pokaż legendę:",
"Title:": "Tytuł:",
"Title position:": "Pozycja tytułu:",
"Top, left, inside": "Góra, lewa, wewnątrz",
"Top, right, inside": "Góra, prawo, wewnątrz",
"Top, center, inside": "Góra, środek, wnętrze",
"Middle, left, inside": "Środkowy, lewy, w środku",
"Middle, right, inside": "Środkowy, prawy, wewnątrz",
"Bottom, left, inside": "Dół, lewo, wnętrze",
"Bottom, right, inside": "Dół, prawo, wewnątrz",
"Bottom, center, inside": "Dół, środek, wnętrze",
"Top, right, outside": "Góra, prawo, na zewnątrz",
"Middle, right, outside": "Środkowy, prawy, na zewnątrz",
"Bottom, right, outside": "Dół, prawo, na zewnątrz",
"Bottom, center, outside": "Dół, środek, na zewnątrz",
"Min:": "Minimum:",
"Max:": "Maksymalny:",
"User defined names:": "Nazwy zdefiniowane przez użytkownika:",
"Predefined background:": "Wstępnie zdefiniowane tło:",
"User defined": "Określony przez użytkownika",
"Background:": "Tło:",
"Hover details:": "Po najechaniu szczegóły:",
"Time format:": "Format czasu:",
"Default": "Domyślna",
"Smoothing": "Wygładzanie",
"After comma": "Po przecinku",
"Open": "otwarty",
"Update": "Aktualizacja",
"Reset settings": "Resetowanie ustawień",
"From": "Od:",
"Last changed": "Ostatnia zmiana",
"Time stamp": "Znak czasu",
"Acknowledged": "Przyznane",
"Edit": "Edytować",
"Members": "Członkowie",
"Loading...": "Ładuję...",
"Processing...": "Przetwarzanie...",
"With lines": "Z liniami",
"Without lines": "Bez linii",
"Inside / With lines": "Wewnątrz / Z liniami",
"Outside/ With lines": "Na zewnątrz / Z liniami",
"Inside / No lines": "Wewnątrz / Bez linii",
"Outside / No lines": "Poza / Bez linii",
"Interpolate:": "Interpolować:",
"Steps": "Kroki",
"Pie": "Ciasto",
"Top, left": "Lewy górny",
"Top, right": "W prawym górnym rogu",
"Bottom, left": "Na dole po lewej",
"Bottom, right": "Prawy dolny",
"Title color:": "Kolor tytułu:",
"Title size:": "Rozmiar tytułu:",
"Fill range:": "Zakres wypełnienia:",
"Units:": "Jednostki:",
"yes": "tak",
"bottom": "Dolny",
"top": "Top",
"left": "lewo",
"right": "dobrze",
"No border:": "Bez granic:",
"Time": "Czas",
"day": "dzień",
"month": "miesiąc",
"year": "rok",
"Individual": "Indywidualny",
"Aggregation:": "Rodzaj:",
"relative": "krewny",
"static": "statyczny",
"now": "teraz",
"today": "dzisiaj",
"this month": "ten miesiąc",
"this year": "W tym roku",
"Start:": "Początek:",
"End:": "Koniec:",
"Aggregate": "Agregat",
"Step type:": "Rodzaj kroku:",
"seconds": "sekundy",
"Seconds": "sekundy",
"Step span:": "Zakres kroku:",
"Link": "Połączyć",
"Counts": "Liczy",
"ignore 'null'": "zignoruj ​​\"zero\"",
"Time Span": "Okres czasu",
"Appearance": "Wygląd",
"Title": "Tytuł",
"Offset": "X-Offset",
"Aggregation": "Rodzaj",
"Chart Type": "Typ wykresu",
"Color": "Kolor",
"Min": "Min",
"Max": "Max",
"Unit": "Jednostka",
"Y Axis": "Oś Y.",
"X Axis": "Oś X.",
"update Preview": "aktualizuj podgląd",
"Cancel": "Anuluj",
"Name": "Nazwa",
"Live update every:": "Aktualizacja na żywo co:",
"counts": "liczy",
"Add new line": "Dodaj nową linię",
"Animation:": "Animacja:",
"no": "Nie",
"0s": "0 sekund",
"300ms": "300ms",
"500ms": "500 ms",
"1s": "1 sekunda",
"2s": "2 sekundy",
"3s": "3 sekundy",
"5s": "5 sekund",
"10s": "10 sekund",
"30s": "30 sekund",
"60s": "60 sekund",
"2m": "2 minuty",
"3m": "3 minuty",
"4m": "4 minuty",
"5m": "5 minut",
"10m": "10 minut",
"15m": "15 minut",
"30m": "30 minut",
"45m": "45 minut",
"1H": "1 godzina",
"2H": "2 godziny",
"6H": "6 godzin",
"12H": "12 godzin",
"1D": "1 dzień",
"2D": "2 dni",
"3D": "3 dni",
"4D": "4 dni",
"1W": "1 tydzień",
"2W": "2 tygodnie",
"4W": "4 tygodnie",
"8W": "8 tygodni",
"12W": "12 tygodni",
"26W": "26 tygodni",
"1M": "1 miesiąc",
"2M": "2 miesiące",
"3M": "3 miesiące",
"6M": "6 miesięcy",
"1Y": "1 rok",
"2Y": "2 lata",
"average": "średni",
"max": "maks",
"min": "min",
"total": "całkowity",
"off": "poza",
"leftColor": "pozostawione w kolorze",
"rightColor": "prawe kolorowe",
"topColor": "górne kolorowe",
"bottomColor": "u dołu w kolorze",
"default": "domyślna",
"Auto-update:": "Automatyczna aktualizacja:",
"Use comma:": "Użyj przecinka:",
"Common Y Axis": "Wspólna oś Y.",
"Instance": "Instancja",
"Line Width": "Szerokość linii",
"Shadow Size": "Rozmiar cienia",
"ignore 'null':": "zignoruj ​​\"null\":",
"onchange": "o zmianie",
"Border color:": "Kolor ramki:",
"Grid color:": "Kolor siatki:",
"Border width:": "Szerokość granicy:",
"Enable zoom and pan:": "Włącz powiększanie i panoramowanie:",
"Arrange bools": "Rozmieść booleans",
"NULL as": "NULL as",
"MinMax": "Minimum maksimum",
"null": "zero",
"true": "ostatnia wartość",
"last value": "ostatnia wartość",
"Hide edit button:": "Ukryj przycisk edycji:",
"minmax": "minimum maksimum",
"&#216L": "& # 216L",
"&#216S": "& # 216S",
"Line": "Linia",
"false": "zero",
"end of minute": "koniec minuty",
"end of 5 minutes": "koniec 5 minut",
"end of 10 minutes": "koniec 10 minut",
"end of 30 minutes": "koniec 30 minut",
"end of hour": "koniec godziny",
"end of 2 hours": "koniec 2 godzin",
"end of 3 hours": "koniec 3 godzin",
"end of 4 hours": "koniec 4 godzin",
"end of 6 hours": "koniec 6 godzin",
"end of 8 hours": "koniec 8 godzin",
"end of 12 hours": "koniec 12 godzin",
"end of day": "koniec dnia",
"end of sunday": "koniec niedzieli",
"end of saturday": "koniec soboty",
"1minute": "koniec minuty",
"5minutes": "koniec 5 minut",
"10minutes": "koniec 10 minut",
"30minutes": "koniec 30 minut",
"1hour": "koniec godziny",
"2hours": "koniec 2 godzin",
"3hours": "koniec 3 godzin",
"4hours": "koniec 4 godzin",
"6hours": "koniec 6 godzin",
"8hours": "koniec 8 godzin",
"12hours": "koniec 12 godzin",
"weekEurope": "koniec dnia",
"weekUsa": "koniec niedzieli",
"Bar settings": "Ustawienia paska",
"Fill color:": "Kolor wypełnienia:",
"Show labels:": "Pokaż etykiety:",
"top over": "do góry",
"top under": "górny pod",
"middle": "środkowy",
"Bars width:": "Szerokość prętów:",
"Label font size:": "Rozmiar czcionki etykiety:",
"Label color:": "Kolor etykiety:",
"Markings": "Znakowania",
"Line ID": "Identyfikator linii",
"Fill": "Napełnić",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Tekst",
"Text position": "Pozycja tekstu",
"Text offset": "Przesunięcie tekstu",
"Text size": "Rozmiar czcionki",
"Text color": "Kolor tekstu",
"Add new markings": "Dodaj nowe oznaczenia",
"Left": "Lewo",
"Right": "Dobrze",
"Upper value or ID": "Górna wartość lub ID",
"Lower value or ID": "Niższa wartość lub ID",
"X-Axis ticks": "Tiki X-Axis",
"Y-Axis ticks": "Tyksy Y-Axis",
"ignore null values": "ignoruj ​​wartości puste",
"Ticks from:": "Użyj tyknięć X z:",
"use 0 instead of null values": "użyj 0 zamiast wartości zerowych",
"More": "jeszcze",
"Edit options for line %s": "Edytuj opcje linii% s",
"Legend columns:": "Kolumny legendy:",
"Legend opacity (from 0 to 1):": "Krycie Legendy (od 0 do 1):",
"Legend background:": "Tło legendy:",
"Fill(0to1)": "Wypełnij (0to1)",
"Points": "Zwrotnica"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "Está bem",
"role": "Função",
"Update objects": "Atualizar objetos",
"All": "Todos",
"With": "Com",
"Without": "Sem",
"Update states": "Estado de atualização",
"edit file": "editar arquivo",
"restart script": "reiniciar o script",
"Select": "Selecione",
"Select ID": "Selecione ID",
"add children": "adicionar filhos",
"edit enum": "editar enum",
"System settings": "Configurações de sistema",
"reload": "recarregar",
"Delete object": "Eliminar objeto",
"no null": "& nbsp; nulo",
"%s ago": "% s atrás",
"Y-Offset": "Y-Offset",
"ID": "identidade",
"Role": "Função",
"Room": "Quarto",
"Value": "Valor",
"none": "Nenhum",
"Save into:": "Salvar em:",
"Name:": "Nome:",
"save": "Salve ",
"load": "carga",
"Presets": "Presets",
"IDs": "IDs",
"new": "Novo",
"Enter chart name": "Digite o nome do gráfico",
"save %s": "salvar% s",
"Input data": "Dados de entrada",
"Options": "Opções",
"Range:": "Alcance:",
"5 seconds": "5 segundos",
"10 seconds": "10 segundos",
"15 seconds": "15 segundos",
"20 seconds": "20 segundos",
"30 seconds": "30 segundos",
"1 minute": "1 minuto",
"2 minutes": "2 minutos",
"5 minutes": "5 minutos",
"10 minutes": "10 minutos",
"15 minutes": "15 minutos",
"20 minutes": "20 minutos",
"30 minutes": "30 minutos",
"1 hour": "1 hora",
"2 hours": "2 horas",
"3 hours": "3 horas",
"6 hours": "6 horas",
"12 hours": "12 horas",
"1 day": "1 dia",
"2 days": "2 dias",
"3 days": "3 dias",
"7 days": "7 dias",
"14 days": "14 dias",
"1 month": "1 mês",
"2 months": "2 meses",
"3 months": "3 meses",
"6 months": "6 meses",
"1 year": "1 ano",
"2 years": "2 anos",
"Width:": "Largura:",
"Height:": "Altura:",
"line": "Linha",
"area": "Área",
"bar": "Barra",
"lineplot": "Trama de linha",
"scatterplot": "Parcela de dispersão",
"steps": "Passos",
"spline": "Spline",
"Stack": "Pilha",
"Window background:": "Fundo da janela:",
"Custom chart background:": "Fundo de gráfico personalizado:",
"Chart background:": "Contexto do gráfico:",
"X axis labels color:": "Cor de etiquetas X:",
"Y axis labels color:": "Etiquetas de etiquetas Y:",
"Show legend:": "Mostrar lenda:",
"Title:": "Título:",
"Title position:": "Posição do título:",
"Top, left, inside": "Topo, esquerda, dentro",
"Top, right, inside": "Topo, direito, dentro",
"Top, center, inside": "Topo, centro, dentro",
"Middle, left, inside": "Médio, esquerda, dentro",
"Middle, right, inside": "Médio, direito, dentro",
"Bottom, left, inside": "Parte inferior, esquerda, dentro",
"Bottom, right, inside": "Parte inferior, direita, dentro",
"Bottom, center, inside": "No fundo, no centro, no interior",
"Top, right, outside": "Topo, direito, fora",
"Middle, right, outside": "Médio, direito, fora",
"Bottom, right, outside": "Parte inferior, direita, fora",
"Bottom, center, outside": "Fundo, centro, fora",
"Min:": "Mínimo:",
"Max:": "Máximo:",
"User defined names:": "Nomes definidos pelo usuário:",
"Predefined background:": "Antecedentes predefinidos:",
"User defined": "Usuário definido",
"Background:": "Fundo:",
"Hover details:": "Detalhes do mouse:",
"Time format:": "Formato do tempo:",
"Default": "Padrão",
"Smoothing": "Suavização",
"After comma": "Após a vírgula",
"Open": "Aberto",
"Update": "Atualizar",
"Reset settings": "Redefinir configurações",
"From": "A partir de:",
"Last changed": "Última modificação",
"Time stamp": "Marca de horário",
"Acknowledged": "Reconhecido",
"Edit": "Editar",
"Members": "Membros",
"Loading...": "Carregando...",
"Processing...": "Em processamento...",
"With lines": "Com linhas",
"Without lines": "Sem linhas",
"Inside / With lines": "Dentro / Com linhas",
"Outside/ With lines": "Fora / Com linhas",
"Inside / No lines": "Dentro / Sem linhas",
"Outside / No lines": "Fora / Sem linhas",
"Interpolate:": "Interpolar:",
"Steps": "Passos",
"Pie": "Torta",
"Top, left": "Superior esquerdo",
"Top, right": "Canto superior direito",
"Bottom, left": "Inferior esquerdo",
"Bottom, right": "Canto inferior direito",
"Title color:": "Cor do título:",
"Title size:": "Tamanho do título:",
"Fill range:": "Faixa de preenchimento:",
"Units:": "Unidades:",
"yes": "sim",
"bottom": "inferior",
"top": "topo",
"left": "esquerda",
"right": "certo",
"No border:": "Sem borda:",
"Time": "Tempo",
"day": "dia",
"month": "mês",
"year": "ano",
"Individual": "Individual",
"Aggregation:": "Tipo:",
"relative": "relativo",
"static": "estático",
"now": "agora",
"today": "hoje",
"this month": "este mês",
"this year": "este ano",
"Start:": "Começar:",
"End:": "Fim:",
"Aggregate": "Agregar",
"Step type:": "Tipo de etapa:",
"seconds": "segundos",
"Seconds": "Segundos",
"Step span:": "Passo:",
"Link": "Ligação",
"Counts": "Contagens",
"ignore 'null'": "ignore 'null'",
"Time Span": "Intervalo de tempo",
"Appearance": "Aparência",
"Title": "Título",
"Offset": "X-Offset",
"Aggregation": "Tipo",
"Chart Type": "Tipo de gráfico",
"Color": "Cor",
"Min": "Min",
"Max": "Max",
"Unit": "Unidade",
"Y Axis": "Eixo Y",
"X Axis": "X Axis",
"update Preview": "atualização Visualização",
"Cancel": "Cancelar",
"Name": "Nome",
"Live update every:": "Atualização ao vivo a cada:",
"counts": "contagens",
"Add new line": "Adicionar nova linha",
"Animation:": "Animação:",
"no": "não",
"0s": "0 segundos",
"300ms": "300ms",
"500ms": "500ms",
"1s": "1 segundo",
"2s": "2 segundos",
"3s": "3 segundos",
"5s": "5 segundos",
"10s": "10 segundos",
"30s": "30 segundos",
"60s": "60 segundos",
"2m": "2 minutos",
"3m": "3 minutos",
"4m": "4 minutos",
"5m": "5 minutos",
"10m": "10 minutos",
"15m": "15 minutos",
"30m": "30 minutos",
"45m": "45 minutos",
"1H": "1 hora",
"2H": "2 horas",
"6H": "6 horas",
"12H": "12 horas",
"1D": "1 dia",
"2D": "2 dias",
"3D": "3 dias",
"4D": "4 dias",
"1W": "1 semana",
"2W": "2 semanas",
"4W": "4 semanas",
"8W": "8 semanas",
"12W": "12 semanas",
"26W": "26 semanas",
"1M": "1 mês",
"2M": "2 meses",
"3M": "3 meses",
"6M": "6 meses",
"1Y": "1 ano",
"2Y": "2 anos",
"average": "média",
"max": "máximo",
"min": "min",
"total": "total",
"off": "fora",
"leftColor": "colorido esquerdo",
"rightColor": "cor clara",
"topColor": "colorido superior",
"bottomColor": "colorido inferior",
"default": "padrão",
"Auto-update:": "Atualização automática:",
"Use comma:": "Usar vírgula:",
"Common Y Axis": "Eixo Y comum",
"Instance": "Instância",
"Line Width": "Espessura da linha",
"Shadow Size": "Tamanho da sombra",
"ignore 'null':": "ignore 'null':",
"onchange": "em mudança",
"Border color:": "Cor da borda:",
"Grid color:": "Cor da grade:",
"Border width:": "Largura da borda:",
"Enable zoom and pan:": "Ative o zoom e pan:",
"Arrange bools": "Organizar booleanos",
"NULL as": "NULL como",
"MinMax": "Mínimo máximo",
"null": "nulo",
"true": "último valor",
"last value": "último valor",
"Hide edit button:": "Ocultar botão de edição:",
"minmax": "mínimo máximo",
"&#216L": "& # 216L",
"&#216S": "& # 216S",
"Line": "Linha",
"false": "nulo",
"end of minute": "fim de minuto",
"end of 5 minutes": "fim de 5 minutos",
"end of 10 minutes": "fim de 10 minutos",
"end of 30 minutes": "fim de 30 minutos",
"end of hour": "fim de hora",
"end of 2 hours": "fim de 2 horas",
"end of 3 hours": "fim de 3 horas",
"end of 4 hours": "fim de 4 horas",
"end of 6 hours": "fim de 6 horas",
"end of 8 hours": "fim de 8 horas",
"end of 12 hours": "fim de 12 horas",
"end of day": "fim do dia",
"end of sunday": "fim de domingo",
"end of saturday": "fim de sábado",
"1minute": "fim de minuto",
"5minutes": "fim de 5 minutos",
"10minutes": "fim de 10 minutos",
"30minutes": "fim de 30 minutos",
"1hour": "fim de hora",
"2hours": "fim de 2 horas",
"3hours": "fim de 3 horas",
"4hours": "fim de 4 horas",
"6hours": "fim de 6 horas",
"8hours": "fim de 8 horas",
"12hours": "fim de 12 horas",
"weekEurope": "fim do dia",
"weekUsa": "fim de domingo",
"Bar settings": "Configurações da barra",
"Fill color:": "Cor de preenchimento:",
"Show labels:": "Mostrar rótulos:",
"top over": "mais alto",
"top under": "top sob",
"middle": "meio",
"Bars width:": "Largura das barras:",
"Label font size:": "Etiquetar tamanho da fonte:",
"Label color:": "Cor do rótulo:",
"Markings": "Marcas",
"Line ID": "ID da linha",
"Fill": "Preencher",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Texto",
"Text position": "Posição de texto",
"Text offset": "Deslocamento de texto",
"Text size": "Tamanho do texto",
"Text color": "Cor do texto",
"Add new markings": "Adicionar novas marcações",
"Left": "Esquerda",
"Right": "Certo",
"Upper value or ID": "Valor superior ou ID",
"Lower value or ID": "Menor valor ou ID",
"X-Axis ticks": "Carrapatos do X-Axis",
"Y-Axis ticks": "Carrapatos do Y-Axis",
"ignore null values": "ignore valores nulos",
"Ticks from:": "Use X-ticks de:",
"use 0 instead of null values": "use 0 em vez de valores nulos",
"More": "Mais",
"Edit options for line %s": "Editar opções para a linha% s",
"Legend columns:": "Colunas da legenda:",
"Legend opacity (from 0 to 1):": "Opacidade da legenda (de 0 a 1):",
"Legend background:": "Legend background:",
"Fill(0to1)": "Preencher (0 a 1)",
"Points": "Pontos"
}
+324
View File
@@ -0,0 +1,324 @@
{
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"Ok": "Ok",
"role": "Роль",
"Update objects": "Обновить объекты",
"All": "все",
"With": "с",
"Without": "без",
"Update states": "Обновить состояния",
"edit file": "Редактировать",
"restart script": "Перезапустить скрипт",
"Select": "Выбрать",
"Select ID": "Выбрать ID",
"add children": "Добавить под-категории",
"edit enum": "Изменить категорию",
"System settings": "Системные настройки",
"reload": "Перезагрузить",
"Delete object": "Удалить объект",
"no null": "&nbsp;без null",
"%s ago": "%s назад",
"Y-Offset": "Сдвиг по Y",
"ID": "ID",
"Role": "Роль",
"Room": "Комната",
"Value": "Значение",
"none": "ничего",
"Save into:": "Сохранить как:",
"Name:": "Имя:",
"save": "сохранить",
"load": "загрузить",
"Presets": "Пресеты",
"IDs": "Объекты",
"new": "новое",
"Enter chart name": "Введите имя графика",
"save %s": "сохранить %s",
"Input data": "Входные данные",
"Options": "Опции",
"Range:": "Интервал:",
"5 seconds": "5 секунд",
"10 seconds": "10 секунд",
"15 seconds": "15 секунд",
"20 seconds": "20 секунд",
"30 seconds": "30 секунд",
"1 minute": "1 минуту",
"2 minutes": "2 минуты",
"5 minutes": "5 минут",
"10 minutes": "10 минут",
"15 minutes": "15 минут",
"20 minutes": "20 минут",
"30 minutes": "30 минут",
"1 hour": "1 час",
"2 hours": "2 часа",
"3 hours": "3 часа",
"6 hours": "6 часов",
"12 hours": "12 часов",
"1 day": "1 день",
"2 days": "2 дня",
"3 days": "3 дня",
"7 days": "7 дней",
"14 days": "14 дней",
"1 month": "1 месяц",
"2 months": "2 месяца",
"3 months": "3 месяца",
"6 months": "6 месяцев",
"1 year": "1 год",
"2 years": "2 года",
"Width:": "Ширина:",
"Height:": "Высота:",
"line": "Линия",
"area": "Область",
"bar": "Bar",
"lineplot": "Линия с точками",
"scatterplot": "Точки",
"steps": "Шаги",
"spline": "Сллайн",
"Stack": "Stack",
"Window background:": "Фон окна:",
"Custom chart background:": "Пользовательский фон графика:",
"Chart background:": "Фон графика:",
"X axis labels color:": "Цвет текста по оси X:",
"Y axis labels color:": "Цвет текста по оси Y:",
"Show legend:": "Показать легенду:",
"Title:": "Название:",
"Title position:": "Позиция названия:",
"Top, left, inside": "Сверху, слева, внутри",
"Top, right, inside": "Сверху, справа, внутри",
"Top, center, inside": "Сверху, по центру, внутри",
"Middle, left, inside": "Посередине, слева, внутри",
"Middle, right, inside": "Посередине, справа, внутри",
"Bottom, left, inside": "Снизу, слева, внутри",
"Bottom, right, inside": "Снизу, справа, внутри",
"Bottom, center, inside": "Снизу, по центру, внутри",
"Top, right, outside": "Сверху, справа, снаружи",
"Middle, right, outside": "Посередине, справа, снаружи",
"Bottom, right, outside": "Снизу, справа, снаружи",
"Bottom, center, outside": "Снизу, по центру, снаружи",
"Min:": "Минимум:",
"Max:": "Максимум:",
"User defined names:": "Задать имена графиков:",
"Predefined background:": "Выбрать фон:",
"User defined": "Пользовательские",
"Background:": "Фон:",
"Hover details:": "Показывать подсказку:",
"Time format:": "Формат времени:",
"Default": "по умолчанию",
"Smoothing": "Сглаживание",
"After comma": "После запятой",
"Open": "Показать",
"Update": "Обновить",
"Reset settings": "Сбросить настройки",
"From": "От",
"Last changed": "Изменён",
"Time stamp": "Время",
"Acknowledged": "Подтверждён",
"Edit": "Edit",
"Members": "Объекты",
"Loading...": "Загрузка...",
"Processing...": "Обработка...",
"With lines": "С линиями",
"Without lines": "Без линий",
"Inside / With lines": "Внутри / С линиями",
"Outside/ With lines": "Снаружи/ С линиями",
"Inside / No lines": "Внутри / Без линий",
"Outside / No lines": "Снаружи / Без линий",
"Interpolate:": "Интерполяция:",
"Steps": "Ступени",
"Pie": "Круговая диаграмма",
"Top, left": "Сверху, слева",
"Top, right": "Сверху, справа",
"Bottom, left": "Снизу, слева",
"Bottom, right": "Снизу, справа",
"Title color:": "Цвет названия:",
"Title size:": "Размер названия:",
"Fill range:": "Всегда весь интервал:",
"Units:": "Единицы:",
"yes": "да",
"bottom": "снизу",
"top": "сверху",
"left": "слева",
"right": "справа",
"No border:": "Без рамки:",
"Time": "Время",
"day": "День",
"month": "month",
"year": "year",
"Individual": "Индивидуально",
"Aggregation:": "Тип:",
"relative": "относительно",
"static": "постоянный",
"now": "сейчас",
"today": "сегодня",
"this month": "этот месяц",
"this year": "этот год",
"Start:": "Начало:",
"End:": "Конец:",
"Aggregate": "Объединение данных",
"Step type:": "Шаги:",
"seconds": "секунды",
"Seconds": "Cекунды",
"Step span:": "Интервал шага:",
"Link": "URL",
"Counts": "Кол-во значений",
"ignore 'null'": "Игнорировать 'null'",
"Time Span": "Временной интервал",
"Appearance": "Оформление",
"Title": "Подпись",
"Offset": "Сдвиг по Х",
"Aggregation": "Тип",
"Chart Type": "Тип графика",
"Color": "Цвет",
"Min": "Мин",
"Max": "Макс",
"Unit": "Единицы",
"Y Axis": "Ось Y",
"X Axis": "Ось X",
"update Preview": "Обновить",
"Cancel": "отменить",
"Name": "Имя",
"Live update every:": "Обновлять каждые:",
"counts": "кол-во",
"Add new line": "Добавить&nbsp;линию",
"Animation:": "Анимация:",
"no": "нет",
"0s": "0c",
"300ms": "300мс",
"500ms": "500мс",
"1s": "1 секунда",
"2s": "2 секунды",
"3s": "3 секунды",
"5s": "5 секунд",
"10s": "10 секунд",
"30s": "30 секунд",
"60s": "60 секунд",
"2m": "2 минуты",
"3m": "3 минуты",
"4m": "4 минуты",
"5m": "5 минут",
"10m": "10 минут",
"15m": "15 минут",
"30m": "30 минут",
"45m": "45 минут",
"1H": "1 час",
"2H": "2 часа",
"6H": "6 часов",
"12H": "12 часов",
"1D": "1 день",
"2D": "2 дня",
"3D": "3 дня",
"4D": "4 дня",
"1W": "1 неделя",
"2W": "2 недели",
"4W": "4 недели",
"8W": "8 недель",
"12W": "12 недель",
"26W": "26 недель",
"1M": "1 месяц",
"2M": "2 месяца",
"3M": "3 месяца",
"6M": "6 месяцев",
"1Y": "1 год",
"2Y": "2 года",
"average": "среднее",
"max": "макс",
"min": "мин",
"total": "всего",
"off": "скрыть",
"leftColor": "слева цветом",
"rightColor": "справа цветом",
"topColor": "сверху цветом",
"bottomColor": "снизу цветом",
"default": "по умолчанию",
"Auto-update:": "Обновлять сразу:",
"Use comma:": "Запятая-разделитель:",
"Common Y Axis": "Общая ось Y",
"Instance": "Драйвер",
"Line Width": "Ширина линии",
"Shadow Size": "Ширина тени",
"ignore 'null':": "Игнорировать 'null':",
"onchange": "при изменении",
"Border color:": "Цвет рамки:",
"Grid color:": "Цвет сетки:",
"Border width:": "Ширина рамки:",
"Enable zoom and pan:": "Разрешить увеличение и сдвиг:",
"Arrange bools": "Выстроить bool графики",
"NULL as": "NULL как",
"MinMax": "MinMax",
"null": "null",
"true": "пред. значение",
"last value": "пред. значение",
"Hide edit button:": "Скрыть кнопку 'Редактировать':",
"minmax": "minmax",
"&#216L": "&#216L",
"&#216S": "&#216S",
"Line": "Линия",
"false": "null",
"end of minute": "Конец минуты",
"end of 5 minutes": "Конец 5 minutes",
"end of 10 minutes": "Конец 10 minutes",
"end of 30 minutes": "Конец 30 minutes",
"end of hour": "Конец часа",
"end of 2 hours": "Конец 2 часов",
"end of 3 hours": "Конец 3 часов",
"end of 4 hours": "Конец 4 часов",
"end of 6 hours": "Конец 6 часов",
"end of 8 hours": "Конец 8 часов",
"end of 12 hours": "Конец 12 часов",
"end of day": "Конец дня",
"end of sunday": "Конец недели",
"end of saturday": "Конец субботы",
"1minute": "Конец минуты",
"5minutes": "Конец 5 minutes",
"10minutes": "Конец 10 minutes",
"30minutes": "Конец 30 minutes",
"1hour": "Конец часа",
"2hours": "Конец 2 часов",
"3hours": "Конец 3 часов",
"4hours": "Конец 4 часов",
"6hours": "Конец 6 часов",
"8hours": "Конец 8 часов",
"12hours": "Конец 12 часов",
"weekEurope": "Конец дня",
"weekUsa": "Конец недели",
"Bar settings": "Настройки Bar",
"Fill color:": "Цвет заливки:",
"Show labels:": "Подписи:",
"top over": "Сверху над",
"top under": "Сверху под",
"middle": "В середине",
"Bars width:": "Ширина бара:",
"Label font size:": "Шрифт подписи:",
"Label color:": "Цвет подписи:",
"Markings": "Разметка",
"Line ID": "ID линии",
"Fill": "Заливка",
"ØL": "ØL",
"ØS": "ØS",
"Text": "Текст",
"Text position": "Расположение текста",
"Text offset": "Сдвиг текста",
"Text size": "Размер текста",
"Text color": "Цвет текста",
"Add new markings": "Добавить разметку",
"Left": "слева",
"Right": "справа",
"Upper value or ID": "Верхнее значение или ID",
"Lower value or ID": "Нижнее значение или ID",
"X-Axis ticks": "Кол-во делений на шкале X",
"Y-Axis ticks": "Кол-во делений на шкале Y",
"ignore null values": "игнорировать значения null",
"Ticks from:": "Подписи X-делений из:",
"use 0 instead of null values": "Заменять null на 0",
"More": "ещё",
"Edit options for line %s": "Редактировать настройки для линии %s",
"Legend columns:": "Колонок в легенде:",
"Legend opacity (from 0 to 1):": "Прозрачность легенды (от 0 до 1):",
"Legend background:": "Фон легенды:",
"Fill(0to1)": "Фон(0to1)",
"Points": "Точки"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

+302
View File
@@ -0,0 +1,302 @@
<head>
<title>Flot Chart</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link href="img/favicon.png" rel="shortcut icon" type="image/x-icon" />
<!--link type="text/css" rel="stylesheet" href="/lib/css/themes/jquery-ui/default/jquery-ui.min.css"-->
<script type="text/javascript" src="../../lib/js/jquery-1.11.2.min.js"></script>
<!--script src="/lib/js/jquery-ui.1.11.2.slider.min.js"></script-->
<script type="text/javascript" src="../../lib/js/socket.io.js"></script>
<script type="text/javascript" src="../../_socket/info.js"></script>
<style>
.rickshaw_graph .x_tick.invisible {
border-left: 0 rgba(0, 0, 0, 0) !important;
}
#title {
font-size: 24px;
font-weight: bold;
}
div, span, p, td {
font-family: Arial, sans-serif;
}
#chart {
display: inline-block;
}
#legend_container {
position: absolute;
right: 0;
bottom: 26px;
width: 0;
}
.chart-container {
box-sizing: border-box;
padding: 20px 15px 15px 15px;
/*margin: 15px auto 30px auto;*/
border: 1px solid #ddd;
background: #fff;
background: linear-gradient(#f6f6f6 0, #fff 50px);
background: -o-linear-gradient(#f6f6f6 0, #fff 50px);
background: -ms-linear-gradient(#f6f6f6 0, #fff 50px);
background: -moz-linear-gradient(#f6f6f6 0, #fff 50px);
background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.15);
-o-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
-ms-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
-webkit-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
}
.chart-placeholder {
width: 100%;
height: 100%;
font-size: 14px;
line-height: 1.2em;
}
/* ------------------ connecting -------------------------- */
#server-disconnect {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
background-color: rgba(231,231,231,0.9) !important;
background-size: 100% !important;
background-position: center !important;
background-repeat: no-repeat !important;
z-index: 5000;
}
#server-disconnect > * {
/* center child divs */
position: absolute;
top: 50%;
left: 50%;
/* x-border-box */
box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-webkit-box-sizing: border-box;
/* x-unselectable */
user-select: none;
-o-user-select: none;
-ms-user-select: none;
-moz-user-select: -moz-none;
-webkit-user-select: none;
cursor: default;
}
.splash-screen-circle-outer {
z-index: 20000;
width: 100px;
height: 100px;
border-radius: 100px;
margin-top: -50px;
margin-left: -50px;
border: 5px solid rgba(87, 113, 145, 0.9);
opacity: .9;
border-right: 5px solid rgba(0, 0, 0, 0);
border-left: 5px solid rgba(0, 0, 0, 0);
box-shadow: 0 0 35px #577191;
-moz-animation: spinPulse 5s infinite ease-in-out;
-webkit-animation: spinPulse 5s infinite linear;
}
.splash-screen-circle-inner {
z-index: 20001;
width: 80px;
height: 80px;
border-radius: 80px;
margin-top: -40px;
margin-left: -40px;
background-color: rgba(0, 0, 0, 0);
border: 5px solid rgba(87, 113, 145, 0.9);
opacity: .9;
border-left: 5px solid rgba(0, 0, 0, 0);
border-right: 5px solid rgba(0, 0, 0, 0);
box-shadow: 0 0 15px #577191;
-moz-animation: spinoffPulse 5s infinite linear;
-webkit-animation: spinoffPulse 5s infinite linear;
}
.splash-screen-text {
z-index: 20002;
width: 100px;
height: 100px;
line-height: 100px;
margin-top: -50px;
margin-left: -50px;
font-family: Verdana, Geneva, sans-serif;
font-size: 13px;
text-align: center;
text-shadow: 1px 1px #cccccc;
vertical-align: middle;
color: #002951;
}
@-moz-keyframes spinPulse {
0% {
-moz-transform: rotate(160deg);
opacity: 0;
box-shadow: 0 0 1px #577191;
}
50% {
-moz-transform: rotate(145deg);
opacity: 1;
}
100% {
-moz-transform: rotate(-320deg);
opacity: 0;
}
}
@-moz-keyframes spinoffPulse {
0% {
-moz-transform: rotate(0deg);
}
100% {
-moz-transform: rotate(360deg);
}
}
@-webkit-keyframes spinPulse {
0% {
-webkit-transform: rotate(160deg);
opacity: 0;
box-shadow: 0 0 1px #577191;
}
50% {
-webkit-transform: rotate(145deg);
opacity: 1;
}
100% {
-webkit-transform: rotate(-320deg);
opacity: 0;
}
}
@-webkit-keyframes spinoffPulse {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
.loader,
.loader:before,
.loader:after {
background: #8ca6ff;
-webkit-animation: load1 1s infinite ease-in-out;
animation: load1 1s infinite ease-in-out;
width: 1em;
height: 4em;
}
.loader:before,
.loader:after {
position: absolute;
top: 0;
content: '';
}
.loader:before {
left: -1.5em;
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.loader {
color: #8ca6ff;
text-indent: -9999em;
font-size: 11px;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
position: absolute;
top: 5em;
left: 13em;
z-index: 1000;
}
.loader:after {
left: 1.5em;
}
@-webkit-keyframes load1 {
0%,
80%,
100% {
box-shadow: 0 0;
height: 2.5em;
}
40% {
box-shadow: 0 -1em;
height: 3em;
}
}
@keyframes load1 {
0%,
80%,
100% {
box-shadow: 0 0;
height: 2.5em;
}
40% {
box-shadow: 0 -1em;
height: 3em;
}
}
#resetZoom {
position: absolute;
right: 50%;
top: 20px;
z-index: 10;
cursor: pointer
}
#edit {
position: absolute;
right: 20px;
top: 10px;
z-index: 10;
cursor: pointer;
opacity: 0.4;
}
.data-point-label {
text-align: center;
overflow: visible;
white-space: nowrap;
}
</style>
</head>
<body style="margin: 0">
<div id="chart_container">
<div id="server-disconnect">
<div class="splash-screen-text">...</div>
<div class="splash-screen-circle-outer"></div>
<div class="splash-screen-circle-inner"></div>
</div>
<div id="no-connection"
style="position: absolute; left: 50%; top: 50%; display: none; font-size: 3em; background: rgba(0, 0, 0, 0.1); border-radius: 10px; text-align: center">
No connection to server
</div>
<div id="chart_placeholder" class="chart-placeholder"></div>
<div id="title" style="position:absolute"></div>
</div>
<div id="edit" style="display: none">
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"></path>
<path d="M0 0h24v24H0z" fill="none"></path>
</svg>
</div>
<svg style="display: none" title="Reset zoom" id="resetZoom" height='35' width='35' fill="#000000" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 126.308 118.728" enable-background="new 0 0 126.308 118.728" xml:space="preserve">
<path fill="#DDDDDD" d="M123.962,99.037c-0.082-0.076-0.172-0.116-0.246-0.181L100.929,76.46l-5.749-5.648c5.875-12.929,5.905-28.35-1.279-41.82 C81.632,6.015,52.957-2.707,29.979,9.555c-0.486,0.257-0.944,0.549-1.418,0.826c-7.41,4.288-13.254,10.305-17.261,17.284 c-2.663-1.367-4.591-2.553-4.868-2.73c0.261,0.17,0.083,0.008-0.245-0.225c-0.237-0.198-0.505-0.352-0.798-0.482 c-0.11-0.056-0.229-0.103-0.324-0.135c-0.253-0.079-0.514-0.11-0.767-0.118c-0.063-0.008-0.11-0.004-0.182-0.004 c-0.221,0.004-0.442,0.027-0.656,0.075c-0.024,0.008-0.047,0.008-0.071,0.016c-1.035,0.257-1.92,1.027-2.256,2.134 c-0.13,0.407-0.154,0.822-0.118,1.225c0,0-0.012,0.012-0.004,0.016c0,0,0,0,0,0.008c0.008,0.355,0.047,0.735,0.142,1.138 L5.259,46.24l1.284,5.544l1.142,4.892l0.367,1.572c0.751,3.265,3.375,4.062,5.825,1.771l5.469-5.109l1.549-1.454l3.563-3.331 l10.954-10.246l0.707-0.66c0.083-0.079,0.139-0.158,0.209-0.237l0.459-0.451l-0.032-0.008c0.285-0.324,0.53-0.695,0.664-1.13 c0.036-0.115,0.048-0.229,0.071-0.34c0.213-0.846,0.047-1.651-0.482-2.331c-0.391-0.581-0.964-1.043-1.684-1.261 c0,0-4.259,0.296-10.384-0.929c1.415-2.062,3.066-3.975,4.947-5.702c1.999-1.829,4.252-3.449,6.749-4.781 c4.687-2.497,9.705-3.746,14.676-3.872c12.131-0.312,24.001,6.069,30.094,17.485c7.713,14.462,3.564,32.133-9.033,41.802 c-0.438,0.332-0.877,0.66-1.327,0.973c-0.174,0.118-0.348,0.236-0.521,0.352c-0.11,0.079-0.229,0.15-0.348,0.225 c-0.593,0.384-1.21,0.735-1.834,1.087c-9.049,4.991-20.302,5.698-30.315,0.894c-1.304-0.629-2.545-1.344-3.73-2.118 c-0.34-0.222-0.684-0.45-1.019-0.688c-0.245-0.079-0.498-0.135-0.771-0.135c-0.447,0.008-0.857,0.139-1.209,0.355l-0.455,0.36 l-7.239,5.643l-0.829,0.644c-0.34,0.411-0.546,0.929-0.546,1.506c0.008,0.485,0.158,0.937,0.411,1.312 c0.355,0.289,0.719,0.577,1.083,0.857c2.505,1.917,5.231,3.611,8.183,5.026c10.437,5.011,21.809,5.82,32.225,3.13 c0.031,0,0.063,0.016,0.103,0.016c0.442-0.119,0.89-0.237,1.328-0.363c3.026-0.886,6.006-2.079,8.898-3.62 c1.165-0.624,2.284-1.3,3.382-2.007c0.15-0.095,0.305-0.189,0.455-0.289c0.32-0.209,0.628-0.431,0.944-0.644 c0.11-0.078,0.216-0.156,0.325-0.232l4.841,4.768l22.066,21.671c0.049,0.05,0.09,0.134,0.14,0.189 c3.776,3.76,10.697,2.926,15.472-1.867C126.878,109.723,127.713,102.788,123.962,99.037z"></path>
</svg>
<div class="loader" style="display: none"></div>
<script src="js/flot.js"></script>
</body>
+798
View File
@@ -0,0 +1,798 @@
//options: {
// chartId:
// titleId:
// tooltipId:
// cbOnZoom:
// }
function CustomChart(options, config, seriesData, markLines, ticks) {
'use strict';
if (!(this instanceof CustomChart)) return new CustomChart(options, config, seriesData, markLines, ticks);
this.chart = null;
this.config = config;
this.options = options;
var that = this;
var series;
var markingsOffset = 0;
var settings;
var backgrounds = [
['#8e9eab', '#eef2f3'], // Portrait
['#517fa4', '#243949'], // Instagram
['#485563', '#29323c'], // ServQuick
['#abbaab', '#00ffff'], // Metallic Toad
['#ECE9E6', '#00ffff'], // Clouds
['#16222A', '#3A6073'], // Mirage
['#1F1C2C', '#928DAB'], // Steel Gray
['#003973', '#E5E5BE'], // Horizon
['#D1913C', '#FFD194'], // Koko Caramel
['#136a8a', '#267871'] // Turquoise flow
];
function _yFormatter(y, line) {
if (typeof y === 'boolean') return '' + y;
var unit = that.config.l[line].unit ? ' ' + that.config.l[line].unit : '';
if (that.config.l[line].afterComma !== undefined && that.config.l[line].afterComma !== null) {
y = parseFloat(y);
if (that.config.useComma) {
return y.toFixed(that.config.l[line].afterComma).toString().replace('.', ',') + unit;
} else {
return y.toFixed(that.config.l[line].afterComma) + unit;
}
} else {
if (that.config.useComma) {
y = parseFloat(y);
return y.toString().replace('.', ',') + unit;
} else {
return y + unit;
}
}
}
function _tickXFormatter(number, object) {
if (ticks) return ' ';
var now = new Date(parseInt(number, 10));
if (that.config.timeFormatDate && that.config.timeFormatTime) {
if (!object.ticks.length) {
return '<b><i>' + $.plot.formatDate(now, that.config.timeFormatDate, months[systemLang], days[systemLang]) + '</i></b>';
}
var d = new Date(object.ticks[object.ticks.length - 1].v);
if (d.getDate() !== now.getDate()) {
return '<b><i>' + $.plot.formatDate(now, that.config.timeFormatDate, months[systemLang], days[systemLang]) + '</i></b>';
}
return $.plot.formatDate(now, that.config.timeFormatTime, months[systemLang], days[systemLang]);
} else {
return $.plot.formatDate(now, that.config.timeFormat, months[systemLang], days[systemLang]);
}
}
function _tickYFormatter(number, object) {
// If tickDecimals was specified, ensure that we have exactly that
// much precision; otherwise default to the value's own precision.
var afterComma = that.config.l[object.n - 1].afterComma;
if (afterComma !== null && afterComma !== undefined) {
var factor = afterComma ? Math.pow(10, afterComma) : 1;
var formatted = (Math.round(number * factor) / factor).toString();
var decimal = formatted.indexOf('.');
var precision = decimal === -1 ? 0 : formatted.length - decimal - 1;
if (precision < afterComma) {
number = (precision ? formatted : formatted + '.') + factor.toString().substr(1, afterComma - precision);
} else {
number = formatted;
}
}
if (that.config.useComma) number = number.toString().replace('.', ',');
var unit = that.config.l[object.n - 1].unit;
return number + (unit ? (' ' + unit) : '');
}
function showLabels (animation) {
if (that.config.barLabels) {
setTimeout(function () {
var data = that.chart.getData();
for (var d = 0; d < data.length; d++) {
if (!that.config.l[d] || that.config.l[d].chartType !== 'bar') continue;
$.each(data[d].data, function (i, el) {
if (el[1] === null) return;
if (!i) return;
if (i === data[d].data.length - 1) return;
var o;
if (that.config.barLabels === 'topover') {
o = that.chart.pointOffset({x: el[0], y: el[1]});
o.top -= 20;
} else if (that.config.barLabels === 'topunder') {
o = that.chart.pointOffset({x: el[0], y: el[1]});
//o.top += 10;
} else if (that.config.barLabels === 'bottom') {
o = that.chart.pointOffset({x: el[0], y: 0});
o.top += 20;
} else {//if (that.config.barLabels === 'middle') {
o = that.chart.pointOffset({x: el[0], y: el[1] / 2});
}
$('<div class="data-point-label"><div style="width: 100%; margin-left: -50%;">' + _yFormatter(el[1], d) + '</div></div>').css({
position: 'absolute',
left: o.left,
top: o.top
}).appendTo(that.chart.getPlaceholder());
});
}
if (that.config.barFontSize || that.config.barFontColor) {
$('.data-point-label').css({
'font-size': that.config.barFontSize || undefined,
color: that.config.barFontColor || undefined
});
}
}, animation ? parseInt(animation) + 200 : 0);
}
if (markLines && markLines.length) {
setTimeout(function () {
var data = that.chart.getData();
var num = 0;
for (var m = 0; m < markLines.length; m++) {
if (markLines[m].d && data[markLines[m].l + markingsOffset]) {
var line = data[num].data;
var o;
var text;
if (markLines[m].p === 'l') {
o = that.chart.pointOffset({x: line[0][0], y: line[0][1], yaxis: data[markLines[m].l + markingsOffset].yaxis, xaxis: data[markLines[m].l + markingsOffset].xaxis});
o.top -= markLines[m].py;
text = markLines[m].d;
} else {//if (markLines[m].p === 'r') {
o = that.chart.pointOffset({x: line[1][0], y: line[1][1], yaxis: data[markLines[m].l + markingsOffset].yaxis, xaxis: data[markLines[m].l + markingsOffset].xaxis});
o.top -= markLines[m].py;
text = '<div style="width: 100%; margin-left: -100%; padding-right: 15px; white-space: nowrap">' + markLines[m].d + '</div>';
}
$('<div class="marklines-label" style="padding-left: 10px; white-space: nowrap">' + text + '</div>').css({
position: 'absolute',
left: o.left,
top: o.top,
'font-size': markLines[m].fs || undefined,
color: markLines[m].fc || undefined
}).appendTo(that.chart.getPlaceholder());
}
if (markLines[m].vl !== '' && markLines[m].vl !== null && markLines[m].vl !== undefined) {
num++;
}
num++;
}
}, animation ? parseInt(animation) + 200 : 0);
}
}
(function _constructor () {
series = [];
var smoothing = false;
var $title = $('#' + that.options.titleId);
if (that.config.title && !$title.html()) {
$title.html(that.config.titlePos ? decodeURI(that.config.title) : '');
if (that.config.titleColor) $title.css('color', that.config.titleColor);
if (that.config.titleSize) $title.css('font-size', that.config.titleSize);
if (that.config.titlePos) {
var parts = that.config.titlePos.split(';');
var css = {};
for (var t = 0; t < parts.length; t++) {
var p = parts[t].split(':');
// Bottom inside
if (p[0] === 'bottom' && p[1] == '5') {
if (that.config.height.indexOf('%') === -1) {
css.top = parseInt(that.config.height, 10) - $title.height() - 45;
} else {
css.top = 'calc(' + that.config.height + ' - ' + ($title.height() + 45) + 'px)';
}
} else // Bottom outside
if (p[0] === 'bottom' && p[1] == '-5') {
if (that.config.height.indexOf('%') === -1) {
css.top = parseInt(that.config.height, 10) + 5;
} else {
css.top = 'calc(' + that.config.height + ' + 5px)';
}
} else // Middle
if (p[0] === 'top' && p[1] == '50') {
if (that.config.height.indexOf('%') === -1) {
css.top = (parseInt(that.config.height, 10) - $title.height()) / 2;
} else {
css.top = 'calc(50% - ' + ($title.height() / 2) + 'px)';
}
} else // Center
if (p[0] === 'left' && p[1] == '50') {
if (that.config.width.indexOf('%') === -1) {
css.left = (parseInt(that.config.width, 10) - $title.width()) / 2;
} else {
css.left = 'calc(50% - ' + ($title.width() / 2) + 'px)';
}
} else // Right inside
if (p[0] === 'right' && p[1] == '5') {
if (that.config.width.indexOf('%') === -1) {
css.left = parseInt(that.config.width, 10) - $title.width() - 45;
} else {
css.left = 'calc(' + that.config.width + ' - ' + ($title.width() + 45) + 'px)';
}
} else // Right outside
if (p[0] === 'right' && p[1] == '-5') {
if (that.config.width.indexOf('%') === -1) {
css.left = parseInt(that.config.width, 10) + 25;
} else {
css.left = 'calc(' + that.config.width + ' + 5px)';
}
} else {
css[p[0]] = p[1];
}
}
$title.css(css);
}
}
// Replace background
if (that.config.bg && that.config.bg.length < 3 && backgrounds[that.config.bg]) that.config.bg = {colors: backgrounds[that.config.bg]};
markingsOffset = 0;
// draw horizontal lines
if (markLines && markLines.length) {
for (var m = 0; m < markLines.length; m++) {
markingsOffset++;
markLines[m].v = parseFloat(markLines[m].v) || 0; // value
markLines[m].l = parseInt(markLines[m].l) || 0; // line number
markLines[m].s = parseFloat(markLines[m].s) || 0; // shadow size
markLines[m].t = parseFloat(markLines[m].t) || 0; // line width
markLines[m].py = parseFloat(markLines[m].py) || 0; // y offset of label
series.push({
id: 'line' + m,
xaxis: {show: false},
color: markLines[m].c || undefined,
lines: {
show: true,
fill: markLines[m].f === '1' || markLines[m].f === 1 || markLines[m].f === 'true' || markLines[m].f === true,
steps: true,
lineWidth: markLines[m].t
},
data: [[0, markLines[m].v], [100, markLines[m].v]],
label: '__hide_me__',
shadowSize: markLines[m].s
});
// if lower value set
if (markLines[m].vl !== '' && markLines[m].vl !== null && markLines[m].vl !== undefined) {
markingsOffset++;
markLines[m].vl = parseFloat(markLines[m].vl) || 0;
series.push({
xaxis: {show: false},
color: markLines[m].c || undefined,
lines: {
show: true,
fill: true,
steps: true,
lineWidth: markLines[m].t
},
data: [[0, markLines[m].vl], [100, markLines[m].vl]],
fillBetween: 'line' + m,
label: '__hide_me__',
shadowSize: markLines[m].s
});
}
}
}
//todo make bar working
// if (that.config.renderer !== 'bar' || that.config._ids.length <= 1) {
var xMin = Infinity;
var xMax = 0;
for (var i = 0; i < seriesData.length; i++) {
if (seriesData[i] && that.config.l[i]) {
that.config.l[i].chartType = that.config.l[i].chartType || that.config.chartType || 'line';
that.config.l[i].dashes = that.config.l[i].dashes === true || that.config.l[i].dashes === 'true';
that.config.l[i].dashLength = parseFloat(that.config.l[i].dashLength) || 10;
that.config.l[i].spaceLength = parseFloat(that.config.l[i].spaceLength) || 10;
var isLine = that.config.l[i].chartType !== 'scatterplot' && that.config.l[i].chartType !== 'bar' && that.config.l[i].chartType !== 'spline';
var option = {
color: that.config.l[i].color || undefined,
lines: {
show: (!that.config.l[i].dashes && isLine),
fill: (that.config.l[i].fill && that.config.l[i].fill !== '0') ? parseFloat(that.config.l[i].fill) : (that.config.l[i].chartType === 'area' || that.config.l[i].chartType === 'bar'),
steps: (that.config.l[i].chartType === 'steps'),
lineWidth: that.config.l[i].thickness
},
splines: {
show: (that.config.l[i].chartType === 'spline'),
tension: 0.5, //(float between 0 and 1, defaults to 0.5),
lineWidth: that.config.l[i].thickness,
fill: (that.config.l[i].fill && that.config.l[i].fill !== '0') ? parseFloat(that.config.l[i].fill) : false //(float between 0 .. 1 or false, as in flot documentation)
},
bars: {
show: (that.config.l[i].chartType === 'bar'),
order: i + 1,
barWidth: 0.6,
lineWidth: that.config.l[i].thickness,
fill: (that.config.l[i].fill && that.config.l[i].fill !== '0') ? parseFloat(that.config.l[i].fill) : false,
fillColor: that.config.barColor || undefined,
align: 'center'
},
points: {
show: (that.config.l[i].chartType === 'lineplot' || that.config.l[i].chartType === 'scatterplot' || that.config.l[i].points === 'true' || that.config.l[i].points === true)
},
data: seriesData[i],
label: that.config.l[i].name,
shadowSize: that.config.l[i].shadowsize,
dashes: {
show: that.config.l[i].dashes && isLine,
lineWidth: that.config.l[i].thickness,
dashLength: [that.config.l[i].dashLength, that.config.l[i].spaceLength]
}
};
if ((that.config.smoothing && that.config.smoothing > 0) || (that.config.l[i].smoothing && that.config.l[i].smoothing > 0)) {
smoothing = true;
that.config.l[i].smoothing = parseInt(that.config.l[i].smoothing || that.config.smoothing);
option.data = avg(option.data, that.config.l[i].smoothing);
} else {
that.config.l[i].smoothing = 0;
}
that.config.l[i].afterComma = (that.config.l[i].afterComma === undefined || that.config.l[i].afterComma === '') ? that.config.afterComma : parseInt(that.config.l[i].afterComma, 10);
if (that.config.l[i].chartType === 'bar') {
option.bars.barWidth = (option.data[option.data.length - 1][0] - option.data[0][0]) / option.data.length * (parseFloat(that.config.barWidth) || 0.5);
}
/*
if (that.config.l[i].chartType === 'pie') {
series.legend = {
show: !!that.config.legend,
position: that.config.legend
};
} else if (that.config.l[i].chartType === 'bar') {
var series = {
series: {
bars: {
show: that.config.l[i].chartType === 'bar',
barWidth: 0.6,
align: "center"
},
pie: {
show: that.config.l[i].chartType === 'pie'
},
legend: {
show: !!that.config.legend,
position: that.config.legend
}
}
};
*/
series.push(option);
if (seriesData[i][0][0] < xMin) xMin = seriesData[i][0][0];
if (seriesData[i][seriesData[i].length - 1][0] > xMax) xMax = seriesData[i][seriesData[i].length - 1][0];
}
}
if (that.config.min === null || that.config.min === undefined || that.config.min === '' || that.config.min.toString() === 'NaN') {
that.config.min = undefined;
} else {
that.config.min = parseFloat(that.config.min);
}
if (that.config.noBorder) {
if (!that.config.width) that.config.width = '100%';
if (!that.config.height) that.config.height = '100%';
if (that.config.width.indexOf('%') !== -1) {
$('#chart_container').css({width: 'calc(' + that.config.width + ' - 20px)'}); // original 20px
} else {
$('#chart_container').css({width: that.config.width});
}
if (that.config.height.indexOf('%') !== -1) {
$('#chart_container').css({height: 'calc(' + that.config.height + ' - 20px)'});// original 20px
} else {
$('#chart_container').css({height: that.config.height});
}
} else {
$('#chart_container').addClass('chart-container').css({width: that.config.width, height: that.config.height});
// $('#chart_container').css({'padding-bottom':"100px"})
}
if (that.config.timeFormat === 'null') that.config.timeFormat = undefined;
if (that.config.timeFormat) {
if (that.config.timeFormat.indexOf('%H:%M:%S') !== -1) {
that.config.timeFormatTime = '%H:%M:%S';
} else if (that.config.timeFormat.indexOf('%I:%M:%S') !== -1) {
that.config.timeFormatTime = '%I:%M:%S';
} else if (that.config.timeFormat.indexOf('%H:%M.') !== -1) {
that.config.timeFormatTime = '%H:%M.';
} else if (that.config.timeFormat.indexOf('%H:%M') !== -1) {
that.config.timeFormatTime = '%H:%M';
} else {
that.config.timeFormatTime = null;
}
if (that.config.timeFormat.indexOf('%d.%m.%y') !== -1) {
that.config.timeFormatDate = '%d.%m.%y';
} else if (that.config.timeFormat.indexOf('%x %p') !== -1) {
that.config.timeFormatDate = '%x %p';
} else if (that.config.timeFormat.indexOf('%d/%m/%y') !== -1) {
that.config.timeFormatDate = '%d/%m/%y';
} else if (that.config.timeFormat.indexOf('%m.%d.%y') !== -1) {
that.config.timeFormatDate = '%m.%d.%y';
} else if (that.config.timeFormat.indexOf('%d.%m') !== -1) {
that.config.timeFormatDate = '%d.%m';
} else if (that.config.timeFormat.indexOf('%a') !== -1) {
that.config.timeFormatDate = '%a';
} else {
that.config.timeFormatDate = null;
}
}
settings = {
grid: {
hoverable: (that.config.hoverDetail === 'true' || that.config.hoverDetail === true),
backgroundColor: that.config.bg || undefined,
borderWidth: (!that.config.border_width && that.config.border_width !== '0' && that.config.border_width !== 0) ? undefined : parseInt(that.config.border_width, 10),
borderColor: that.config.border_color || undefined
},
yaxes: [],
xaxes: [],
legend: {
show: !!that.config.legend,
position: that.config.legend,
hideable: true,
noColumns: parseInt(that.config.legColumns, 10) || undefined,
backgroundColor: that.config.legBg || undefined,
backgroundOpacity: that.config.legBgOpacity !== undefined ? parseFloat(that.config.legBgOpacity) : 0.85,
labelFormatter: function (label, series) {
if (label === '__hide_me__') return null;
return '<span class="graphlabel">' + label + '</span>';
}
}
};
if (that.config.zoom) {
settings.zoom = {
interactive: true,
trigger: 'dblclick', // or "click" for single click
amount: 1.5 // 2 = 200% (zoom in), 0.5 = 50% (zoom out)
};
settings.pan = {
interactive: true,
cursor: 'move', // CSS mouse cursor value used when dragging, e.g. "pointer"
frameRate: 20
};
}
var steps = that.config.animation < 1000 ? 20 : 50;
var ii;
for (ii = 0; ii < that.config.l.length; ii++) {
that.config.l[ii].yaxe = that.config.l[ii].yaxe || '';
that.config.l[ii].xaxe = that.config.l[ii].xaxe || '';
that.config.l[ii].commonYAxis = that.config.l[ii].commonYAxis || '';
var yaxi = {
show: that.config.l[ii].yaxe !== 'off',
min: (that.config.l[ii].min !== '' && that.config.l[ii].min !== null && that.config.l[ii].min !== undefined) ? parseFloat(that.config.l[ii].min) : undefined,
max: (that.config.l[ii].max !== '' && that.config.l[ii].max !== null && that.config.l[ii].max !== undefined) ? parseFloat(that.config.l[ii].max) : undefined,
position: that.config.l[ii].yaxe.indexOf('left') > -1 ? 'left' : 'right',
font: {
color: that.config.l[ii].yaxe.indexOf('Color') > -1 ? that.config.l[ii].color : (that.config.y_labels_color || 'black')
},
zoomRange: false, // or [ number, number ] (min range, max range) or false
panRange: false, // or [ number, number ] (min, max) or false
// to do
/*{
size: 11,
lineHeight: 13,
style: "italic",
weight: "bold",
family: "sans-serif",
variant: "small-caps",
color: "#545454"
}*/
ticks: parseInt(that.config.l[ii].yticks, 10) || undefined,
tickColor: that.config.grid_color || undefined,
tickFormatter: _tickYFormatter
};
var xaxi = {
show: that.config.l[ii].xaxe !== 'off',
position: that.config.l[ii].xaxe.indexOf('top') !== -1 ? 'top' : 'bottom',
font: {
color: that.config.l[ii].xaxe.indexOf('Color') !== -1 ? that.config.l[ii].color : (that.config.x_labels_color || 'black')
},
zoomRange: null, // or [ number, number ] (min range, max range) or false
panRange: null, // or [ number, number ] (min, max) or false
mode: 'time',
//timeformat: that.config.timeFormat,
//timezone: "browser",
tickFormatter: that.config.timeFormat ? _tickXFormatter : null,
minTickSize: (that.config.l[ii].chartType === 'bar') ? series[ii + markingsOffset].bars.barWidth : undefined,
tickColor: that.config.grid_color || undefined,
ticks: parseInt(that.config.l[ii].xticks, 10) || undefined,
min: undefined,
max: undefined
};
// prepare for bar
if (that.config.l[ii].chartType === 'bar') {
settings.legend.hideable = false;
xaxi.ticks = [];
for (var m = 0; m < seriesData[ii].length; m++) {
xaxi.ticks.push(seriesData[ii][m][0]);
// Normally first and last points are invalid
}
seriesData[ii][0][1] = null;
seriesData[ii][seriesData[ii].length - 1][1] = null;
} else if (ticks) {
xaxi.ticks = ticks;
}
if (that.config.zoom) {
var now = new Date();
xaxi.zoomRange = [null, now.getTime()]; // or [ number, number] (min range, max range) or false
xaxi.panRange = [null, now.getTime()]; // or [ number, number] (min range, max range) or false
}
settings.yaxes.push(yaxi);
settings.xaxes.push(xaxi);
// Support for commonYAxis
if (that.config.l[ii].commonYAxis !== '') {
series[ii + markingsOffset].yaxis = parseInt(that.config.l[ii].commonYAxis);
} else {
series[ii + markingsOffset].yaxis = ii + 1;
}
series[ii + markingsOffset].xaxis = ii + 1;
series[ii + markingsOffset].curvedLines = {
apply: !!that.config.l[ii].smoothing,
active: !!that.config.l[ii].smoothing,
monotonicFit: true
};
}
// set yaxis
if (markLines && markLines.length) {
var num = 0;
for (var mm = 0; mm < markLines.length; mm++) {
if (series[markLines[mm].l + markingsOffset]) {
markLines[mm].l = parseInt(markLines[mm].l, 10);
series[num].yaxis = series[markLines[mm].l + markingsOffset].yaxis;
series[num].data[0][0] = xMin;
series[num].data[1][0] = xMax;
num++;
// if lower value set
if (markLines[mm].vl !== '' && markLines[mm].vl !== null && markLines[mm].vl !== undefined) {
series[num].yaxis = series[markLines[mm].l + markingsOffset].yaxis;
series[num].data[0][0] = xMin;
series[num].data[1][0] = xMax;
num++;
}
}
}
}
if (smoothing) {
settings.series = settings.series || {};
settings.series.curvedLines = {
apply: true,
active: true,
monotonicFit: true
};
}
if (that.config.animation) {
settings.series = settings.series || {};
settings.series.grow = {
active: true,
steps: steps,
stepDelay: that.config.animation / steps
};
}
// hiddengraphs overload the labelFormatter, so we should overload the hiddengraphs
$.plot.plugins.push({
init: function (plot) {
plot.hooks.processOptions.push(function checkOptions(plot, options) {
if (!options.legend.hideable) {
return;
}
options.legend.labelFormatter = function(label, series) {
if (label === '__hide_me__') return null;
return '<span class="graphlabel">' + label + '</span>';
};
});
},
options: options,
name: 'hiddenGraphsEx',
version: '1.0'
});
that.chart = $.plot('#' + that.options.chartId, series, settings);
showLabels(that.config.animation);
var $div = $('#' + that.options.chartId);
that.options.tooltipId = that.options.tooltipId || 'tooltip';
// Hoover
if (that.config.hoverDetail === 'true' || that.config.hoverDetail === true) {
$div.unbind('plothover').bind('plothover', function (event, pos, item) {
if (item) {
var x = item.datapoint[0].toFixed(2);
var y;
if (that.config.l[item.seriesIndex - markingsOffset].type === 'boolean') {
y = !!Math.round(item.datapoint[1] - that.config.l[item.seriesIndex - markingsOffset].yOffset);
} else {
y = (item.datapoint[1] - that.config.l[item.seriesIndex - markingsOffset].yOffset).toFixed(2);
}
var text = item.series.label ? item.series.label + '<br>' : '';
text += $.plot.formatDate(new Date(parseInt(x, 10)), that.config.timeFormat) + '<br>';
text += '<b>' + _yFormatter(y, item.seriesIndex - markingsOffset) + '</b>';
var $tooltip = $('#' + that.options.tooltipId).html(text);
if ($(this).height() - item.pageY < $tooltip.height()) {
item.pageY -= 10 + $tooltip.height();
}
if ($(this).width() - item.pageX < $tooltip.width()) {
item.pageX -= 10 + $tooltip.width();
}
$tooltip.css({top: item.pageY + 5, left: item.pageX + 5}).fadeIn(200);
} else {
$('#tooltip').hide();
}
});
if (!$('#' + that.options.tooltipId).length) {
$('<div id="' + that.options.tooltipId + '"></div>').css({
position: 'absolute',
display: 'none',
border: '1px solid #fdd',
padding: '2px',
'background-color': '#fee',
opacity: 0.80
}).appendTo('body');
}
}
if (that.config.zoom && that.options.cbOnZoom) {
$div.unbind('plotzoom').bind('plotzoom', function (e, plot, args) {
if (that.zoomTimeout) clearTimeout(that.zoomTimeout);
that.zoomTimeout = setTimeout(that.options.cbOnZoom, 500);
}).unbind('plotpan').bind('plotpan', function (e, plot, args) {
if (that.zoomTimeout) clearTimeout(that.zoomTimeout);
that.zoomTimeout = setTimeout(that.options.cbOnZoom, 500);
})
}
})();
this.update = function (newSeriesData, newMarkingsData, newTicks) {
if (newSeriesData) {
var xMin = Infinity;
var xMax = 0;
for (var index = 0; index < config.l.length; index++) {
series[index + markingsOffset].data = newSeriesData[index];
if (newSeriesData[index][0][0] < xMin) xMin = newSeriesData[index][0][0];
if (newSeriesData[index][newSeriesData[index].length - 1][0] > xMax) xMax = newSeriesData[index][newSeriesData[index].length - 1][0];
// prepare for bar
if (config.l[index].chartType === 'bar') {
settings.xaxes[index].ticks = [];
for (var m = 0; m < newSeriesData[index].length; m++) {
settings.xaxes[index].ticks.push(newSeriesData[index][m][0]);
}
// Normally first and last points are invalid
newSeriesData[index][0][1] = null;
newSeriesData[index][newSeriesData[index].length - 1][1] = null;
}
}
// update xmin and xmax
if (markLines && markLines.length) {
var num_ = 0;
for (var m = 0; m < markLines.length; m++) {
series[num_].data[0][0] = xMin;
series[num_].data[1][0] = xMax;
num_++;
// if lower value set
if (markLines[m].vl !== '' && markLines[m].vl !== null && markLines[m].vl !== undefined) {
series[num_].data[0][0] = xMin;
series[num_].data[1][0] = xMax;
num_++;
}
}
}
$('.data-point-label').remove();
$('.marklines-label').remove();
if (settings.series && settings.series.grow) settings.series.grow.active = false;
}
if (newMarkingsData) {
if (newMarkingsData && newMarkingsData.length) {
var num = 0;
for (var mm = 0; mm < newMarkingsData.length; mm++) {
series[num].data[0][1] = newMarkingsData[mm].v;
series[num].data[1][1] = newMarkingsData[mm].v;
num++;
// if lower value set
if (newMarkingsData[mm].vl !== '' && newMarkingsData[mm].vl !== null && newMarkingsData[mm].vl !== undefined) {
series[num].data[0][1] = newMarkingsData[mm].vl;
series[num].data[1][1] = newMarkingsData[mm].vl;
num++;
}
}
}
}
this.chart = $.plot('#' + this.options.chartId, series, settings);
showLabels(false);
};
this.getRange = function () {
var opt = this.chart.getOptions();
var result = [];
for (var index = 0; index < opt.xaxes.length; index++) {
result[index] = {
min: Math.round(opt.xaxes[index].min),
max: Math.round(opt.xaxes[index].max)
};
settings.xaxes[index].max = result[index].max;
settings.xaxes[index].min = result[index].min;
}
return result;
};
this.setRange = function (minMaxArr) {
for (var index = 0; index < settings.xaxes.length; index++) {
settings.xaxes[index].min = minMaxArr[index].min;
settings.xaxes[index].max = minMaxArr[index].max;
}
};
this.resetZoom = function (time) {
time = time || new Date();
for (var index = 0; index < settings.xaxes.length; index++) {
settings.xaxes[index].zoomRange = [null, time.getTime()];
settings.xaxes[index].panRange = [null, time.getTime()];
}
};
this.zoom = function (positionX, amount) {
var offset = this.chart.offset();
this.chart.zoom({
center: {
left: positionX - offset.left,
height: this.chart.height() / 2
},
amount: amount
});
};
this.pan = function (positionX) {
this.chart.pan({left: positionX, top: 0});
};
return this;
}
+850
View File
@@ -0,0 +1,850 @@
'use strict';
// Show "no connection" message after 5 seconds
var disconnectTimeout = setTimeout(function () {
disconnectTimeout = null;
//Show disconnected message
$('#no-connection').show();
}, 5000);
var sessionId = 1;
// Analyse query
var path = location.href.split('?')[1];
var systemLang = 'en';
if (typeof sysLang !== 'undefined') {
systemLang = sysLang || 'en';
}
// convert old format to new one
// OLD: http://localhost:8082/flot/index.html?range=1440&renderer=line&axeX=l&axeY=inside&_ids=system.adapter.admin.0.memRss%2Csystem.adapter.email.0.memRss&_colors=%23c05020%3B%2330c020%3B%236060c0
// NEW: http://localhost:8082/flot/index.html?l%5B0%5D%5Bid%5D=system.adapter.admin.0.memRss&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Baggregate%5D=average&l%5B0%5D%5Bcolor%5D=%23FF0000&l%5B0%5D%5Bthickness%5D=3&l%5B1%5D%5Bid%5D=system.adapter.email.0.memRss&l%5B1%5D%5Boffset%5D=0&l%5B1%5D%5Bart%5D=average&l%5B1%5D%5Bcolor%5D=%2300FF00&l%5B1%5D%5Bthickness%5D=3&timeType=relative&relativeEnd=now&range=10&aggregateType=step&aggregateSpan=300&legend=sw
// OLD =>
//{
// _colors: "#c05020;#30c020;#6060c0"
// _ids: "system.adapter.admin.0.memRss,system.adapter.email.0.memRss"
// axeX: "lines"
// axeY: "inside"
// range: "1440"
// renderer: "line"
//}
// NEW =>
//{
// "l" : [
// {
// "id" : "system.adapter.admin.0.memRss",
// "offset" : "0",
// "aggregate" : "minmax",
// "color" : "#FF0000",
// "thickness" : "3"
// }, {
// "id" : "system.adapter.email.0.memRss",
// "offset" : "0",
// "aggregate" : "minmax",
// "color" : "#00FF00",
// "thickness" : "3"
// }
// ],
// "timeType" : "relative",
// "relativeEnd" : "now",
// "range" : "10",
// "aggregateType" : "step",
// "aggregateSpan" : "300",
// "legend" : "sw //}
var config = deparam(path || '');
if (config.lines) {
config.l = JSON.parse(JSON.stringify(config.lines));
delete config.lines;
}
if (config._ids) {
var ids = config._ids ? config._ids.split(';') : [];
var colors = config._colors ? config._colors.split(';') : [];
var names = config._names ? config._names.split(';') : [];
var units = config._units ? config._units.split(';') : [];
config.l = [];
for (var i = 0; i < ids.length; i++) {
config.l.push({
id: ids[i],
offset: 0,
name: names[i] || '',
aggregate: 'onchange',
color: colors[i] || 'blue',
thickness: config.strokeWidth || 1,
shadowsize: config.strokeWidth || 1,
min: config.min || '',
max: config.max || '',
unit: units[i] || ''
});
}
config.aggregateType = 'step';
config.aggregateSpan = 300;
config.relativeEnd = 'now';
}
// convert art to aggregate
if (config.l) {
for (var j = 0; j < config.l.length; j++) {
if (config.l[j].art) {
config.l[j].aggregate = config.l[j].art;
delete config.l[j].art;
}
if (config.instance && !config.l[j].instance) {
config.l[j].instance = config.instance;
}
}
}
// Set default values
config.width = config.width || '100%';
config.height = config.height || '100%';
config.timeFormat = config.timeFormat || '%H:%M:%S %e.%m.%y';
config.useComma = config.useComma === 'true' || config.useComma === true;
config.zoom = config.zoom === 'true' || config.zoom === true;
config.animation = parseInt(config.animation) || 0;
config.noedit = config.noedit === 'true' || config.noedit === true;
config.afterComma = (config.afterComma === undefined) ? 2 : parseInt(config.afterComma, 10);
config.timeType = config.timeArt || config.timeType || 'relative';
// if ((config.max !== undefined && config.max !== '' && config.max !== null && parseFloat(config.max) != NaN)) config.max = parseFloat(config.max);
var seriesData = [];
var ticks = null;
var liveInterval;
var navOptions = {};
var socketURL = '';
var socketSESSION = '';
var now = new Date();
var divId = 'chart_placeholder';
// for zoom
var zoomTimeout = null;
var lastX = null;
var mouseDown = false;
var lastWidth = null;
var chart = null;
var isApp = false;
var subscribes = [];
var subscribed = false;
// because of security issue
try {
if ((window.top !== window.self) && (typeof window.top.app !== 'undefined') && (typeof window.top.socketUrl !== 'undefined')) {
isApp = true;
}
} catch (e) {
}
if (isApp) {
socketURL = window.top.socketUrl; // if flot runs in iframe inside the app use the socketURL determined by app.js
} else {
if (typeof socketUrl !== 'undefined') {
socketURL = socketUrl;
if (socketURL && socketURL[0] === ':') {
socketURL = location.protocol + '//' + location.hostname + socketURL;
}
socketSESSION = socketSession;
}
}
var socket = io.connect(socketURL, {
'query': 'key=' + socketSESSION,
'reconnection limit': 10000,
'max reconnection attempts': Infinity,
upgrade: typeof socketForceWebSockets !== 'undefined' ? !socketForceWebSockets : undefined,
rememberUpgrade: typeof socketForceWebSockets !== 'undefined' ? socketForceWebSockets : undefined,
transports: typeof socketForceWebSockets !== 'undefined' ? (socketForceWebSockets ? ['websocket'] : undefined) : undefined
});
socket.on('connect', function () {
if (disconnectTimeout) {
$('#no-connection').hide();
clearTimeout(disconnectTimeout);
disconnectTimeout = null;
}
setTimeout(function () {
socket.emit('name', 'flot');
}, 50);
setTimeout(function () {
readData();
}, 100);
});
socket.on('stateChange', function (id, state) {
if (!chart || !config || !config.m) return;
console.log(id + ' - ' + state.val);
for (var m = 0; m < config.m.length; m++) {
if (config.m[m].oid === id) {
config.m[m].v = parseFloat(state.val) || 0;
}
if (config.m[m].oidl === id) {
config.m[m].vl = parseFloat(state.val) || 0;
}
}
chart.update(null, config.m);
});
if (config.window_bg) $('body').css('background', config.window_bg);
socket.on('disconnect', function () {
if (!disconnectTimeout) {
disconnectTimeout = setTimeout(function () {
disconnectTimeout = null;
//Show disconnected message
$('#no-connection').show();
}, 5000);
}
});
function addTime(time, offset, plusOrMinus, isOffsetInMinutes) {
time = new Date(time);
if (typeof offset === 'string') {
if (offset[1] === 'm') {
offset = parseInt(offset, 10);
time.setMonth(plusOrMinus ? time.getMonth() + offset : time.getMonth() - offset);
time = time.getTime();
} else if (offset[1] === 'y') {
offset = parseInt(offset, 10);
time.setFullYear(plusOrMinus ? time.getFullYear() + offset : time.getFullYear() - offset);
time = time.getTime();
} else {
time = time.getTime();
if (isOffsetInMinutes) {
if (plusOrMinus) {
time += (parseInt(offset, 10) || 0) * 60000;
} else {
time -= (parseInt(offset, 10) || 0) * 60000;
}
} else {
if (plusOrMinus) {
time += (parseInt(offset, 10) || 0) * 1000;
} else {
time -= (parseInt(offset, 10) || 0) * 1000;
}
}
}
} else {
time = time.getTime();
if (isOffsetInMinutes) {
if (plusOrMinus) {
time += (parseInt(offset, 10) || 0) * 60000;
} else {
time -= (parseInt(offset, 10) || 0) * 60000;
}
} else {
if (plusOrMinus) {
time += (parseInt(offset, 10) || 0) * 1000;
} else {
time -= (parseInt(offset, 10) || 0) * 1000;
}
}
}
return time;
}
function getStartStop(index, step) {
var option = {};
var end;
var start;
var _now;
config.l[index].offset = config.l[index].offset || 0;
var isMonthRange = (config.range.indexOf('m') === -1) ? false : true;
// check config range
if (isMonthRange && config.l.length > 1) {
var monthRange = parseInt(config.range, 10) || 1;
for (var a = 0; a < config.l.length; a++) {
if (config.l[a].offset && config.l[a].offset !== 0) {
// Check what the month has first index
_now = addTime(now, config.l[0].offset);
var minusMonth = new Date(_now);
minusMonth.setMonth(minusMonth.getMonth() - monthRange);
config.range = Math.floor((_now - minusMonth.getTime()) / 60000) + '';
break;
}
}
}
if (config.zoomed) {
navOptions[index].end = config.l[index].zMax;
navOptions[index].start = config.l[index].zMin;
return navOptions[index];
} else {
if (!step) {
if (config.timeType === 'static') {
var startTime;
var endTime;
var y;
var m;
if (config.start_time !== undefined) {
startTime = config.start_time.split(':').map(Number);
} else {
startTime = [0, 0];
}
if (config.end_time !== undefined) {
endTime = config.end_time.split(':').map(Number);
} else {
endTime = [24, 0];
}
// offset is in seconds
start = new Date(config.start).setHours(startTime[0], startTime[1]);
end = new Date(config.end) .setHours(endTime[0], endTime[1]);
start = addTime(start, config.l[index].offset);
end = addTime(end, config.l[index].offset);
} else {
if (config.relativeEnd === 'now') {
_now = new Date(now);
} else if (config.relativeEnd.indexOf('minute') !== -1) {
var minutes = parseInt(config.relativeEnd, 10) || 1;
_now = new Date(now);
_now.setMinutes(Math.floor(_now.getMinutes() / minutes) * minutes + minutes);
_now.setSeconds(0);
_now.setMilliseconds(0);
} else if (config.relativeEnd.indexOf('hour') !== -1) {
var hours = parseInt(config.relativeEnd, 10) || 1;
_now = new Date(now);
_now.setHours(Math.floor(_now.getHours() / hours) * hours + hours);
_now.setMinutes(0);
_now.setSeconds(0);
_now.setMilliseconds(0);
} else if (config.relativeEnd === 'today') {
_now = new Date(now);
_now.setDate(_now.getDate() + 1);
_now.setHours(0);
_now.setMinutes(0);
_now.setSeconds(0);
_now.setMilliseconds(0);
} else if (config.relativeEnd === 'weekUsa') {
//var week = parseInt(config.relativeEnd, 10) || 1;
_now = new Date(now);
_now.setDate(_now.getDate() - _now.getDay() + 7);
_now.setHours(0);
_now.setMinutes(0);
_now.setSeconds(0);
_now.setMilliseconds(0);
} else if (config.relativeEnd === 'weekEurope') {
//var _week = parseInt(config.relativeEnd, 10) || 1;
_now = new Date(now);
// If
if (_now.getDay() === 0) {
_now.setDate(_now.getDate() + 1);
} else {
_now.setDate(_now.getDate() - _now.getDay() + 8);
}
_now.setHours(0);
_now.setMinutes(0);
_now.setSeconds(0);
_now.setMilliseconds(0);
} else if (config.relativeEnd === 'month') {
_now = new Date(now);
_now.setMonth(_now.getMonth() + 1);
_now.setDate(1);
_now.setHours(0);
_now.setMinutes(0);
_now.setSeconds(0);
_now.setMilliseconds(0);
} else if (config.relativeEnd === 'year') {
_now = new Date(now);
_now.setFullYear(_now.getFullYear() + 1);
_now.setMonth(0);
_now.setDate(1);
_now.setHours(0);
_now.setMinutes(0);
_now.setSeconds(0);
_now.setMilliseconds(0);
}
end = addTime(_now, config.l[index].offset);
start = addTime(end, config.range, false, true);
}
option = {
start: start,
end: end,
ignoreNull: (config.l[index].ignoreNull === undefined) ? config.ignoreNull : config.l[index].ignoreNull,
aggregate: config.l[index].aggregate || config.aggregate || 'minmax'
};
if (config.aggregateType === 'step') {
option.step = config.aggregateSpan * 1000;
} else if (config.aggregateType === 'count') {
option.count = config.aggregateSpan || (document.getElementById('chart_container').clientWidth / 10);
}
navOptions[index] = option;
return option;
} else {
end = addTime(now, config.l[index].offset);
start = end - step;
option = {
start: start,
end: end,
ignoreNull: (config.l[index].ignoreNull === undefined) ? config.ignoreNull : config.l[index].ignoreNull,
aggregate: config.l[index].aggregate || config.aggregate || 'minmax',
count: 1
};
navOptions[index].end = end;
navOptions[index].start = addTime(end, config.range, false, true);
return option;
}
}
}
function readOneChart(id, instance, index, callback) {
var option = getStartStop(index);
option.instance = instance;
option.sessionId = sessionId;
config.l[index].yOffset = parseFloat(config.l[index].yOffset) || 0;
//console.log(JSON.stringify(option));
console.log(new Date(option.start) + ' - ' + new Date(option.end));
socket.emit('getHistory', id, option, function (err, res, stepIgnore, _sessionId) {
if (err) console.error(err);
if (sessionId && _sessionId && _sessionId !== sessionId) {
console.warn('Ignore request with sessionId=' + _sessionId + ', actual is ' + sessionId);
return;
}
if (!err && res) {
//option.ignoreNull = (config.l[index].ignoreNull === undefined) ? (config.ignoreNull === 'true' || config.ignoreNull === true) : (config.l[index].ignoreNull === 'true' || config.l[index].ignoreNull === true);
option.yOffset = config.l[index].yOffset;
var _series = seriesData[index];
for (var i = 0; i < res.length; i++) {
// if less 2000.01.01 00:00:00
if (res[i].ts < 946681200000) res[i].ts = res[i].ts * 1000;
// Convert boolean values to numbers
if (res[i].val === 'true' || res[i].val === true) {
res[i].val = 1;
} else if (res[i].val === 'false' || res[i].val === false) {
res[i].val = 0;
}
if (typeof res[i].val === 'string') res[i].val = parseFloat(res[i].val);
_series.push([res[i].ts, res[i].val !== null ? res[i].val + option.yOffset : null]);
}
// add start and end
if (_series.length) {
if (_series[0][0] > option.start) _series.unshift([option.start, null]);
if (_series[_series.length - 1][0] < option.end) _series.push([option.end, null]);
} else {
_series.push([option.start, null]);
_series.push([option.end, null]);
}
// free memory
res = null;
}
if (callback) callback(id, index);
});
}
function readValue(id, index, callback) {
socket.emit('getState', id, function (err, state) {
if (state) {
callback(index, parseFloat(state.val) || 0);
} else {
callback(index, 0);
}
});
}
function prepareChart() {
chart = new CustomChart({
chartId: divId,
titleId: 'title',
tooltipId: 'tooltip',
cbOnZoom: onZoom
}, config, seriesData, config.m, ticks);
if (config.zoom) {
$('#resetZoom').unbind('click').click(function () {
seriesData = [];
$('#resetZoom').hide();
config.zoomed = false;
now = new Date();
readData(true);
});
// handlers for zoom and pan
$('#' + divId)
// flot can pan and zoom with mouse itself
/*.unbind('mousedown')
.mousedown(function (e) {
mouseDown = true;
lastX = e.pageX;
})
.unbind('mouseup').mouseup(function () {
mouseDown = false;
if (zoomTimeout) clearTimeout(zoomTimeout);
zoomTimeout = setTimeout(onZoom, 500);
})
.unbind('mousemove')
.mousemove(function(e) {
if (mouseDown) {
chart.pan(e.pageX - lastX);
}
lastX = e.pageX;
})
.unbind('mousewheel DOMMouseScroll')
.bind('mousewheel DOMMouseScroll', function(event) {
var amount = (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) ? 0.9 : 1.1;
chart.zoom(event.originalEvent.pageX, amount);
if (zoomTimeout) clearTimeout(zoomTimeout);
zoomTimeout = setTimeout(onZoom, 500);
})*/
.unbind('touchstart')
.on('touchstart', function (e) {
e.preventDefault();
mouseDown = true;
var touches = e.touches || e.originalEvent.touches;
if (touches) {
lastX = touches[touches.length - 1].pageX;
if (touches.length > 1) {
lastWidth = Math.abs(touches[0].pageX - touches[1].pageX);
} else {
lastWidth = null;
}
}
})
.unbind('touchend')
.on('touchend', function(e) {
e.preventDefault();
mouseDown = false;
if (zoomTimeout) clearTimeout(zoomTimeout);
zoomTimeout = setTimeout(onZoom, 500);
})
.unbind('touchmove')
.on('touchmove', function (e) {
e.preventDefault();
var touches = e.touches || e.originalEvent.touches;
if (!touches) return;
if (mouseDown) {
var pageX = touches[touches.length - 1].pageX;
if (touches.length > 1) {
// zoom
var width = Math.abs(touches[0].pageX - touches[1].pageX);
if (lastWidth !== null && width !== lastWidth) {
var amount = (width > lastWidth) ? 1.1 : 0.9;
var positionX = (touches[0].pageX > touches[1].pageX) ? (touches[1].pageX + width / 2) : (touches[0].pageX + width / 2);
chart.zoom(positionX, amount);
if (zoomTimeout) clearTimeout(zoomTimeout);
zoomTimeout = setTimeout(onZoom, 500);
}
lastWidth = width;
} else {
// swipe
chart.pan(lastX - pageX);
}
}
lastX = pageX;
});
}
if (config.live && config.timeType === 'relative') {
if (config.live === true || config.live === 'true') config.live = 30;
config.live = parseInt(config.live, 10) || 30;
startLiveUpdate();
}
}
function _readOneLine(index, cb) {
socket.emit('getObject', config.l[index].id, function (err, res) {
if (!err && res && res.common) {
config.l[index].name = config.l[index].name || res.common.name;
config.l[index].unit = config.l[index].unit || (res.common.unit ? res.common.unit.replace('�', '°') : '');
config.l[index].type = res.common.type;
} else {
config.l[index].name = config.l[index].name || config.l[index].id;
config.l[index].unit = config.l[index].unit || '';
}
if (typeof config.l[index].name === 'object') {
config.l[index].name = config.l[index].name[systemLang] || config.l[index].name.en;
}
readOneChart(config.l[index].id, config.l[index].instance, index, cb);
});
}
function readTicks(callback) {
if (!config.ticks) {
callback && callback(null);
} else {
socket.emit('getObject', config.ticks, function (err, res) {
var index = 0;
var option = JSON.parse(JSON.stringify(getStartStop(index)));
option.instance = config.l[index].instance;
option.sessionId = sessionId;
option.aggregate = 'onchange';
//console.log(JSON.stringify(option));
console.log('Ticks: ' + new Date(option.start) + ' - ' + new Date(option.end));
socket.emit('getHistory', config.ticks, option, function (err, res, stepIgnore, _sessionId) {
if (err) console.error(err);
if (sessionId && _sessionId && _sessionId !== sessionId) {
console.warn('Ignore request with sessionId=' + _sessionId + ', actual is ' + sessionId);
return;
}
if (!err && res) {
var _series = ticks || [];
if (ticks && ticks.length) ticks.splice(0, ticks.length);
for (var i = 0; i < res.length; i++) {
// if less 2000.01.01 00:00:00
if (res[i].ts < 946681200000) res[i].ts = res[i].ts * 1000;
if (!res[i].val !== null) _series.push([res[i].ts, res[i].val]);
}
// add start and end
if (_series.length) {
if (_series[0][0] > option.start) _series.unshift([option.start, '']);
if (_series[_series.length - 1][0] < option.end) _series.push([option.end, '']);
} else {
_series.push([option.start, '']);
_series.push([option.end, '']);
}
// free memory
res = null;
ticks = _series;
}
if (callback) callback(_series);
});
});
}
}
function readMarkings(cb, m) {
m = m || 0;
if (!config.m || !config.m.length || m >= config.m.length) {
return cb && cb();
} else {
if (!config.m[m].oid && config.m[m].v && parseFloat(config.m[m].v) != config.m[m].v && config.m[m].v.indexOf('.') !== -1) {
if (subscribes.indexOf(config.m[m].v) === -1) subscribes.push(config.m[m].v);
readValue(config.m[m].v, m, function (index, val) {
config.m[index].oid = config.m[index].v;
config.m[index].v = val;
if (!config.m[m].oidl && config.m[m].vl && parseFloat(config.m[m].vl) != config.m[m].vl && config.m[m].vl.indexOf('.') !== -1) {
if (subscribes.indexOf(config.m[m].vl) === -1) subscribes.push(config.m[m].vl);
readValue(config.m[m].vl, m, function (index, val) {
config.m[index].oidl = config.m[index].vl;
config.m[index].vl = val;
setTimeout(readMarkings, 0, cb, m + 1);
});
} else {
setTimeout(readMarkings, 0, cb, m + 1);
}
});
} else
if (!config.m[m].oidl && config.m[m].vl && parseFloat(config.m[m].vl) != config.m[m].vl && config.m[m].vl.indexOf('.') !== -1) {
if (subscribes.indexOf(config.m[m].vl) === -1) subscribes.push(config.m[m].vl);
readValue(config.m[m].vl, m, function (index, val) {
config.m[index].oidl = config.m[index].vl;
config.m[index].vl = val;
setTimeout(readMarkings, 0, cb, m + 1);
});
} else {
setTimeout(readMarkings, 0, cb, m + 1);
}
}
}
function _readData(callback, j) {
j = j || 0;
if (j >= config.l.length) {
return callback && callback();
} else {
if (config.l[j] !== '' && config.l[j] !== undefined) seriesData.push([]);
_readOneLine(j, function () {
setTimeout(function () {
_readData(callback, j + 1);
}, 10);
});
}
}
function subscribeAll(subscribes, cb, s) {
s = s || 0;
if (!subscribes || !subscribes.length || s >= subscribes.length) {
cb && cb();
} else {
socket.emit('subscribe', subscribes[s], function () {
setTimeout(function () {
subscribeAll(subscribes, cb, s + 1);
}, 0);
});
}
}
function readData(hidden) {
if (disconnectTimeout) {
$('#no-connection').hide();
clearTimeout(disconnectTimeout);
disconnectTimeout = null;
}
sessionId++;
if (config.l) {
if (!hidden) $('#server-disconnect').show();
// todo
// if (config.renderer === 'pie' || (config.renderer === 'bar' && config._ids.length > 1)) {
//
// seriesData = [[]];
// for (var j = 0; j < config._ids.length; j++) {
// readOneValue(config._ids[j], j, function (_id, _index, value) {
// if (config.renderer === 'pie') {
// seriesData[0][_index] = {label: config.l[_index].name, data: value};
// } else {
// seriesData[0][_index] = [config.l[_index].name, value];
// }
// if (_index === config._ids.length - 1) {
// graphCreate(divId, );
// }
// });
// }
// } else {
_readData(function () {
readTicks(function (_ticks) {
readMarkings(function () {
if (!subscribed) {
subscribed = true;
subscribeAll();
}
$('#server-disconnect').hide();
prepareChart();
});
});
});
}
if (!config.noedit) {
// install edit button
$('#edit')
.show()
.click(function () {
var win = window.open(location.href.replace('index.html', 'edit.html'), 'flot');
win.focus();
});
}
}
function startLiveUpdate() {
liveInterval = setInterval(function () {
if (config.zoomed) {
var max = 0;
var min = null;
// Find min and max of all lines
for (var index = 0; index < config.l.length; index++) {
if (max < config.l[index].zMax) max = config.l[index].zMax;
if (min === null || min > config.l[index].zMin) min = config.l[index].zMin;
}
// if 20%
if ((max + ((max - min) / 20)) >= new Date().getTime()) {
max = new Date().getTime() - now.getTime();
var result = [];
for (var _index = 0; _index < config.l.length; _index++) {
config.l[_index].zMax += max;
config.l[_index].zMin += max;
result.push({min: config.l[_index].zMin, max: config.l[_index].zMax});
}
chart.setRange(result);
} else {
return;
}
}
console.log('on time');
updateLive();
}, config.live * 1000);
}
function updateLive() {
var ready = 0;
now = new Date();
$('.loader').show();
sessionId++;
if (config.zoom) chart.resetZoom(now);
for (var index = 0; index < config.l.length; index++) {
ready++;
seriesData[index] = [];
readOneChart(config.l[index].id, config.l[index].instance, index, function () {
if (!--ready) {
readTicks(function (_ticks) {
chart.update(seriesData, null, _ticks);
$('.loader').hide();
});
}
});
}
}
function avg(data, range) {
var r = [];
var rd;
var i1;
var s;
var cnt;
for(var i = 0; i < data.length; i++) {
if (i < range) {
i1 = 0;
} else {
i1 = i - range + 1;
}
rd = [data[i][0], null];
if (data[i][1] !== null) {
s = 0;
cnt = 0;
for(var j = i1; j <= i; j++) {
if (data[j][1] === null) continue;
s += data[j][1];
cnt++;
}
rd[1] = s / cnt;
}
r.push(rd);
}
return r;
}
function onZoom() {
if (!config.zoomed) {
$('#resetZoom').show();
config.zoomed = true;
}
var result = chart.getRange();
for (var r = 0; r < result.length; r++) {
config.l[r].zMin = result[r].min;
config.l[r].zMax = result[r].max;
}
console.log('on zoom');
updateLive();
}
+22
View File
@@ -0,0 +1,22 @@
var months = {
'en': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
'de': ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
'ru': ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
'es': ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
'fr': ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
'it': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
'pl': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
'pt': ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Out', 'Nov', 'Dez'],
'nl': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
};
var days = {
'en': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
'de': ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
'ru': ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'],
'es': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
'fr': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
'it': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
'pl': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
'pt': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
'nl': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
};
+1540
View File
File diff suppressed because it is too large Load Diff
+84
View File
@@ -0,0 +1,84 @@
var settings = {
maxLines: 20, // maximal number of the lines
button_arrange_bools: {enabled: true}, // if button arrange bool is visible
line: {
number: {enabled: true, name: ''},
instance: {enabled: true, name: 'Instance'},
id: {enabled: true, name: 'ID', width: '200px', style: 'padding-left: 4px', _class: 'ids', inputStyle: ''},
idSelect: {enabled: true, name: '', style: 'padding-left: 4px'},
aggregate: {enabled: true, name: 'Aggregation', width: '70px', style: 'padding-left: 5px', values: ['minmax', 'average', 'min', 'max', 'total', 'onchange']},
chartType: {enabled: true, name: 'Chart Type', width: '90px', values: ['line', 'bar', 'scatterplot', 'steps', /*'pie',*/ 'spline']},
fill: {enabled: true, name: 'Fill(0to1)', width: '70px', style: 'width: 70px; text-align: right'},
points: {enabled: true, name: 'Points', width: '50px', type: 'checkbox'},
color: {enabled: true, name: 'Color', width: '120px', style: 'padding-left: 5px', _class: 'input-color'},
min: {enabled: true, name: 'Min', width: '50px', style: 'padding-left: 5px'},
max: {enabled: true, name: 'Max', width: '50px', style: 'padding-left: 5px'},
unit: {enabled: true, name: 'Unit', width: '70px', style: 'padding-left: 5px'},
yaxe: {enabled: true, name: 'Y Axis', width: '140px', style: 'padding-left: 5px', values: ['', 'off', 'left', 'right', 'leftColor', 'rightColor'], defaultValueName: 'default'},
xaxe: {enabled: true, name: 'X Axis', width: '140px', style: 'padding-left: 5px', values: ['', 'off', 'top', 'bottom', 'topColor', 'bottomColor'], defaultValueName: 'default'},
name: {enabled: true, name: 'Name', width: '200px', style: 'padding-left: 5px'},
extraOptions: {enabled: true, name: 'More', width: '90px', style: 'text-align: center'},
removeButton: {enabled: true, name: '', width: '', style: 'padding-left: 5px'}
},
extraOptions: {
offset: {enabled: true, name: 'Offset', width: '130px', style: '', type: 'number'}, // support of time offset
yOffset: {enabled: true, name: 'Y-Offset', width: '70px', style: '', type: 'number'}, // support of Y offset
xticks: {enabled: true, name: 'X-Axis ticks', width: '70px', style: '', type: 'number'},
yticks: {enabled: true, name: 'Y-Axis ticks', width: '70px', style: '', type: 'number'},
thickness: {enabled: true, name: '&#216L', width: '70px', style: '', type: 'number', title: 'Line Width', default: 1},
shadowsize: {enabled: true, name: '&#216S', width: '70px', style: '', type: 'number', title: 'Shadow Size', default: 0},
commonYAxis: {enabled: true, name: 'Common Y Axis', width: '', style: '', values: ['', '1', '2', '3', '4', '5'], default: '', names: ['default']},
ignoreNull: {enabled: true, name: 'NULL as', width: '', style: '', values: ['false', 'true', '0'], default: 'false', names: ['default', 'ignore null values', 'use 0 instead of null values']},
smoothing: {enabled: false, name: 'Smoothing', width: '70px', style: '', type: 'number'},
afterComma: {enabled: true, name: 'After comma', width: '70px', style: '', type: 'number', default: 2},
dashes: {enabled: true, name: 'Dashes', width: '', style: '', type: 'checkbox', default: false},
dashLength: {enabled: true, name: 'Dashes length', width: '70px', style: '', type: 'number', default: 10},
spaceLength: {enabled: true, name: 'Space length', width: '70px', style: '', type: 'number', default: 10}
},
chapter_time: {enabled: true},
time_timeType: {enabled: true},
time_relativeEnd: {enabled: true},
time_range: {enabled: true},
time_live: {enabled: true},
time_start: {enabled: true},
time_end: {enabled: true},
time_aggregateType: {enabled: true},
time_aggregateSpan: {enabled: true},
time_ticks: {enabled: true},
chapter_options: {enabled: true},
options_width: {enabled: true},
options_height: {enabled: true},
options_noborder: {enabled: true},
options_window_bg: {enabled: true},
options_bg_custom: {enabled: true},
options_bg: {enabled: true},
options_x_labels_color: {enabled: true},
options_y_labels_color: {enabled: true},
options_title: {enabled: true},
options_titlePos: {enabled: true},
options_titleColor: {enabled: true},
options_titleSize: {enabled: true},
options_legend: {enabled: true},
options_legColumns: {enabled: true},
options_legBg: {enabled: true},
options_legBgOpacity: {enabled: true},
options_barColor: {enabled: true},
options_barLabels: {enabled: true},
options_barWidth: {enabled: true},
options_barFontSize:{enabled: true},
options_barFontColor:{enabled: true},
options_smoothing: {enabled: false},
options_afterComma: {enabled: false},
options_useComma: {enabled: true},
options_zoom: {enabled: true},
options_noedit: {enabled: true},
options_animation: {enabled: true},
options_border_color: {enabled: true},
options_grid_color: {enabled: true},
options_border_width: {enabled: true},
option_markline: {enabled: true} // it is extra option and not options
};
+328
View File
@@ -0,0 +1,328 @@
// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n
/*global systemDictionary:true */
'use strict';
systemDictionary = {
"0": { "en": "0", "de": "0", "ru": "0", "pt": "0", "nl": "0", "fr": "0", "it": "0", "es": "0", "pl": "0"},
"1": { "en": "1", "de": "1", "ru": "1", "pt": "1", "nl": "1", "fr": "1", "it": "1", "es": "1", "pl": "1"},
"2": { "en": "2", "de": "2", "ru": "2", "pt": "2", "nl": "2", "fr": "2", "it": "2", "es": "2", "pl": "2"},
"3": { "en": "3", "de": "3", "ru": "3", "pt": "3", "nl": "3", "fr": "3", "it": "3", "es": "3", "pl": "3"},
"4": { "en": "4", "de": "4", "ru": "4", "pt": "4", "nl": "4", "fr": "4", "it": "4", "es": "4", "pl": "4"},
"5": { "en": "5", "de": "5", "ru": "5", "pt": "5", "nl": "5", "fr": "5", "it": "5", "es": "5", "pl": "5"},
"Ok": { "en": "Ok", "de": "Ok", "ru": "Ok", "pt": "Está bem", "nl": "OK", "fr": "D'accord", "it": "Ok", "es": "De acuerdo", "pl": "Ok"},
"role": { "en": "role", "de": "Rolle", "ru": "Роль", "pt": "Função", "nl": "rol", "fr": "rôle", "it": "ruolo", "es": "papel", "pl": "rola"},
"Update objects": { "en": "Update objects", "de": "Objekte aktualisieren", "ru": "Обновить объекты", "pt": "Atualizar objetos", "nl": "Objecten bijwerken", "fr": "Mettre à jour", "it": "Aggiorna oggetti", "es": "Actualizar objetos", "pl": "Zaktualizuj obiekty"},
"All": { "en": "All", "de": "Alle", "ru": "все", "pt": "Todos", "nl": "Alle", "fr": "Tout", "it": "Tutti", "es": "Todas", "pl": "Wszystko"},
"With": { "en": "With", "de": "mit", "ru": "с", "pt": "Com", "nl": "Met", "fr": "Avec", "it": "Con", "es": "Con", "pl": "Z"},
"Without": { "en": "Without", "de": "ohne", "ru": "без", "pt": "Sem", "nl": "Zonder", "fr": "Sans pour autant", "it": "Senza", "es": "Sin", "pl": "Bez"},
"Update states": { "en": "Update states", "de": "States aktualisieren", "ru": "Обновить состояния", "pt": "Estado de atualização", "nl": "Status bijwerken", "fr": "Mettre à jour", "it": "Stati di aggiornamento", "es": "Actualizar estados", "pl": "Zaktualizuj stany"},
"edit file": { "en": "edit file", "de": "Datei editieren", "ru": "Редактировать", "pt": "editar arquivo", "nl": "bestand bewerken", "fr": "modifier le fichier", "it": "modifica file", "es": "editar archivo", "pl": "edytuj plik"},
"restart script": { "en": "restart script", "de": "Skript neu starten", "ru": "Перезапустить скрипт", "pt": "reiniciar o script", "nl": "herstart script", "fr": "redémarrer le script", "it": "riavviare lo script", "es": "script de reinicio", "pl": "zrestartuj skrypt"},
"Select": { "en": "Select", "de": "Auswählen", "ru": "Выбрать", "pt": "Selecione", "nl": "kiezen", "fr": "Sélectionner", "it": "Selezionare", "es": "Seleccionar", "pl": "Wybierz"},
"Select ID": { "en": "Select ID", "de": "ID Auswählen", "ru": "Выбрать ID", "pt": "Selecione ID", "nl": "Selecteer ID", "fr": "Sélectionner un identifiant", "it": "Seleziona ID", "es": "Seleccionar ID", "pl": "Wybierz ID"},
"add children": { "en": "add children", "de": "Sub-enums einfügen", "ru": "Добавить под-категории", "pt": "adicionar filhos", "nl": "voeg kinderen toe", "fr": "ajouter des enfants", "it": "aggiungi bambini", "es": "agregar niños", "pl": "dodaj dzieci"},
"edit enum": { "en": "edit enum", "de": "Enum ändern", "ru": "Изменить категорию", "pt": "editar enum", "nl": "edit enum", "fr": "éditer enum", "it": "modifica enum", "es": "editar enum", "pl": "edytuj wyliczenie"},
"System settings": { "en": "System settings", "de": "Systemeinstellungen", "ru": "Системные настройки", "pt": "Configurações de sistema", "nl": "Systeem instellingen", "fr": "Les paramètres du système", "it": "Impostazioni di sistema", "es": "Ajustes del sistema", "pl": "Ustawienia systemowe"},
"reload": { "en": "reload", "de": "Neu laden", "ru": "Перезагрузить", "pt": "recarregar", "nl": "herladen", "fr": "recharger", "it": "ricaricare", "es": "recargar", "pl": "przeładować"},
"Delete object": { "en": "Delete object", "de": "Object löschen", "ru": "Удалить объект", "pt": "Eliminar objeto", "nl": "Object verwijderen", "fr": "Supprimer un objet", "it": "Elimina oggetto", "es": "Eliminar objeto", "pl": "Usuń obiekt"},
"no null": { "en": "&nbsp;no null", "de": "&nbsp;kein NULL", "ru": "&nbsp;без null", "pt": "& nbsp; nulo", "nl": "& nbsp; geen null", "fr": "& nbsp; non nul", "it": "& nbsp; non null", "es": "& nbsp; no null", "pl": "& nbsp; no null"},
"%s ago": { "en": "%s ago", "de": "vor %s", "ru": "%s назад", "pt": "% s atrás", "nl": "% s geleden", "fr": "il y a% s", "it": "% s fa", "es": "hace% s", "pl": "% s temu"},
"Y-Offset": { "en": "Y-Offset", "de": "Y-Offset", "ru": "Сдвиг по Y", "pt": "Y-Offset", "nl": "Y-offset", "fr": "Y-Offset", "it": "Y-Offset", "es": "Y-Offset", "pl": "Przesunięcie Y"},
"ID": { "en": "ID", "de": "ID", "ru": "ID", "pt": "identidade", "nl": "ID kaart", "fr": "ID", "it": "ID", "es": "CARNÉ DE IDENTIDAD", "pl": "ID"},
"Role": { "en": "Role", "de": "Rolle", "ru": "Роль", "pt": "Função", "nl": "Rol", "fr": "Rôle", "it": "Ruolo", "es": "Papel", "pl": "Rola"},
"Room": { "en": "Room", "de": "Raum", "ru": "Комната", "pt": "Quarto", "nl": "Kamer", "fr": "Chambre", "it": "Camera", "es": "Habitación", "pl": "Pokój"},
"Value": { "en": "Value", "de": "Wert", "ru": "Значение", "pt": "Valor", "nl": "Waarde", "fr": "Valeur", "it": "Valore", "es": "Valor", "pl": "Wartość"},
"none": { "en": "none", "de": "nichts", "ru": "ничего", "pt": "Nenhum", "nl": "geen", "fr": "aucun", "it": "nessuna", "es": "ninguna", "pl": "Żaden"},
"Save into:": { "en": "Save into:", "de": "Save into:", "ru": "Сохранить как:", "pt": "Salvar em:", "nl": "Bewaar in:", "fr": "Enregistrer dans:", "it": "Salva in:", "es": "Guardar en:", "pl": "Zapisz w:"},
"Name:": { "en": "Name:", "de": "Name:", "ru": "Имя:", "pt": "Nome:", "nl": "Naam:", "fr": "Prénom:", "it": "Nome:", "es": "Nombre:", "pl": "Nazwa:"},
"save": { "en": "save", "de": "Speichern", "ru": "сохранить", "pt": "Salve ", "nl": "opslaan", "fr": "enregistrer", "it": "salvare", "es": "salvar", "pl": "zapisać"},
"load": { "en": "load", "de": "laden", "ru": "загрузить", "pt": "carga", "nl": "laden", "fr": "charge", "it": "caricare", "es": "carga", "pl": "obciążenie"},
"Presets": { "en": "Presets", "de": "Voreinstellung", "ru": "Пресеты", "pt": "Presets", "nl": "presets", "fr": "Presets", "it": "Presets", "es": "Presets", "pl": "Presets"},
"IDs": { "en": "IDs", "de": "IDs", "ru": "Объекты", "pt": "IDs", "nl": "IDs", "fr": "ID", "it": "ID", "es": "IDs", "pl": "ID"},
"new": { "en": "new", "de": "unter neuen Namen", "ru": "новое", "pt": "Novo", "nl": "nieuwe", "fr": "Nouveau", "it": "nuovo", "es": "nuevo", "pl": "Nowy"},
"Enter chart name": { "en": "Enter chart name", "de": "Chartname eintragen", "ru": "Введите имя графика", "pt": "Digite o nome do gráfico", "nl": "Voer de diagramnaam in", "fr": "Entrez le nom du diagramme", "it": "Inserisci il nome del grafico", "es": "Ingrese el nombre del gráfico", "pl": "Wprowadź nazwę wykresu"},
"save %s": { "en": "save %s", "de": "Speichern %s", "ru": "сохранить %s", "pt": "salvar% s", "nl": "bespaar% s", "fr": "enregistrer% s", "it": "salva% s", "es": "ahorra", "pl": "zapisz% s"},
"Input data": { "en": "Input data", "de": "Eingangsdaten", "ru": "Входные данные", "pt": "Dados de entrada", "nl": "Invoergegevens", "fr": "Des données d'entrée", "it": "Dati in ingresso", "es": "Datos de entrada", "pl": "Dane wejściowe"},
"Options": { "en": "Options", "de": "Optionen", "ru": "Опции", "pt": "Opções", "nl": "opties", "fr": "Options", "it": "Opzioni", "es": "Opciones", "pl": "Opcje"},
"Range:": { "en": "Range:", "de": "Umfang:", "ru": "Интервал:", "pt": "Alcance:", "nl": "bereik:", "fr": "Gamme:", "it": "Gamma:", "es": "Distancia:", "pl": "Zasięg:"},
"5 seconds": { "en": "5 seconds", "de": "5 Sekunden", "ru": "5 секунд", "pt": "5 segundos", "nl": "5 seconden", "fr": "5 secondes", "it": "5 secondi", "es": "5 segundos", "pl": "5 sekund"},
"10 seconds": { "en": "10 seconds", "de": "10 Sekunden", "ru": "10 секунд", "pt": "10 segundos", "nl": "10 seconden", "fr": "10 secondes", "it": "10 secondi", "es": "10 segundos", "pl": "10 sekund"},
"15 seconds": { "en": "15 seconds", "de": "15 Sekunden", "ru": "15 секунд", "pt": "15 segundos", "nl": "15 seconden", "fr": "15 secondes", "it": "15 secondi", "es": "15 segundos", "pl": "15 sekund"},
"20 seconds": { "en": "20 seconds", "de": "20 Sekunden", "ru": "20 секунд", "pt": "20 segundos", "nl": "20 seconden", "fr": "20 secondes", "it": "20 secondi", "es": "20 segundos", "pl": "20 sekund"},
"30 seconds": { "en": "30 seconds", "de": "30 Sekunden", "ru": "30 секунд", "pt": "30 segundos", "nl": "30 seconden", "fr": "30 secondes", "it": "30 secondi", "es": "30 segundos", "pl": "30 sekund"},
"1 minute": { "en": "1 minute", "de": "1 Minute", "ru": "1 минуту", "pt": "1 minuto", "nl": "1 minuut", "fr": "1 minute", "it": "1 minuto", "es": "1 minuto", "pl": "1 minuta"},
"2 minutes": { "en": "2 minutes", "de": "2 Minuten", "ru": "2 минуты", "pt": "2 minutos", "nl": "2 minuten", "fr": "2 minutes", "it": "2 minuti", "es": "2 minutos", "pl": "2 minuty"},
"5 minutes": { "en": "5 minutes", "de": "5 Minuten", "ru": "5 минут", "pt": "5 minutos", "nl": "5 minuten", "fr": "5 minutes", "it": "5 minuti", "es": "5 minutos", "pl": "5 minut"},
"10 minutes": { "en": "10 minutes", "de": "10 Minuten", "ru": "10 минут", "pt": "10 minutos", "nl": "10 minuten", "fr": "10 minutes", "it": "10 minuti", "es": "10 minutos", "pl": "10 minut"},
"15 minutes": { "en": "15 minutes", "de": "15 Minuten", "ru": "15 минут", "pt": "15 minutos", "nl": "15 minuten", "fr": "15 minutes", "it": "15 minuti", "es": "15 minutos", "pl": "15 minut"},
"20 minutes": { "en": "20 minutes", "de": "20 Minuten", "ru": "20 минут", "pt": "20 minutos", "nl": "20 minuten", "fr": "20 minutes", "it": "20 minuti", "es": "20 minutos", "pl": "20 minut"},
"30 minutes": { "en": "30 minutes", "de": "30 Minuten", "ru": "30 минут", "pt": "30 minutos", "nl": "30 minuten", "fr": "30 minutes", "it": "30 minuti", "es": "30 minutos", "pl": "30 minut"},
"1 hour": { "en": "1 hour", "de": "1 Stunde", "ru": "1 час", "pt": "1 hora", "nl": "1 uur", "fr": "1 heure", "it": "1 ora", "es": "1 hora", "pl": "1 godzina"},
"2 hours": { "en": "2 hours", "de": "2 Stunden", "ru": "2 часа", "pt": "2 horas", "nl": "twee uur", "fr": "2 heures", "it": "2 ore", "es": "2 horas", "pl": "2 godziny"},
"3 hours": { "en": "3 hours", "de": "3 Stunden", "ru": "3 часа", "pt": "3 horas", "nl": "3 uur", "fr": "3 heures", "it": "3 ore", "es": "3 horas", "pl": "3 godziny"},
"6 hours": { "en": "6 hours", "de": "6 Stunden", "ru": "6 часов", "pt": "6 horas", "nl": "6 uur", "fr": "6 heures", "it": "6 ore", "es": "6 horas", "pl": "6 godzin"},
"12 hours": { "en": "12 hours", "de": "12 Stunden", "ru": "12 часов", "pt": "12 horas", "nl": "12 uren", "fr": "12 heures", "it": "12 ore", "es": "12 horas", "pl": "12 godzin"},
"1 day": { "en": "1 day", "de": "1 Tag", "ru": "1 день", "pt": "1 dia", "nl": "1 dag", "fr": "Un jour", "it": "1 giorno", "es": "1 día", "pl": "1 dzień"},
"2 days": { "en": "2 days", "de": "2 Tage", "ru": "2 дня", "pt": "2 dias", "nl": "2 dagen", "fr": "2 jours", "it": "2 giorni", "es": "2 días", "pl": "2 dni"},
"3 days": { "en": "3 days", "de": "3 Tage", "ru": "3 дня", "pt": "3 dias", "nl": "3 dagen", "fr": "3 jours", "it": "3 giorni", "es": "3 días", "pl": "3 dni"},
"7 days": { "en": "7 days", "de": "7 Tage", "ru": "7 дней", "pt": "7 dias", "nl": "7 dagen", "fr": "7 jours", "it": "7 giorni", "es": "7 días", "pl": "7 dni"},
"14 days": { "en": "14 days", "de": "14 Tage", "ru": "14 дней", "pt": "14 dias", "nl": "14 dagen", "fr": "14 jours", "it": "14 giorni", "es": "14 dias", "pl": "14 dni"},
"1 month": { "en": "1 month", "de": "1 Monat", "ru": "1 месяц", "pt": "1 mês", "nl": "1 maand", "fr": "1 mois", "it": "1 mese", "es": "1 mes", "pl": "1 miesiąc"},
"2 months": { "en": "2 months", "de": "2 Monate", "ru": "2 месяца", "pt": "2 meses", "nl": "2 maanden", "fr": "2 mois", "it": "Due mesi", "es": "2 meses", "pl": "2 miesiące"},
"3 months": { "en": "3 months", "de": "3 Monate", "ru": "3 месяца", "pt": "3 meses", "nl": "3 maanden", "fr": "3 mois", "it": "3 mesi", "es": "3 meses", "pl": "3 miesiące"},
"6 months": { "en": "6 months", "de": "6 Monate", "ru": "6 месяцев", "pt": "6 meses", "nl": "6 maanden", "fr": "6 mois", "it": "6 mesi", "es": "6 meses", "pl": "6 miesięcy"},
"1 year": { "en": "1 year", "de": "1 Jahr", "ru": "1 год", "pt": "1 ano", "nl": "1 jaar", "fr": "1 an", "it": "1 anno", "es": "1 año", "pl": "1 rok"},
"2 years": { "en": "2 years", "de": "2 Jahren", "ru": "2 года", "pt": "2 anos", "nl": "2 jaar", "fr": "2 ans", "it": "2 anni", "es": "2 años", "pl": "2 lata"},
"Width:": { "en": "Width:", "de": "Breite:", "ru": "Ширина:", "pt": "Largura:", "nl": "Breedte:", "fr": "Largeur:", "it": "Larghezza:", "es": "Anchura:", "pl": "Szerokość:"},
"Height:": { "en": "Height:", "de": "Höhe:", "ru": "Высота:", "pt": "Altura:", "nl": "Hoogte:", "fr": "La taille:", "it": "Altezza:", "es": "Altura:", "pl": "Wysokość:"},
"line": { "en": "Line", "de": "Linie", "ru": "Линия", "pt": "Linha", "nl": "Lijn", "fr": "Ligne", "it": "Linea", "es": "Línea", "pl": "Linia"},
"area": { "en": "Area", "de": "Area", "ru": "Область", "pt": "Área", "nl": "Gebied", "fr": "Région", "it": "La zona", "es": "Zona", "pl": "Powierzchnia"},
"bar": { "en": "Bar", "de": "Bar", "ru": "Bar", "pt": "Barra", "nl": "Bar", "fr": "Bar", "it": "Bar", "es": "Bar", "pl": "Bar"},
"lineplot": { "en": "Line plot", "de": "Liniendiagramm", "ru": "Линия с точками", "pt": "Trama de linha", "nl": "Lijnplot", "fr": "Graphique linéaire", "it": "Trama di linea", "es": "Linear plot", "pl": "Fabuła linii"},
"scatterplot": { "en": "Scatter plot", "de": "Streudiagramm", "ru": "Точки", "pt": "Parcela de dispersão", "nl": "Scatterplot", "fr": "Scatter plot", "it": "Trama sparsa", "es": "Gráfico de dispersión", "pl": "Wykres punktowy"},
"steps": { "en": "Steps", "de": "Schritte", "ru": "Шаги", "pt": "Passos", "nl": "Stappen", "fr": "Pas", "it": "passi", "es": "Pasos", "pl": "Kroki"},
"spline": { "en": "Spline", "de": "Spline", "ru": "Сллайн", "pt": "Spline", "nl": "spline", "fr": "Spline", "it": "linguetta", "es": "Ranura", "pl": "Klin"},
"Stack": { "en": "Stack", "de": "Stack", "ru": "Stack", "pt": "Pilha", "nl": "stack", "fr": "Empiler", "it": "Pila", "es": "Apilar", "pl": "Stos"},
"Window background:": { "en": "Window background:", "de": "Fenster-Hintergrund:", "ru": "Фон окна:", "pt": "Fundo da janela:", "nl": "Venster achtergrond:", "fr": "Fond de fenêtre:", "it": "Sfondo della finestra:", "es": "Fondo de la ventana:", "pl": "Tło okna:"},
"Custom chart background:": { "en": "Custom chart background:", "de": "Anwender-Chart-Hintergrund:", "ru": "Пользовательский фон графика:", "pt": "Fundo de gráfico personalizado:", "nl": "Aangepaste grafiek achtergrond:", "fr": "Arrière-plan de graphique personnalisé:", "it": "Sfondo grafico personalizzato:", "es": "Fondo de carta personalizada:", "pl": "Niestandardowe tło wykresu:"},
"Chart background:": { "en": "Chart background:", "de": "Chart-Hintergrund:", "ru": "Фон графика:", "pt": "Contexto do gráfico:", "nl": "Grafiek achtergrond:", "fr": "Arrière-plan du graphique", "it": "Sfondo del grafico:", "es": "Fondo de la carta:", "pl": "Tło wykresu:"},
"X axis labels color:": { "en": "X labels color:", "de": "X Beschriftungsfarbe:", "ru": "Цвет текста по оси X:", "pt": "Cor de etiquetas X:", "nl": "X labels kleur:", "fr": "X étiquettes couleur:", "it": "Colore etichette X:", "es": "X etiquetas de color:", "pl": "Kolor etykiet X:"},
"Y axis labels color:": { "en": "Y labels color:", "de": "Y Beschriftungsfarbe:", "ru": "Цвет текста по оси Y:", "pt": "Etiquetas de etiquetas Y:", "nl": "Y-labels kleur:", "fr": "Couleur des étiquettes Y:", "it": "Il colore delle etichette Y:", "es": "Color de etiquetas Y:", "pl": "Kolor etykiet Y:"},
"Show legend:": { "en": "Show legend:", "de": "Zeige Legende:", "ru": "Показать легенду:", "pt": "Mostrar lenda:", "nl": "Legenda weergeven:", "fr": "Afficher la légende:", "it": "Mostra legenda:", "es": "Mostrar leyenda:", "pl": "Pokaż legendę:"},
"Title:": { "en": "Title:", "de": "Beschriftung:", "ru": "Название:", "pt": "Título:", "nl": "Titel:", "fr": "Titre:", "it": "Titolo:", "es": "Título:", "pl": "Tytuł:"},
"Title position:": { "en": "Title position:", "de": "Beschriftungs-Position:", "ru": "Позиция названия:", "pt": "Posição do título:", "nl": "Titel positie:", "fr": "Titre du poste:", "it": "Posizione del titolo:", "es": "Posición del título:", "pl": "Pozycja tytułu:"},
"Top, left, inside": { "en": "Top, left, inside", "de": "Oben, links, innen", "ru": "Сверху, слева, внутри", "pt": "Topo, esquerda, dentro", "nl": "Boven, links, binnen", "fr": "Haut, gauche, intérieur", "it": "In alto, a sinistra, dentro", "es": "Arriba, izquierda, adentro", "pl": "Góra, lewa, wewnątrz"},
"Top, right, inside": { "en": "Top, right, inside", "de": "Oben, rechts, innen", "ru": "Сверху, справа, внутри", "pt": "Topo, direito, dentro", "nl": "Boven, rechts, binnen", "fr": "En haut, à droite, à l'intérieur", "it": "In alto, a destra, dentro", "es": "Arriba, derecha, adentro", "pl": "Góra, prawo, wewnątrz"},
"Top, center, inside": { "en": "Top, center, inside", "de": "Oben, mittig, innen", "ru": "Сверху, по центру, внутри", "pt": "Topo, centro, dentro", "nl": "Boven, midden, binnenkant", "fr": "Haut, centre, intérieur", "it": "In alto, al centro, dentro", "es": "Arriba, centro, adentro", "pl": "Góra, środek, wnętrze"},
"Middle, left, inside": { "en": "Middle, left, inside", "de": "Middle, links, innen", "ru": "Посередине, слева, внутри", "pt": "Médio, esquerda, dentro", "nl": "Midden, links, binnenkant", "fr": "Milieu, gauche, intérieur", "it": "Medio, a sinistra, dentro", "es": "Medio, izquierdo, adentro", "pl": "Środkowy, lewy, w środku"},
"Middle, right, inside": { "en": "Middle, right, inside", "de": "Middle, rechts, innen", "ru": "Посередине, справа, внутри", "pt": "Médio, direito, dentro", "nl": "Midden, rechts, binnenkant", "fr": "Moyen, droit, intérieur", "it": "Medio, giusto, dentro", "es": "Medio, derecho, adentro", "pl": "Środkowy, prawy, wewnątrz"},
"Bottom, left, inside": { "en": "Bottom, left, inside", "de": "Unten, links, innen", "ru": "Снизу, слева, внутри", "pt": "Parte inferior, esquerda, dentro", "nl": "Onder, links, binnen", "fr": "Bas, gauche, intérieur", "it": "In basso, a sinistra, dentro", "es": "Abajo, izquierda, adentro", "pl": "Dół, lewo, wnętrze"},
"Bottom, right, inside": { "en": "Bottom, right, inside", "de": "Unten, rechts, innen", "ru": "Снизу, справа, внутри", "pt": "Parte inferior, direita, dentro", "nl": "Onder, rechts, binnen", "fr": "En bas, à droite, à l'intérieur", "it": "In basso, a destra, dentro", "es": "Abajo, derecha, adentro", "pl": "Dół, prawo, wewnątrz"},
"Bottom, center, inside": { "en": "Bottom, center, inside", "de": "Unten, mittig, innen", "ru": "Снизу, по центру, внутри", "pt": "No fundo, no centro, no interior", "nl": "Onder, midden, binnen", "fr": "Bas, centre, intérieur", "it": "In basso, al centro, dentro", "es": "Abajo, centro, adentro", "pl": "Dół, środek, wnętrze"},
"Top, right, outside": { "en": "Top, right, outside", "de": "Oben, rechts, außen", "ru": "Сверху, справа, снаружи", "pt": "Topo, direito, fora", "nl": "Boven, rechts, buiten", "fr": "Haut, droit, dehors", "it": "In alto, a destra, fuori", "es": "Arriba, a la derecha, afuera", "pl": "Góra, prawo, na zewnątrz"},
"Middle, right, outside": { "en": "Middle, right, outside", "de": "Middle, rechts, außen", "ru": "Посередине, справа, снаружи", "pt": "Médio, direito, fora", "nl": "Midden, rechts, buiten", "fr": "Moyen, droit, dehors", "it": "Medio, giusto, esterno", "es": "Medio, derecho, afuera", "pl": "Środkowy, prawy, na zewnątrz"},
"Bottom, right, outside": { "en": "Bottom, right, outside", "de": "Unten, rechts, außen", "ru": "Снизу, справа, снаружи", "pt": "Parte inferior, direita, fora", "nl": "Onder, rechts, buiten", "fr": "En bas, à droite, à l'extérieur", "it": "In basso, a destra, fuori", "es": "Abajo, a la derecha, afuera", "pl": "Dół, prawo, na zewnątrz"},
"Bottom, center, outside": { "en": "Bottom, center, outside", "de": "Unten, mittig, außen", "ru": "Снизу, по центру, снаружи", "pt": "Fundo, centro, fora", "nl": "Onder, midden, buiten", "fr": "Bas, centre, extérieur", "it": "In basso, al centro, fuori", "es": "Abajo, centro, afuera", "pl": "Dół, środek, na zewnątrz"},
"Min:": { "en": "Minimum:", "de": "Minimum:", "ru": "Минимум:", "pt": "Mínimo:", "nl": "Minimum:", "fr": "Le minimum:", "it": "Minimo:", "es": "Mínimo:", "pl": "Minimum:"},
"Max:": { "en": "Maximum:", "de": "Maximum:", "ru": "Максимум:", "pt": "Máximo:", "nl": "maximaal:", "fr": "Maximum:", "it": "Massimo:", "es": "Máximo:", "pl": "Maksymalny:"},
"User defined names:": { "en": "User defined names:", "de": "Benutzerdefinierte Namen:", "ru": "Задать имена графиков:", "pt": "Nomes definidos pelo usuário:", "nl": "Door de gebruiker gedefinieerde namen:", "fr": "Noms définis par l'utilisateur:", "it": "Nomi definiti dall'utente:", "es": "Nombres definidos por el usuario:", "pl": "Nazwy zdefiniowane przez użytkownika:"},
"Predefined background:": { "en": "Predefined background:", "de": "Vordefinierter Hintergrund:", "ru": "Выбрать фон:", "pt": "Antecedentes predefinidos:", "nl": "Voorgedefinieerde achtergrond:", "fr": "Arrière-plan prédéfini:", "it": "Sfondo predefinito:", "es": "Antecedentes predefinidos:", "pl": "Wstępnie zdefiniowane tło:"},
"User defined": { "en": "User defined", "de": "Anwenderdefiniert", "ru": "Пользовательские", "pt": "Usuário definido", "nl": "Gebruiker gedefinieerde", "fr": "Défini par l'utilisateur", "it": "Definito dall'utente", "es": "Usuario definido", "pl": "Określony przez użytkownika"},
"Background:": { "en": "Background:", "de": "Hintergrund:", "ru": "Фон:", "pt": "Fundo:", "nl": "Achtergrond:", "fr": "Contexte:", "it": "Sfondo:", "es": "Fondo:", "pl": "Tło:"},
"Hover details:": { "en": "Hover details:", "de": "Hover details:", "ru": "Показывать подсказку:", "pt": "Detalhes do mouse:", "nl": "Hover details:", "fr": "Hover détails:", "it": "Dettagli al passaggio del mouse:", "es": "Hover detalles:", "pl": "Po najechaniu szczegóły:"},
"Time format:": { "en": "Time format:", "de": "Zeitformat:", "ru": "Формат времени:", "pt": "Formato do tempo:", "nl": "Tijd formaat:", "fr": "Format de l'heure:", "it": "Formato orario:", "es": "Formato de tiempo:", "pl": "Format czasu:"},
"Default": { "en": "Default", "de": "Standard", "ru": "по умолчанию", "pt": "Padrão", "nl": "Standaard", "fr": "Défaut", "it": "Predefinito", "es": "Defecto", "pl": "Domyślna"},
"Smoothing": { "en": "Smoothing", "de": "Glätten", "ru": "Сглаживание", "pt": "Suavização", "nl": "smoothing", "fr": "Lissage", "it": "lisciatura", "es": "Suavizado", "pl": "Wygładzanie"},
"After comma": { "en": "After comma", "de": "Nach Komma", "ru": "После запятой", "pt": "Após a vírgula", "nl": "Na een komma", "fr": "Après la virgule", "it": "Dopo la virgola", "es": "Después de la coma", "pl": "Po przecinku"},
"Open": { "en": "Open", "de": "Zeige im Fenster", "ru": "Показать", "pt": "Aberto", "nl": "Open", "fr": "Ouvrir", "it": "Aperto", "es": "Abierto", "pl": "otwarty"},
"Update": { "en": "Update", "de": "Aktualisieren", "ru": "Обновить", "pt": "Atualizar", "nl": "Bijwerken", "fr": "Mettre à jour", "it": "Aggiornare", "es": "Actualizar", "pl": "Aktualizacja"},
"Reset settings": { "en": "Reset settings", "de": "Einstellungen löschen", "ru": "Сбросить настройки", "pt": "Redefinir configurações", "nl": "Reset instellingen", "fr": "Réinitialiser les options", "it": "Ripristina le impostazioni", "es": "Reiniciar ajustes", "pl": "Resetowanie ustawień"},
"From": { "en": "From: ", "de": "Von", "ru": "От", "pt": "A partir de:", "nl": "Van:", "fr": "De:", "it": "A partire dal:", "es": "De:", "pl": "Od:"},
"Last changed": { "en": "Last changed", "de": "Letze Änderung", "ru": "Изменён", "pt": "Última modificação", "nl": "Laatst gewijzigd", "fr": "Dernière modification", "it": "Ultima modifica", "es": "Último cambio", "pl": "Ostatnia zmiana"},
"Time stamp": { "en": "Time stamp", "de": "Zeitstempel", "ru": "Время", "pt": "Marca de horário", "nl": "Tijdstempel", "fr": "Horodatage", "it": "Data e ora", "es": "Marca de tiempo", "pl": "Znak czasu"},
"Acknowledged": { "en": "Acknowledged", "de": "Bestätigt", "ru": "Подтверждён", "pt": "Reconhecido", "nl": "Erkend", "fr": "Reconnu", "it": "Riconosciuto", "es": "Admitido", "pl": "Przyznane"},
"Edit": { "en": "Edit", "de": "Editieren", "ru": "Edit", "pt": "Editar", "nl": "Bewerk", "fr": "modifier", "it": "modificare", "es": "Editar", "pl": "Edytować"},
"Members": { "en": "Members", "de": "Mitglied", "ru": "Объекты", "pt": "Membros", "nl": "leden", "fr": "Membres", "it": "Utenti", "es": "Miembros", "pl": "Członkowie"},
"Loading...": { "en": "Loading...", "de": "Lade...", "ru": "Загрузка...", "pt": "Carregando...", "nl": "Bezig met laden...", "fr": "Chargement...", "it": "Caricamento in corso...", "es": "Cargando...", "pl": "Ładuję..."},
"Processing...": { "en": "Processing...", "de": "Bearbeite...", "ru": "Обработка...", "pt": "Em processamento...", "nl": "Verwerken...", "fr": "En traitement...", "it": "In lavorazione...", "es": "Tratamiento...", "pl": "Przetwarzanie..."},
"With lines": { "en": "With lines", "de": "mit Linien", "ru": "С линиями", "pt": "Com linhas", "nl": "Met lijnen", "fr": "Avec des lignes", "it": "Con le linee", "es": "Con líneas", "pl": "Z liniami"},
"Without lines": { "en": "Without lines", "de": "ohne Linien", "ru": "Без линий", "pt": "Sem linhas", "nl": "Zonder lijnen", "fr": "Sans lignes", "it": "Senza linee", "es": "Sin líneas", "pl": "Bez linii"},
"Inside / With lines": { "en": "Inside / With lines", "de": "Innen / mit Linien", "ru": "Внутри / С линиями", "pt": "Dentro / Com linhas", "nl": "Binnen / met lijnen", "fr": "À l'intérieur / Avec des lignes", "it": "Interno / Con linee", "es": "Dentro / Con líneas", "pl": "Wewnątrz / Z liniami"},
"Outside/ With lines": { "en": "Outside/ With lines", "de": "Außen/ mit Linien", "ru": "Снаружи/ С линиями", "pt": "Fora / Com linhas", "nl": "Buiten / met lijnen", "fr": "Extérieur / Avec lignes", "it": "Esterno / Con linee", "es": "Fuera / Con líneas", "pl": "Na zewnątrz / Z liniami"},
"Inside / No lines": { "en": "Inside / No lines", "de": "Innen / ohne Linien", "ru": "Внутри / Без линий", "pt": "Dentro / Sem linhas", "nl": "Binnenkant / Geen regels", "fr": "À l'intérieur / Pas de lignes", "it": "Dentro / Nessuna linea", "es": "Dentro / Sin líneas", "pl": "Wewnątrz / Bez linii"},
"Outside / No lines": { "en": "Outside / No lines", "de": "Außen / ohne Linien", "ru": "Снаружи / Без линий", "pt": "Fora / Sem linhas", "nl": "Buiten / Geen lijnen", "fr": "Extérieur / Pas de lignes", "it": "Fuori / Nessuna linea", "es": "Fuera / Sin líneas", "pl": "Poza / Bez linii"},
"Interpolate:": { "en": "Interpolate:", "de": "Interpolieren:", "ru": "Интерполяция:", "pt": "Interpolar:", "nl": "Interpoleren:", "fr": "Interpoler:", "it": "Interpolare:", "es": "Interpolar:", "pl": "Interpolować:"},
"Steps": { "en": "Steps", "de": "Schritte", "ru": "Ступени", "pt": "Passos", "nl": "Stappen", "fr": "Pas", "it": "passi", "es": "Pasos", "pl": "Kroki"},
"Pie": { "en": "Pie", "de": "Kuchen", "ru": "Круговая диаграмма", "pt": "Torta", "nl": "Taart", "fr": "Tarte", "it": "Torta", "es": "Tarta", "pl": "Ciasto"},
"Top, left": { "en": "Top, left", "de": "Oben, links", "ru": "Сверху, слева", "pt": "Superior esquerdo", "nl": "Linksboven", "fr": "En haut à gauche", "it": "A sinistra in alto", "es": "Arriba a la izquierda", "pl": "Lewy górny"},
"Top, right": { "en": "Top, right", "de": "Oben, rechts", "ru": "Сверху, справа", "pt": "Canto superior direito", "nl": "Rechtsboven", "fr": "En haut à droite", "it": "In alto a destra", "es": "Parte superior derecha", "pl": "W prawym górnym rogu"},
"Bottom, left": { "en": "Bottom, left", "de": "Unten, links", "ru": "Снизу, слева", "pt": "Inferior esquerdo", "nl": "Linksonder", "fr": "En bas à gauche", "it": "In basso a sinistra", "es": "Abajo, izquierda", "pl": "Na dole po lewej"},
"Bottom, right": { "en": "Bottom, right", "de": "Unten, rechts", "ru": "Снизу, справа", "pt": "Canto inferior direito", "nl": "Rechts onder", "fr": "En bas à droite", "it": "In basso a destra", "es": "Abajo a la derecha", "pl": "Prawy dolny"},
"Title color:": { "en": "Title color:", "de": "Titelfarbe:", "ru": "Цвет названия:", "pt": "Cor do título:", "nl": "Titel kleur:", "fr": "Couleur du titre:", "it": "Colore del titolo:", "es": "Color del título:", "pl": "Kolor tytułu:"},
"Title size:": { "en": "Title size:", "de": "Titelgröße:", "ru": "Размер названия:", "pt": "Tamanho do título:", "nl": "Titel grootte:", "fr": "Taille du titre:", "it": "Dimensione del titolo:", "es": "Tamaño del título:", "pl": "Rozmiar tytułu:"},
"Fill range:": { "en": "Fill range:", "de": "Ganzer Bereich:", "ru": "Всегда весь интервал:", "pt": "Faixa de preenchimento:", "nl": "Vulbereik:", "fr": "Remplir gamme:", "it": "Gamma di riempimento:", "es": "Rango de llenado:", "pl": "Zakres wypełnienia:"},
"Units:": { "en": "Units:", "de": "Einheiten:", "ru": "Единицы:", "pt": "Unidades:", "nl": "units:", "fr": "Unités:", "it": "unità:", "es": "Unidades:", "pl": "Jednostki:"},
"yes": { "en": "yes", "de": "ja", "ru": "да", "pt": "sim", "nl": "Ja", "fr": "Oui", "it": "sì", "es": "sí", "pl": "tak"},
"bottom": { "en": "bottom", "de": "unten", "ru": "снизу", "pt": "inferior", "nl": "bodem", "fr": "bas", "it": "parte inferiore", "es": "fondo", "pl": "Dolny"},
"top": { "en": "top", "de": "oben", "ru": "сверху", "pt": "topo", "nl": "top", "fr": "Haut", "it": "superiore", "es": "parte superior", "pl": "Top"},
"left": { "en": "left", "de": "links", "ru": "слева", "pt": "esquerda", "nl": "links", "fr": "la gauche", "it": "sinistra", "es": "izquierda", "pl": "lewo"},
"right": { "en": "right", "de": "rechts", "ru": "справа", "pt": "certo", "nl": "rechts", "fr": "droite", "it": "destra", "es": "derecho", "pl": "dobrze"},
"No border:": { "en": "No border:", "de": "Kein Rahmen:", "ru": "Без рамки:", "pt": "Sem borda:", "nl": "Geen grens:", "fr": "Pas de frontière:", "it": "Nessun confine:", "es": "Sin bordes:", "pl": "Bez granic:"},
"Time": { "en": "Time", "de": "Zeit", "ru": "Время", "pt": "Tempo", "nl": "Tijd", "fr": "Temps", "it": "Tempo", "es": "Hora", "pl": "Czas"},
"day": { "en": "day", "de": "Tag", "ru": "День", "pt": "dia", "nl": "dag", "fr": "journée", "it": "giorno", "es": "día", "pl": "dzień"},
"month": { "en": "month", "de": "Monat", "ru": "month", "pt": "mês", "nl": "maand", "fr": "mois", "it": "mese", "es": "mes", "pl": "miesiąc"},
"year": { "en": "year", "de": "Jahr", "ru": "year", "pt": "ano", "nl": "jaar", "fr": "an", "it": "anno", "es": "año", "pl": "rok"},
"Individual": { "en": "Individual", "de": "Individuell", "ru": "Индивидуально", "pt": "Individual", "nl": "individu", "fr": "Individuel", "it": "Individuale", "es": "Individual", "pl": "Indywidualny"},
"Aggregation:": { "en": "Type:", "de": "Art:", "ru": "Тип:", "pt": "Tipo:", "nl": "Type:", "fr": "Type:", "it": "Genere:", "es": "Tipo:", "pl": "Rodzaj:"},
"relative": { "en": "relative", "de": "relative", "ru": "относительно", "pt": "relativo", "nl": "familielid", "fr": "relatif", "it": "parente", "es": "relativo", "pl": "krewny"},
"static": { "en": "static", "de": "statik", "ru": "постоянный", "pt": "estático", "nl": "statisch", "fr": "statique", "it": "statico", "es": "estático", "pl": "statyczny"},
"now": { "en": "now", "de": "jetzt", "ru": "сейчас", "pt": "agora", "nl": "nu", "fr": "à présent", "it": "adesso", "es": "ahora", "pl": "teraz"},
"today": { "en": "today", "de": "heute", "ru": "сегодня", "pt": "hoje", "nl": "vandaag", "fr": "aujourd'hui", "it": "oggi", "es": "hoy", "pl": "dzisiaj"},
"this month": { "en": "this month", "de": "dieser Monat", "ru": "этот месяц", "pt": "este mês", "nl": "deze maand", "fr": "ce mois-ci", "it": "questo mese", "es": "este mes", "pl": "ten miesiąc"},
"this year": { "en": "this year", "de": "dieses Jahr", "ru": "этот год", "pt": "este ano", "nl": "dit jaar", "fr": "cette année", "it": "quest'anno", "es": "este año", "pl": "W tym roku"},
"Start:": { "en": "Start:", "de": "Start:", "ru": "Начало:", "pt": "Começar:", "nl": "Begin:", "fr": "Début:", "it": "Inizio:", "es": "Comienzo:", "pl": "Początek:"},
"End:": { "en": "End:", "de": "Ende:", "ru": "Конец:", "pt": "Fim:", "nl": "Einde:", "fr": "Fin:", "it": "Fine:", "es": "Fin:", "pl": "Koniec:"},
"Aggregate": { "en": "Aggregate", "de": "Aggregation", "ru": "Объединение данных", "pt": "Agregar", "nl": "Aggregaat", "fr": "Agrégat", "it": "Aggregato", "es": "Agregar", "pl": "Agregat"},
"Step type:": { "en": "Step type:", "de": "Schritttyp:", "ru": "Шаги:", "pt": "Tipo de etapa:", "nl": "Stap type:", "fr": "Type d'étape:", "it": "Tipo di passaggio:", "es": "Tipo de paso:", "pl": "Rodzaj kroku:"},
"seconds": { "en": "seconds", "de": "Sekunden", "ru": "секунды", "pt": "segundos", "nl": "seconden", "fr": "secondes", "it": "secondi", "es": "segundos", "pl": "sekundy"},
"Seconds": { "en": "Seconds", "de": "Sekunden", "ru": "Cекунды", "pt": "Segundos", "nl": "seconden", "fr": "Secondes", "it": "secondi", "es": "Segundos", "pl": "sekundy"},
"Step span:": { "en": "Step span:", "de": "Schrittweite:", "ru": "Интервал шага:", "pt": "Passo:", "nl": "Stap overspanning:", "fr": "Étape span:", "it": "Intervallo:", "es": "Lapso de paso:", "pl": "Zakres kroku:"},
"Link": { "en": "Link", "de": "Link", "ru": "URL", "pt": "Ligação", "nl": "Link", "fr": "Lien", "it": "collegamento", "es": "Enlazar", "pl": "Połączyć"},
"Counts": { "en": "Counts", "de": "Anzahl", "ru": "Кол-во значений", "pt": "Contagens", "nl": "tellingen", "fr": "Compte", "it": "Conti", "es": "Cuenta", "pl": "Liczy"},
"ignore 'null'": { "en": "ignore 'null'", "de": "'null' ignorieren", "ru": "Игнорировать 'null'", "pt": "ignore 'null'", "nl": "negeer 'null'", "fr": "ignore 'null'", "it": "ignora 'null'", "es": "ignorar 'nulo'", "pl": "zignoruj ​​\"zero\""},
"Time Span": { "en": "Time Span", "de": "Zeit Spanne", "ru": "Временной интервал", "pt": "Intervalo de tempo", "nl": "Tijdspanne", "fr": "Durée", "it": "Arco di tempo", "es": "Espacio de tiempo", "pl": "Okres czasu"},
"Appearance": { "en": "Appearance", "de": "Erscheinung", "ru": "Оформление", "pt": "Aparência", "nl": "Uiterlijk", "fr": "Apparence", "it": "Aspetto", "es": "Apariencia", "pl": "Wygląd"},
"Title": { "en": "Title", "de": "Beschriftung", "ru": "Подпись", "pt": "Título", "nl": "Titel", "fr": "Titre", "it": "Titolo", "es": "Título", "pl": "Tytuł"},
"Offset": { "en": "X-Offset", "de": "X-Offset", "ru": "Сдвиг по Х", "pt": "X-Offset", "nl": "-X Offset", "fr": "X-Offset", "it": "X-Offset", "es": "X-Offset", "pl": "X-Offset"},
"Aggregation": { "en": "Type", "de": "Art", "ru": "Тип", "pt": "Tipo", "nl": "Type", "fr": "Type", "it": "genere", "es": "Tipo", "pl": "Rodzaj"},
"Chart Type": { "en": "Chart Type", "de": "Chart Type", "ru": "Тип графика", "pt": "Tipo de gráfico", "nl": "Diagramtype", "fr": "Type de graphique", "it": "Tipo di grafico", "es": "Tipo de gráfico", "pl": "Typ wykresu"},
"Color": { "en": "Color", "de": "Farbe", "ru": "Цвет", "pt": "Cor", "nl": "Kleur", "fr": "Couleur", "it": "Colore", "es": "Color", "pl": "Kolor"},
"Min": { "en": "Min", "de": "Min", "ru": "Мин", "pt": "Min", "nl": "min", "fr": "Min", "it": "min", "es": "Min.", "pl": "Min"},
"Max": { "en": "Max", "de": "Max", "ru": "Макс", "pt": "Max", "nl": "Max", "fr": "Max", "it": "Max", "es": "Max", "pl": "Max"},
"Unit": { "en": "Unit", "de": "Einheiten", "ru": "Единицы", "pt": "Unidade", "nl": "Eenheid", "fr": "Unité", "it": "Unità", "es": "Unidad", "pl": "Jednostka"},
"Y Axis": { "en": "Y Axis", "de": "Y Axe", "ru": "Ось Y", "pt": "Eixo Y", "nl": "Y-as", "fr": "Axe Y", "it": "Asse Y.", "es": "Eje Y", "pl": "Oś Y."},
"X Axis": { "en": "X Axis", "de": "X Axe", "ru": "Ось X", "pt": "X Axis", "nl": "X-as", "fr": "Axe X", "it": "Asse X.", "es": "Eje X", "pl": "Oś X."},
"update Preview": { "en": "update Preview", "de": "Vorschau aktualisieren", "ru": "Обновить", "pt": "atualização Visualização", "nl": "voorproefje van de nieuwe versie", "fr": "aperçu de mise à jour", "it": "Aggiorna anteprima", "es": "actualización de Vista previa", "pl": "aktualizuj podgląd"},
"Cancel": { "en": "Cancel", "de": "Abbrechen", "ru": "отменить", "pt": "Cancelar", "nl": "Annuleer", "fr": "Annuler", "it": "Annulla", "es": "Cancelar", "pl": "Anuluj"},
"Name": { "en": "Name", "de": "Name", "ru": "Имя", "pt": "Nome", "nl": "Naam", "fr": "prénom", "it": "Nome", "es": "Nombre", "pl": "Nazwa"},
"Live update every:": { "en": "Live update every:", "de": "Autoupdate alle:", "ru": "Обновлять каждые:", "pt": "Atualização ao vivo a cada:", "nl": "Live update elke:", "fr": "Mise à jour en direct tous les:", "it": "Aggiornamento live ogni:", "es": "Actualización en vivo cada:", "pl": "Aktualizacja na żywo co:"},
"counts": { "en": "counts", "de": "Anzahl", "ru": "кол-во", "pt": "contagens", "nl": "tellingen", "fr": "compte", "it": "conta", "es": "conteos", "pl": "liczy"},
"Add new line": { "en": "Add new line", "de": "Linie hinzufügen", "ru": "Добавить&nbsp;линию", "pt": "Adicionar nova linha", "nl": "Voeg een nieuwe regel toe", "fr": "Ajouter une nouvelle ligne", "it": "Aggiungi una nuova linea", "es": "Agregar nueva línea", "pl": "Dodaj nową linię"},
"Animation:": { "en": "Animation:", "de": "Animation:", "ru": "Анимация:", "pt": "Animação:", "nl": "animatie:", "fr": "Animation:", "it": "Animazione:", "es": "Animación:", "pl": "Animacja:"},
"no": { "en": "no", "de": "keine", "ru": "нет", "pt": "não", "nl": "Nee", "fr": "non", "it": "no", "es": "no", "pl": "Nie"},
"0s": { "en": "0 seconds", "de": "0s", "ru": "0c", "pt": "0 segundos", "nl": "0 seconden", "fr": "0 seconde", "it": "0 secondi", "es": "0 segundos", "pl": "0 sekund"},
"300ms": { "en": "300ms", "de": "300ms", "ru": "300мс", "pt": "300ms", "nl": "300ms", "fr": "300ms", "it": "300ms", "es": "300ms", "pl": "300ms"},
"500ms": { "en": "500ms", "de": "500ms", "ru": "500мс", "pt": "500ms", "nl": "500ms", "fr": "500ms", "it": "500ms", "es": "500ms", "pl": "500 ms"},
"1s": { "en": "1 second", "de": "1 Sekunde", "ru": "1 секунда", "pt": "1 segundo", "nl": "1 seconde", "fr": "1 seconde", "it": "1 secondo", "es": "1 segundo", "pl": "1 sekunda"},
"2s": { "en": "2 seconds", "de": "2 Sekunden", "ru": "2 секунды", "pt": "2 segundos", "nl": "2 seconden", "fr": "2 secondes", "it": "2 secondi", "es": "2 segundos", "pl": "2 sekundy"},
"3s": { "en": "3 seconds", "de": "3 Sekunden", "ru": "3 секунды", "pt": "3 segundos", "nl": "3 seconden", "fr": "3 secondes", "it": "3 secondi", "es": "3 segundos", "pl": "3 sekundy"},
"5s": { "en": "5 seconds", "de": "5 Sekunden", "ru": "5 секунд", "pt": "5 segundos", "nl": "5 seconden", "fr": "5 secondes", "it": "5 secondi", "es": "5 segundos", "pl": "5 sekund"},
"10s": { "en": "10 seconds", "de": "10 Sekunden", "ru": "10 секунд", "pt": "10 segundos", "nl": "10 seconden", "fr": "10 secondes", "it": "10 secondi", "es": "10 segundos", "pl": "10 sekund"},
"30s": { "en": "30 seconds", "de": "30 Sekunden", "ru": "30 секунд", "pt": "30 segundos", "nl": "30 seconden", "fr": "30 secondes", "it": "30 secondi", "es": "30 segundos", "pl": "30 sekund"},
"60s": { "en": "60 seconds", "de": "60 Sekunden", "ru": "60 секунд", "pt": "60 segundos", "nl": "60 seconden", "fr": "60 secondes", "it": "60 secondi", "es": "60 segundos", "pl": "60 sekund"},
"2m": { "en": "2 minutes", "de": "2 Minuten", "ru": "2 минуты", "pt": "2 minutos", "nl": "2 minuten", "fr": "2 minutes", "it": "2 minuti", "es": "2 minutos", "pl": "2 minuty"},
"3m": { "en": "3 minutes", "de": "3 Minuten", "ru": "3 минуты", "pt": "3 minutos", "nl": "3 minuten", "fr": "3 minutes", "it": "3 minuti", "es": "3 minutos", "pl": "3 minuty"},
"4m": { "en": "4 minutes", "de": "4 Minuten", "ru": "4 минуты", "pt": "4 minutos", "nl": "4 minuten", "fr": "4 minutes", "it": "4 minuti", "es": "4 minutos", "pl": "4 minuty"},
"5m": { "en": "5 minutes", "de": "5 Minuten", "ru": "5 минут", "pt": "5 minutos", "nl": "5 minuten", "fr": "5 minutes", "it": "5 minuti", "es": "5 minutos", "pl": "5 minut"},
"10m": { "en": "10 minutes", "de": "10 Minuten", "ru": "10 минут", "pt": "10 minutos", "nl": "10 minuten", "fr": "10 minutes", "it": "10 minuti", "es": "10 minutos", "pl": "10 minut"},
"15m": { "en": "15 minutes", "de": "15 Minuten", "ru": "15 минут", "pt": "15 minutos", "nl": "15 minuten", "fr": "15 minutes", "it": "15 minuti", "es": "15 minutos", "pl": "15 minut"},
"30m": { "en": "30 minutes", "de": "30 Minuten", "ru": "30 минут", "pt": "30 minutos", "nl": "30 minuten", "fr": "30 minutes", "it": "30 minuti", "es": "30 minutos", "pl": "30 minut"},
"45m": { "en": "45 minutes", "de": "45 Minuten", "ru": "45 минут", "pt": "45 minutos", "nl": "45 minuten", "fr": "45 minutes", "it": "45 minuti", "es": "45 minutos", "pl": "45 minut"},
"1H": { "en": "1 hour", "de": "1 Stunde", "ru": "1 час", "pt": "1 hora", "nl": "1 uur", "fr": "1 heure", "it": "1 ora", "es": "1 hora", "pl": "1 godzina"},
"2H": { "en": "2 hours", "de": "2 Stunden", "ru": "2 часа", "pt": "2 horas", "nl": "twee uur", "fr": "2 heures", "it": "2 ore", "es": "2 horas", "pl": "2 godziny"},
"6H": { "en": "6 hours", "de": "6 Stunden", "ru": "6 часов", "pt": "6 horas", "nl": "6 uur", "fr": "6 heures", "it": "6 ore", "es": "6 horas", "pl": "6 godzin"},
"12H": { "en": "12 hours", "de": "12 Stunden", "ru": "12 часов", "pt": "12 horas", "nl": "12 uren", "fr": "12 heures", "it": "12 ore", "es": "12 horas", "pl": "12 godzin"},
"1D": { "en": "1 day", "de": "1 Tag", "ru": "1 день", "pt": "1 dia", "nl": "1 dag", "fr": "Un jour", "it": "1 giorno", "es": "1 día", "pl": "1 dzień"},
"2D": { "en": "2 days", "de": "2 Tage", "ru": "2 дня", "pt": "2 dias", "nl": "2 dagen", "fr": "2 jours", "it": "2 giorni", "es": "2 días", "pl": "2 dni"},
"3D": { "en": "3 days", "de": "3 Tage", "ru": "3 дня", "pt": "3 dias", "nl": "3 dagen", "fr": "3 jours", "it": "3 giorni", "es": "3 días", "pl": "3 dni"},
"4D": { "en": "4 days", "de": "4 Tage", "ru": "4 дня", "pt": "4 dias", "nl": "4 dagen", "fr": "4 jours", "it": "4 giorni", "es": "4 dias", "pl": "4 dni"},
"1W": { "en": "1 week", "de": "1 Woche", "ru": "1 неделя", "pt": "1 semana", "nl": "1 week", "fr": "1 semaine", "it": "1 settimana", "es": "1 semana", "pl": "1 tydzień"},
"2W": { "en": "2 weeks", "de": "2 Wochen", "ru": "2 недели", "pt": "2 semanas", "nl": "2 weken", "fr": "2 semaines", "it": "2 settimane", "es": "2 semanas", "pl": "2 tygodnie"},
"4W": { "en": "4 weeks", "de": "4 Wochen", "ru": "4 недели", "pt": "4 semanas", "nl": "4 weken", "fr": "4 semaines", "it": "4 settimane", "es": "4 semanas", "pl": "4 tygodnie"},
"8W": { "en": "8 weeks", "de": "8 Wochen", "ru": "8 недель", "pt": "8 semanas", "nl": "8 weken", "fr": "8 semaines", "it": "8 settimane", "es": "8 semanas", "pl": "8 tygodni"},
"12W": { "en": "12 weeks", "de": "12 Wochen", "ru": "12 недель", "pt": "12 semanas", "nl": "12 weken", "fr": "12 semaines", "it": "12 settimane", "es": "12 semanas", "pl": "12 tygodni"},
"26W": { "en": "26 weeks", "de": "26 Wochen", "ru": "26 недель", "pt": "26 semanas", "nl": "26 weken", "fr": "26 semaines", "it": "26 settimane", "es": "26 semanas", "pl": "26 tygodni"},
"1M": { "en": "1 month", "de": "1 Monat", "ru": "1 месяц", "pt": "1 mês", "nl": "1 maand", "fr": "1 mois", "it": "1 mese", "es": "1 mes", "pl": "1 miesiąc"},
"2M": { "en": "2 months", "de": "2 Monate", "ru": "2 месяца", "pt": "2 meses", "nl": "2 maanden", "fr": "2 mois", "it": "Due mesi", "es": "2 meses", "pl": "2 miesiące"},
"3M": { "en": "3 months", "de": "3 Monate", "ru": "3 месяца", "pt": "3 meses", "nl": "3 maanden", "fr": "3 mois", "it": "3 mesi", "es": "3 meses", "pl": "3 miesiące"},
"6M": { "en": "6 months", "de": "6 Monate", "ru": "6 месяцев", "pt": "6 meses", "nl": "6 maanden", "fr": "6 mois", "it": "6 mesi", "es": "6 meses", "pl": "6 miesięcy"},
"1Y": { "en": "1 year", "de": "1 Jahr", "ru": "1 год", "pt": "1 ano", "nl": "1 jaar", "fr": "1 an", "it": "1 anno", "es": "1 año", "pl": "1 rok"},
"2Y": { "en": "2 years", "de": "2 Jahre", "ru": "2 года", "pt": "2 anos", "nl": "2 jaar", "fr": "2 ans", "it": "2 anni", "es": "2 años", "pl": "2 lata"},
"average": { "en": "average", "de": "mittel", "ru": "среднее", "pt": "média", "nl": "gemiddelde", "fr": "moyenne", "it": "media", "es": "promedio", "pl": "średni"},
"max": { "en": "max", "de": "max", "ru": "макс", "pt": "máximo", "nl": "max", "fr": "max", "it": "max", "es": "máximo", "pl": "maks"},
"min": { "en": "min", "de": "min", "ru": "мин", "pt": "min", "nl": "min", "fr": "min", "it": "min", "es": "min", "pl": "min"},
"total": { "en": "total", "de": "total", "ru": "всего", "pt": "total", "nl": "totaal", "fr": "total", "it": "totale", "es": "total", "pl": "całkowity"},
"off": { "en": "off", "de": "nichts", "ru": "скрыть", "pt": "fora", "nl": "uit", "fr": "de", "it": "via", "es": "apagado", "pl": "poza"},
"leftColor": { "en": "left colored", "de": "links farblich", "ru": "слева цветом", "pt": "colorido esquerdo", "nl": "links gekleurd", "fr": "laissé coloré", "it": "lasciato colorato", "es": "color izquierdo", "pl": "pozostawione w kolorze"},
"rightColor": { "en": "right colored", "de": "rechts farblich", "ru": "справа цветом", "pt": "cor clara", "nl": "rechts gekleurd", "fr": "couleur droite", "it": "giusto colorato", "es": "color derecho", "pl": "prawe kolorowe"},
"topColor": { "en": "top colored", "de": "oben farblich", "ru": "сверху цветом", "pt": "colorido superior", "nl": "bovenaan gekleurd", "fr": "top coloré", "it": "top colorato", "es": "tapa coloreada", "pl": "górne kolorowe"},
"bottomColor": { "en": "bottom colored", "de": "unten farblich", "ru": "снизу цветом", "pt": "colorido inferior", "nl": "onderaan gekleurd", "fr": "fond coloré", "it": "fondo colorato", "es": "color de fondo", "pl": "u dołu w kolorze"},
"default": { "en": "default", "de": "default", "ru": "по умолчанию", "pt": "padrão", "nl": "standaard", "fr": "défaut", "it": "predefinito", "es": "defecto", "pl": "domyślna"},
"Auto-update:": { "en": "Auto-update:", "de": "Auto-update:", "ru": "Обновлять сразу:", "pt": "Atualização automática:", "nl": "Auto update:", "fr": "Mise à jour automatique:", "it": "Aggiornamento automatico:", "es": "Actualización automática:", "pl": "Automatyczna aktualizacja:"},
"Use comma:": { "en": "Use comma:", "de": "Benutze Komma:", "ru": "Запятая-разделитель:", "pt": "Usar vírgula:", "nl": "Gebruik komma:", "fr": "Utilisez une virgule:", "it": "Usa la virgola:", "es": "Usa la coma", "pl": "Użyj przecinka:"},
"Common Y Axis": { "en": "Common Y Axis", "de": "Gemeinsame Y-Achse", "ru": "Общая ось Y", "pt": "Eixo Y comum", "nl": "Gemeenschappelijke Y-as", "fr": "Axe Y commun", "it": "Asse Y comune", "es": "Eje Y común", "pl": "Wspólna oś Y."},
"Instance": { "en": "Instance", "de": "Instanz", "ru": "Драйвер", "pt": "Instância", "nl": "Aanleg", "fr": "Exemple", "it": "Esempio", "es": "Ejemplo", "pl": "Instancja"},
"Line Width": { "en": "Line Width", "de": "Linienstärke", "ru": "Ширина линии", "pt": "Espessura da linha", "nl": "Lijnbreedte", "fr": "Largeur de ligne", "it": "Larghezza della linea", "es": "Ancho de línea", "pl": "Szerokość linii"},
"Shadow Size": { "en": "Shadow Size", "de": "Schattengröße", "ru": "Ширина тени", "pt": "Tamanho da sombra", "nl": "Schaduwgrootte", "fr": "Taille de l'ombre", "it": "Dimensione dell'ombra", "es": "Tamaño de las Sombras", "pl": "Rozmiar cienia"},
"ignore 'null':": { "en": "ignore 'null':", "de": "'null' ignorieren:", "ru": "Игнорировать 'null':", "pt": "ignore 'null':", "nl": "negeer 'null':", "fr": "ignore 'null':", "it": "ignora 'null':", "es": "ignorar 'nulo':", "pl": "zignoruj ​​\"null\":"},
"onchange": { "en": "on change", "de": "bei Änderung", "ru": "при изменении", "pt": "em mudança", "nl": "over verandering", "fr": "sur le changement", "it": "sul cambiamento", "es": "en cambio", "pl": "o zmianie"},
"Border color:": { "en": "Border color:", "de": "Rahmenfarbe:", "ru": "Цвет рамки:", "pt": "Cor da borda:", "nl": "Rand kleur:", "fr": "Couleur de la bordure:", "it": "Colore del bordo:", "es": "Color del borde:", "pl": "Kolor ramki:"},
"Grid color:": { "en": "Grid color:", "de": "Gitterfarbe:", "ru": "Цвет сетки:", "pt": "Cor da grade:", "nl": "Raster kleur:", "fr": "Couleur de la grille:", "it": "Colore griglia:", "es": "Color de cuadrícula", "pl": "Kolor siatki:"},
"Border width:": { "en": "Border width:", "de": "Rahmenbreite:", "ru": "Ширина рамки:", "pt": "Largura da borda:", "nl": "Grensbreedte:", "fr": "Largeur de la bordure:", "it": "Larghezza del bordo:", "es": "Ancho del borde:", "pl": "Szerokość granicy:"},
"Enable zoom and pan:": { "en": "Enable zoom and pan:", "de": "Aktiviere Zoom und Schieben:", "ru": "Разрешить увеличение и сдвиг:", "pt": "Ative o zoom e pan:", "nl": "Zoom en pan inschakelen:", "fr": "Activer le zoom et le panoramique:", "it": "Abilita zoom e panoramica:", "es": "Habilitar zoom y pan:", "pl": "Włącz powiększanie i panoramowanie:"},
"Arrange bools": { "en": "Arrange booleans", "de": "Platziere Booleans", "ru": "Выстроить bool графики", "pt": "Organizar booleanos", "nl": "Booleans regelen", "fr": "Organiser les booléens", "it": "Disporre i booleani", "es": "Organizar booleanos", "pl": "Rozmieść booleans"},
"NULL as": { "en": "NULL as", "de": "NULL als", "ru": "NULL как", "pt": "NULL como", "nl": "NULL als", "fr": "NULL comme", "it": "NULL come", "es": "NULL como", "pl": "NULL as"},
"MinMax": { "en": "MinMax", "de": "MinMax", "ru": "MinMax", "pt": "Mínimo máximo", "nl": "MinMax", "fr": "Min max", "it": "Minimo Massimo", "es": "Mínimo máximo", "pl": "Minimum maksimum"},
"null": { "en": "null", "de": "null", "ru": "null", "pt": "nulo", "nl": "nul", "fr": "nul", "it": "nullo", "es": "nulo", "pl": "zero"},
"true": { "en": "last value", "de": "letztes Wert", "ru": "пред. значение", "pt": "último valor", "nl": "laatste waarde", "fr": "dernière valeur", "it": "ultimo valore", "es": "último valor", "pl": "ostatnia wartość"},
"last value": { "en": "last value", "de": "letztes Wert", "ru": "пред. значение", "pt": "último valor", "nl": "laatste waarde", "fr": "dernière valeur", "it": "ultimo valore", "es": "último valor", "pl": "ostatnia wartość"},
"Hide edit button:": { "en": "Hide edit button:", "de": "Kein 'Edit'-Knopf:", "ru": "Скрыть кнопку 'Редактировать':", "pt": "Ocultar botão de edição:", "nl": "Verberg bewerken knop:", "fr": "Masquer le bouton d'édition:", "it": "Nascondi pulsante di modifica:", "es": "Ocultar botón de edición:", "pl": "Ukryj przycisk edycji:"},
"minmax": { "en": "minmax", "de": "minmax", "ru": "minmax", "pt": "mínimo máximo", "nl": "MinMax", "fr": "min max", "it": "minimo Massimo", "es": "mínimo máximo", "pl": "minimum maksimum"},
"&#216L": { "en": "&#216L", "de": "&#216L", "ru": "&#216L", "pt": "& # 216L", "nl": "& # 216L", "fr": "& # 216L", "it": "& # 216L", "es": "& # 216L", "pl": "& # 216L"},
"&#216S": { "en": "&#216S", "de": "&#216S", "ru": "&#216S", "pt": "& # 216S", "nl": "& # 216S", "fr": "& # 216S", "it": "& # 216S", "es": "& # 216S", "pl": "& # 216S"},
"Line": { "en": "Line", "de": "Linie", "ru": "Линия", "pt": "Linha", "nl": "Lijn", "fr": "Ligne", "it": "Linea", "es": "Línea", "pl": "Linia"},
"false": { "en": "null", "de": "null", "ru": "null", "pt": "nulo", "nl": "nul", "fr": "nul", "it": "nullo", "es": "nulo", "pl": "zero"},
"end of minute": { "en": "end of minute", "de": "Minutenende", "ru": "Конец минуты", "pt": "fim de minuto", "nl": "einde van de minuut", "fr": "fin de minute", "it": "fine del minuto", "es": "fin del minuto", "pl": "koniec minuty"},
"end of 5 minutes": { "en": "end of 5 minutes", "de": "Ende von 5 Minuten", "ru": "Конец 5 minutes", "pt": "fim de 5 minutos", "nl": "einde van 5 minuten", "fr": "fin de 5 minutes", "it": "fine di 5 minuti", "es": "fin de 5 minutos", "pl": "koniec 5 minut"},
"end of 10 minutes": { "en": "end of 10 minutes", "de": "Ende von 10 Minuten", "ru": "Конец 10 minutes", "pt": "fim de 10 minutos", "nl": "einde van 10 minuten", "fr": "fin de 10 minutes", "it": "fine di 10 minuti", "es": "fin de 10 minutos", "pl": "koniec 10 minut"},
"end of 30 minutes": { "en": "end of 30 minutes", "de": "Ende von 30 Minuten", "ru": "Конец 30 minutes", "pt": "fim de 30 minutos", "nl": "einde van 30 minuten", "fr": "fin de 30 minutes", "it": "fine di 30 minuti", "es": "fin de 30 minutos", "pl": "koniec 30 minut"},
"end of hour": { "en": "end of hour", "de": "Stundenende", "ru": "Конец часа", "pt": "fim de hora", "nl": "einde van het uur", "fr": "fin de l'heure", "it": "fine dell'ora", "es": "fin de hora", "pl": "koniec godziny"},
"end of 2 hours": { "en": "end of 2 hours", "de": "Ende von 2 Stunden", "ru": "Конец 2 часов", "pt": "fim de 2 horas", "nl": "einde van 2 uur", "fr": "fin de 2 heures", "it": "fine di 2 ore", "es": "fin de 2 horas", "pl": "koniec 2 godzin"},
"end of 3 hours": { "en": "end of 3 hours", "de": "Ende von 3 Stunden", "ru": "Конец 3 часов", "pt": "fim de 3 horas", "nl": "einde van 3 uur", "fr": "fin de 3 heures", "it": "fine di 3 ore", "es": "fin de 3 horas", "pl": "koniec 3 godzin"},
"end of 4 hours": { "en": "end of 4 hours", "de": "Ende von 4 Stunden", "ru": "Конец 4 часов", "pt": "fim de 4 horas", "nl": "einde van 4 uur", "fr": "fin de 4 heures", "it": "fine di 4 ore", "es": "fin de 4 horas", "pl": "koniec 4 godzin"},
"end of 6 hours": { "en": "end of 6 hours", "de": "Ende von 6 Stunden", "ru": "Конец 6 часов", "pt": "fim de 6 horas", "nl": "einde van 6 uur", "fr": "fin de 6 heures", "it": "fine di 6 ore", "es": "fin de 6 horas", "pl": "koniec 6 godzin"},
"end of 8 hours": { "en": "end of 8 hours", "de": "Ende von 8 Stunden", "ru": "Конец 8 часов", "pt": "fim de 8 horas", "nl": "einde van 8 uur", "fr": "fin de 8 heures", "it": "fine di 8 ore", "es": "fin de 8 horas", "pl": "koniec 8 godzin"},
"end of 12 hours": { "en": "end of 12 hours", "de": "Ende von 12 Stunden", "ru": "Конец 12 часов", "pt": "fim de 12 horas", "nl": "einde van 12 uur", "fr": "fin de 12 heures", "it": "fine di 12 ore", "es": "fin de 12 horas", "pl": "koniec 12 godzin"},
"end of day": { "en": "end of day", "de": "Tagesende", "ru": "Конец дня", "pt": "fim do dia", "nl": "einde van de dag", "fr": "fin de la journée", "it": "fine del giorno", "es": "fin del día", "pl": "koniec dnia"},
"end of sunday": { "en": "end of sunday", "de": "Wochenssende", "ru": "Конец недели", "pt": "fim de domingo", "nl": "einde van zondag", "fr": "fin de dimanche", "it": "fine della domenica", "es": "fin del domingo", "pl": "koniec niedzieli"},
"end of saturday": { "en": "end of saturday", "de": "Samstagsende", "ru": "Конец субботы", "pt": "fim de sábado", "nl": "einde van zaterdag", "fr": "fin de samedi", "it": "fine di sabato", "es": "fin de sabado", "pl": "koniec soboty"},
"1minute": { "en": "end of minute", "de": "Minutenende", "ru": "Конец минуты", "pt": "fim de minuto", "nl": "einde van de minuut", "fr": "fin de minute", "it": "fine del minuto", "es": "fin del minuto", "pl": "koniec minuty"},
"5minutes": { "en": "end of 5 minutes", "de": "Ende von 5 Minuten", "ru": "Конец 5 minutes", "pt": "fim de 5 minutos", "nl": "einde van 5 minuten", "fr": "fin de 5 minutes", "it": "fine di 5 minuti", "es": "fin de 5 minutos", "pl": "koniec 5 minut"},
"10minutes": { "en": "end of 10 minutes", "de": "Ende von 10 Minuten", "ru": "Конец 10 minutes", "pt": "fim de 10 minutos", "nl": "einde van 10 minuten", "fr": "fin de 10 minutes", "it": "fine di 10 minuti", "es": "fin de 10 minutos", "pl": "koniec 10 minut"},
"30minutes": { "en": "end of 30 minutes", "de": "Ende von 30 Minuten", "ru": "Конец 30 minutes", "pt": "fim de 30 minutos", "nl": "einde van 30 minuten", "fr": "fin de 30 minutes", "it": "fine di 30 minuti", "es": "fin de 30 minutos", "pl": "koniec 30 minut"},
"1hour": { "en": "end of hour", "de": "Stundenende", "ru": "Конец часа", "pt": "fim de hora", "nl": "einde van het uur", "fr": "fin de l'heure", "it": "fine dell'ora", "es": "fin de hora", "pl": "koniec godziny"},
"2hours": { "en": "end of 2 hours", "de": "Ende von 2 Stunden", "ru": "Конец 2 часов", "pt": "fim de 2 horas", "nl": "einde van 2 uur", "fr": "fin de 2 heures", "it": "fine di 2 ore", "es": "fin de 2 horas", "pl": "koniec 2 godzin"},
"3hours": { "en": "end of 3 hours", "de": "Ende von 3 Stunden", "ru": "Конец 3 часов", "pt": "fim de 3 horas", "nl": "einde van 3 uur", "fr": "fin de 3 heures", "it": "fine di 3 ore", "es": "fin de 3 horas", "pl": "koniec 3 godzin"},
"4hours": { "en": "end of 4 hours", "de": "Ende von 4 Stunden", "ru": "Конец 4 часов", "pt": "fim de 4 horas", "nl": "einde van 4 uur", "fr": "fin de 4 heures", "it": "fine di 4 ore", "es": "fin de 4 horas", "pl": "koniec 4 godzin"},
"6hours": { "en": "end of 6 hours", "de": "Ende von 6 Stunden", "ru": "Конец 6 часов", "pt": "fim de 6 horas", "nl": "einde van 6 uur", "fr": "fin de 6 heures", "it": "fine di 6 ore", "es": "fin de 6 horas", "pl": "koniec 6 godzin"},
"8hours": { "en": "end of 8 hours", "de": "Ende von 8 Stunden", "ru": "Конец 8 часов", "pt": "fim de 8 horas", "nl": "einde van 8 uur", "fr": "fin de 8 heures", "it": "fine di 8 ore", "es": "fin de 8 horas", "pl": "koniec 8 godzin"},
"12hours": { "en": "end of 12 hours", "de": "Ende von 12 Stunden", "ru": "Конец 12 часов", "pt": "fim de 12 horas", "nl": "einde van 12 uur", "fr": "fin de 12 heures", "it": "fine di 12 ore", "es": "fin de 12 horas", "pl": "koniec 12 godzin"},
"weekEurope": { "en": "end of day", "de": "Tagesende", "ru": "Конец дня", "pt": "fim do dia", "nl": "einde van de dag", "fr": "fin de la journée", "it": "fine del giorno", "es": "fin del día", "pl": "koniec dnia"},
"weekUsa": { "en": "end of sunday", "de": "Wochenssende", "ru": "Конец недели", "pt": "fim de domingo", "nl": "einde van zondag", "fr": "fin de dimanche", "it": "fine della domenica", "es": "fin del domingo", "pl": "koniec niedzieli"},
"Bar settings": { "en": "Bar settings", "de": "Bar-Einstellungen", "ru": "Настройки Bar", "pt": "Configurações da barra", "nl": "Bar-instellingen", "fr": "Paramètres du bar", "it": "Impostazioni della barra", "es": "Configuración de barra", "pl": "Ustawienia paska"},
"Fill color:": { "en": "Fill color:", "de": "Füllfarbe color:", "ru": "Цвет заливки:", "pt": "Cor de preenchimento:", "nl": "Opvulkleur:", "fr": "La couleur de remplissage:", "it": "Colore di riempimento:", "es": "Color de relleno:", "pl": "Kolor wypełnienia:"},
"Show labels:": { "en": "Show labels:", "de": "Zeige Labels:", "ru": "Подписи:", "pt": "Mostrar rótulos:", "nl": "Toon labels:", "fr": "Afficher les étiquettes:", "it": "Mostra etichette:", "es": "Mostrar etiquetas:", "pl": "Pokaż etykiety:"},
"top over": { "en": "top over", "de": "oben über", "ru": "Сверху над", "pt": "mais alto", "nl": "opnieuw gedaan", "fr": "dessus", "it": "sopra", "es": "arriba encima", "pl": "do góry"},
"top under": { "en": "top under", "de": "oben unten", "ru": "Сверху под", "pt": "top sob", "nl": "top onder", "fr": "haut sous", "it": "sopra sotto", "es": "arriba debajo", "pl": "górny pod"},
"middle": { "en": "middle", "de": "mittig", "ru": "В середине", "pt": "meio", "nl": "midden-", "fr": "milieu", "it": "mezzo", "es": "medio", "pl": "środkowy"},
"Bars width:": { "en": "Bars width:", "de": "Barbreite:", "ru": "Ширина бара:", "pt": "Largura das barras:", "nl": "Staaf breedte:", "fr": "Largeur des barres:", "it": "Larghezza delle barre:", "es": "Ancho de barras:", "pl": "Szerokość prętów:"},
"Label font size:": { "en": "Label font size:", "de": "Labelschriftgröße:", "ru": "Шрифт подписи:", "pt": "Etiquetar tamanho da fonte:", "nl": "Label lettergrootte:", "fr": "Étiquette taille de la police:", "it": "Dimensione del carattere dell'etichetta:", "es": "Tamaño de letra de la etiqueta:", "pl": "Rozmiar czcionki etykiety:"},
"Label color:": { "en": "Label color:", "de": "Labelfarbe:", "ru": "Цвет подписи:", "pt": "Cor do rótulo:", "nl": "Label kleur:", "fr": "Étiquette couleur:", "it": "Colore dell'etichetta:", "es": "Color de etiqueta:", "pl": "Kolor etykiety:"},
"Markings": { "en": "Markings", "de": "Markierungen", "ru": "Разметка", "pt": "Marcas", "nl": "markeringen", "fr": "Marquages", "it": "marcature", "es": "Marcas", "pl": "Znakowania"},
"Line ID": { "en": "Line ID", "de": "Linie ID", "ru": "ID линии", "pt": "ID da linha", "nl": "Lijn-ID", "fr": "Id de ligne", "it": "ID linea", "es": "Identificación de línea", "pl": "Identyfikator linii"},
"Fill": { "en": "Fill", "de": "Füllen", "ru": "Заливка", "pt": "Preencher", "nl": "Vullen", "fr": "Remplir", "it": "Riempire", "es": "Llenar", "pl": "Napełnić"},
"ØL": { "en": "ØL", "de": "ØL", "ru": "ØL", "pt": "ØL", "nl": "ØL", "fr": "ØL", "it": "ØL", "es": "ØL", "pl": "ØL"},
"ØS": { "en": "ØS", "de": "ØS", "ru": "ØS", "pt": "ØS", "nl": "Os", "fr": "ØS", "it": "ØS", "es": "ØS", "pl": "ØS"},
"Text": { "en": "Text", "de": "Text", "ru": "Текст", "pt": "Texto", "nl": "Tekst", "fr": "Texte", "it": "Testo", "es": "Texto", "pl": "Tekst"},
"Text position": { "en": "Text position", "de": "Textposition", "ru": "Расположение текста", "pt": "Posição de texto", "nl": "Tekstpositie", "fr": "Position du texte", "it": "Posizione del testo", "es": "Posición del texto", "pl": "Pozycja tekstu"},
"Text offset": { "en": "Text offset", "de": "Text-Offset", "ru": "Сдвиг текста", "pt": "Deslocamento de texto", "nl": "Tekst offset", "fr": "Décalage de texte", "it": "Offset del testo", "es": "Offset de texto", "pl": "Przesunięcie tekstu"},
"Text size": { "en": "Text size", "de": "Textgröße", "ru": "Размер текста", "pt": "Tamanho do texto", "nl": "Lettergrootte", "fr": "Taille du texte", "it": "Dimensione del testo", "es": "Tamano del texto", "pl": "Rozmiar czcionki"},
"Text color": { "en": "Text color", "de": "Textfarbe", "ru": "Цвет текста", "pt": "Cor do texto", "nl": "Tekst kleur", "fr": "Couleur du texte", "it": "Colore del testo", "es": "Color de texto", "pl": "Kolor tekstu"},
"Add new markings": { "en": "Add new markings", "de": "Neue Markierung hinzufügen", "ru": "Добавить разметку", "pt": "Adicionar novas marcações", "nl": "Voeg nieuwe markeringen toe", "fr": "Ajouter de nouvelles marques", "it": "Aggiungi nuovi segni", "es": "Agregar nuevas marcas", "pl": "Dodaj nowe oznaczenia"},
"Left": { "en": "Left", "de": "Links", "ru": "слева", "pt": "Esquerda", "nl": "Links", "fr": "La gauche", "it": "Sinistra", "es": "Izquierda", "pl": "Lewo"},
"Right": { "en": "Right", "de": "Rechts", "ru": "справа", "pt": "Certo", "nl": "Rechts", "fr": "Droite", "it": "Destra", "es": "Derecha", "pl": "Dobrze"},
"Upper value or ID": { "en": "Upper value or ID", "de": "Oberes Wert oder ID", "ru": "Верхнее значение или ID", "pt": "Valor superior ou ID", "nl": "Hoogste waarde of ID", "fr": "Valeur supérieure ou ID", "it": "Valore massimo o ID", "es": "Valor superior o ID", "pl": "Górna wartość lub ID"},
"Lower value or ID": { "en": "Lower value or ID", "de": "Unteres Wert oder ID", "ru": "Нижнее значение или ID", "pt": "Menor valor ou ID", "nl": "Lagere waarde of ID", "fr": "Valeur inférieure ou ID", "it": "Valore più basso o ID", "es": "Menor valor o ID", "pl": "Niższa wartość lub ID"},
"X-Axis ticks": { "en": "X-Axis ticks", "de": "X-Achse-Ticks", "ru": "Кол-во делений на шкале X", "pt": "Carrapatos do X-Axis", "nl": "X-as-teken", "fr": "Tiques de l'axe des X", "it": "Zecche X-Axis", "es": "Garrapatas X-Axis", "pl": "Tiki X-Axis"},
"Y-Axis ticks": { "en": "Y-Axis ticks", "de": "Y-Achse-Ticks", "ru": "Кол-во делений на шкале Y", "pt": "Carrapatos do Y-Axis", "nl": "Y-as tikken", "fr": "Tiques de l'axe des Y", "it": "Zecche dell'asse Y.", "es": "Señales del eje Y", "pl": "Tyksy Y-Axis"},
"ignore null values": { "en": "ignore null values", "de": "null-Werte ignorieren", "ru": "игнорировать значения null", "pt": "ignore valores nulos", "nl": "Negeer waarden negeren", "fr": "ignorer les valeurs nulles", "it": "ignora valori nulli", "es": "ignorar valores nulos", "pl": "ignoruj ​​wartości puste"},
"Ticks from:": { "en": "Use X-ticks from:", "de": "Benutze X-Ticks aus:", "ru": "Подписи X-делений из:", "pt": "Use X-ticks de:", "nl": "Gebruik X-ticks van:", "fr": "Utilisez les X-ticks de:", "it": "Usa X-tick da:", "es": "Use X-ticks desde:", "pl": "Użyj tyknięć X z:"},
"use 0 instead of null values": { "en": "use 0 instead of null values", "de": "0 statt null benutzen", "ru": "Заменять null на 0", "pt": "use 0 em vez de valores nulos", "nl": "gebruik 0 in plaats van nulwaarden", "fr": "utilise 0 au lieu de valeurs nulles", "it": "usa 0 invece di valori nulli", "es": "use 0 en lugar de valores nulos", "pl": "użyj 0 zamiast wartości zerowych"},
"More": { "en": "more", "de": "mehr", "ru": "ещё", "pt": "Mais", "nl": "meer", "fr": "plus", "it": "Di Più", "es": "Más", "pl": "jeszcze"},
"Edit options for line %s": { "en": "Edit options for line %s", "de": "Editieren weitere Einstellungen für Linie %s", "ru": "Редактировать настройки для линии %s", "pt": "Editar opções para a linha% s", "nl": "Bewerk opties voor regel% s", "fr": "Modifier les options pour la ligne% s", "it": "Modifica le opzioni per la riga% s", "es": "Editar opciones para la línea% s", "pl": "Edytuj opcje linii% s"},
"Legend columns:": { "en": "Legend columns:", "de": "Spalten in Legende:", "ru": "Колонок в легенде:", "pt": "Colunas da legenda:", "nl": "Legenda kolommen:", "fr": "Colonnes de légende:", "it": "Colonne della legenda:", "es": "Columnas leyenda", "pl": "Kolumny legendy:"},
"Legend opacity (from 0 to 1):": { "en": "Legend opacity (from 0 to 1):", "de": "Legende-Opacity (von 0 bis 1):", "ru": "Прозрачность легенды (от 0 до 1):", "pt": "Opacidade da legenda (de 0 a 1):", "nl": "Legenda opaciteit (van 0 tot 1):", "fr": "Opacité de la légende (de 0 à 1):", "it": "Opacità della legenda (da 0 a 1):", "es": "Opacidad de la leyenda (de 0 a 1):", "pl": "Krycie Legendy (od 0 do 1):"},
"Legend background:": { "en": "Legend background:", "de": "Legende-Hintergrund:", "ru": "Фон легенды:", "pt": "Legend background:", "nl": "Legenda achtergrond:", "fr": "Contexte de la légende", "it": "Sfondo leggenda:", "es": "Antecedentes de leyenda:", "pl": "Tło legendy:"},
"Fill(0to1)": { "en": "Fill(0to1)", "de": "Füllen(0bis1)", "ru": "Фон(0to1)", "pt": "Preencher (0 a 1)", "nl": "Fill (0to1)", "fr": "Remplir (0to1)", "it": "Fill (0to1)", "es": "Rellenar (0to1)", "pl": "Wypełnij (0to1)"},
"Points": { "en": "Points", "de": "Punkte", "ru": "Точки", "pt": "Pontos", "nl": "punten", "fr": "Points", "it": "Punti", "es": "Puntos", "pl": "Zwrotnica"},
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

+239
View File
@@ -0,0 +1,239 @@
.ui-colorpicker,
.ui-dialog.ui-colorpicker {
width: auto;
white-space: nowrap;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ui-colorpicker-inline {
position: static;
}
.ui-colorpicker-buttonset {
float: left;
margin-left: .4em;
}
.ui-colorpicker-buttonset .ui-button {
margin: .5em 0 .5em 0;
cursor: pointer;
}
.ui-colorpicker-buttonpane {
background-image: none;
margin: .7em 0 0 0;
padding: 0 .2em;
border-left: 0;
border-right: 0;
border-bottom: 0;
}
.ui-colorpicker-buttonpane button {
float: right;
margin: .5em .2em .4em;
cursor: pointer;
padding: .2em .6em .3em .6em;
width: auto;
overflow: visible;
}
.ui-colorpicker-buttonpane button.ui-colorpicker-current {
float: left;
}
.ui-colorpicker table {
width: 100%;
font-size: 100%; /* Reset browser table font-size */
margin: 0;
}
.ui-colorpicker table td {
vertical-align: top;
}
.ui-colorpicker-padding-left {
padding-left: 10px;
}
.ui-colorpicker-padding-top {
padding-top: 10px;
}
.ui-colorpicker-border {
border: 1px inset;
display: inline-block;
}
/* Bar & map */
.ui-colorpicker-map > *,
.ui-colorpicker-bar > * {
position: absolute;
cursor: crosshair;
}
.ui-colorpicker-map-pointer,
.ui-colorpicker-bar-pointer {
position: absolute;
left: 0;
}
/* Map */
.ui-colorpicker-map,
.ui-colorpicker-map > * {
display: block;
width: 256px;
height: 256px;
overflow: hidden;
}
.ui-colorpicker-map-layer-1,
.ui-colorpicker-map-layer-2 {
background: url(images/map.png) no-repeat;
}
.ui-colorpicker-map-128,
.ui-colorpicker-map-128 > * {
width: 128px;
height: 128px;
}
.ui-colorpicker-map-128 .ui-colorpicker-map-layer-1,
.ui-colorpicker-map-128 .ui-colorpicker-map-layer-2 {
background: url(images/128/map.png) no-repeat;
}
.ui-colorpicker-map-layer-alpha {
background: url(images/map-opacity.png);
}
.ui-colorpicker-map-pointer {
display: inline-block;
width: 15px;
height: 15px;
background: url(images/map-pointer.png) no-repeat;
}
/* Bar */
.ui-colorpicker-bar,
.ui-colorpicker-bar > * {
display: block;
width: 20px;
height: 256px;
overflow: hidden;
background-repeat: repeat-x;
}
.ui-colorpicker-bar-128,
.ui-colorpicker-bar-128 > * {
height: 128px;
}
.ui-colorpicker-bar-layer-1,
.ui-colorpicker-bar-layer-2,
.ui-colorpicker-bar-layer-3,
.ui-colorpicker-bar-layer-4 {
background: url(images/bar.png) repeat-x;
}
.ui-colorpicker-bar-128 .ui-colorpicker-bar-layer-1,
.ui-colorpicker-bar-128 .ui-colorpicker-bar-layer-2,
.ui-colorpicker-bar-128 .ui-colorpicker-bar-layer-3,
.ui-colorpicker-bar-128 .ui-colorpicker-bar-layer-4 {
background: url(images/128/bar.png) repeat-x;
}
.ui-colorpicker-bar-layer-alpha {
background: url(images/bar-opacity.png);
}
.ui-colorpicker-bar-layer-alphabar {
background: url(images/bar-alpha.png);
}
.ui-colorpicker-bar-128 .ui-colorpicker-bar-layer-alphabar {
background: url(images/128/bar-alpha.png);
}
.ui-colorpicker-bar-pointer {
display: inline-block;
width: 20px;
height: 7px;
background: url(images/bar-pointer.png) no-repeat;
}
/* Preview */
.ui-colorpicker-preview {
text-align: center;
height: 20px;
}
.ui-colorpicker-preview-initial {
cursor: pointer;
}
.ui-colorpicker-preview-initial,
.ui-colorpicker-preview-current {
width: 50px;
height: 20px;
display: inline-block;
}
.ui-colorpicker-preview-initial-alpha,
.ui-colorpicker-preview-current-alpha {
width: 50px;
height: 20px;
display: inline-block;
background: url(images/preview-opacity.png) repeat;
}
/* Inputs */
.ui-colorpicker-rgb label,
.ui-colorpicker-hsv label,
.ui-colorpicker-hsl label,
.ui-colorpicker-lab label,
.ui-colorpicker-cmyk label,
.ui-colorpicker-alpha label {
width: 1.5em;
display: inline-block;
}
.ui-colorpicker-number {
margin: .1em;
width: 4em;
}
/* Hex */
.ui-colorpicker-hex {
text-align: center;
}
/* Swatches */
.ui-colorpicker-swatches {
height: 256px;
overflow: auto;
background-color: #f8f8f8;
}
.ui-colorpicker-swatch {
cursor: pointer;
float: left;
width: 11px;
height: 11px;
border-right: 1px solid black;
border-bottom: 1px solid black;
}
.ui-colorpicker-disabled {
opacity: .5;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
pointer-events: none;
}
.ui-colorpicker-disabled * {
cursor: default !important;
}
+483
View File
@@ -0,0 +1,483 @@
/* The MIT License
Copyright (c) 2011 by Michael Zinsmaier and nergal.dev
Copyright (c) 2012 by Thomas Ritou
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
/*
____________________________________________________
what it is:
____________________________________________________
curvedLines is a plugin for flot, that tries to display lines in a smoother way.
This is achieved through adding of more data points. The plugin is a data processor and can thus be used
in combination with standard line / point rendering options.
=> 1) with large data sets you may get trouble
=> 2) if you want to display the points too, you have to plot them as 2nd data series over the lines
=> 3) consecutive x data points are not allowed to have the same value
Feel free to further improve the code
____________________________________________________
how to use it:
____________________________________________________
var d1 = [[5,5],[7,3],[9,12]];
var options = { series: { curvedLines: { active: true }}};
$.plot($("#placeholder"), [{data: d1, lines: { show: true}, curvedLines: {apply: true}}], options);
_____________________________________________________
options:
_____________________________________________________
active: bool true => plugin can be used
apply: bool true => series will be drawn as curved line
monotonicFit: bool true => uses monotone cubic interpolation (preserve monotonicity)
tension: int defines the tension parameter of the hermite spline interpolation (no effect if monotonicFit is set)
nrSplinePoints: int defines the number of sample points (of the spline) in between two consecutive points
deprecated options from flot prior to 1.0.0:
------------------------------------------------
legacyOverride bool true => use old default
OR
legacyOverride optionArray
{
fit: bool true => forces the max,mins of the curve to be on the datapoints
curvePointFactor int defines how many "virtual" points are used per "real" data point to
emulate the curvedLines (points total = real points * curvePointFactor)
fitPointDist: int defines the x axis distance of the additional two points that are used
} to enforce the min max condition.
*/
/*
* v0.1 initial commit
* v0.15 negative values should work now (outcommented a negative -> 0 hook hope it does no harm)
* v0.2 added fill option (thanks to monemihir) and multi axis support (thanks to soewono effendi)
* v0.3 improved saddle handling and added basic handling of Dates
* v0.4 rewritten fill option (thomas ritou) mostly from original flot code (now fill between points rather than to graph bottom), corrected fill Opacity bug
* v0.5 rewritten instead of implementing a own draw function CurvedLines is now based on the processDatapoints flot hook (credits go to thomas ritou).
* This change breakes existing code however CurvedLines are now just many tiny straight lines to flot and therefore all flot lines options (like gradient fill,
* shadow) are now supported out of the box
* v0.6 flot 0.8 compatibility and some bug fixes
* v0.6.x changed versioning schema
*
* v1.0.0 API Break marked existing implementation/options as deprecated
* v1.1.0 added the new curved line calculations based on hermite splines
* v1.1.1 added a rough parameter check to make sure the new options are used
*/
(function($) {
var options = {
series : {
curvedLines : {
active : false,
apply : false,
monotonicFit : false,
tension : 0.5,
nrSplinePoints : 20,
legacyOverride : undefined
}
}
};
function init(plot) {
plot.hooks.processOptions.push(processOptions);
//if the plugin is active register processDatapoints method
function processOptions(plot, options) {
if (options.series.curvedLines.active) {
plot.hooks.processDatapoints.unshift(processDatapoints);
}
}
//only if the plugin is active
function processDatapoints(plot, series, datapoints) {
var nrPoints = datapoints.points.length / datapoints.pointsize;
var EPSILON = 0.005;
//detects missplaced legacy parameters (prior v1.x.x) in the options object
//this can happen if somebody upgrades to v1.x.x without adjusting the parameters or uses old examples
var invalidLegacyOptions = hasInvalidParameters(series.curvedLines);
if (!invalidLegacyOptions && series.curvedLines.apply == true && series.originSeries === undefined && nrPoints > (1 + EPSILON)) {
if (series.lines.fill) {
var pointsTop = calculateCurvePoints(datapoints, series.curvedLines, 1);
var pointsBottom = calculateCurvePoints(datapoints, series.curvedLines, 2);
//flot makes sure for us that we've got a second y point if fill is true !
//Merge top and bottom curve
datapoints.pointsize = 3;
datapoints.points = [];
var j = 0;
var k = 0;
var i = 0;
var ps = 2;
while (i < pointsTop.length || j < pointsBottom.length) {
if (pointsTop[i] == pointsBottom[j]) {
datapoints.points[k] = pointsTop[i];
datapoints.points[k + 1] = pointsTop[i + 1];
datapoints.points[k + 2] = pointsBottom[j + 1];
j += ps;
i += ps;
} else if (pointsTop[i] < pointsBottom[j]) {
datapoints.points[k] = pointsTop[i];
datapoints.points[k + 1] = pointsTop[i + 1];
datapoints.points[k + 2] = k > 0 ? datapoints.points[k - 1] : null;
i += ps;
} else {
datapoints.points[k] = pointsBottom[j];
datapoints.points[k + 1] = k > 1 ? datapoints.points[k - 2] : null;
datapoints.points[k + 2] = pointsBottom[j + 1];
j += ps;
}
k += 3;
}
} else if (series.lines.lineWidth > 0) {
datapoints.points = calculateCurvePoints(datapoints, series.curvedLines, 1);
datapoints.pointsize = 2;
}
}
}
function calculateCurvePoints(datapoints, curvedLinesOptions, yPos) {
if ( typeof curvedLinesOptions.legacyOverride != 'undefined' && curvedLinesOptions.legacyOverride != false) {
var defaultOptions = {
fit : false,
curvePointFactor : 20,
fitPointDist : undefined
};
var legacyOptions = jQuery.extend(defaultOptions, curvedLinesOptions.legacyOverride);
return calculateLegacyCurvePoints(datapoints, legacyOptions, yPos);
}
return calculateSplineCurvePoints(datapoints, curvedLinesOptions, yPos);
}
function calculateSplineCurvePoints(datapoints, curvedLinesOptions, yPos) {
var points = datapoints.points;
var ps = datapoints.pointsize;
//create interpolant fuction
var splines = createHermiteSplines(datapoints, curvedLinesOptions, yPos);
var result = [];
//sample the function
// (the result is intependent from the input data =>
// it is ok to alter the input after this method)
var j = 0;
for (var i = 0; i < points.length - ps; i += ps) {
var curX = i;
var curY = i + yPos;
var xStart = points[curX];
var xEnd = points[curX + ps];
var xStep = (xEnd - xStart) / Number(curvedLinesOptions.nrSplinePoints);
//add point
result.push(points[curX]);
result.push(points[curY]);
//add curve point
for (var x = (xStart += xStep); x < xEnd; x += xStep) {
result.push(x);
result.push(splines[j](x));
}
j++;
}
//add last point
result.push(points[points.length - ps]);
result.push(points[points.length - ps + yPos]);
return result;
}
// Creates an array of splines, one for each segment of the original curve. Algorithm based on the wikipedia articles:
//
// http://de.wikipedia.org/w/index.php?title=Kubisch_Hermitescher_Spline&oldid=130168003 and
// http://en.wikipedia.org/w/index.php?title=Monotone_cubic_interpolation&oldid=622341725 and the description of Fritsch-Carlson from
// http://math.stackexchange.com/questions/45218/implementation-of-monotone-cubic-interpolation
// for a detailed description see https://github.com/MichaelZinsmaier/CurvedLines/docu
function createHermiteSplines(datapoints, curvedLinesOptions, yPos) {
var points = datapoints.points;
var ps = datapoints.pointsize;
// preparation get length (x_{k+1} - x_k) and slope s=(p_{k+1} - p_k) / (x_{k+1} - x_k) of the segments
var segmentLengths = [];
var segmentSlopes = [];
for (var i = 0; i < points.length - ps; i += ps) {
var curX = i;
var curY = i + yPos;
var dx = points[curX + ps] - points[curX];
var dy = points[curY + ps] - points[curY];
segmentLengths.push(dx);
segmentSlopes.push(dy / dx);
}
//get the values for the desired gradients m_k for all points k
//depending on the used method the formula is different
var gradients = [segmentSlopes[0]];
if (curvedLinesOptions.monotonicFit) {
// Fritsch Carlson
for (var i = 1; i < segmentLengths.length; i++) {
var slope = segmentSlopes[i];
var prev_slope = segmentSlopes[i - 1];
if (slope * prev_slope <= 0) { // sign(prev_slope) != sign(slpe)
gradients.push(0);
} else {
var length = segmentLengths[i];
var prev_length = segmentLengths[i - 1];
var common = length + prev_length;
//m = 3 (prev_length + length) / ((2 length + prev_length) / prev_slope + (length + 2 prev_length) / slope)
gradients.push(3 * common / ((common + length) / prev_slope + (common + prev_length) / slope));
}
}
} else {
// Cardinal spline with t € [0,1]
// Catmull-Rom for t = 0
for (var i = ps; i < points.length - ps; i += ps) {
var curX = i;
var curY = i + yPos;
gradients.push(Number(curvedLinesOptions.tension) * (points[curY + ps] - points[curY - ps]) / (points[curX + ps] - points[curX - ps]));
}
}
gradients.push(segmentSlopes[segmentSlopes.length - 1]);
//get the two major coefficients (c'_{oef1} and c'_{oef2}) for each segment spline
var coefs1 = [];
var coefs2 = [];
for (i = 0; i < segmentLengths.length; i++) {
var m_k = gradients[i];
var m_k_plus = gradients[i + 1];
var slope = segmentSlopes[i];
var invLength = 1 / segmentLengths[i];
var common = m_k + m_k_plus - slope - slope;
coefs1.push(common * invLength * invLength);
coefs2.push((slope - common - m_k) * invLength);
}
//create functions with from the coefficients and capture the parameters
var ret = [];
for (var i = 0; i < segmentLengths.length; i ++) {
var spline = function (x_k, coef1, coef2, coef3, coef4) {
// spline for a segment
return function (x) {
var diff = x - x_k;
var diffSq = diff * diff;
return coef1 * diff * diffSq + coef2 * diffSq + coef3 * diff + coef4;
};
};
ret.push(spline(points[i * ps], coefs1[i], coefs2[i], gradients[i], points[i * ps + yPos]));
}
return ret;
};
//no real idea whats going on here code mainly from https://code.google.com/p/flot/issues/detail?id=226
//if fit option is selected additional datapoints get inserted before the curve calculations in nergal.dev s code.
function calculateLegacyCurvePoints(datapoints, curvedLinesOptions, yPos) {
var points = datapoints.points;
var ps = datapoints.pointsize;
var num = Number(curvedLinesOptions.curvePointFactor) * (points.length / ps);
var xdata = new Array;
var ydata = new Array;
var curX = -1;
var curY = -1;
var j = 0;
if (curvedLinesOptions.fit) {
//insert a point before and after the "real" data point to force the line
//to have a max,min at the data point.
var fpDist;
if ( typeof curvedLinesOptions.fitPointDist == 'undefined') {
//estimate it
var minX = points[0];
var maxX = points[points.length - ps];
fpDist = (maxX - minX) / (500 * 100);
//x range / (estimated pixel length of placeholder * factor)
} else {
//use user defined value
fpDist = Number(curvedLinesOptions.fitPointDist);
}
for (var i = 0; i < points.length; i += ps) {
var frontX;
var backX;
curX = i;
curY = i + yPos;
//add point X s
frontX = points[curX] - fpDist;
backX = points[curX] + fpDist;
var factor = 2;
while (frontX == points[curX] || backX == points[curX]) {
//inside the ulp
frontX = points[curX] - (fpDist * factor);
backX = points[curX] + (fpDist * factor);
factor++;
}
//add curve points
xdata[j] = frontX;
ydata[j] = points[curY];
j++;
xdata[j] = points[curX];
ydata[j] = points[curY];
j++;
xdata[j] = backX;
ydata[j] = points[curY];
j++;
}
} else {
//just use the datapoints
for (var i = 0; i < points.length; i += ps) {
curX = i;
curY = i + yPos;
xdata[j] = points[curX];
ydata[j] = points[curY];
j++;
}
}
var n = xdata.length;
var y2 = new Array();
var delta = new Array();
y2[0] = 0;
y2[n - 1] = 0;
delta[0] = 0;
for (var i = 1; i < n - 1; ++i) {
var d = (xdata[i + 1] - xdata[i - 1]);
if (d == 0) {
//point before current point and after current point need some space in between
return [];
}
var s = (xdata[i] - xdata[i - 1]) / d;
var p = s * y2[i - 1] + 2;
y2[i] = (s - 1) / p;
delta[i] = (ydata[i + 1] - ydata[i]) / (xdata[i + 1] - xdata[i]) - (ydata[i] - ydata[i - 1]) / (xdata[i] - xdata[i - 1]);
delta[i] = (6 * delta[i] / (xdata[i + 1] - xdata[i - 1]) - s * delta[i - 1]) / p;
}
for (var j = n - 2; j >= 0; --j) {
y2[j] = y2[j] * y2[j + 1] + delta[j];
}
// xmax - xmin / #points
var step = (xdata[n - 1] - xdata[0]) / (num - 1);
var xnew = new Array;
var ynew = new Array;
var result = new Array;
xnew[0] = xdata[0];
ynew[0] = ydata[0];
result.push(xnew[0]);
result.push(ynew[0]);
for ( j = 1; j < num; ++j) {
//new x point (sampling point for the created curve)
xnew[j] = xnew[0] + j * step;
var max = n - 1;
var min = 0;
while (max - min > 1) {
var k = Math.round((max + min) / 2);
if (xdata[k] > xnew[j]) {
max = k;
} else {
min = k;
}
}
//found point one to the left and one to the right of generated new point
var h = (xdata[max] - xdata[min]);
if (h == 0) {
//similar to above two points from original x data need some space between them
return [];
}
var a = (xdata[max] - xnew[j]) / h;
var b = (xnew[j] - xdata[min]) / h;
ynew[j] = a * ydata[min] + b * ydata[max] + ((a * a * a - a) * y2[min] + (b * b * b - b) * y2[max]) * (h * h) / 6;
result.push(xnew[j]);
result.push(ynew[j]);
}
return result;
}
function hasInvalidParameters(curvedLinesOptions) {
if (typeof curvedLinesOptions.fit != 'undefined' ||
typeof curvedLinesOptions.curvePointFactor != 'undefined' ||
typeof curvedLinesOptions.fitPointDist != 'undefined') {
throw new Error("CurvedLines detected illegal parameters. The CurvedLines API changed with version 1.0.0 please check the options object.");
return true;
}
return false;
}
}//end init
$.plot.plugins.push({
init : init,
options : options,
name : 'curvedLines',
version : '1.1.1'
});
})(jQuery);
File diff suppressed because one or more lines are too long
+112
View File
@@ -0,0 +1,112 @@
(function(deparam){
if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {
var jquery = require('jquery');
module.exports = deparam(jquery);
} else if (typeof define === 'function' && define.amd){
define(['jquery'], function(jquery){
return deparam(jquery);
});
} else {
var global
try {
global = (false || eval)('this'); // best cross-browser way to determine global for < ES5
} catch (e) {
global = window; // fails only if browser (https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives)
}
global.deparam = deparam(jQuery); // assume jQuery is in global namespace
}
})(function ($) {
var deparam = function( params, coerce ) {
var obj = {},
coerce_types = { 'true': !0, 'false': !1, 'null': null };
// Iterate over all name=value pairs.
params.replace(/\+/g, ' ').split('&').forEach(function(v){
var param = v.split( '=' ),
key = decodeURIComponent( param[0] ),
val,
cur = obj,
i = 0,
// If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it
// into its component parts.
keys = key.split( '][' ),
keys_last = keys.length - 1;
// If the first keys part contains [ and the last ends with ], then []
// are correctly balanced.
if ( /\[/.test( keys[0] ) && /\]$/.test( keys[ keys_last ] ) ) {
// Remove the trailing ] from the last keys part.
keys[ keys_last ] = keys[ keys_last ].replace( /\]$/, '' );
// Split first keys part into two parts on the [ and add them back onto
// the beginning of the keys array.
keys = keys.shift().split('[').concat( keys );
keys_last = keys.length - 1;
} else {
// Basic 'foo' style key.
keys_last = 0;
}
// Are we dealing with a name=value pair, or just a name?
if ( param.length === 2 ) {
val = decodeURIComponent( param[1] );
// Coerce values.
if ( coerce ) {
val = val && !isNaN(val) && ((+val + '') === val) ? +val // number
: val === 'undefined' ? undefined // undefined
: coerce_types[val] !== undefined ? coerce_types[val] // true, false, null
: val; // string
}
if ( keys_last ) {
// Complex key, build deep object structure based on a few rules:
// * The 'cur' pointer starts at the object top-level.
// * [] = array push (n is set to array length), [n] = array if n is
// numeric, otherwise object.
// * If at the last keys part, set the value.
// * For each keys part, if the current level is undefined create an
// object or array based on the type of the next keys part.
// * Move the 'cur' pointer to the next level.
// * Rinse & repeat.
for ( ; i <= keys_last; i++ ) {
key = keys[i] === '' ? cur.length : keys[i];
cur = cur[key] = i < keys_last
? cur[key] || ( keys[i+1] && isNaN( keys[i+1] ) ? {} : [] )
: val;
}
} else {
// Simple key, even simpler rules, since only scalars and shallow
// arrays are allowed.
if ( Object.prototype.toString.call( obj[key] ) === '[object Array]' ) {
// val is already an array, so push on the next value.
obj[key].push( val );
} else if ( {}.hasOwnProperty.call(obj, key) ) {
// val isn't an array, but since a second value has been specified,
// convert val into an array.
obj[key] = [ obj[key], val ];
} else {
// val is a scalar.
obj[key] = val;
}
}
} else if ( key ) {
// No value was defined, so set something meaningful.
obj[key] = coerce
? undefined
: '';
}
});
return obj;
};
$.prototype.deparam = $.deparam = deparam;
return deparam;
});
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
/* Javascript plotting library for jQuery, version 0.8.3.
Copyright (c) 2007-2014 IOLA and Ole Laursen.
Licensed under the MIT license.
*/
(function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;m<format.length;++m){if(format[m].x&&xCategories)format[m].number=false;if(format[m].y&&yCategories)format[m].number=false}}function getNextIndex(categories){var index=-1;for(var v in categories)if(categories[v]>index)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i<o.length;++i)c[o[i]]=i}else{for(var v in o)c[v]=o[v]}series[axis].categories=c}if(!series[axis].options.ticks)series[axis].options.ticks=categoriesTickGenerator;transformPointsOnAxis(datapoints,axis,series[axis].categories)}function transformPointsOnAxis(datapoints,axis,categories){var points=datapoints.points,ps=datapoints.pointsize,format=datapoints.format,formatColumn=axis.charAt(0),index=getNextIndex(categories);for(var i=0;i<points.length;i+=ps){if(points[i]==null)continue;for(var m=0;m<ps;++m){var val=points[i+m];if(val==null||!format[m][formatColumn])continue;if(!(val in categories)){categories[val]=index;++index}points[i+m]=categories[val]}}}function processDatapoints(plot,series,datapoints){setupCategoriesForAxis(series,"xaxis",datapoints);setupCategoriesForAxis(series,"yaxis",datapoints)}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.processDatapoints.push(processDatapoints)}$.plot.plugins.push({init:init,options:options,name:"categories",version:"1.0"})})(jQuery);
+228
View File
@@ -0,0 +1,228 @@
/*
* jQuery.flot.dashes
*
* options = {
* series: {
* dashes: {
*
* // show
* // default: false
* // Whether to show dashes for the series.
* show: <boolean>,
*
* // lineWidth
* // default: 2
* // The width of the dashed line in pixels.
* lineWidth: <number>,
*
* // dashLength
* // default: 10
* // Controls the length of the individual dashes and the amount of
* // space between them.
* // If this is a number, the dashes and spaces will have that length.
* // If this is an array, it is read as [ dashLength, spaceLength ]
* dashLength: <number> or <array[2]>
* }
* }
* }
*/
(function($){
var options = {
series: {
dashes: {
show: false,
lineWidth: 2,
dashLength: 10
}
}
};
function init(plot) {
plot.hooks.drawSeries.push(function(plot, ctx, series) {
if (!series.dashes.show) return;
var plotOffset = plot.getPlotOffset(),
axisx = series.xaxis,
axisy = series.yaxis;
function plotDashes(xoffset, yoffset) {
var points = series.datapoints.points,
ps = series.datapoints.pointsize,
prevx = null,
prevy = null,
dashRemainder = 0,
dashOn = true,
dashOnLength,
dashOffLength;
if (series.dashes.dashLength[0]) {
dashOnLength = series.dashes.dashLength[0];
if (series.dashes.dashLength[1]) {
dashOffLength = series.dashes.dashLength[1];
} else {
dashOffLength = dashOnLength;
}
} else {
dashOffLength = dashOnLength = series.dashes.dashLength;
}
ctx.beginPath();
for (var i = ps; i < points.length; i += ps) {
var x1 = points[i - ps],
y1 = points[i - ps + 1],
x2 = points[i],
y2 = points[i + 1];
if (x1 == null || x2 == null) continue;
// clip with ymin
if (y1 <= y2 && y1 < axisy.min) {
if (y2 < axisy.min) continue; // line segment is outside
// compute new intersection point
x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
y1 = axisy.min;
} else if (y2 <= y1 && y2 < axisy.min) {
if (y1 < axisy.min) continue;
x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
y2 = axisy.min;
}
// clip with ymax
if (y1 >= y2 && y1 > axisy.max) {
if (y2 > axisy.max) continue;
x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
y1 = axisy.max;
} else if (y2 >= y1 && y2 > axisy.max) {
if (y1 > axisy.max) continue;
x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
y2 = axisy.max;
}
// clip with xmin
if (x1 <= x2 && x1 < axisx.min) {
if (x2 < axisx.min) continue;
y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
x1 = axisx.min;
} else if (x2 <= x1 && x2 < axisx.min) {
if (x1 < axisx.min) continue;
y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
x2 = axisx.min;
}
// clip with xmax
if (x1 >= x2 && x1 > axisx.max) {
if (x2 > axisx.max) continue;
y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
x1 = axisx.max;
} else if (x2 >= x1 && x2 > axisx.max) {
if (x1 > axisx.max) continue;
y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
x2 = axisx.max;
}
if (x1 != prevx || y1 != prevy) {
ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);
}
var ax1 = axisx.p2c(x1) + xoffset,
ay1 = axisy.p2c(y1) + yoffset,
ax2 = axisx.p2c(x2) + xoffset,
ay2 = axisy.p2c(y2) + yoffset,
dashOffset;
function lineSegmentOffset(segmentLength) {
var c = Math.sqrt(Math.pow(ax2 - ax1, 2) + Math.pow(ay2 - ay1, 2));
if (c <= segmentLength) {
return {
deltaX: ax2 - ax1,
deltaY: ay2 - ay1,
distance: c,
remainder: segmentLength - c
}
} else {
var xsign = ax2 > ax1 ? 1 : -1,
ysign = ay2 > ay1 ? 1 : -1;
return {
deltaX: xsign * Math.sqrt(Math.pow(segmentLength, 2) / (1 + Math.pow((ay2 - ay1)/(ax2 - ax1), 2))),
deltaY: ysign * Math.sqrt(Math.pow(segmentLength, 2) - Math.pow(segmentLength, 2) / (1 + Math.pow((ay2 - ay1)/(ax2 - ax1), 2))),
distance: segmentLength,
remainder: 0
};
}
}
//-end lineSegmentOffset
do {
dashOffset = lineSegmentOffset(
dashRemainder > 0 ? dashRemainder :
dashOn ? dashOnLength : dashOffLength);
if (dashOffset.deltaX != 0 || dashOffset.deltaY != 0) {
if (dashOn) {
ctx.lineTo(ax1 + dashOffset.deltaX, ay1 + dashOffset.deltaY);
} else {
ctx.moveTo(ax1 + dashOffset.deltaX, ay1 + dashOffset.deltaY);
}
}
dashOn = !dashOn;
dashRemainder = dashOffset.remainder;
ax1 += dashOffset.deltaX;
ay1 += dashOffset.deltaY;
} while (dashOffset.distance > 0);
prevx = x2;
prevy = y2;
}
ctx.stroke();
}
//-end plotDashes
ctx.save();
ctx.translate(plotOffset.left, plotOffset.top);
ctx.lineJoin = 'round';
var lw = series.dashes.lineWidth,
sw = series.shadowSize;
// FIXME: consider another form of shadow when filling is turned on
if (lw > 0 && sw > 0) {
// draw shadow as a thick and thin line with transparency
ctx.lineWidth = sw;
ctx.strokeStyle = "rgba(0,0,0,0.1)";
// position shadow at angle from the mid of line
var angle = Math.PI/18;
plotDashes(Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2));
ctx.lineWidth = sw/2;
plotDashes(Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4));
}
ctx.lineWidth = lw;
ctx.strokeStyle = series.color;
if (lw > 0) {
plotDashes(0, 0);
}
ctx.restore();
});
//-end draw hook
}
//-end init
$.plot.plugins.push({
init: init,
options: options,
name: 'dashes',
version: '0.1'
});
})(jQuery);
+183
View File
@@ -0,0 +1,183 @@
/*
Flot plugin for computing bottoms for filled line and bar charts.
The case: you've got two series that you want to fill the area
between. In Flot terms, you need to use one as the fill bottom of the
other. You can specify the bottom of each data point as the third
coordinate manually, or you can use this plugin to compute it for you.
In order to name the other series, you need to give it an id, like this
var dataset = [
{ data: [ ... ], id: "foo" } , // use default bottom
{ data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom
];
$.plot($("#placeholder"), dataset, { line: { show: true, fill: true }});
As a convenience, if the id given is a number that doesn't appear as
an id in the series, it is interpreted as the index in the array
instead (so fillBetween: 0 can also mean the first series).
Internally, the plugin modifies the datapoints in each series. For
line series, extra data points might be inserted through
interpolation. Note that at points where the bottom line is not
defined (due to a null point or start/end of line), the current line
will show a gap too. The algorithm comes from the jquery.flot.stack.js
plugin, possibly some code could be shared.
*/
(function ($) {
var options = {
series: { fillBetween: null } // or number
};
function init(plot) {
function findBottomSeries(s, allseries) {
var i;
for (i = 0; i < allseries.length; ++i) {
if (allseries[i].id == s.fillBetween)
return allseries[i];
}
if (typeof s.fillBetween == "number") {
i = s.fillBetween;
if (i < 0 || i >= allseries.length)
return null;
return allseries[i];
}
return null;
}
function computeFillBottoms(plot, s, datapoints) {
if (s.fillBetween == null)
return;
var other = findBottomSeries(s, plot.getData());
if (!other)
return;
var ps = datapoints.pointsize,
points = datapoints.points,
otherps = other.datapoints.pointsize,
otherpoints = other.datapoints.points,
newpoints = [],
px, py, intery, qx, qy, bottom,
withlines = s.lines.show,
withbottom = ps > 2 && datapoints.format[2].y,
withsteps = withlines && s.lines.steps,
fromgap = true,
i = 0, j = 0, l;
while (true) {
if (i >= points.length)
break;
l = newpoints.length;
if (points[i] == null) {
// copy gaps
for (m = 0; m < ps; ++m)
newpoints.push(points[i + m]);
i += ps;
}
else if (j >= otherpoints.length) {
// for lines, we can't use the rest of the points
if (!withlines) {
for (m = 0; m < ps; ++m)
newpoints.push(points[i + m]);
}
i += ps;
}
else if (otherpoints[j] == null) {
// oops, got a gap
for (m = 0; m < ps; ++m)
newpoints.push(null);
fromgap = true;
j += otherps;
}
else {
// cases where we actually got two points
px = points[i];
py = points[i + 1];
qx = otherpoints[j];
qy = otherpoints[j + 1];
bottom = 0;
if (px == qx) {
for (m = 0; m < ps; ++m)
newpoints.push(points[i + m]);
//newpoints[l + 1] += qy;
bottom = qy;
i += ps;
j += otherps;
}
else if (px > qx) {
// we got past point below, might need to
// insert interpolated extra point
if (withlines && i > 0 && points[i - ps] != null) {
intery = py + (points[i - ps + 1] - py) * (qx - px) / (points[i - ps] - px);
newpoints.push(qx);
newpoints.push(intery)
for (m = 2; m < ps; ++m)
newpoints.push(points[i + m]);
bottom = qy;
}
j += otherps;
}
else { // px < qx
if (fromgap && withlines) {
// if we come from a gap, we just skip this point
i += ps;
continue;
}
for (m = 0; m < ps; ++m)
newpoints.push(points[i + m]);
// we might be able to interpolate a point below,
// this can give us a better y
if (withlines && j > 0 && otherpoints[j - otherps] != null)
bottom = qy + (otherpoints[j - otherps + 1] - qy) * (px - qx) / (otherpoints[j - otherps] - qx);
//newpoints[l + 1] += bottom;
i += ps;
}
fromgap = false;
if (l != newpoints.length && withbottom)
newpoints[l + 2] = bottom;
}
// maintain the line steps invariant
if (withsteps && l != newpoints.length && l > 0
&& newpoints[l] != null
&& newpoints[l] != newpoints[l - ps]
&& newpoints[l + 1] != newpoints[l - ps + 1]) {
for (m = 0; m < ps; ++m)
newpoints[l + ps + m] = newpoints[l + m];
newpoints[l + 1] = newpoints[l - ps + 1];
}
}
datapoints.points = newpoints;
}
plot.hooks.processDatapoints.push(computeFillBottoms);
}
$.plot.plugins.push({
init: init,
options: options,
name: 'fillbetween',
version: '1.0'
});
})(jQuery);
+181
View File
@@ -0,0 +1,181 @@
/*
* The MIT License
Copyright (c) 2010,2011,2012, 2013 by Juergen Marsch
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
/*
* Added changerequest from Thodoris Greasidis
* It makes growing more
*/
(function ($){
"use strict";
var pluginName = "grow", pluginVersion = "0.4";
var options = {
series: {
grow: {
active: false,
stepDelay: 20,
steps:100,
growings:[
{
valueIndex: 1,
stepMode: "linear",
stepDirection: "up"
}
]
}
}
};
function init(plot) {
var done = false;
var growfunc;
var plt = plot;
var data = null;
var opt = null;
var serie = null;
var valueIndex;
plot.hooks.bindEvents.push(processbindEvents);
plot.hooks.drawSeries.push(processSeries);
plot.hooks.shutdown.push(shutdown);
function processSeries(plot, canvascontext, series){
opt = plot.getOptions();
valueIndex = opt.series.grow.valueIndex;
if(opt.series.grow.active === true){
if (done === false){
data = plot.getData();
data.actualStep = 0;
data.growingIndex = 0;
for (var j = 0; j < data.length; j++){
data[j].dataOrg = clone(data[j].data);
for (var i = 0; i < data[j].data.length; i++){ data[j].data[i][valueIndex] = 0;}
}
plot.setData(data);
done = true;
}
}
}
function processbindEvents(plot,eventHolder){
opt = plot.getOptions();
if (opt.series.grow.active === true){
var d = plot.getData();
for (var j = 0; j < data.length; j++) {
opt.series.grow.steps = Math.max(opt.series.grow.steps, d[j].grow.steps);
}
if(opt.series.grow.stepDelay === 0){ opt.series.grow.stepDelay++;}
growingLoop();
if (isPluginRegistered("resize")) {
plot.getPlaceholder().bind("resize", onResize);
}
}
}
function growingLoop(){
var growing, startTime = new Date(), timeDiff;
if (data.actualStep < opt.series.grow.steps){
data.actualStep++;
for(var j = 0; j < data.length; j++){
for(var g = 0; g < data[j].grow.growings.length; g++){
growing = data[j].grow.growings[g];
if (typeof growing.stepMode === "function"){
growing.stepMode(data[j],data.actualStep,growing);
}
else{
if (growing.stepMode === "linear"){ growLinear();}
else if (growing.stepMode === "maximum"){ growMaximum();}
else if (growing.stepMode === "delay"){ growDelay();}
else{growNone();}
}
}
}
plt.setData(data);
plt.draw();
timeDiff = new Date() - startTime;
growfunc = window.setTimeout(growingLoop, Math.max(0,opt.series.grow.stepDelay - timeDiff));
}
else{ window.clearTimeout(growfunc); growfunc = null; }
function growNone(){
if (data.actualStep === 1){
for (var i = 0; i < data[j].data.length; i++){
data[j].data[i][valueIndex] = data[j].dataOrg[i][growing.valueIndex];
}
}
}
function growLinear(){
if (data.actualStep <= data[j].grow.steps){
for (var i = 0; i < data[j].data.length; i++){
if (growing.stepDirection === "up"){
data[j].data[i][growing.valueIndex] = data[j].dataOrg[i][growing.valueIndex] / data[j].grow.steps * data.actualStep;
}
else if(growing.stepDirection === "down"){
data[j].data[i][growing.valueIndex] = data[j].dataOrg[i][growing.valueIndex] + (data[j].yaxis.max - data[j].dataOrg[i][growing.valueIndex]) / data[j].grow.steps * (data[j].grow.steps - data.actualStep);
}
}
}
}
function growMaximum(){
if (data.actualStep <= data[j].grow.steps){
for (var i = 0; i < data[j].data.length; i++){
if (growing.stepDirection === "up"){
data[j].data[i][growing.valueIndex] = Math.min(data[j].dataOrg[i][growing.valueIndex], data[j].yaxis.max / data[j].grow.steps * data.actualStep);
}
else if (growing.stepDirection === "down"){
data[j].data[i][growing.valueIndex] = Math.max(data[j].dataOrg[i][growing.valueIndex], data[j].yaxis.max / data[j].grow.steps * (data[j].grow.steps - data.actualStep) );
}
}
}
}
function growDelay(){
if (data.actualStep == data[j].grow.steps){
for (var i = 0; i < data[j].data.length; i++){
data[j].data[i][growing.valueIndex] = data[j].dataOrg[i][growing.valueIndex];
}
}
}
}
function onResize() {
if (growfunc) { window.clearTimeout(growfunc); growfunc = null; }
}
function shutdown(plot, eventHolder) {
plot.getPlaceholder().unbind("resize", onResize);
}
function isPluginRegistered(pluginName) {
var plugins = $.plot.plugins;
for (var i = 0, len = plugins.length; i < len; i++) {
var plug = plugins[i];
if (plug.name === pluginName) {
return true;
}
}
return false;
}
function clone(obj){
if(obj === null || typeof(obj) !== 'object'){ return obj;}
var temp = new obj.constructor();
for(var key in obj){temp[key] = clone(obj[key]); }
return temp;
}
}
$.plot.plugins.push({
init: init,
options: options,
name: pluginName,
version: pluginVersion
});
})(jQuery);
+229
View File
@@ -0,0 +1,229 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* Plugin to hide series in flot graphs.
*
* To activate, set legend.hideable to true in the flot options object.
* To hide one or more series by default, set legend.hidden to an array of
* label strings.
*
* At the moment, this only works with line and point graphs.
*
* Example:
*
* var plotdata = [
* {
* data: [[1, 1], [2, 1], [3, 3], [4, 2], [5, 5]],
* label: "graph 1"
* },
* {
* data: [[1, 0], [2, 1], [3, 0], [4, 4], [5, 3]],
* label: "graph 2"
* }
* ];
*
* plot = $.plot($("#placeholder"), plotdata, {
* series: {
* points: { show: true },
* lines: { show: true }
* },
* legend: {
* hideable: true,
* hidden: ["graph 1", "graph 2"]
* }
* });
*
*/
(function ($) {
var options = { };
function init(plot) {
var drawnOnce = false;
function findPlotSeries(label) {
var plotdata = plot.getData();
for (var i = 0; i < plotdata.length; i++) {
if (plotdata[i].label == label) {
return plotdata[i];
}
}
return null;
}
function plotLabelClicked(label, mouseOut) {
var series = findPlotSeries(label);
if (!series) {
return;
}
var options = plot.getOptions();
var switchedOff = false;
if (typeof series.points.oldShow === "undefined") {
series.points.oldShow = false;
}
if (typeof series.lines.oldShow === "undefined") {
series.lines.oldShow = false;
}
if (series.points.show && !series.points.oldShow) {
series.points.show = false;
series.points.oldShow = true;
switchedOff = true;
}
if (series.lines.show && !series.lines.oldShow) {
series.lines.show = false;
series.lines.oldShow = true;
switchedOff = true;
}
if (switchedOff) {
series.oldColor = series.color;
series.color = "#fff";
setHidden(options, label, true);
} else {
var switchedOn = false;
if (!series.points.show && series.points.oldShow) {
series.points.show = true;
series.points.oldShow = false;
switchedOn = true;
}
if (!series.lines.show && series.lines.oldShow) {
series.lines.show = true;
series.lines.oldShow = false;
switchedOn = true;
}
if (switchedOn) {
series.color = series.oldColor;
setHidden(options, label, false);
}
}
}
function setSetupRedraw () {
// HACK: Reset the data, triggering recalculation of graph bounds
plot.setData(plot.getData());
plot.setupGrid();
plot.draw();
}
function setHidden(options, label, hide) {
// Record state to a new variable in the legend option object.
if (!options.legend.hidden) {
options.legend.hidden = [];
}
var pos = options.legend.hidden.indexOf(label);
if (hide) {
if (pos < 0) {
options.legend.hidden.push(label);
}
} else {
if (pos > -1) {
options.legend.hidden.splice(pos, 1);
}
}
}
function setHideAction(elem) {
elem.mouseenter(function() { $(this).css("cursor", "pointer"); })
.mouseleave(function() { $(this).css("cursor", "default"); })
.unbind("click").click(function() {
if ($(this).is(".legendColorBox")) {
plotLabelClicked($(this).next('.legendLabel').text());
} else {
plotLabelClicked($(this).parent().text());
}
setSetupRedraw();
});
}
function plotLabelHandlers(plot) {
var options = plot.getOptions();
if (!options.legend.hideable) {
return;
}
var p = plot.getPlaceholder();
setHideAction(p.find(".graphlabel"));
setHideAction(p.find(".legendColorBox"));
if (!drawnOnce) {
drawnOnce = true;
if (options.legend.hidden) {
for (var i = 0; i < options.legend.hidden.length; i++) {
plotLabelClicked(options.legend.hidden[i], true);
}
setSetupRedraw();
}
}
}
function checkOptions(plot, options) {
if (!options.legend.hideable) {
return;
}
options.legend.labelFormatter = function(label, series) {
return '<span class="graphlabel">' + label + '</span>';
};
}
function hideDatapointsIfNecessary(plot, s, datapoints) {
var options = plot.getOptions();
if (!options.legend.hideable) {
return;
}
if (options.legend.hidden &&
options.legend.hidden.indexOf(s.label) > -1) {
var off = false;
if (s.points.show) {
s.points.show = false;
s.points.oldShow = true;
off = true;
}
if (s.lines.show) {
s.lines.show = false;
s.lines.oldShow = true;
off = true;
}
if (off) {
s.oldColor = s.color;
s.color = "#fff";
}
}
if (!s.points.show && !s.lines.show) {
s.datapoints.format = [ null, null ];
}
}
plot.hooks.processOptions.push(checkOptions);
plot.hooks.draw.push(function (plot, ctx) {
plotLabelHandlers(plot);
});
plot.hooks.processDatapoints.push(hideDatapointsIfNecessary);
}
$.plot.plugins.push({
init: init,
options: options,
name: 'hiddenGraphs',
version: '1.1'
});
})(jQuery);
File diff suppressed because it is too large Load Diff
+8
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7
View File
@@ -0,0 +1,7 @@
/* Javascript plotting library for jQuery, version 0.8.3.
Copyright (c) 2007-2014 IOLA and Ole Laursen.
Licensed under the MIT license.
*/
(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery);

Some files were not shown because too many files have changed in this diff Show More