From 559c850cf2ae134a185e8d07ec59dce05e58ca86 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Thu, 17 Jun 2021 19:13:53 +0200 Subject: [PATCH] Add tooltips --- README.md | 48 +- admin/asset-manifest.json | 23 + admin/favicon.ico | Bin 0 -> 3217 bytes admin/i18n/de/translations.json | 57 - admin/i18n/en/translations.json | 57 - admin/i18n/es/translations.json | 57 - admin/i18n/fr/translations.json | 57 - admin/i18n/it/translations.json | 57 - admin/i18n/nl/translations.json | 57 - admin/i18n/pl/translations.json | 57 - admin/i18n/pt/translations.json | 57 - admin/i18n/ru/translations.json | 57 - admin/i18n/zh-cn/translations.json | 57 - admin/img/plc_back.png | Bin 84827 -> 0 bytes admin/index.html | 1305 ----------- admin/index_m.html | 1 + admin/lib/css/jsgrid-theme.css | 205 -- admin/lib/css/jsgrid-theme.min.css | 7 - admin/lib/css/jsgrid.css | 121 - admin/lib/css/jsgrid.min.css | 7 - admin/lib/js/grid.locale-de.js | 10 - admin/lib/js/grid.locale-ru.js | 11 - admin/lib/js/jsgrid.js | 1945 ----------------- admin/lib/js/jsgrid.min.js | 7 - admin/manifest.json | 15 + admin/static/css/2.c04f2d9d.chunk.css | 2 + admin/static/css/2.c04f2d9d.chunk.css.map | 1 + admin/static/css/main.c9480e85.chunk.css | 2 + admin/static/css/main.c9480e85.chunk.css.map | 1 + admin/static/js/2.b3a8d548.chunk.js | 3 + .../static/js/2.b3a8d548.chunk.js.LICENSE.txt | 113 + admin/static/js/2.b3a8d548.chunk.js.map | 1 + admin/static/js/main.27f6d84e.chunk.js | 2 + admin/static/js/main.27f6d84e.chunk.js.map | 1 + admin/static/js/runtime-main.0b37ba43.js | 2 + admin/static/js/runtime-main.0b37ba43.js.map | 1 + admin/words.js | 60 - docs/de/s7.md | 31 + docs/en/s7.md | 16 +- gulpfile.js | 2 +- io-package.json | 38 +- package.json | 2 +- src/build/asset-manifest.json | 23 + src/build/favicon.ico | Bin 0 -> 3217 bytes src/build/index.html | 1 + src/build/manifest.json | 15 + src/build/s7.png | Bin 0 -> 3217 bytes src/build/static/css/2.c04f2d9d.chunk.css | 2 + src/build/static/css/2.c04f2d9d.chunk.css.map | 1 + src/build/static/css/main.c9480e85.chunk.css | 2 + .../static/css/main.c9480e85.chunk.css.map | 1 + src/build/static/js/2.b3a8d548.chunk.js | 3 + .../static/js/2.b3a8d548.chunk.js.LICENSE.txt | 113 + src/build/static/js/2.b3a8d548.chunk.js.map | 1 + src/build/static/js/main.27f6d84e.chunk.js | 2 + .../static/js/main.27f6d84e.chunk.js.map | 1 + src/build/static/js/runtime-main.0b37ba43.js | 2 + .../static/js/runtime-main.0b37ba43.js.map | 1 + src/package.json | 4 +- src/src/App.js | 31 +- src/src/Components/RegisterTable.js | 6 +- src/src/Tabs/BaseRegisters.js | 12 +- src/src/Tabs/Options.js | 152 +- src/src/data/optionsConnection.json | 4 +- src/src/i18n/de.json | 134 +- src/src/i18n/en.json | 134 +- src/src/i18n/es.json | 134 +- src/src/i18n/fr.json | 134 +- src/src/i18n/it.json | 134 +- src/src/i18n/nl.json | 134 +- src/src/i18n/pl.json | 134 +- src/src/i18n/pt.json | 134 +- src/src/i18n/ru.json | 134 +- src/src/i18n/zh-cn.json | 134 +- 74 files changed, 1309 insertions(+), 4961 deletions(-) create mode 100644 admin/asset-manifest.json create mode 100644 admin/favicon.ico delete mode 100644 admin/i18n/de/translations.json delete mode 100644 admin/i18n/en/translations.json delete mode 100644 admin/i18n/es/translations.json delete mode 100644 admin/i18n/fr/translations.json delete mode 100644 admin/i18n/it/translations.json delete mode 100644 admin/i18n/nl/translations.json delete mode 100644 admin/i18n/pl/translations.json delete mode 100644 admin/i18n/pt/translations.json delete mode 100644 admin/i18n/ru/translations.json delete mode 100644 admin/i18n/zh-cn/translations.json delete mode 100644 admin/img/plc_back.png delete mode 100644 admin/index.html create mode 100644 admin/index_m.html delete mode 100644 admin/lib/css/jsgrid-theme.css delete mode 100644 admin/lib/css/jsgrid-theme.min.css delete mode 100644 admin/lib/css/jsgrid.css delete mode 100644 admin/lib/css/jsgrid.min.css delete mode 100644 admin/lib/js/grid.locale-de.js delete mode 100644 admin/lib/js/grid.locale-ru.js delete mode 100644 admin/lib/js/jsgrid.js delete mode 100644 admin/lib/js/jsgrid.min.js create mode 100644 admin/manifest.json create mode 100644 admin/static/css/2.c04f2d9d.chunk.css create mode 100644 admin/static/css/2.c04f2d9d.chunk.css.map create mode 100644 admin/static/css/main.c9480e85.chunk.css create mode 100644 admin/static/css/main.c9480e85.chunk.css.map create mode 100644 admin/static/js/2.b3a8d548.chunk.js create mode 100644 admin/static/js/2.b3a8d548.chunk.js.LICENSE.txt create mode 100644 admin/static/js/2.b3a8d548.chunk.js.map create mode 100644 admin/static/js/main.27f6d84e.chunk.js create mode 100644 admin/static/js/main.27f6d84e.chunk.js.map create mode 100644 admin/static/js/runtime-main.0b37ba43.js create mode 100644 admin/static/js/runtime-main.0b37ba43.js.map delete mode 100644 admin/words.js create mode 100644 docs/de/s7.md create mode 100644 src/build/asset-manifest.json create mode 100644 src/build/favicon.ico create mode 100644 src/build/index.html create mode 100644 src/build/manifest.json create mode 100644 src/build/s7.png create mode 100644 src/build/static/css/2.c04f2d9d.chunk.css create mode 100644 src/build/static/css/2.c04f2d9d.chunk.css.map create mode 100644 src/build/static/css/main.c9480e85.chunk.css create mode 100644 src/build/static/css/main.c9480e85.chunk.css.map create mode 100644 src/build/static/js/2.b3a8d548.chunk.js create mode 100644 src/build/static/js/2.b3a8d548.chunk.js.LICENSE.txt create mode 100644 src/build/static/js/2.b3a8d548.chunk.js.map create mode 100644 src/build/static/js/main.27f6d84e.chunk.js create mode 100644 src/build/static/js/main.27f6d84e.chunk.js.map create mode 100644 src/build/static/js/runtime-main.0b37ba43.js create mode 100644 src/build/static/js/runtime-main.0b37ba43.js.map diff --git a/README.md b/README.md index 45b6745..3e584b2 100644 --- a/README.md +++ b/README.md @@ -7,34 +7,23 @@ [![NPM](https://nodei.co/npm/iobroker.s7.png?downloads=true)](https://nodei.co/npm/iobroker.s7/) +## English +The Siemens S7 adapter is based on Snap7, with Snap7 when the +S7 adapter is also installed and the actual S7 communication between ioBroker and the S7 is organized via TCP / IP. -## Deutsch -Der Siemens S7 Adapter basiert auf Snap7, wobei Snap7 bei der Erstinstallation des -S7 Adapters mitinstalliert wird und die eigentliche S7-Kommunikation zwischen ioBroker und der S7 über TCP/IP organisiert. - -Es ist also notwendig, dass die S7 über eine Ethernet-Schnittstelle verfügt -(in der CPU integriert oder als separater CP) und über TCP/IP mit der Hardware kommunizieren kann, auf der ioBroker läuft. - -Es wird vorausgesetzt, dass der Anwender über die notwendigen Kenntnisse zur TCP/IP-Kommunikation verfügt -und in der Lage ist, die S7 mittels Step7 entsprechend zu konfigurieren und zu programmieren. -Der geübte Umgang mit PC und verschiedenen Betriebssystem ist ebenfalls Voraussetzung. -Diese Anforderungen stellen sicherlich keine Herausforderung für jemanden dar, -der die Kommunikation zwischen ioBroker und einer S7 in Erwägung zieht. +It is therefore necessary that the S7 has an Ethernet interface +(integrated in the CPU or as a separate CP) and can communicate via TCP / IP with the hardware on which ioBroker is running. -### Installation -Unter Linux braucht man `make` Umgebung um die binaries zu bauen. Das kann man mit folgendem Kommando installieren: +It is assumed that the user has the necessary knowledge of TCP / IP communication +and is able to configure and program the S7 accordingly using Step7. +Proficient use of a PC and various operating systems is also a prerequisite. +These requirements are certainly not a challenge for someone +who is considering communication between ioBroker and an S7. -``` -sudo apt-get update -sudo apt-get install build-essential -``` - -Unter windows braucht man Visual Studio 2013 (Community Edition ist genug) oder später. Auch Python 2.7 (nicht 3.x) muss installiert werden. -## English Format of the addresses for Inputs, Outputs or markers is "X.Y", where X is byte offset and Y is the bit offset in the byte. -Format of the addresses for DBs is "DBZ +X.Y", where z is number of DB, like "DB34 +12.0" +Format of the addresses for DBs is `DBZ +X.Y`, where `z` is number of `DB`, like `DB34 +12.0` -### Install +### Installation On some Linux systems the build essentials must be installed to get this adapter work. You can install it with: ``` @@ -55,12 +44,20 @@ You can use 4 time offset modes for S7TIME: ## S5TIME S5 decoded as described here: http://www.plccenter.cn/Siemens_Step7/Format_des_Datentyps_S5TIME_Zeitdauer.htm +## More information +More description could be found [here](https://github.com/ioBroker/ioBroker.s7/blob/master/docs/en/s7.md). + +## Deutsch +[German documentation](https://github.com/ioBroker/ioBroker.s7/blob/master/docs/de/s7.md) + ## Changelog +### 1.3.0 (2021-06-17) +* (bluefox) New configuration page on react ### 1.2.5 (2021-04-17) * (Apollon77) Fix pot crash case (Sentry IOBROKER-S7-16) @@ -210,10 +207,11 @@ S5 decoded as described here: http://www.plccenter.cn/Siemens_Step7/Format_des_D * Bugfix start file ## License - The MIT License (MIT) -Copyright (c) 2014-2021 smiling_Jack , bluefox +Copyright (c) 2014-2021 bluefox , + +Copyright (c) 2014-2016 smiling_Jack Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/admin/asset-manifest.json b/admin/asset-manifest.json new file mode 100644 index 0000000..98dfedd --- /dev/null +++ b/admin/asset-manifest.json @@ -0,0 +1,23 @@ +{ + "files": { + "main.css": "./static/css/main.c9480e85.chunk.css", + "main.js": "./static/js/main.27f6d84e.chunk.js", + "main.js.map": "./static/js/main.27f6d84e.chunk.js.map", + "runtime-main.js": "./static/js/runtime-main.0b37ba43.js", + "runtime-main.js.map": "./static/js/runtime-main.0b37ba43.js.map", + "static/css/2.c04f2d9d.chunk.css": "./static/css/2.c04f2d9d.chunk.css", + "static/js/2.b3a8d548.chunk.js": "./static/js/2.b3a8d548.chunk.js", + "static/js/2.b3a8d548.chunk.js.map": "./static/js/2.b3a8d548.chunk.js.map", + "index.html": "./index.html", + "static/css/2.c04f2d9d.chunk.css.map": "./static/css/2.c04f2d9d.chunk.css.map", + "static/css/main.c9480e85.chunk.css.map": "./static/css/main.c9480e85.chunk.css.map", + "static/js/2.b3a8d548.chunk.js.LICENSE.txt": "./static/js/2.b3a8d548.chunk.js.LICENSE.txt" + }, + "entrypoints": [ + "static/js/runtime-main.0b37ba43.js", + "static/css/2.c04f2d9d.chunk.css", + "static/js/2.b3a8d548.chunk.js", + "static/css/main.c9480e85.chunk.css", + "static/js/main.27f6d84e.chunk.js" + ] +} \ No newline at end of file diff --git a/admin/favicon.ico b/admin/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4128d6ac6f0a63212d6631f003559e067b22fde5 GIT binary patch literal 3217 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 DRXiaJ literal 0 HcmV?d00001 diff --git a/admin/i18n/de/translations.json b/admin/i18n/de/translations.json deleted file mode 100644 index 3af120a..0000000 --- a/admin/i18n/de/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "DB einfügen", - "Address": "Adresse", - "All entries will be deleted. Are you sure?": "Alle Einträge werden gelöscht. Sind sie sicher?", - "Close": "Zumachen", - "Delete all entries": "Alle Einträge löschen", - "Description": "Beschreibung", - "Enable polling of data point": "Zyklische Abfrage vom Datenpunkt", - "Export": "Export", - "Export to CSV": "Export in CSV", - "General": "Allgemein", - "Import": "Importieren", - "Import DB file:": "DB-Datei importieren:", - "Import from CSV": "Import aus CSV", - "Import symbols file:": "Symboldatei Importieren:", - "Inputs": "Eingänge", - "Length": "Länge", - "Load Symbols": "Lade Symbole", - "Local TSAP:": "Local TSAP:", - "Local time": "Ortszeit", - "Marker": "Merker", - "Name": "Name", - "Offset (no day saving time)": "Zeit-Offset (kein Sommerzeit)", - "Offset (with day saving time)": "Zeit-Offset (mit Sommerzeit)", - "Outputs": "Ausgänge", - "PLC Connection:": "SPS Verbindung:", - "PLC IP Address:": "SPS IP Adresse:", - "PLC Rack:": "SPS Rack:", - "PLC Slot:": "SPS Slot:", - "Poll delay:": "Poll delay:", - "Polling": "Umfrage", - "Pulse time:": "Pulsetime:", - "RW": "RW", - "Reconnect time:": "Reconnectzeit:", - "Remote TSAP:": "Remote TSAP:", - "Role": "Rolle", - "Room": "Raum", - "Round Real to:": "Aufrunden Real auf:", - "S7 LOGO!:": "S7 LOGO!:", - "S7 Time mode:": "S7-Zeitmodus", - "Text copied to clipboard. Click to close the window": "Text wurde in der Zwischenablage kopiert. Klick um Fenster zu zumachen.", - "Time offset:": "Zeitverschiebung:", - "Toggle RW": "RW umschalten", - "Toggle WP": "WP umschalten", - "Toggle poll": "Poll umschalten", - "Type": "Typ", - "UTC": "UTC", - "Unit": "Einheit", - "WP": "WP", - "Write access": "Schreibzugriff", - "Write access allowed": "Schreiben erlaubt", - "Write pulses (true=>false edge)": "Schreibe Pulse (Ja=>Nein Kante)", - "minutes": "Minuten", - "poll": "poll", - "sec": "Sek.", - "write as Pulse": "schreibe als Impuls" -} \ No newline at end of file diff --git a/admin/i18n/en/translations.json b/admin/i18n/en/translations.json deleted file mode 100644 index a9c5af9..0000000 --- a/admin/i18n/en/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Add DB", - "Address": "Address", - "All entries will be deleted. Are you sure?": "All entries will be deleted. Are you sure?", - "Close": "Close", - "Delete all entries": "Delete all entries", - "Description": "Description", - "Enable polling of data point": "Enable polling of data point", - "Export": "Export", - "Export to CSV": "Export to CSV", - "General": "General", - "Import": "Import", - "Import DB file:": "Import DB file:", - "Import from CSV": "Import from CSV", - "Import symbols file:": "Import symbols file:", - "Inputs": "Inputs", - "Length": "Length", - "Load Symbols": "Load symbols", - "Local TSAP:": "Local TSAP:", - "Local time": "Local time", - "Marker": "Marker", - "Name": "Name", - "Offset (no day saving time)": "Time offset (no day saving time)", - "Offset (with day saving time)": "Time offset (with day saving time)", - "Outputs": "Outputs", - "PLC Connection:": "PLC Connection:", - "PLC IP Address:": "PLC IP Address:", - "PLC Rack:": "PLC Rack:", - "PLC Slot:": "PLC Slot:", - "Poll delay:": "Poll delay:", - "Polling": "Polling", - "Pulse time:": "Pulse time:", - "RW": "RW", - "Reconnect time:": "Reconnect time:", - "Remote TSAP:": "Remote TSAP:", - "Role": "Role", - "Room": "Room", - "Round Real to:": "Round real to:", - "S7 LOGO!:": "S7 LOGO!:", - "S7 Time mode:": "S7 Time mode", - "Text copied to clipboard. Click to close the window": "Text copied to clipboard. Click to close the window", - "Time offset:": "Time offset:", - "Toggle RW": "Toggle RW", - "Toggle WP": "Toggle WP", - "Toggle poll": "Toggle poll", - "Type": "Type", - "UTC": "UTC", - "Unit": "Unit", - "WP": "WP", - "Write access": "Write access", - "Write access allowed": "Write access allowed", - "Write pulses (true=>false edge)": "Write pulses (true=>false edge)", - "minutes": "minutes", - "poll": "poll", - "sec": "sec.", - "write as Pulse": "write as Pulse" -} \ No newline at end of file diff --git a/admin/i18n/es/translations.json b/admin/i18n/es/translations.json deleted file mode 100644 index 3253e05..0000000 --- a/admin/i18n/es/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Add DB", - "Address": "Address", - "All entries will be deleted. Are you sure?": "All entries will be deleted. Are you sure?", - "Close": "Close", - "Delete all entries": "Delete all entries", - "Description": "Description", - "Enable polling of data point": "Enable polling of data point", - "Export": "Export", - "Export to CSV": "Export to CSV", - "General": "General", - "Import": "Import", - "Import DB file:": "Import DB file:", - "Import from CSV": "Import from CSV", - "Import symbols file:": "Import symbols file:", - "Inputs": "Inputs", - "Length": "Length", - "Load Symbols": "Load symbols", - "Local TSAP:": "Local TSAP:", - "Local time": "Hora local", - "Marker": "Marker", - "Name": "Name", - "Offset (no day saving time)": "Desplazamiento (sin horario de guardado)", - "Offset (with day saving time)": "Desplazamiento (con horario de ahorro de día)", - "Outputs": "Outputs", - "PLC Connection:": "PLC Connection:", - "PLC IP Address:": "PLC IP Address:", - "PLC Rack:": "PLC Rack:", - "PLC Slot:": "PLC Slot:", - "Poll delay:": "Poll delay:", - "Polling": "Votación", - "Pulse time:": "Pulse time:", - "RW": "RW", - "Reconnect time:": "Reconnect time:", - "Remote TSAP:": "Remote TSAP:", - "Role": "Role", - "Room": "Room", - "Round Real to:": "Round real to:", - "S7 LOGO!:": "S7 LOGO!:", - "S7 Time mode:": "Modo de tiempo S7", - "Text copied to clipboard. Click to close the window": "Text copied to clipboard. Click to close the window", - "Time offset:": "Desplazamiento de tiempo:", - "Toggle RW": "Toggle RW", - "Toggle WP": "Toggle WP", - "Toggle poll": "Toggle poll", - "Type": "Type", - "UTC": "UTC", - "Unit": "Unit", - "WP": "WP", - "Write access": "Acceso de escritura", - "Write access allowed": "Write access allowed", - "Write pulses (true=>false edge)": "Write pulses (true=>false edge)", - "minutes": "minutos", - "poll": "poll", - "sec": "sec.", - "write as Pulse": "escribe como Pulso" -} \ No newline at end of file diff --git a/admin/i18n/fr/translations.json b/admin/i18n/fr/translations.json deleted file mode 100644 index a372986..0000000 --- a/admin/i18n/fr/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Ajouter une DB", - "Address": "Adresse", - "All entries will be deleted. Are you sure?": "Toutes les entrées seront supprimées. Êtes-vous sûr?", - "Close": "Fermer", - "Delete all entries": "Supprimer toutes les entrées", - "Description": "La description", - "Enable polling of data point": "Activer l'interrogation du point de données", - "Export": "Exportation", - "Export to CSV": "Exporter au format CSV", - "General": "Général", - "Import": "Importer", - "Import DB file:": "Importer un fichier DB:", - "Import from CSV": "Importer à partir du fichier CSV", - "Import symbols file:": "Importer un fichier de symboles:", - "Inputs": "Contributions", - "Length": "Longueur", - "Load Symbols": "Charger des symboles", - "Local TSAP:": "TSAP local:", - "Local time": "Heure locale", - "Marker": "Marqueur", - "Name": "prénom", - "Offset (no day saving time)": "Décalage (pas de temps pour gagner du temps)", - "Offset (with day saving time)": "Décalage (avec un gain de temps de jour)", - "Outputs": "Les sorties", - "PLC Connection:": "Connexion PLC:", - "PLC IP Address:": "Adresse IP de l'API:", - "PLC Rack:": "Rack PLC:", - "PLC Slot:": "Slot PLC:", - "Poll delay:": "Délai d'interrogation:", - "Polling": "Vote", - "Pulse time:": "Temps d'impulsion:", - "RW": "RW", - "Reconnect time:": "Reconnectez le temps:", - "Remote TSAP:": "TSAP distant:", - "Role": "Rôle", - "Room": "Chambre", - "Round Real to:": "Rond réel à:", - "S7 LOGO!:": "S7 LOGO !:", - "S7 Time mode:": "S7 Mode heure", - "Text copied to clipboard. Click to close the window": "Texte copié dans le presse-papier Cliquez pour fermer la fenêtre", - "Time offset:": "Décalage temporel:", - "Toggle RW": "Toggle RW", - "Toggle WP": "Toggle WP", - "Toggle poll": "Basculer le sondage", - "Type": "Type", - "UTC": "UTC", - "Unit": "Unité", - "WP": "WP", - "Write access": "Accès en écriture", - "Write access allowed": "Accès en écriture autorisé", - "Write pulses (true=>false edge)": "Écrire des impulsions (true => false edge)", - "minutes": "minutes", - "poll": "sondage", - "sec": "seconde.", - "write as Pulse": "écrire comme Pulse" -} \ No newline at end of file diff --git a/admin/i18n/it/translations.json b/admin/i18n/it/translations.json deleted file mode 100644 index 8302674..0000000 --- a/admin/i18n/it/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Aggiungi DB", - "Address": "Indirizzo", - "All entries will be deleted. Are you sure?": "Tutte le voci saranno cancellate. Sei sicuro?", - "Close": "Vicino", - "Delete all entries": "Elimina tutte le voci", - "Description": "Descrizione", - "Enable polling of data point": "Abilita il polling del punto dati", - "Export": "Esportare", - "Export to CSV": "Esporta in CSV", - "General": "Generale", - "Import": "Importare", - "Import DB file:": "Importa file DB:", - "Import from CSV": "Importa da CSV", - "Import symbols file:": "Importa file simboli:", - "Inputs": "ingressi", - "Length": "Lunghezza", - "Load Symbols": "Carica simboli", - "Local TSAP:": "TSAP locale:", - "Local time": "Ora locale", - "Marker": "marcatore", - "Name": "Nome", - "Offset (no day saving time)": "Offset (nessun giorno risparmiando tempo)", - "Offset (with day saving time)": "Offset (con ora del giorno)", - "Outputs": "Uscite", - "PLC Connection:": "Connessione PLC:", - "PLC IP Address:": "Indirizzo IP del PLC:", - "PLC Rack:": "Rack PLC:", - "PLC Slot:": "Slot PLC:", - "Poll delay:": "Ritardo del sondaggio:", - "Polling": "votazione", - "Pulse time:": "Tempo di impulso:", - "RW": "RW", - "Reconnect time:": "Tempo di riconnessione:", - "Remote TSAP:": "TSAP remoto:", - "Role": "Ruolo", - "Room": "Camera", - "Round Real to:": "Round reale a:", - "S7 LOGO!:": "LOGO S7 !:", - "S7 Time mode:": "Modalità ora S7", - "Text copied to clipboard. Click to close the window": "Testo copiato negli appunti. Clicca per chiudere la finestra", - "Time offset:": "Differenza di fuso orario:", - "Toggle RW": "Attiva / disattiva RW", - "Toggle WP": "Attiva / disattiva WP", - "Toggle poll": "Attiva / disattiva sondaggio", - "Type": "genere", - "UTC": "UTC", - "Unit": "Unità", - "WP": "WP", - "Write access": "Accesso in scrittura", - "Write access allowed": "Accesso in scrittura consentito", - "Write pulses (true=>false edge)": "Scrivi impulsi (true => falso bordo)", - "minutes": "minuti", - "poll": "sondaggio", - "sec": "sec.", - "write as Pulse": "scrivi come Pulse" -} \ No newline at end of file diff --git a/admin/i18n/nl/translations.json b/admin/i18n/nl/translations.json deleted file mode 100644 index 7b1ba58..0000000 --- a/admin/i18n/nl/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Voeg DB toe", - "Address": "Adres", - "All entries will be deleted. Are you sure?": "Alle inzendingen worden verwijderd. Weet je het zeker?", - "Close": "Dichtbij", - "Delete all entries": "Verwijder alle vermeldingen", - "Description": "Beschrijving", - "Enable polling of data point": "Polling van gegevenspunt inschakelen", - "Export": "Exporteren", - "Export to CSV": "Exporteren naar CSV", - "General": "Algemeen", - "Import": "Importeren", - "Import DB file:": "DB-bestand importeren:", - "Import from CSV": "Importeren vanuit CSV", - "Import symbols file:": "Symboolbestand importeren:", - "Inputs": "ingangen", - "Length": "Lengte", - "Load Symbols": "Laad symbolen", - "Local TSAP:": "Lokale TSAP:", - "Local time": "Lokale tijd", - "Marker": "Markeerstift", - "Name": "Naam", - "Offset (no day saving time)": "Offset (geen dagbesparende tijd)", - "Offset (with day saving time)": "Offset (met dagbesparende tijd)", - "Outputs": "uitgangen", - "PLC Connection:": "PLC-verbinding:", - "PLC IP Address:": "PLC IP-adres:", - "PLC Rack:": "PLC Rack:", - "PLC Slot:": "PLC-slot:", - "Poll delay:": "Poll vertraging:", - "Polling": "stemming", - "Pulse time:": "Pulstijd:", - "RW": "RW", - "Reconnect time:": "Reconnect tijd:", - "Remote TSAP:": "TSAP op afstand:", - "Role": "Rol", - "Room": "Kamer", - "Round Real to:": "Rond echt naar:", - "S7 LOGO!:": "S7 LOGO !:", - "S7 Time mode:": "S7 Tijdmodus", - "Text copied to clipboard. Click to close the window": "Tekst gekopieerd naar klembord. Klik om het venster te sluiten", - "Time offset:": "Tijd offset:", - "Toggle RW": "RW omschakelen", - "Toggle WP": "Wissel WP", - "Toggle poll": "Poll wisselen", - "Type": "Type", - "UTC": "UTC", - "Unit": "Eenheid", - "WP": "WP", - "Write access": "Schrijf toegang", - "Write access allowed": "Schrijftoegang toegestaan", - "Write pulses (true=>false edge)": "Schrijf pulsen (true => false edge)", - "minutes": "minuut", - "poll": "poll", - "sec": "seconde", - "write as Pulse": "schrijf als Pulse" -} \ No newline at end of file diff --git a/admin/i18n/pl/translations.json b/admin/i18n/pl/translations.json deleted file mode 100644 index 7ba99da..0000000 --- a/admin/i18n/pl/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Dodaj DB", - "Address": "Adres", - "All entries will be deleted. Are you sure?": "Wszystkie wpisy zostaną usunięte. Jesteś pewny?", - "Close": "Blisko", - "Delete all entries": "Usuń wszystkie wpisy", - "Description": "Opis", - "Enable polling of data point": "Włącz odpytywanie punktu danych", - "Export": "Eksport", - "Export to CSV": "Eksportuj do pliku CSV", - "General": "Generał", - "Import": "Import", - "Import DB file:": "Importuj plik DB:", - "Import from CSV": "Importuj z CSV", - "Import symbols file:": "Importuj plik symboli:", - "Inputs": "Wejścia", - "Length": "Długość", - "Load Symbols": "Załaduj symbole", - "Local TSAP:": "Lokalny TSAP:", - "Local time": "Czas lokalny", - "Marker": "Znacznik", - "Name": "Nazwa", - "Offset (no day saving time)": "Przesunięcie (brak czasu na dzień)", - "Offset (with day saving time)": "Przesunięcie (z czasem oszczędzania dziennego)", - "Outputs": "Wyjścia", - "PLC Connection:": "Połączenie PLC:", - "PLC IP Address:": "Adres IP sterownika PLC:", - "PLC Rack:": "Rack PLC:", - "PLC Slot:": "Gniazdo PLC:", - "Poll delay:": "Opóźnienie ankiety:", - "Polling": "Ankieta", - "Pulse time:": "Czas impulsu:", - "RW": "RW", - "Reconnect time:": "Czas ponownego połączenia:", - "Remote TSAP:": "Zdalny TSAP:", - "Role": "Rola", - "Room": "Pokój", - "Round Real to:": "Runda prawdziwa do:", - "S7 LOGO!:": "S7 LOGO !:", - "S7 Time mode:": "S7 Tryb czasu", - "Text copied to clipboard. Click to close the window": "Tekst skopiowany do schowka. Kliknij, aby zamknąć okno", - "Time offset:": "Przesunięcie czasu:", - "Toggle RW": "Przełącz RW", - "Toggle WP": "Przełącz WP", - "Toggle poll": "Przełącz ankietę", - "Type": "Rodzaj", - "UTC": "UTC", - "Unit": "Jednostka", - "WP": "WP", - "Write access": "Dostęp do zapisu", - "Write access allowed": "Dostęp do zapisu dozwolony", - "Write pulses (true=>false edge)": "Pisz impulsy (true => false edge)", - "minutes": "minuty", - "poll": "głosowanie", - "sec": "sec.", - "write as Pulse": "napisz jako Pulse" -} \ No newline at end of file diff --git a/admin/i18n/pt/translations.json b/admin/i18n/pt/translations.json deleted file mode 100644 index c6b4eaa..0000000 --- a/admin/i18n/pt/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Adicionar DB", - "Address": "Endereço", - "All entries will be deleted. Are you sure?": "Todas as entradas serão excluídas. Você tem certeza?", - "Close": "Fechar", - "Delete all entries": "Eliminar todas as entradas", - "Description": "Descrição", - "Enable polling of data point": "Habilitar a votação do ponto de dados", - "Export": "Exportar", - "Export to CSV": "Exportar para CSV", - "General": "Geral", - "Import": "Importar", - "Import DB file:": "Importar arquivo DB:", - "Import from CSV": "Importação de CSV", - "Import symbols file:": "Arquivo de símbolos de importação:", - "Inputs": "Entradas", - "Length": "comprimento", - "Load Symbols": "Carregar símbolos", - "Local TSAP:": "TSAP local:", - "Local time": "Horário local", - "Marker": "Marcador", - "Name": "Nome", - "Offset (no day saving time)": "Deslocamento (sem horário)", - "Offset (with day saving time)": "Offset (com tempo de economia de hora)", - "Outputs": "Saídas", - "PLC Connection:": "Conexão do PLC:", - "PLC IP Address:": "Endereço IP do PLC:", - "PLC Rack:": "PLC Rack:", - "PLC Slot:": "Slot PLC:", - "Poll delay:": "Retardo de enquete:", - "Polling": "Polling", - "Pulse time:": "Tempo de pulso:", - "RW": "RW", - "Reconnect time:": "Reconectar o tempo:", - "Remote TSAP:": "TSAP remoto:", - "Role": "Função", - "Room": "Quarto", - "Round Real to:": "Round real to:", - "S7 LOGO!:": "S7 LOGO !:", - "S7 Time mode:": "Modo de tempo S7", - "Text copied to clipboard. Click to close the window": "Texto copiado para a área de transferência. Clique para fechar a janela", - "Time offset:": "Deslocamento de tempo:", - "Toggle RW": "Toggle RW", - "Toggle WP": "Toggle WP", - "Toggle poll": "Alternar pesquisa", - "Type": "Tipo", - "UTC": "UTC", - "Unit": "Unidade", - "WP": "WP", - "Write access": "Acesso de gravação", - "Write access allowed": "Acesso de acesso permitido", - "Write pulses (true=>false edge)": "Escrever pulsos (true => false edge)", - "minutes": "minutos", - "poll": "votação", - "sec": "seg.", - "write as Pulse": "escreva como pulso" -} \ No newline at end of file diff --git a/admin/i18n/ru/translations.json b/admin/i18n/ru/translations.json deleted file mode 100644 index e1d7b1a..0000000 --- a/admin/i18n/ru/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "Добавить DB", - "Address": "Адрес", - "All entries will be deleted. Are you sure?": "Все элементы будут удалены. Вы уверенны?", - "Close": "Закрыть", - "Delete all entries": "Удалить все элементы", - "Description": "Описание", - "Enable polling of data point": "Постоянный опрос переменной в каждом цикле", - "Export": "Экспорт", - "Export to CSV": "Экспорт в CSV", - "General": "Основное", - "Import": "Ипмортировать", - "Import DB file:": "Ипморт DB файлов:", - "Import from CSV": "Импорт из CSV", - "Import symbols file:": "Ипморт символьных файлов:", - "Inputs": "Входы", - "Length": "Length", - "Load Symbols": "Загрузить символы", - "Local TSAP:": "Local TSAP:", - "Local time": "Местное время", - "Marker": "Маркеры", - "Name": "Имя", - "Offset (no day saving time)": "Сдвиг времени (без летнего времени)", - "Offset (with day saving time)": "Сдвиг времени (с летним временем)", - "Outputs": "Выходы", - "PLC Connection:": "PLC соединение:", - "PLC IP Address:": "PLC IP адрес:", - "PLC Rack:": "PLC Rack:", - "PLC Slot:": "PLC слот:", - "Poll delay:": "Интервал опроса:", - "Polling": "голосование", - "Pulse time:": "Pulse time:", - "RW": "RW", - "Reconnect time:": "Reconnect time:", - "Remote TSAP:": "Remote TSAP:", - "Role": "Роль", - "Room": "Комната", - "Round Real to:": "Округлять real до:", - "S7 LOGO!:": "S7 LOGO!:", - "S7 Time mode:": "S7 Режим времени", - "Text copied to clipboard. Click to close the window": "Текст скопирован в буфер обмена. Щелкните мышкой здесь, чтобы закрыть окно", - "Time offset:": "Смещение времени:", - "Toggle RW": "Изменить RW", - "Toggle WP": "Изменить WP", - "Toggle poll": "Изменить poll", - "Type": "Тип", - "UTC": "UTC", - "Unit": "Единицы", - "WP": "WP", - "Write access": "Доступ к записи", - "Write access allowed": "Разрешить запись в переменную", - "Write pulses (true=>false edge)": "Генерировать импульсы (1 => 0)", - "minutes": "минуты", - "poll": "poll", - "sec": "сек.", - "write as Pulse": "пишите как Pulse" -} \ No newline at end of file diff --git a/admin/i18n/zh-cn/translations.json b/admin/i18n/zh-cn/translations.json deleted file mode 100644 index 37ef2e3..0000000 --- a/admin/i18n/zh-cn/translations.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "Add DB": "添加数据库", - "Address": "地址", - "All entries will be deleted. Are you sure?": "所有条目将被删除。", - "Close": "关闭", - "Delete all entries": "删除所有条目", - "Description": "描述", - "Enable polling of data point": "启用数据点轮询", - "Export": "出口", - "Export to CSV": "导出为CSV", - "General": "一般的", - "Import": "进口", - "Import DB file:": "导入数据库文件:", - "Import from CSV": "从CSV导入", - "Import symbols file:": "导入符号文件:", - "Inputs": "输入项", - "Length": "长度", - "Load Symbols": "加载符号", - "Local TSAP:": "本地TSAP:", - "Local time": "当地时间", - "Marker": "记号笔", - "Name": "名称", - "Offset (no day saving time)": "时间偏移(无夏令时)", - "Offset (with day saving time)": "时间偏移(带夏时制)", - "Outputs": "产出", - "PLC Connection:": "PLC连接:", - "PLC IP Address:": "PLC IP地址:", - "PLC Rack:": "PLC机架:", - "PLC Slot:": "PLC插槽:", - "Poll delay:": "轮询延迟:", - "Polling": "轮询", - "Pulse time:": "脉冲时间:", - "RW": "读写器", - "Reconnect time:": "重新连接时间:", - "Remote TSAP:": "远程TSAP:", - "Role": "角色", - "Room": "房间", - "Round Real to:": "舍入为:", - "S7 LOGO!:": "S7 LOGO !:", - "S7 Time mode:": "S7时间模式", - "Text copied to clipboard. Click to close the window": "文本已复制到剪贴板。", - "Time offset:": "时间偏移:", - "Toggle RW": "切换RW", - "Toggle WP": "切换WP", - "Toggle poll": "切换民意调查", - "Type": "类型", - "UTC": "世界标准时间", - "Unit": "单元", - "WP": "可湿性粉剂", - "Write access": "写访问", - "Write access allowed": "允许写访问", - "Write pulses (true=>false edge)": "写脉冲(真=>假边)", - "minutes": "分钟", - "poll": "轮询", - "sec": "秒", - "write as Pulse": "写为脉冲" -} \ No newline at end of file diff --git a/admin/img/plc_back.png b/admin/img/plc_back.png deleted file mode 100644 index 143273fafb40d520c258006b1a0e4f4201c961af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84827 zcmV+KKoGx)P)GgcGojF_qF%F0)n@7?#^bH4MP?+ETa?mfN%9>4La&v9_HFDB_k z6jC6Bq!9!pVMLTfG@A+SR+Ho2vHQc{{~YJGE^_(4`?&AodCqK|18_o!KUJUEIme&2 z_xvY)hOEb6D#z z)?g7RYp}+;ah~fm&Co_;w82^nPGE)Qs5dZDK!79+6^$e!X*7uA$bRX|&!nv=W_fLe z<+G#?5+S9JR)j!Fi9jHgL@9}s3ayI+>s+d&5>hIplt?8Bl(bo1 zY&+`;fe_$u;E#jDTAOEuK6WJl3L(n>6f%%bYkjPwBv1ii7!pSjQ5=aV3@1gQUk*d% zqA(s!U?H-WFiCzkU}_MsI@WLShOy% z)?$poYD=N>yfD@pZ9MQgivxs%T7w9&=UaX*zo;NmDIjzSvE zCQ+2oXe5qiGT!Vo%%9{MKmGKx1oxKuy~j7i4s0DsoaC3zpJ#P-8EXxLsbPC$FjnKN z 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 diff --git a/admin/index.html b/admin/index.html deleted file mode 100644 index 70b74d1..0000000 --- a/admin/index.html +++ /dev/null @@ -1,1305 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PLC Connection:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
General
ms
ms
ms
minutes
- - - - - - - - - - -
Import symbols file:Import DB file:
- - - -
-
-
-
- - - - - - -
-
-
-
-
- - - - - - -
-
-
-
-
- - - - - - -
-
-
- - - - - - - - -
-
- - - - - - -
-
-
- - -
- - diff --git a/admin/index_m.html b/admin/index_m.html new file mode 100644 index 0000000..872c7a1 --- /dev/null +++ b/admin/index_m.html @@ -0,0 +1 @@ +s7
\ No newline at end of file diff --git a/admin/lib/css/jsgrid-theme.css b/admin/lib/css/jsgrid-theme.css deleted file mode 100644 index 936950b..0000000 --- a/admin/lib/css/jsgrid-theme.css +++ /dev/null @@ -1,205 +0,0 @@ -/* - * jsGrid v1.0.1 (http://js-grid.com) - * (c) 2015 Artem Tabalin - * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) - */ - -.jsgrid-grid-header, -.jsgrid-grid-body, -.jsgrid-header-row > th, -.jsgrid-filter-row > td, -.jsgrid-insert-row > td, -.jsgrid-edit-row > td { - border: 1px solid #e9e9e9; -} - -.jsgrid-header-row > th { - border-top: 0; -} - -.jsgrid-header-row > th, .jsgrid-filter-row > td, .jsgrid-insert-row > td { - border-bottom: 0; -} - -.jsgrid-header-row > th:first-child, .jsgrid-filter-row > td:first-child, .jsgrid-insert-row > td:first-child { - border-left: none; -} - -.jsgrid-grid-header { - background: #f9f9f9; -} - -.jsgrid-header-sortable:hover { - cursor: pointer; - background: #fcfcfc; -} - -.jsgrid-header-row .jsgrid-header-sort { - background: #c4e2ff; -} - -.jsgrid-header-sort:before { - content: " "; - display: block; - float: left; - width: 0; - height: 0; - border-style: solid; -} - -.jsgrid-header-sort-asc:before { - border-width: 0 5px 5px 5px; - border-color: transparent transparent #009a67 transparent; -} - -.jsgrid-header-sort-desc:before { - border-width: 5px 5px 0 5px; - border-color: #009a67 transparent transparent transparent; -} - -.jsgrid-grid-body { - border-top: none; -} - -.jsgrid-grid-body td { - border: #f3f3f3 1px solid; -} - -.jsgrid-grid-body tr:first-child td { - border-top: none; -} - -.jsgrid-grid-body tr td:first-child { - border-left: none; -} - -.jsgrid-row > td { - background: #fff; -} - -.jsgrid-alt-row > td { - background: #fcfcfc; -} - -.jsgrid-header-row > th { - background: #f9f9f9; -} - -.jsgrid-filter-row > td { - background: #fcfcfc; -} - -.jsgrid-insert-row > td { - background: #e3ffe5; -} - -.jsgrid-edit-row > td { - background: #fdffe3; -} - -.jsgrid-selected-row > td { - background: #c4e2ff; - border-color: #c4e2ff; -} - -.jsgrid-nodata-row td { - background: #fff; -} - -.jsgrid-pager-current-page { - font-weight: bold; -} - -.jsgrid-button + .jsgrid-button { - margin-left: 5px; -} - -.jsgrid-button:hover { - opacity: .5; - transition: opacity 200ms linear; -} - -.jsgrid .jsgrid-button { - width: 16px; - height: 16px; - border: none; - cursor: pointer; - background-image: url(data:image/png;base64,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); - background-repeat: no-repeat; - background-color: transparent; -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) { - .jsgrid .jsgrid-button { - background-image: url(data:image/png;base64,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); - background-size: 24px 352px; - } -} - -.jsgrid .jsgrid-mode-button { - width: 24px; - height: 24px; -} - -.jsgrid-cancel-button { background-position: 0 0; width: 16px; height: 16px; } -.jsgrid-clear-filter-button { background-position: 0 -40px; width: 16px; height: 16px; } -.jsgrid-delete-button { background-position: 0 -80px; width: 16px; height: 16px; } -.jsgrid-edit-button { background-position: 0 -120px; width: 16px; height: 16px; } -.jsgrid-insert-mode-button { background-position: 0 -160px; width: 24px; height: 24px; } -.jsgrid-insert-button { background-position: 0 -208px; width: 16px; height: 16px; } -.jsgrid-search-mode-button { background-position: 0 -248px; width: 24px; height: 24px; } -.jsgrid-search-button { background-position: 0 -296px; width: 16px; height: 16px; } -.jsgrid-update-button { background-position: 0 -336px; width: 16px; height: 16px; } - - -.jsgrid-load-shader { - background: #ddd; - opacity: .5; - filter: alpha(opacity=50); -} - -.jsgrid-load-panel { - width: 15em; - height: 5em; - background: #fff; - border: 1px solid #e9e9e9; - padding-top: 3em; - text-align: center; -} - -.jsgrid-load-panel:before { - content: ' '; - position: absolute; - top: .5em; - left: 50%; - margin-left: -1em; - width: 2em; - height: 2em; - border: 2px solid #009a67; - border-right-color: transparent; - border-radius: 50%; - -webkit-animation: indicator 1s linear infinite; - animation: indicator 1s linear infinite; -} - -@-webkit-keyframes indicator -{ - from { -webkit-transform: rotate(0deg); } - 50% { -webkit-transform: rotate(180deg); } - to { -webkit-transform: rotate(360deg); } -} - -@keyframes indicator -{ - from { transform: rotate(0deg); } - 50% { transform: rotate(180deg); } - to { transform: rotate(360deg); } -} - -/* old IE */ -.jsgrid-load-panel { - padding-top: 1.5em \ ; -} -.jsgrid-load-panel:before { - display: none \ ; -} diff --git a/admin/lib/css/jsgrid-theme.min.css b/admin/lib/css/jsgrid-theme.min.css deleted file mode 100644 index 31e9c8c..0000000 --- a/admin/lib/css/jsgrid-theme.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/* - * jsGrid v1.0.1 (http://js-grid.com) - * (c) 2015 Artem Tabalin - * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) - */ - -.jsgrid-edit-row>td,.jsgrid-filter-row>td,.jsgrid-grid-body,.jsgrid-grid-header,.jsgrid-header-row>th,.jsgrid-insert-row>td{border:1px solid #e9e9e9}.jsgrid-header-row>th{border-top:0}.jsgrid-filter-row>td,.jsgrid-header-row>th,.jsgrid-insert-row>td{border-bottom:0}.jsgrid-filter-row>td:first-child,.jsgrid-header-row>th:first-child,.jsgrid-insert-row>td:first-child{border-left:none}.jsgrid-grid-header{background:#f9f9f9}.jsgrid-header-sortable:hover{cursor:pointer;background:#fcfcfc}.jsgrid-header-row .jsgrid-header-sort{background:#c4e2ff}.jsgrid-header-sort:before{content:" ";display:block;float:left;width:0;height:0;border-style:solid}.jsgrid-header-sort-asc:before{border-width:0 5px 5px;border-color:transparent transparent #009a67}.jsgrid-header-sort-desc:before{border-width:5px 5px 0;border-color:#009a67 transparent transparent}.jsgrid-grid-body{border-top:none}.jsgrid-grid-body td{border:1px solid #f3f3f3}.jsgrid-grid-body tr:first-child td{border-top:none}.jsgrid-grid-body tr td:first-child{border-left:none}.jsgrid-row>td{background:#fff}.jsgrid-alt-row>td{background:#fcfcfc}.jsgrid-header-row>th{background:#f9f9f9}.jsgrid-filter-row>td{background:#fcfcfc}.jsgrid-insert-row>td{background:#e3ffe5}.jsgrid-edit-row>td{background:#fdffe3}.jsgrid-selected-row>td{background:#c4e2ff;border-color:#c4e2ff}.jsgrid-nodata-row td{background:#fff}.jsgrid-pager-current-page{font-weight:700}.jsgrid-button+.jsgrid-button{margin-left:5px}.jsgrid-button:hover{opacity:.5;transition:opacity 200ms linear}.jsgrid .jsgrid-button{width:16px;height:16px;border:none;cursor:pointer;background-image:url(data:image/png;base64,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);background-repeat:no-repeat;background-color:transparent}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.jsgrid .jsgrid-button{background-image:url(data:image/png;base64,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);background-size:24px 352px}}.jsgrid .jsgrid-mode-button{width:24px;height:24px}.jsgrid-cancel-button{background-position:0 0;width:16px;height:16px}.jsgrid-clear-filter-button{background-position:0 -40px;width:16px;height:16px}.jsgrid-delete-button{background-position:0 -80px;width:16px;height:16px}.jsgrid-edit-button{background-position:0 -120px;width:16px;height:16px}.jsgrid-insert-mode-button{background-position:0 -160px;width:24px;height:24px}.jsgrid-insert-button{background-position:0 -208px;width:16px;height:16px}.jsgrid-search-mode-button{background-position:0 -248px;width:24px;height:24px}.jsgrid-search-button{background-position:0 -296px;width:16px;height:16px}.jsgrid-update-button{background-position:0 -336px;width:16px;height:16px}.jsgrid-load-shader{background:#ddd;opacity:.5;filter:alpha(opacity=50)}.jsgrid-load-panel{width:15em;height:5em;background:#fff;border:1px solid #e9e9e9;padding-top:3em;text-align:center}.jsgrid-load-panel:before{content:' ';position:absolute;top:.5em;left:50%;margin-left:-1em;width:2em;height:2em;border:2px solid #009a67;border-right-color:transparent;border-radius:50%;-webkit-animation:indicator 1s linear infinite;animation:indicator 1s linear infinite}@-webkit-keyframes indicator{from{-webkit-transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg)}to{-webkit-transform:rotate(360deg)}}@keyframes indicator{from{transform:rotate(0deg)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.jsgrid-load-panel{padding-top:1.5em \}.jsgrid-load-panel:before{display:none \} \ No newline at end of file diff --git a/admin/lib/css/jsgrid.css b/admin/lib/css/jsgrid.css deleted file mode 100644 index 33fc780..0000000 --- a/admin/lib/css/jsgrid.css +++ /dev/null @@ -1,121 +0,0 @@ -/* - * jsGrid v1.0.1 (http://js-grid.com) - * (c) 2015 Artem Tabalin - * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) - */ - -.jsgrid { - position: relative; - overflow: hidden; - font-size: 1em; -} - -.jsgrid, .jsgrid *, .jsgrid *:before, .jsgrid *:after { - box-sizing: border-box; -} - -.jsgrid input, -.jsgrid textarea, -.jsgrid select { - font-size: 1em; -} - -.jsgrid-grid-header { - overflow-x: hidden; - overflow-y: hidden; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} - -.jsgrid-grid-body { - overflow-x: hidden; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; -} - -.jsgrid-table { - width: 100%; - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; -} - -.jsgrid-table td { - padding: 0.5em 0.5em; -} - -.jsgrid-table td, -.jsgrid-table th { - box-sizing: border-box; -} - -.jsgrid-align-left { - text-align: left; -} - -.jsgrid-align-center { - text-align: center; -} - -.jsgrid-align-right { - text-align: right; -} - -.jsgrid-header-row > th { - padding: .5em .5em; -} - -.jsgrid-filter-row input, -.jsgrid-filter-row textarea, -.jsgrid-filter-row select, -.jsgrid-edit-row input, -.jsgrid-edit-row textarea, -.jsgrid-edit-row select, -.jsgrid-insert-row input, -.jsgrid-insert-row textarea, -.jsgrid-insert-row select { - width: 90%; - padding: .3em .5em; -} - -.jsgrid-filter-row input[type='checkbox'], -.jsgrid-edit-row input[type='checkbox'], -.jsgrid-insert-row input[type='checkbox'] { - width: auto; -} - -.jsgrid-header-row > th, -.jsgrid-filter-row > td, -.jsgrid-insert-row > td, -.jsgrid-edit-row > td { - text-align: center; -} - -.jsgrid-selected-row td { - cursor: pointer; -} - -.jsgrid-nodata-row td { - padding: .5em 0; - text-align: center; -} - -.jsgrid-header-sort { - cursor: pointer; -} - -.jsgrid-pager { - padding: .5em 0; -} - -.jsgrid-pager-nav-button { - padding: .2em .6em; -} - -.jsgrid-pager-page { - padding: .2em .6em; -} \ No newline at end of file diff --git a/admin/lib/css/jsgrid.min.css b/admin/lib/css/jsgrid.min.css deleted file mode 100644 index 6463bb9..0000000 --- a/admin/lib/css/jsgrid.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/* - * jsGrid v1.0.1 (http://js-grid.com) - * (c) 2015 Artem Tabalin - * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) - */ - -.jsgrid{position:relative;overflow:hidden;font-size:1em}.jsgrid,.jsgrid *,.jsgrid :after,.jsgrid :before{box-sizing:border-box}.jsgrid input,.jsgrid select,.jsgrid textarea{font-size:1em}.jsgrid-grid-header{overflow-x:hidden;overflow-y:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.jsgrid-grid-body{overflow-x:hidden;overflow-y:scroll;-webkit-overflow-scrolling:touch}.jsgrid-table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}.jsgrid-table td{padding:.5em}.jsgrid-table td,.jsgrid-table th{box-sizing:border-box}.jsgrid-align-left{text-align:left}.jsgrid-align-center{text-align:center}.jsgrid-align-right{text-align:right}.jsgrid-header-row>th{padding:.5em}.jsgrid-edit-row input,.jsgrid-edit-row select,.jsgrid-edit-row textarea,.jsgrid-filter-row input,.jsgrid-filter-row select,.jsgrid-filter-row textarea,.jsgrid-insert-row input,.jsgrid-insert-row select,.jsgrid-insert-row textarea{width:90%;padding:.3em .5em}.jsgrid-edit-row input[type=checkbox],.jsgrid-filter-row input[type=checkbox],.jsgrid-insert-row input[type=checkbox]{width:auto}.jsgrid-edit-row>td,.jsgrid-filter-row>td,.jsgrid-header-row>th,.jsgrid-insert-row>td{text-align:center}.jsgrid-selected-row td{cursor:pointer}.jsgrid-nodata-row td{padding:.5em 0;text-align:center}.jsgrid-header-sort{cursor:pointer}.jsgrid-pager{padding:.5em 0}.jsgrid-pager-nav-button,.jsgrid-pager-page{padding:.2em .6em} \ No newline at end of file diff --git a/admin/lib/js/grid.locale-de.js b/admin/lib/js/grid.locale-de.js deleted file mode 100644 index 9c07a68..0000000 --- a/admin/lib/js/grid.locale-de.js +++ /dev/null @@ -1,10 +0,0 @@ -function translate_de() { - window.jsGrid.Grid.prototype.noDataContent = "Nicht gefunden"; - window.jsGrid.Grid.prototype.deleteConfirm = "Sind Sie sicher?"; - window.jsGrid.Grid.prototype.pagerFormat = "Seiten = {first} {prev} {pages} {next} {last}    {pageIndex} of {pageCount}"; - window.jsGrid.Grid.prototype.pagePrevText = "Vorh."; - window.jsGrid.Grid.prototype.pageNextText = "Nexte"; - window.jsGrid.Grid.prototype.pageFirstText = "Erste"; - window.jsGrid.Grid.prototype.pageLastText = "Letzte"; - window.jsGrid.Grid.prototype.loadMessage = "Bitte; warten..."; -} \ No newline at end of file diff --git a/admin/lib/js/grid.locale-ru.js b/admin/lib/js/grid.locale-ru.js deleted file mode 100644 index 3d3fdf0..0000000 --- a/admin/lib/js/grid.locale-ru.js +++ /dev/null @@ -1,11 +0,0 @@ -function translate_ru() { - window.jsGrid.Grid.prototype.noDataContent = "Не найдено"; - window.jsGrid.Grid.prototype.deleteConfirm = "Вы уверены?"; - window.jsGrid.Grid.prototype.pagerFormat = "Страницы = {first} {prev} {pages} {next} {last}    {pageIndex} of {pageCount}"; - window.jsGrid.Grid.prototype.pagePrevText = "Пред."; - window.jsGrid.Grid.prototype.pageNextText = "След"; - window.jsGrid.Grid.prototype.pageFirstText = "Первая"; - window.jsGrid.Grid.prototype.pageLastText = "Последняя"; - window.jsGrid.Grid.prototype.loadMessage = "Подождите..."; -} - diff --git a/admin/lib/js/jsgrid.js b/admin/lib/js/jsgrid.js deleted file mode 100644 index 422a7ca..0000000 --- a/admin/lib/js/jsgrid.js +++ /dev/null @@ -1,1945 +0,0 @@ -/* - * jsGrid v1.0.1 (http://js-grid.com) - * (c) 2015 Artem Tabalin - * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) - */ - -(function(window, $, undefined) { - - var JSGRID = "JSGrid", - JSGRID_DATA_KEY = JSGRID, - JSGRID_ROW_DATA_KEY = "JSGridItem", - JSGRID_EDIT_ROW_DATA_KEY = "JSGridEditRow", - - SORT_ORDER_ASC = "asc", - SORT_ORDER_DESC = "desc", - - FIRST_PAGE_PLACEHOLDER = "{first}", - PAGES_PLACEHOLDER = "{pages}", - PREV_PAGE_PLACEHOLDER = "{prev}", - NEXT_PAGE_PLACEHOLDER = "{next}", - LAST_PAGE_PLACEHOLDER = "{last}", - PAGE_INDEX_PLACEHOLDER = "{pageIndex}", - PAGE_COUNT_PLACEHOLDER = "{pageCount}", - - EMPTY_HREF = "javascript:void(0);"; - - var getOrApply = function(value, context) { - if($.isFunction(value)) { - return value.apply(context, $.makeArray(arguments).slice(2)); - } - return value; - }; - - var defaultController = { - loadData: $.noop, - insertItem: $.noop, - updateItem: $.noop, - deleteItem: $.noop - }; - - - function Grid(element, config) { - var $element = $(element); - - $element.data(JSGRID_DATA_KEY, this); - - this._container = $element; - - this.data = []; - this.fields = []; - - this._editingRow = null; - this._sortField = null; - this._sortOrder = SORT_ORDER_ASC; - this._firstDisplayingPage = 1; - - this._init(config); - this.render(); - } - - Grid.prototype = { - width: "auto", - height: "auto", - updateOnResize: true, - - rowClass: $.noop, - rowRenderer: null, - - rowClick: function(args) { - if(this.editing) { - this.editItem($(args.event.target).closest("tr")); - } - }, - - noDataContent: "Not found", - noDataRowClass: "jsgrid-nodata-row", - - heading: true, - headerRowRenderer: null, - headerRowClass: "jsgrid-header-row", - - filtering: false, - filterRowRenderer: null, - filterRowClass: "jsgrid-filter-row", - - inserting: false, - insertRowRenderer: null, - insertRowClass: "jsgrid-insert-row", - - editing: false, - editRowRenderer: null, - editRowClass: "jsgrid-edit-row", - - confirmDeleting: true, - deleteConfirm: "Are you sure?", - - selecting: true, - selectedRowClass: "jsgrid-selected-row", - oddRowClass: "jsgrid-row", - evenRowClass: "jsgrid-alt-row", - - sorting: false, - sortableClass: "jsgrid-header-sortable", - sortAscClass: "jsgrid-header-sort jsgrid-header-sort-asc", - sortDescClass: "jsgrid-header-sort jsgrid-header-sort-desc", - - paging: false, - pagerContainer: null, - pageIndex: 1, - pageSize: 20, - pageButtonCount: 15, - pagerFormat: "Pages: {first} {prev} {pages} {next} {last}    {pageIndex} of {pageCount}", - pagePrevText: "Prev", - pageNextText: "Next", - pageFirstText: "First", - pageLastText: "Last", - pageNavigatorNextText: "...", - pageNavigatorPrevText: "...", - pagerContainerClass: "jsgrid-pager-container", - pagerClass: "jsgrid-pager", - pagerNavButtonClass: "jsgrid-pager-nav-button", - pageClass: "jsgrid-pager-page", - currentPageClass: "jsgrid-pager-current-page", - - pageLoading: false, - - autoload: false, - controller: defaultController, - - loadIndication: true, - loadIndicationDelay: 500, - loadMessage: "Please, wait...", - loadShading: true, - - onRefreshing: $.noop, - onRefreshed: $.noop, - onItemDeleting: $.noop, - onItemDeleted: $.noop, - onItemInserting: $.noop, - onItemInserted: $.noop, - onItemUpdating: $.noop, - onItemUpdated: $.noop, - onDataLoading: $.noop, - onDataLoaded: $.noop, - onOptionChanging: $.noop, - onOptionChanged: $.noop, - onError: $.noop, - - containerClass: "jsgrid", - tableClass: "jsgrid-table", - gridHeaderClass: "jsgrid-grid-header", - gridBodyClass: "jsgrid-grid-body", - - _init: function(config) { - $.extend(this, config); - this._initLoadStrategy(); - this._initController(); - this._initFields(); - this._attachWindowLoadResize(); - this._attachWindowResizeCallback(); - }, - - loadStrategy: function() { - return this.pageLoading - ? new jsGrid.loadStrategies.PageLoadingStrategy(this) - : new jsGrid.loadStrategies.DirectLoadingStrategy(this); - }, - - _initLoadStrategy: function() { - this._loadStrategy = getOrApply(this.loadStrategy, this); - }, - - _initController: function() { - this._controller = $.extend({}, defaultController, getOrApply(this.controller, this)); - }, - - loadIndicator: function(config) { - return new jsGrid.LoadIndicator(config); - }, - - _initFields: function() { - var self = this; - self.fields = $.map(self.fields, function(field) { - if($.isPlainObject(field)) { - var fieldConstructor = (field.type && jsGrid.fields[field.type]) || jsGrid.Field; - field = new fieldConstructor(field); - } - field._grid = self; - return field; - }); - }, - - _attachWindowLoadResize: function() { - $(window).on("load", $.proxy(this._refreshSize, this)); - }, - - _attachWindowResizeCallback: function() { - if(this.updateOnResize) { - $(window).on("resize", $.proxy(this._refreshSize, this)); - } - }, - - _detachWindowResizeCallback: function() { - $(window).off("resize", this._refreshSize); - }, - - option: function(key, value) { - var optionChangingEventArgs, - optionChangedEventArgs; - - if(arguments.length === 1) { - return this[key]; - } - - optionChangingEventArgs = { - option: key, - oldValue: this[key], - newValue: value - }; - this._callEventHandler(this.onOptionChanging, optionChangingEventArgs); - - this._handleOptionChange(optionChangingEventArgs.option, optionChangingEventArgs.newValue); - - optionChangedEventArgs = { - option: optionChangingEventArgs.option, - value: optionChangingEventArgs.newValue - }; - this._callEventHandler(this.onOptionChanged, optionChangedEventArgs); - }, - - _handleOptionChange: function(name, value) { - this[name] = value; - - switch(name) { - case "width": - case "height": - this._refreshSize(); - break; - case "rowClass": - case "rowRenderer": - case "rowClick": - case "noDataText": - case "noDataRowClass": - case "noDataContent": - case "selecting": - case "selectedRowClass": - case "oddRowClass": - case "evenRowClass": - this._refreshContent(); - break; - case "pageButtonCount": - case "pagerFormat": - case "pagePrevText": - case "pageNextText": - case "pageFirstText": - case "pageLastText": - case "pageNavigatorNextText": - case "pageNavigatorPrevText": - case "pagerClass": - case "pagerNavButtonClass": - case "pageClass": - case "currentPageClass": - this._refreshPager(); - break; - case "fields": - this._initFields(); - this.render(); - break; - case "data": - case "editing": - case "heading": - case "filtering": - case "inserting": - case "paging": - this.refresh(); - break; - case "pageLoading": - this._initLoadStrategy(); - this.search(); - break; - case "pageIndex": - this.openPage(value); - break; - case "pageSize": - this.refresh(); - this.search(); - break; - case "editRowRenderer": - case "editRowClass": - this.cancelEdit(); - break; - default: - this.render(); - break; - } - }, - - destroy: function() { - this._detachWindowResizeCallback(); - this._clear(); - this._container.removeData(JSGRID_DATA_KEY); - }, - - render: function() { - this._clear(); - - this._container.addClass(this.containerClass) - .css("position", "relative") - .append(this._createHeader()) - .append(this._createBody()); - - this._pagerContainer = this._createPagerContainer(); - this._loadIndicator = this._createLoadIndicator(); - - this.refresh(); - - return this.autoload ? this.loadData() : $.Deferred().resolve().promise(); - }, - - _createLoadIndicator: function() { - return getOrApply(this.loadIndicator, this, { - message: this.loadMessage, - shading: this.loadShading, - container: this._container - }); - }, - - _clear: function() { - this.cancelEdit(); - - clearTimeout(this._loadingTimer); - - this._pagerContainer && this._pagerContainer.empty(); - - this._container.empty() - .css({ position: "", width: "", height: "" }); - }, - - _createHeader: function() { - var $headerRow = this._headerRow = this._createHeaderRow(), - $filterRow = this._filterRow = this._createFilterRow(), - $insertRow = this._insertRow = this._createInsertRow(); - - var $headerGrid = this._headerGrid = $("").addClass(this.tableClass) - .append($headerRow) - .append($filterRow) - .append($insertRow); - - var $header = this._header = $("
").addClass(this.gridHeaderClass) - .append($headerGrid); - - return $header; - }, - - _createBody: function() { - var $content = this._content = $("
"); - - var $bodyGrid = this._bodyGrid = $("
").addClass(this.tableClass) - .append($content); - - var $body = this._body = $("
").addClass(this.gridBodyClass) - .append($bodyGrid); - - return $body; - }, - - _createPagerContainer: function() { - var pagerContainer = this.pagerContainer || $("
").appendTo(this._container); - return $(pagerContainer).addClass(this.pagerContainerClass); - }, - - _eachField: function(callBack) { - var self = this; - $.each(this.fields, function(index, field) { - return callBack.call(self, field, index); - }); - }, - - _createHeaderRow: function() { - if($.isFunction(this.headerRowRenderer)) { - return $(this.headerRowRenderer()); - } - - var $result = $("
").addClass(this.headerRowClass); - - this._eachField(function(field, index) { - var $th = $("").addClass(this.filterRowClass); - - this._eachField(function(field) { - $("").addClass(this.insertRowClass); - - this._eachField(function(field) { - $("").addClass(this.noDataRowClass) - .append($(""); - this._renderCells($result, item); - } - - $result.addClass(this._getRowClasses(item, itemIndex)) - .data(JSGRID_ROW_DATA_KEY, item) - .on("click", $.proxy(function(e) { - this.rowClick({ - item: item, - itemIndex: itemIndex, - event: e - }); - }, this)); - - if(this.selecting) { - this._attachRowHover($result); - } - - return $result; - }, - - _getRowClasses: function(item, itemIndex) { - var classes = []; - classes.push(((itemIndex + 1) % 2) ? this.oddRowClass : this.evenRowClass); - classes.push(getOrApply(this.rowClass, this, item, itemIndex)); - return classes.join(" "); - }, - - _attachRowHover: function($row) { - var selectedRowClass = this.selectedRowClass; - $row.hover(function() { - $(this).addClass(selectedRowClass); - }, - function() { - $(this).removeClass(selectedRowClass); - } - ); - }, - - _renderCells: function($row, item) { - this._eachField(function(field) { - $row.append(this._createCell(item, field)); - }); - return this; - }, - - _createCell: function(item, field) { - var $result; - var fieldValue = item[field.name]; - - if($.isFunction(field.cellRenderer)) { - $result = $(field.cellRenderer(fieldValue, item)); - } else { - $result = $("").addClass(this.editRowClass); - - this._eachField(function(field) { - $("
").addClass(field.css) - .appendTo($result) - .append(field.headerTemplate ? field.headerTemplate() : "") - .css("width", field.width); - - if(this.sorting && field.sorting) { - $th.addClass(this.sortableClass) - .on("click", $.proxy(function() { - this.sort(index); - }, this)); - } - }); - - return $result; - }, - - _createFilterRow: function() { - if($.isFunction(this.filterRowRenderer)) { - return $(this.filterRowRenderer()); - } - - var $result = $("
").addClass(field.css) - .appendTo($result) - .append(field.filterTemplate ? field.filterTemplate() : "") - .width(field.width); - }); - - return $result; - }, - - _createInsertRow: function() { - if($.isFunction(this.insertRowRenderer)) { - return $(this.insertRowRenderer()); - } - - var $result = $("
").addClass(field.css) - .appendTo($result) - .append(field.insertTemplate ? field.insertTemplate() : "") - .width(field.width); - }); - - return $result; - }, - - _callEventHandler: function(handler, eventParams) { - return handler.call(this, $.extend(eventParams, { - grid: this - })); - }, - - reset: function() { - this._resetSorting(); - this._resetPager(); - this.refresh(); - }, - - _resetPager: function() { - this._firstDisplayingPage = 1; - this._setPage(1); - }, - - _resetSorting: function() { - this._sortField = null; - this._sortOrder = SORT_ORDER_ASC; - this._clearSortingCss(); - }, - - refresh: function() { - this._callEventHandler(this.onRefreshing); - - this.cancelEdit(); - - this._refreshHeading(); - this._refreshFiltering(); - this._refreshInserting(); - this._refreshContent(); - this._refreshPager(); - this._refreshSize(); - - this._callEventHandler(this.onRefreshed); - }, - - _refreshHeading: function() { - this._headerRow.toggle(this.heading); - }, - - _refreshFiltering: function() { - this._filterRow.toggle(this.filtering); - }, - - _refreshInserting: function() { - this._insertRow.toggle(this.inserting); - }, - - _refreshContent: function() { - var $content = this._content; - $content.empty(); - - if(!this.data.length) { - $content.append(this._createNoDataRow()); - return this; - } - - var indexFrom = this._loadStrategy.firstDisplayIndex(); - var indexTo = this._loadStrategy.lastDisplayIndex(); - - for(var itemIndex = indexFrom; itemIndex < indexTo; itemIndex++) { - var item = this.data[itemIndex]; - $content.append(this._createRow(item, itemIndex)); - } - }, - - _createNoDataRow: function() { - var noDataContent = getOrApply(this.noDataContent, this); - return $("
").attr("colspan", this.fields.length).append(noDataContent)); - }, - - _createNoDataContent: function () { - return $.isFunction(this.noDataRenderer) - ? this.noDataRenderer() - : this.noDataText; - }, - - _createRow: function(item, itemIndex) { - var $result; - - if($.isFunction(this.rowRenderer)) { - $result = $(this.rowRenderer(item, itemIndex)); - } else { - $result = $("
").append(field.itemTemplate ? field.itemTemplate(fieldValue, item) : fieldValue); - } - - $result.addClass(field.css) - .width(field.width); - - field.align && $result.addClass("jsgrid-align-" + field.align); - - return $result; - }, - - sort: function(field, order) { - if($.isPlainObject(field)) { - order = field.order; - field = field.field; - } - - this._clearSortingCss(); - this._setSortingParams(field, order); - this._setSortingCss(); - return this._loadStrategy.sort(); - }, - - _clearSortingCss: function() { - this._headerRow.find("th") - .removeClass(this.sortAscClass) - .removeClass(this.sortDescClass); - }, - - _setSortingParams: function(field, order) { - field = this._normalizeSortingField(field); - order = order || ((this._sortField === field) ? this._reversedSortOrder(this._sortOrder) : SORT_ORDER_ASC); - - this._sortField = field; - this._sortOrder = order; - }, - - _normalizeSortingField: function(field) { - if($.isNumeric(field)) { - return this.fields[field]; - } - - if(typeof field === "string") { - return $.grep(this.fields, function (f) { - return f.name === field; - })[0]; - } - - return field; - }, - - _reversedSortOrder: function(order) { - return (order === SORT_ORDER_ASC ? SORT_ORDER_DESC : SORT_ORDER_ASC); - }, - - _setSortingCss: function() { - var fieldIndex = $.inArray(this._sortField, this.fields); - - this._headerRow.find("th").eq(fieldIndex) - .addClass(this._sortOrder === SORT_ORDER_ASC ? this.sortAscClass : this.sortDescClass); - }, - - _sortData: function() { - var sortFactor = this._sortFactor(), - sortField = this._sortField; - - if(sortField) { - this.data.sort(function(item1, item2) { - return sortFactor * sortField.sortingFunc(item1[sortField.name], item2[sortField.name]); - }); - } - }, - - _sortFactor: function() { - return this._sortOrder === SORT_ORDER_ASC ? 1 : -1; - }, - - _itemsCount: function() { - return this._loadStrategy.itemsCount(); - }, - - _pagesCount: function() { - var itemsCount = this._itemsCount(), - pageSize = this.pageSize; - return Math.floor(itemsCount / pageSize) + (itemsCount % pageSize ? 1 : 0); - }, - - _refreshPager: function() { - var $pagerContainer = this._pagerContainer; - $pagerContainer.empty(); - - if(this.paging && this._pagesCount() > 1) { - $pagerContainer.show() - .append(this._createPager()); - } else { - $pagerContainer.hide(); - } - }, - - _createPager: function() { - var pageIndex = this.pageIndex, - pageCount = this._pagesCount(), - pagerParts = this.pagerFormat.split(" "); - - pagerParts = $.map(pagerParts, $.proxy(function(pagerPart) { - var result = pagerPart; - - if(pagerPart === PAGES_PLACEHOLDER) { - result = this._createPages(); - } else if(pagerPart === FIRST_PAGE_PLACEHOLDER) { - result = pageIndex > 1 ? this._createPagerNavButton(this.pageFirstText, 1) : ""; - } else if(pagerPart === PREV_PAGE_PLACEHOLDER) { - result = pageIndex > 1 ? this._createPagerNavButton(this.pagePrevText, pageIndex - 1) : ""; - } else if(pagerPart === NEXT_PAGE_PLACEHOLDER) { - result = pageIndex < pageCount ? this._createPagerNavButton(this.pageNextText, pageIndex + 1) : ""; - } else if(pagerPart === LAST_PAGE_PLACEHOLDER) { - result = pageIndex < pageCount ? this._createPagerNavButton(this.pageLastText, pageCount) : ""; - } else if(pagerPart === PAGE_INDEX_PLACEHOLDER) { - result = pageIndex; - } else if(pagerPart === PAGE_COUNT_PLACEHOLDER) { - result = pageCount; - } - - return $.isArray(result) ? result.concat([" "]) : [result, " "]; - }, this)); - - var $pager = $("
").addClass(this.pagerClass) - .append(pagerParts); - - return $pager; - }, - - _createPages: function() { - var pageCount = this._pagesCount(), - pageButtonCount = this.pageButtonCount, - firstDisplayingPage = this._firstDisplayingPage, - pages = [], - pageNumber; - - if(firstDisplayingPage > 1) { - pages.push(this._createPagerPageNavButton(this.pageNavigatorPrevText, this.showPrevPages)); - } - - for(var i = 0, pageNumber = firstDisplayingPage; i < pageButtonCount && pageNumber <= pageCount; i++, pageNumber++) { - pages.push(pageNumber === this.pageIndex - ? this._createPagerCurrentPage() - : this._createPagerPage(pageNumber)); - } - - if((firstDisplayingPage + pageButtonCount - 1) < pageCount) { - pages.push(this._createPagerPageNavButton(this.pageNavigatorNextText, this.showNextPages)); - } - - return pages; - }, - - _createPagerNavButton: function(text, pageIndex) { - return this._createPagerButton(text, this.pagerNavButtonClass, function() { - this.openPage(pageIndex); - }); - }, - - _createPagerPageNavButton: function(text, handler) { - return this._createPagerButton(text, this.pagerNavButtonClass, handler); - }, - - _createPagerPage: function(pageIndex) { - return this._createPagerButton(pageIndex, this.pageClass, function() { - this.openPage(pageIndex); - }); - }, - - _createPagerButton: function(text, css, handler) { - var $link = $("").attr("href", EMPTY_HREF) - .html(text) - .on("click", $.proxy(handler, this)); - - return $("").addClass(css).append($link); - }, - - _createPagerCurrentPage: function() { - return $("") - .addClass(this.pageClass) - .addClass(this.currentPageClass) - .text(this.pageIndex); - }, - - _refreshSize: function() { - this._refreshHeight(); - this._refreshWidth(); - }, - - _refreshWidth: function() { - var $headerGrid = this._headerGrid, - $bodyGrid = this._bodyGrid, - width = this.width, - scrollBarWidth = this._scrollBarWidth(), - gridWidth; - - if(width === "auto") { - $headerGrid.width("auto"); - gridWidth = $headerGrid.outerWidth(); - width = gridWidth + scrollBarWidth; - } - - $headerGrid.width(""); - $bodyGrid.width(""); - this._header.css("padding-right", scrollBarWidth); - this._container.width(width); - gridWidth = $headerGrid.outerWidth(); - $bodyGrid.width(gridWidth); - }, - - _scrollBarWidth: (function() { - var result; - - return function() { - if(result === undefined) { - var $ghostContainer = $("
"); - var $ghostContent = $("
"); - $ghostContainer.append($ghostContent).appendTo("body"); - var width = $ghostContent.innerWidth(); - $ghostContainer.css("overflow-y", "auto"); - var widthExcludingScrollBar = $ghostContent.innerWidth(); - $ghostContainer.remove(); - result = width - widthExcludingScrollBar; - } - return result; - }; - })(), - - _refreshHeight: function() { - var container = this._container, - pagerContainer = this._pagerContainer, - height = this.height, - nonBodyHeight; - - container.height(height); - - if(height !== "auto") { - height = container.height(); - - nonBodyHeight = this._header.outerHeight(true); - if(pagerContainer.parents(container).length) { - nonBodyHeight += pagerContainer.outerHeight(true); - } - - this._body.outerHeight(height - nonBodyHeight); - } - }, - - showPrevPages: function() { - var firstDisplayingPage = this._firstDisplayingPage, - pageButtonCount = this.pageButtonCount; - - this._firstDisplayingPage = (firstDisplayingPage > pageButtonCount) ? firstDisplayingPage - pageButtonCount : 1; - - this._refreshPager(); - }, - - showNextPages: function() { - var firstDisplayingPage = this._firstDisplayingPage, - pageButtonCount = this.pageButtonCount, - pageCount = this._pagesCount(); - - this._firstDisplayingPage = (firstDisplayingPage + 2 * pageButtonCount > pageCount) - ? pageCount - pageButtonCount + 1 - : firstDisplayingPage + pageButtonCount; - - this._refreshPager(); - }, - - openPage: function(pageIndex) { - if(pageIndex < 1 || pageIndex > this._pagesCount()) - return; - - this._setPage(pageIndex); - this._loadStrategy.openPage(pageIndex); - }, - - _setPage: function(pageIndex) { - var firstDisplayingPage = this._firstDisplayingPage, - pageButtonCount = this.pageButtonCount; - - this.pageIndex = pageIndex; - - if(pageIndex < firstDisplayingPage) { - this._firstDisplayingPage = pageIndex; - } - - if(pageIndex > firstDisplayingPage + pageButtonCount - 1) { - this._firstDisplayingPage = pageIndex - pageButtonCount + 1; - } - }, - - _controllerCall: function(method, param, doneCallback) { - this._showLoading(); - - var controller = this._controller; - if(!controller || !controller[method]) { - throw new Error("controller has no method '" + method + "'"); - } - - return $.when(controller[method](param)) - .done($.proxy(doneCallback, this)) - .fail($.proxy(this._errorHandler, this)) - .always($.proxy(this._hideLoading, this)); - }, - - _errorHandler: function() { - this._callEventHandler(this.onError, { - args: $.makeArray(arguments) - }); - }, - - _showLoading: function() { - clearTimeout(this._loadingTimer); - - this._loadingTimer = setTimeout($.proxy(function() { - this._loadIndicator.show(); - }, this), this.loadIndicationDelay); - }, - - _hideLoading: function() { - clearTimeout(this._loadingTimer); - this._loadIndicator.hide(); - }, - - search: function(filter) { - this._resetSorting(); - this._resetPager(); - return this.loadData(filter); - }, - - loadData: function(filter) { - filter = filter || (this.filtering ? this._getFilter() : {}); - - $.extend(filter, this._loadStrategy.loadParams(), this._sortingParams()); - - this._callEventHandler(this.onDataLoading, { - filter: filter - }); - - return this._controllerCall("loadData", filter, function(loadedData) { - this._loadStrategy.finishLoad(loadedData); - - this._callEventHandler(this.onDataLoaded, { - data: loadedData - }); - }); - }, - - _getFilter: function() { - var result = {}; - this._eachField(function(field) { - if(field.filtering) { - result[field.name] = field.filterValue(); - } - }); - return result; - }, - - _sortingParams: function() { - if(this.sorting && this._sortField) { - return { - sortField: this._sortField.name, - sortOrder: this._sortOrder - }; - } - return {}; - }, - - clearFilter: function() { - var $filterRow = this._createFilterRow(); - this._filterRow.replaceWith($filterRow); - this._filterRow = $filterRow; - return this.search(); - }, - - insertItem: function(item) { - var insertingItem = item || this._getInsertItem(); - - this._callEventHandler(this.onItemInserting, { - item: insertingItem - }); - - return this._controllerCall("insertItem", insertingItem, function(insertedItem) { - insertedItem = insertedItem || insertingItem; - this._loadStrategy.finishInsert(insertedItem); - - this._callEventHandler(this.onItemInserted, { - item: insertedItem - }); - }); - }, - - _getInsertItem: function() { - var result = {}; - this._eachField(function(field) { - if(field.inserting) { - result[field.name] = field.insertValue(); - } - }); - return result; - }, - - clearInsert: function() { - var insertRow = this._createInsertRow(); - this._insertRow.replaceWith(insertRow); - this._insertRow = insertRow; - this.refresh(); - }, - - editItem: function(item) { - var $row = this._rowByItem(item); - if($row.length) { - this._editRow($row); - } - }, - - _rowByItem: function(item) { - if(item.jquery || item.nodeType) - return $(item); - - return this._content.find("tr").filter(function() { - return $.data(this, JSGRID_ROW_DATA_KEY) === item; - }); - }, - - _editRow: function($row) { - if(!this.editing) - return; - - if(this._editingRow) { - this.cancelEdit(); - } - - var item = $row.data(JSGRID_ROW_DATA_KEY), - $editRow = this._createEditRow(item); - - this._editingRow = $row; - $row.hide(); - $editRow.insertAfter($row); - $row.data(JSGRID_EDIT_ROW_DATA_KEY, $editRow); - }, - - _createEditRow: function(item) { - if($.isFunction(this.editRowRenderer)) { - return $(this.editRowRenderer(item, this._itemIndex(item))); - } - - var $result = $("
").addClass(field.css) - .appendTo($result) - .append(field.editTemplate ? field.editTemplate(item[field.name], item) : "") - .width(field.width || "auto"); - }); - - return $result; - }, - - updateItem: function(item, editedItem) { - if(arguments.length === 1) { - editedItem = item; - } - - var $row = item ? this._rowByItem(item) : this._editingRow; - editedItem = editedItem || this._getEditedItem(); - - return this._updateRow($row, editedItem); - }, - - _updateRow: function($updatingRow, editedItem) { - var updatingItem = $updatingRow.data(JSGRID_ROW_DATA_KEY), - updatingItemIndex = this._itemIndex(updatingItem); - - $.extend(updatingItem, editedItem); - - this._callEventHandler(this.onItemUpdating, { - row: $updatingRow, - item: updatingItem, - itemIndex: updatingItemIndex - }); - - return this._controllerCall("updateItem", updatingItem, function(updatedItem) { - updatedItem = updatedItem || updatingItem; - this._finishUpdate($updatingRow, updatedItem, updatingItemIndex); - - this._callEventHandler(this.onItemUpdated, { - row: $updatingRow, - item: updatedItem, - itemIndex: updatingItemIndex - }); - }); - }, - - _itemIndex: function(item) { - return $.inArray(item, this.data); - }, - - _finishUpdate: function($updatedRow, updatedItem, updatedItemIndex) { - this.cancelEdit(); - this.data[updatedItemIndex] = updatedItem; - $updatedRow.replaceWith(this._createRow(updatedItem, updatedItemIndex)); - }, - - _getEditedItem: function() { - var result = {}; - this._eachField(function(field) { - if(field.editing) { - result[field.name] = field.editValue(); - } - }); - return result; - }, - - cancelEdit: function() { - if(!this._editingRow) { - return; - } - - var $row = this._editingRow, - $editRow = $row.data(JSGRID_EDIT_ROW_DATA_KEY); - - $editRow.remove(); - $row.show(); - this._editingRow = null; - }, - - deleteItem: function(item) { - var $row = this._rowByItem(item); - - if(!$row.length) - return; - - if(this.confirmDeleting && !window.confirm(getOrApply(this.deleteConfirm, this, $row.data(JSGRID_ROW_DATA_KEY)))) - return; - - return this._deleteRow($row); - }, - - _deleteRow: function($row) { - var deletingItem = $row.data(JSGRID_ROW_DATA_KEY), - deletingItemIndex = this._itemIndex(deletingItem); - - this._callEventHandler(this.onItemDeleting, { - row: $row, - item: deletingItem, - itemIndex: deletingItemIndex - }); - - return this._controllerCall("deleteItem", deletingItem, function() { - this._loadStrategy.finishDelete(deletingItem, deletingItemIndex); - - this._callEventHandler(this.onItemDeleted, { - row: $row, - item: deletingItem, - itemIndex: deletingItemIndex - }); - }); - } - }; - - $.fn.jsGrid = function(config) { - var args = $.makeArray(arguments), - methodArgs = args.slice(1), - result = this; - - this.each(function() { - var $element = $(this), - instance = $element.data(JSGRID_DATA_KEY), - methodResult; - - if(instance) { - if(typeof config === "string") { - methodResult = instance[config].apply(instance, methodArgs); - if(methodResult !== undefined && methodResult !== instance) { - result = methodResult; - return false; - } - } else { - instance._detachWindowResizeCallback(); - instance._init(config); - instance.render(); - } - } else { - new Grid($element, config); - } - }); - - return result; - }; - - window.jsGrid = { - Grid: Grid, - fields: [] - }; - -}(window, jQuery)); -(function(jsGrid, $, undefined) { - - function LoadIndicator(config) { - this._init(config); - } - - LoadIndicator.prototype = { - - container: "body", - message: "Loading...", - shading: true, - - zIndex: 1000, - shaderClass: "jsgrid-load-shader", - loadPanelClass: "jsgrid-load-panel", - - _init: function(config) { - $.extend(true, this, config); - - this._initContainer(); - this._initShader(); - this._initLoadPanel(); - }, - - _initContainer: function() { - this._container = $(this.container); - }, - - _initShader: function() { - if(!this.shading) - return; - - this._shader = $("
").addClass(this.shaderClass) - .hide() - .css({ - position: "absolute", - top: 0, - right: 0, - bottom: 0, - left: 0, - zIndex: this.zIndex - }) - .appendTo(this._container); - }, - - _initLoadPanel: function() { - this._loadPanel = $("
").addClass(this.loadPanelClass) - .text(this.message) - .hide() - .css({ - position: "absolute", - top: "50%", - left: "50%", - zIndex: this.zIndex - }) - .appendTo(this._container); - }, - - show: function() { - var $loadPanel = this._loadPanel.show(); - - var actualWidth = $loadPanel.outerWidth(); - var actualHeight = $loadPanel.outerHeight(); - - $loadPanel.css({ - marginTop: -actualHeight / 2, - marginLeft: -actualWidth / 2 - }); - - this._shader.show(); - }, - - hide: function() { - this._loadPanel.hide(); - this._shader.hide(); - } - - }; - - jsGrid.LoadIndicator = LoadIndicator; - -}(jsGrid, jQuery)); -(function(jsGrid, $, undefined) { - - function DirectLoadingStrategy(grid) { - this._grid = grid; - } - - DirectLoadingStrategy.prototype = { - - firstDisplayIndex: function() { - var grid = this._grid; - return grid.option("paging") ? (grid.option("pageIndex") - 1) * grid.option("pageSize") : 0; - }, - - lastDisplayIndex: function() { - var grid = this._grid; - var itemsCount = grid.option("data").length; - - return grid.option("paging") - ? Math.min(grid.option("pageIndex") * grid.option("pageSize"), itemsCount) - : itemsCount; - }, - - itemsCount: function() { - return this._grid.option("data").length; - }, - - openPage: function(index) { - this._grid.refresh(); - }, - - loadParams: function() { - return {}; - }, - - sort: function() { - this._grid._sortData(); - this._grid.refresh(); - return $.Deferred().resolve().promise(); - }, - - finishLoad: function(loadedData) { - this._grid.option("data", loadedData); - }, - - finishInsert: function(insertedItem) { - var grid = this._grid; - grid.option("data").push(insertedItem); - grid.refresh(); - }, - - finishDelete: function(deletedItem, deletedItemIndex) { - var grid = this._grid; - grid.option("data").splice(deletedItemIndex, 1); - grid.reset(); - } - }; - - - function PageLoadingStrategy(grid) { - this._grid = grid; - this._itemsCount = 0; - } - - PageLoadingStrategy.prototype = { - firstDisplayIndex: function() { - return 0; - }, - - lastDisplayIndex: function() { - return this._grid.option("data").length; - }, - - itemsCount: function() { - return this._itemsCount; - }, - - openPage: function(index) { - this._grid.loadData(); - }, - - loadParams: function() { - var grid = this._grid; - return { - pageIndex: grid.option("pageIndex"), - pageSize: grid.option("pageSize") - }; - }, - - sort: function() { - return this._grid.loadData(); - }, - - finishLoad: function(loadedData) { - this._itemsCount = loadedData.itemsCount; - this._grid.option("data", loadedData.data); - }, - - finishInsert: function(insertedItem) { - this._grid.search(); - }, - - finishDelete: function(deletedItem, deletedItemIndex) { - this._grid.search(); - } - }; - - jsGrid.loadStrategies = { - DirectLoadingStrategy: DirectLoadingStrategy, - PageLoadingStrategy: PageLoadingStrategy - }; - -}(jsGrid, jQuery)); -(function(jsGrid, $, undefined) { - - var sortStrategies = { - string: function(str1, str2) { - return str1.localeCompare(str2); - }, - - number: function(n1, n2) { - return n1 - n2; - }, - - date: function(dt1, dt2) { - return dt1 - dt2; - }, - - numberAsString: function(n1, n2) { - return parseFloat(n1) - parseFloat(n2); - } - }; - - jsGrid.sortStrategies = sortStrategies; - -}(jsGrid, jQuery)); -(function(jsGrid, $, undefined) { - - function Field(config) { - $.extend(true, this, config); - this.sortingFunc = this._getSortingFunc(); - } - - Field.prototype = { - name: "", - title: "", - css: "", - align: "", - width: 100, - - filtering: true, - inserting: true, - editing: true, - sorting: true, - sorter: "string", // name of SortStrategy or function to compare elements - - headerTemplate: function() { - return this.title || this.name; - }, - - itemTemplate: function(value, item) { - return value; - }, - - filterTemplate: function() { - return ""; - }, - - insertTemplate: function() { - return ""; - }, - - editTemplate: function(value, item) { - this._value = value; - return this.itemTemplate(value, item); - }, - - filterValue: function() { - return ""; - }, - - insertValue: function() { - return ""; - }, - - editValue: function() { - return this._value; - }, - - _getSortingFunc: function() { - var sorter = this.sorter; - - if($.isFunction(sorter)) { - return sorter; - } - - if(typeof sorter === "string") { - return jsGrid.sortStrategies[sorter]; - } - - throw Error("Wrong sorter for the field \"" + this.name + "\"!"); - } - }; - - jsGrid.Field = Field; - -}(jsGrid, jQuery)); -(function(jsGrid, $, undefined) { - - var Field = jsGrid.Field; - - function TextField(config) { - Field.call(this, config); - } - - TextField.prototype = new Field({ - - autosearch: true, - - filterTemplate: function() { - var grid = this._grid, - $result = this.filterControl = this._createTextBox(); - - if(this.autosearch) { - $result.on("keypress", function(e) { - if(e.which === 13) { - grid.search(); - e.preventDefault(); - } - }); - } - - return $result; - }, - - insertTemplate: function() { - var $result = this.insertControl = this._createTextBox(); - return $result; - }, - - editTemplate: function(value) { - var $result = this.editControl = this._createTextBox(); - $result.val(value); - return $result; - }, - - filterValue: function() { - return this.filterControl.val(); - }, - - insertValue: function() { - return this.insertControl.val(); - }, - - editValue: function() { - return this.editControl.val(); - }, - - _createTextBox: function() { - return $("").attr("type", "text"); - } - }); - - jsGrid.fields.text = jsGrid.TextField = TextField; - -}(jsGrid, jQuery)); -(function(jsGrid, $, undefined) { - - var TextField = jsGrid.TextField; - - function NumberField(config) { - TextField.call(this, config); - } - - NumberField.prototype = new TextField({ - - sorter: "number", - align: "right", - - filterValue: function() { - return parseInt(this.filterControl.val() || 0, 10); - }, - - insertValue: function() { - return parseInt(this.insertControl.val() || 0, 10); - }, - - editValue: function() { - return parseInt(this.editControl.val() || 0, 10); - }, - - _createTextBox: function() { - return $("").attr("type", "number"); - } - }); - - jsGrid.fields.number = jsGrid.NumberField = NumberField; - -}(jsGrid, jQuery)); -(function(jsGrid, $, undefined) { - - var TextField = jsGrid.TextField; - - function TextAreaField(config) { - TextField.call(this, config); - } - - TextAreaField.prototype = new TextField({ - - insertTemplate: function() { - var $result = this.insertControl = this._createTextArea(); - return $result; - }, - - editTemplate: function(value) { - var $result = this.editControl = this._createTextArea(); - $result.val(value); - return $result; - }, - - _createTextArea: function() { - return $("