Initial commit

This commit is contained in:
2018-08-08 21:31:17 +08:00
commit 56434da37c
46 changed files with 9558 additions and 0 deletions

0
admin/.gitignore vendored Normal file
View File

169
admin/custom.html Normal file
View File

@@ -0,0 +1,169 @@
<script type="text/x-yunkong2" data-template-name="sql">
<div class="form-row">
<table style="font-size: 12px">
<tr>
<td class="translate">enabled</td>
<td><input type="checkbox" data-field="enabled" data-default="false"></td>
<!-- this field is mandatory, just to find out if to include this settings or not -->
<td style="width: 40px">&nbsp;</td>
<td class="translate">log changes only</td>
<td><input type="checkbox" data-field="changesOnly" data-default="true"></td>
<td class="translate">De-bounce interval(ms)</td>
<td><input type="number" data-field="debounce" min="500" max="86400000" data-default="10000"></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td class="translate">log changes interval(s)</td>
<td><input type="number" data-field="changesRelogInterval" min="0" max="86400000" data-default="0"></td>
<td class="translate">0 = disable</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td class="translate">log changes minimal delta</td>
<td><input type="number" step="any" data-field="changesMinDelta" min="0" max="86400000" data-default="0"></td>
<td class="translate">0 = disable delta check</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td class="translate">Store as</td>
<td>
<select data-field="storageType" data-default="">
<option value="" class="translate">Automatic</option>
<option value="String" class="translate">String</option>
<option value="Number" class="translate">Number</option>
<option value="Boolean" class="translate">Boolean</option>
</select>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td class="translate">Storage retention</td>
<td>
<select data-field="retention" data-default="31536000">
<option value="0" class="translate">keep forever</option>
<option value="63072000" class="translate">2 years</option>
<option value="31536000" class="translate">1 year</option>
<option value="15811200" class="translate">6 months</option>
<option value="7948800" class="translate">3 months</option>
<option value="2678400" class="translate">1 months</option>
<option value="1209600" class="translate">2 weeks</option>
<option value="604800" class="translate">1 week</option>
<option value="432000" class="translate">5 days</option>
<option value="259200" class="translate">3 days</option>
<option value="86400" class="translate">1 day</option>
</select>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td class="translate">aliasId</td>
<td colspan=2><input type="value" data-field="aliasId" data-default="" maxlength="30" style="width: 100px"></td>
<td></td>
<td colspan=3 class="translate">Alias Info</td>
<td></td>
</tr>
</table>
</div>
</script>
<!-- translations -->
<script type="text/javascript">
systemDictionary = $.extend(systemDictionary, {
"enabled": {"en": "enabled", "de": "Aktiviert", "ru": "активно"},
"De-bounce interval(ms)": {"en": "De-bounce interval(ms)", "de": "Entprellzeit(ms)", "ru": "Минимальный интервал(ms)"},
"log changes interval(s)": {
"en": "Log unchanged values any(s)",
"de": "Gleiche Werte aufzeichnen(s)",
"ru": "Запись неизменённых значений каждые (сек)"
},
"log changes minimal delta": {
"en": "Minimum difference from last value to log",
"de": "Minimale Abweichung vom letzten Wert für Aufzeichnung",
"ru": "Минимальная разница с последним записанным значением"
},
"0 = disable delta check": {
"en": "0 = disable delta check",
"de": "0 = Abweichungsprüfung deaktivieren",
"ru": "0 = не проверять минимальное изменение"
},
"log changes only": {"en": "log by changes", "de": "Bei Änderungen aufzeichnen", "ru": "При изменениях"},
"0 = disable": {
"en": "0 = disable",
"de": "0 = Deaktivieren",
"ru": "0 = не активно"
},
"maximum datapoint count in RAM": {
"en": "maximum datapoint count in RAM",
"de": "maximale Anzahl Datenpunkte in RAM",
"ru": "макс. кол-во значений в RAM памяти"
},
"Store as": {"en": "Store as", "de": "Speichern als", "ru": "Store as"},
"Automatic": {"en": "Automatic", "de": "Automatisch", "ru": "Automatic"},
"String": {"en": "String", "de": "String", "ru": "String"},
"Number": {"en": "Number", "de": "Number", "ru": "Number"},
"Boolean": {"en": "Boolean", "de": "Boolean", "ru": "Boolean"},
"Storage retention": {"en": "Storage retention", "de": "Storage Vorhaltezeit", "ru": "Сохранять в базе файле"},
"keep forever": {"en": "keep forever", "de": "keine automatische Löschung", "ru": "хранить вечно"},
"2 years": {"en": "2 years", "de": "2 Jahre", "ru": "2 года"},
"1 year": {"en": "1 year", "de": "1 Jahr", "ru": "1 год"},
"6 months": {"en": "6 months", "de": "6 Monate", "ru": "6 месяцев"},
"3 months": {"en": "3 months", "de": "3 Monate", "ru": "3 месяца"},
"1 months": {"en": "1 months", "de": "1 Monat", "ru": "1 месяц"},
"2 weeks": {"en": "2 weeks", "de": "2 Wochen", "ru": "2 недели"},
"1 week": {"en": "1 week", "de": "1 Woche", "ru": "1 неделя"},
"5 days": {"en": "5 days", "de": "5 Tage", "ru": "5 дней"},
"3 days": {"en": "3 days", "de": "3 Tage", "ru": "3 дня"},
"1 day": {"en": "1 day", "de": "1 Tag", "ru": "1 день"},
"aliasId": {
"en": "Alias-ID"
},
"Alias Info": {
"en": "if not empty data will be logged as this ID in data files"
}
}
);
// There are two ways how to predefine default settings:
// - with attribute "data-default" (content independent)
// - with function in global variable "defaults". Function name is equal with adapter name.
// as input function receives object with all information concerning it
if (typeof defaults !== 'undefined') {
defaults.sql = function (obj, instanceObj) {
if (obj && obj.common && obj.common.type !== 'number') {
return {
enabled: false,
changesOnly: false,
debounce: 0,
retention: instanceObj.native.retention,
changesRelogInterval: instanceObj.native.changesRelogInterval,
changesMinDelta: 0,
storageType: '',
aliasId: ''
};
}
return {
enabled: false,
changesOnly: true,
debounce: instanceObj.native.debounce,
retention: instanceObj.native.retention,
changesRelogInterval: instanceObj.native.changesRelogInterval,
changesMinDelta: instanceObj.native.changesMinDelta,
storageType: '',
aliasId: ''
};
}
}
</script>

151
admin/custom_m.html Normal file
View File

@@ -0,0 +1,151 @@
<script type="text/x-yunkong2" data-template-name="sql">
<div class="row">
<div class="col s4">
<input type="checkbox" data-field="enabled" data-default="false"/>
<!-- this field is mandatory, just to find out if to include this settings or not</span-->
<span class="translate">enabled</span>
</div>
<div class="col s4">
<input type="checkbox" data-field="changesOnly" data-default="true"/>
<span class="translate">log changes only</span>
</div>
<div class="col s4">
<input type="number" data-field="debounce" min="500" max="86400000" data-default="10000" />
<label class="translate">De-bounce interval(ms)</label>
</div>
</div>
<div class="row">
<div class="col s4">
</div>
<div class="col s4">
<input type="number" data-field="changesRelogInterval" min="0" max="86400000" data-default="0" />
<label class="translate">log changes interval(s) (0 = disable)</label>
</div>
<div class="col s4">
<input type="number" data-field="changesMinDelta" min="0" max="86400000" data-default="0" />
<label class="translate">log changes minimal delta (0 = disable delta check)</label>
</div>
</div>
<div class="row">
<div class="col s4">
</div>
<div class="col s4">
<select data-field="storageType" data-default="">
<option value="" class="translate">Automatic</option>
<option value="String" class="translate">String</option>
<option value="Number" class="translate">Number</option>
<option value="Boolean" class="translate">Boolean</option>
</select>
<label class="translate">Store as</label>
</div>
<div class="col s4">
<select data-field="retention" data-default="31536000">
<option value="0" class="translate">keep forever</option>
<option value="63072000" class="translate">2 years</option>
<option value="31536000" class="translate">1 year</option>
<option value="15811200" class="translate">6 months</option>
<option value="7948800" class="translate">3 months</option>
<option value="2678400" class="translate">1 months</option>
<option value="1209600" class="translate">2 weeks</option>
<option value="604800" class="translate">1 week</option>
<option value="432000" class="translate">5 days</option>
<option value="259200" class="translate">3 days</option>
<option value="86400" class="translate">1 day</option>
</select>
<label class="translate">Storage retention</label>
</div>
</div>
<div class="row">
<div class="col s8">
<input class="value" data-field="aliasId" data-default="" type="text" maxlength="255" />
<label class="translate">aliasId</label>
</div>
<div class="col s4">
<label class="translate">Alias Info</label>
</div>
</div>
</script>
<!-- translations -->
<script type="text/javascript">
systemDictionary = $.extend(systemDictionary, {
"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ń"},
"1 months": { "en": "1 months", "de": "1 Monat", "ru": "1 месяц", "pt": "1 mês", "nl": "1 maanden", "fr": "1 mois", "it": "1 mese", "es": "1 mes", "pl": "1 miesiąc"},
"1 week": { "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ń"},
"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 weeks": { "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"},
"2 years": { "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"},
"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"},
"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"},
"5 days": { "en": "5 days", "de": "5 Tage", "ru": "5 дней", "pt": "5 dias", "nl": "5 dagen", "fr": "5 jours", "it": "5 giorni", "es": "5 dias", "pl": "5 dni"},
"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"},
"Store as": { "en": "Store as", "de": "Speichern als", "ru": "Сохранить как", "pt": "Armazenar como", "nl": "Opslaan als", "fr": "Magasin comme", "it": "Conservare come", "es": "Przechowuj jako", "pl": "Przechowuj jako"},
"Automatic": { "en": "Automatic", "de": "Automatisch", "ru": "автоматическая", "pt": "Automático", "nl": "automatisch", "fr": "Automatique", "it": "Automatico", "es": "Automatycznyy", "pl": "Automatyczny"},
"String": { "en": "String", "de": "Zeichenfolge", "ru": "строка", "pt": "Corda", "nl": "Draad", "fr": "Chaîne", "it": "Stringa", "es": "Strunowy", "pl": "Strunowy"},
"Number": { "en": "Number", "de": "Nummer", "ru": "Число", "pt": "Número", "nl": "Aantal", "fr": "Nombre", "it": "Numero", "es": "Numer", "pl": "Numer"},
"Boolean": { "en": "Boolean", "de": "Boolesch", "ru": "логический", "pt": "boleano", "nl": "Boolean", "fr": "Booléen", "it": "booleano", "es": "Booleano", "pl": "Boolean"},
"De-bounce interval(ms)": { "en": "De-bounce interval(ms)", "de": "Entprellzeit(ms)", "ru": "Минимальный интервал(ms)", "pt": "Intervalo de desvio (ms)", "nl": "De-bounce interval (ms)", "fr": "Intervalle de rebond (ms)", "it": "Intervallo di rimbalzo (ms)", "es": "Intervalo de rebote (ms)", "pl": "Interwał odbicia (ms)"},
"Storage retention": { "en": "Storage retention", "de": "Storage Vorhaltezeit", "ru": "Сохранять в файле", "pt": "Retenção de armazenamento", "nl": "Opslag retentie", "fr": "Conservation du stockage", "it": "Conservazione di memoria", "es": "Retención de almacenamiento", "pl": "Przechowywanie danych"},
"enabled": { "en": "enabled", "de": "Aktiviert", "ru": "активно", "pt": "ativado", "nl": "ingeschakeld", "fr": "activée", "it": "abilitato", "es": "habilitado", "pl": "włączony"},
"keep forever": { "en": "keep forever", "de": "keine automatische Löschung", "ru": "хранить вечно", "pt": "mantenha para sempre", "nl": "blijf voor altijd", "fr": "garde pour toujours", "it": "tienilo per sempre", "es": "mantener para siempre", "pl": "zachowaj na zawsze"},
"log changes interval(s) (0 = disable)": { "en": "Log values any(s)<br>(0 = disable)", "de": "Nach Intervall aufzeichnen(s)<br>(0 = Deaktivieren)", "ru": "Запись значений каждые (сек)<br>(0 = не активно)", "pt": "Intervalo (s) de alterações no log (s)<br>(0 = desativado)", "nl": "log wijzigt interval (s)<br>(0 = uitschakelen)", "fr": "log changements intervalle (s)<br>(0 = désactiver)", "it": "log changes interval (s)<br>(0 = disabilita)", "es": "Log valores any (s) <br> (0 = desactivar)", "pl": "Wartości logów any (s) <br> (0 = wyłączone)"},
"log changes minimal delta (0 = disable delta check)": {"en": "Minimum difference from last value to log<br>(0 = disable delta check)", "de": "Minimale Abweichung vom letzten Wert für Aufzeichnung<br>(0 = Abweichungsprüfung deaktivieren)", "ru": "Минимальная разница с последним записанным значением<br>(0 = не проверять минимальное изменение)", "pt": "log altera delta mínimo<br>(0 = desabilita o checkout delta)", "nl": "log veranderingen minimale delta<br>(0 = deltablokkering uitschakelen)", "fr": "log change delta minimal<br>(0 = désactiver le contrôle delta)", "it": "registro cambia delta minimo<br>(0 = disabilita il controllo delta)", "es": "Diferencia mínima entre el último valor y el log <br> (0 = desactivar la verificación delta)", "pl": "Minimalna różnica od ostatniej wartości do log <br> (0 = wyłącz kontrolę delta)"},
"log changes only": { "en": "log changes only", "de": "Änderungen aufzeichnen", "ru": "Только изменения", "pt": "somente mudanças de log", "nl": "alleen logboekwijzigingen", "fr": "modifications du journal uniquement", "it": "registra solo le modifiche", "es": "solo cambios de registro", "pl": "tylko zmiany w dzienniku"},
"maximum datapoint count in RAM": { "en": "maximum datapoint count in RAM", "de": "maximale Anzahl Datenpunkte in RAM", "ru": "макс. кол-во значений в RAM памяти", "pt": "contagem máxima do datapoint na RAM", "nl": "maximum aantal datapunten in RAM", "fr": "nombre de points de données maximum en RAM", "it": "massimo conteggio dei punti di accesso nella RAM", "es": "recuento máximo de datos en RAM", "pl": "maksymalna liczba punktów w pamięci RAM"},
"aliasId": {
"en": "Alias-ID",
"de": "Alias-ID",
"ru": "Псевдоним ИД",
"pt": "Alias-ID",
"nl": "Alias-ID",
"fr": "Alias-ID",
"it": "Alias-ID",
"es": "Alias-ID",
"pl": "Alias-ID"
},
"Alias Info": {
"en": "if Alias-ID is set, the data will be logged as this ID in database",
"de": "Wenn Alias-ID gesetzt ist, werden die Daten als diese ID in der Datenbank protokolliert",
"ru": "если установлен Alias-ID, данные будут регистрироваться как этот идентификатор в базе данных",
"pt": "Se o Alias-ID for definido, os dados serão registrados como esse ID no banco de dados",
"nl": "als Alias-ID is ingesteld, worden de gegevens als deze ID geregistreerd in de database",
"fr": "Si Alias-ID est défini, les données seront enregistrées comme cet ID dans la base de données",
"it": "se Alias-ID è impostato, i dati verranno registrati come questo ID nel database",
"es": "si se establece Alias-ID, los datos se registrarán como esta ID en la base de datos",
"pl": "jeśli ustawiony jest Alias-ID, dane będą rejestrowane jako identyfikator w bazie danych"
}
});
// There are two ways how to predefine default settings:
// - with attribute "data-default" (content independent)
// - with function in global variable "defaults". Function name is equal with adapter name.
// as input function receives object with all information concerning it
if (typeof defaults !== 'undefined') {
defaults.sql = function (obj, instanceObj) {
if (obj && obj.common && obj.common.type !== 'number') {
return {
enabled: false,
changesOnly: false,
debounce: 0,
maxLength: 10,
retention: instanceObj.native.retention,
changesRelogInterval: instanceObj.native.changesRelogInterval,
changesMinDelta: 0,
storageType: '',
aliasId: ''
};
} else {
return {
enabled: false,
changesOnly: true,
debounce: instanceObj.native.debounce,
maxLength: instanceObj.native.maxLength,
retention: instanceObj.native.retention,
changesRelogInterval: instanceObj.native.changesRelogInterval,
changesMinDelta: instanceObj.native.changesMinDelta,
storageType: '',
aliasId: ''
};
}
}
}
</script>

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "History-Adapter Einstellungen",
"note": "History Einstellungen mussen für jeden State einzeln gemacht werden auf der Lasche \"States\" und nur wenn adapter aktiv ist",
"Default settings:": "Default Einstellungen für Zuständen",
"Start or enable adapter first": "Adapter muss zuerst aktiviert werden",
"debounce": "Entprellzeit(ms)",
"log changes interval(s)": "Gleiche Werte aufzeichnen(s)",
"log changes minimal delta": "Minimale Abweichung vom letzten Wert für Aufzeichnung",
"0 = disable delta check": "0 = Abweichungsprüfung deaktivieren",
"0 = disable": "0 = Deaktivieren",
"DB settings": "DB Einstellungen",
"Default settings": "Default Einstellungen",
"retention": "Storage Vorhaltezeit",
"keep forever": "keine automatische Löschung",
"2 years": "2 Jahre",
"1 year": "1 Jahr",
"6 months": "6 Monate",
"3 months": "3 Monate",
"1 months": "1 Monat",
"2 weeks": "2 Wochen",
"1 week": "1 Woche",
"5 days": "5 Tage",
"3 days": "3 Tage",
"1 day": "1 Tag",
"SQL history adapter settings": "SQL history adapter Einstellungen",
"DB settings:": "DB Einstellungen",
"DB Type": "DB Typ",
"Host": "Host",
"DB Name": "Datenbankname",
"Port": "Port",
"User": "Login",
"Password": "Kennwort",
"Password confirm": "Kennwort-Wiederholung",
"File for sqlite:": "Datei für sqlite",
"Encrypt:": "Verschlüsseln",
"Test connection": "Verbindung testen",
"requestInterval": "Intervall zwischen DB Anfragen(ms)",
"Round real to:": "Aufrunden auf: ",
"Password confirmation is not equal with password!": "Kennwort-Bestätigung ist nicht gleich mit dem Kennwort!",
"Input path with the file name.": "Z.B. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Sind Sie sicher? ALLE Daten werden geöscht.",
"Reset DB": "Alle Daten in DB löschen",
"Ok": "Ok",
"Allow parallel requests:": "Parallelanfragen erlauben",
"Write NULL values on start/stop boundaries:": "Schreibe NULL-Werte an Start- / Stop-Grenzen:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "History adapter settings",
"note": "History settings must be done for every state individually on the tab \"States\" and only if adapter is active",
"Default settings:": "Default settings",
"Start or enable adapter first": "Start or enable adapter first",
"debounce": "De-bounce interval(ms)",
"log changes interval(s)": "Log unchanged values any(s)",
"log changes minimal delta": "Minimum difference from last value to log",
"0 = disable delta check": "0 = disable delta check",
"0 = disable": "0 = disable",
"DB settings": "DB settings",
"Default settings": "Default settings",
"retention": "Storage retention",
"keep forever": "keep forever",
"2 years": "2 years",
"1 year": "1 year",
"6 months": "6 months",
"3 months": "3 months",
"1 months": "1 months",
"2 weeks": "2 weeks",
"1 week": "1 week",
"5 days": "5 days",
"3 days": "3 days",
"1 day": "1 day",
"SQL history adapter settings": "SQL history adapter settings",
"DB settings:": "DB settings",
"DB Type": "DB Type",
"Host": "Host",
"DB Name": "Database name",
"Port": "Port",
"User": "User",
"Password": "Password",
"Password confirm": "Password confirm",
"File for sqlite:": "File for sqlite",
"Encrypt:": "Encrypt",
"Test connection": "Test connection",
"requestInterval": "Pause between requests(ms)",
"Round real to:": "Round real to",
"Password confirmation is not equal with password!": "Password confirmation is not equal with password!",
"Input path with the file name.": "E.g. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Are you sure? All data will be dropped.",
"Reset DB": "Reset DB",
"Ok": "Ok",
"Allow parallel requests:": "Allow parallel requests",
"Write NULL values on start/stop boundaries:": "Write NULL values on start/stop boundaries:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Configuración del adaptador de historial",
"note": "La configuración del historial se debe realizar para cada estado individualmente en la pestaña \"Estados\" y solo si el adaptador está activo",
"Default settings:": "Configuración por defecto",
"Start or enable adapter first": "Comience o habilite el adaptador primero",
"debounce": "Intervalo de rebote (ms)",
"log changes interval(s)": "Registre los valores sin modificar cualquier (s)",
"log changes minimal delta": "Diferencia mínima desde el último valor para registrar",
"0 = disable delta check": "0 = deshabilitar la verificación delta",
"0 = disable": "0 = desactivar",
"DB settings": "Configuración de DB",
"Default settings": "Configuración por defecto",
"retention": "Retención de almacenamiento",
"keep forever": "mantener para siempre",
"2 years": "2 años",
"1 year": "1 año",
"6 months": "6 meses",
"3 months": "3 meses",
"1 months": "1 mes",
"2 weeks": "2 semanas",
"1 week": "1 semana",
"5 days": "5 dias",
"3 days": "3 días",
"1 day": "1 día",
"SQL history adapter settings": "Configuración del adaptador de historial SQL",
"DB settings:": "Configuración de DB",
"DB Type": "Tipo de DB",
"Host": "Anfitrión",
"DB Name": "Nombre de la base de datos",
"Port": "Puerto",
"User": "Usuario",
"Password": "Contraseña",
"Password confirm": "Contraseña confirmada",
"File for sqlite:": "Archivo para sqlite",
"Encrypt:": "Encriptar",
"Test connection": "Conexión de prueba",
"requestInterval": "Pausa entre solicitudes (ms)",
"Round real to:": "Redondo real para",
"Password confirmation is not equal with password!": "La confirmación de la contraseña no es igual a la contraseña!",
"Input path with the file name.": "P.ej. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "¿Estás seguro? Todos los datos serán eliminados.",
"Reset DB": "Restablecer DB",
"Ok": "De acuerdo",
"Allow parallel requests:": "Permitir solicitudes paralelas",
"Write NULL values on start/stop boundaries:": "Escribe valores NULL en los límites de inicio / finalización:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Paramètres de l'adaptateur d'historique",
"note": "Les paramètres d'historique doivent être définis pour chaque état individuellement dans l'onglet \"Etats\" et uniquement si l'adaptateur est actif",
"Default settings:": "Paramètres par défaut",
"Start or enable adapter first": "Démarrer ou activer l'adaptateur en premier",
"debounce": "Intervalle de rebond (ms)",
"log changes interval(s)": "Consigner les valeurs inchangées any (s)",
"log changes minimal delta": "Différence minimale de la dernière valeur à la notation",
"0 = disable delta check": "0 = désactiver le contrôle delta",
"0 = disable": "0 = désactiver",
"DB settings": "Paramètres DB",
"Default settings": "Paramètres par défaut",
"retention": "Rétention de stockage",
"keep forever": "garde pour toujours",
"2 years": "2 ans",
"1 year": "1 an",
"6 months": "6 mois",
"3 months": "3 mois",
"1 months": "1 mois",
"2 weeks": "2 semaines",
"1 week": "1 semaine",
"5 days": "5 jours",
"3 days": "3 jours",
"1 day": "Un jour",
"SQL history adapter settings": "Paramètres de l'adaptateur d'historique SQL",
"DB settings:": "Paramètres de base de données",
"DB Type": "Type de DB",
"Host": "Hôte",
"DB Name": "Nom de la base de données",
"Port": "Port",
"User": "Utilisateur",
"Password": "Mot de passe",
"Password confirm": "Confirmer le mot de passe",
"File for sqlite:": "Fichier pour sqlite",
"Encrypt:": "Crypter",
"Test connection": "Test de connexion",
"requestInterval": "Pause entre les demandes (ms)",
"Round real to:": "Rond réel à",
"Password confirmation is not equal with password!": "La confirmation du mot de passe n'est pas égale au mot de passe!",
"Input path with the file name.": "Par exemple. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Êtes-vous sûr? Toutes les données seront supprimées.",
"Reset DB": "Reset DB",
"Ok": "D'accord",
"Allow parallel requests:": "Autoriser les demandes parallèles",
"Write NULL values on start/stop boundaries:": "Écrire des valeurs NULL sur les limites de démarrage / arrêt:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Impostazioni della scheda Cronologia",
"note": "Le impostazioni della cronologia devono essere eseguite singolarmente per ogni stato nella scheda \"Stati\" e solo se l'adattatore è attivo",
"Default settings:": "Impostazioni predefinite",
"Start or enable adapter first": "Inizia o abilita prima l'adattatore",
"debounce": "Intervallo di rimbalzo (ms)",
"log changes interval(s)": "Registra valori invariati nessuno (i)",
"log changes minimal delta": "Differenza minima dall'ultimo valore da registrare",
"0 = disable delta check": "0 = disabilita il controllo delta",
"0 = disable": "0 = disabilita",
"DB settings": "Impostazioni DB",
"Default settings": "Impostazioni predefinite",
"retention": "Conservazione dello spazio",
"keep forever": "tienilo per sempre",
"2 years": "2 anni",
"1 year": "1 anno",
"6 months": "6 mesi",
"3 months": "3 mesi",
"1 months": "1 mese",
"2 weeks": "2 settimane",
"1 week": "1 settimana",
"5 days": "5 giorni",
"3 days": "3 giorni",
"1 day": "1 giorno",
"SQL history adapter settings": "Impostazioni della scheda cronologia SQL",
"DB settings:": "Impostazioni DB",
"DB Type": "Tipo di DB",
"Host": "Ospite",
"DB Name": "Nome del database",
"Port": "Porta",
"User": "Utente",
"Password": "Parola d'ordine",
"Password confirm": "Conferma la password",
"File for sqlite:": "File per sqlite",
"Encrypt:": "Encrypt",
"Test connection": "Connessione di prova",
"requestInterval": "Pausa tra le richieste (ms)",
"Round real to:": "Round reale a",
"Password confirmation is not equal with password!": "La conferma della password non è uguale alla password!",
"Input path with the file name.": "Per esempio. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Sei sicuro? Tutti i dati verranno eliminati.",
"Reset DB": "Ripristina DB",
"Ok": "Ok",
"Allow parallel requests:": "Consenti richieste parallele",
"Write NULL values on start/stop boundaries:": "Scrivi valori NULL sui limiti di avvio / arresto:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Geschiedenis adapter instellingen",
"note": "Geschiedenisinstellingen moeten voor elke afzonderlijke status worden uitgevoerd op het tabblad \"Staten\" en alleen als de adapter actief is",
"Default settings:": "Standaard instellingen",
"Start or enable adapter first": "Start of schakel eerst de adapter in",
"debounce": "De-bounce interval (ms)",
"log changes interval(s)": "Log onveranderde waarden voor elke",
"log changes minimal delta": "Minimaal verschil van laatste waarde tot log",
"0 = disable delta check": "0 = delta-controle uitschakelen",
"0 = disable": "0 = uitschakelen",
"DB settings": "DB-instellingen",
"Default settings": "Standaard instellingen",
"retention": "Bewaring van opslag",
"keep forever": "blijf voor altijd",
"2 years": "2 jaar",
"1 year": "1 jaar",
"6 months": "6 maanden",
"3 months": "3 maanden",
"1 months": "1 maanden",
"2 weeks": "2 weken",
"1 week": "1 week",
"5 days": "5 dagen",
"3 days": "3 dagen",
"1 day": "1 dag",
"SQL history adapter settings": "Instellingen voor SQL-geschiedenisadapter",
"DB settings:": "DB-instellingen",
"DB Type": "DB Type",
"Host": "Host",
"DB Name": "Database naam",
"Port": "Haven",
"User": "Gebruiker",
"Password": "Wachtwoord",
"Password confirm": "Wachtwoord bevestigen",
"File for sqlite:": "Bestand voor sqlite",
"Encrypt:": "versleutelen",
"Test connection": "Test verbinding",
"requestInterval": "Pauzeren tussen verzoeken (ms)",
"Round real to:": "Rond echt naar",
"Password confirmation is not equal with password!": "Wachtwoordbevestiging is niet gelijk aan wachtwoord!",
"Input path with the file name.": "Bijv. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Weet je het zeker? Alle gegevens worden verwijderd.",
"Reset DB": "Stel DB opnieuw in",
"Ok": "OK",
"Allow parallel requests:": "Sta parallelle verzoeken toe",
"Write NULL values on start/stop boundaries:": "Schrijf NULL-waarden op start / stop-grenzen:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Ustawienia adaptera historii",
"note": "Ustawienia historii muszą być wykonane dla każdego stanu indywidualnie na karcie \"Stany\" i tylko wtedy, gdy adapter jest aktywny",
"Default settings:": "Ustawienia domyślne",
"Start or enable adapter first": "Najpierw włącz lub włącz adapter",
"debounce": "Interwał odbicia (ms)",
"log changes interval(s)": "Zaloguj niezmienione wartości dowolne (s)",
"log changes minimal delta": "Minimalna różnica od ostatniej wartości do dziennika",
"0 = disable delta check": "0 = wyłącz kontrolę delta",
"0 = disable": "0 = wyłącz",
"DB settings": "Ustawienia DB",
"Default settings": "Ustawienia domyślne",
"retention": "Zatrzymanie przechowywania",
"keep forever": "zachowaj na zawsze",
"2 years": "2 lata",
"1 year": "1 rok",
"6 months": "6 miesięcy",
"3 months": "3 miesiące",
"1 months": "1 miesiąc",
"2 weeks": "2 tygodnie",
"1 week": "1 tydzień",
"5 days": "5 dni",
"3 days": "3 dni",
"1 day": "1 dzień",
"SQL history adapter settings": "Ustawienia adaptera historii SQL",
"DB settings:": "Ustawienia DB",
"DB Type": "Typ DB",
"Host": "Gospodarz",
"DB Name": "Nazwa bazy danych",
"Port": "Port",
"User": "Użytkownik",
"Password": "Hasło",
"Password confirm": "Potwierdź hasło",
"File for sqlite:": "Plik dla sqlite",
"Encrypt:": "Szyfruj",
"Test connection": "Testuj połączenie",
"requestInterval": "Wstrzymaj między żądaniami (ms)",
"Round real to:": "Runda prawdziwa do",
"Password confirmation is not equal with password!": "Potwierdzenie hasła nie jest równe hasłu!",
"Input path with the file name.": "Na przykład. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Jesteś pewny? Wszystkie dane zostaną usunięte.",
"Reset DB": "Zresetuj DB",
"Ok": "Ok",
"Allow parallel requests:": "Pozwól na równoległe żądania",
"Write NULL values on start/stop boundaries:": "Napisz wartości NULL na granicach start / stop:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Configurações do adaptador de histórico",
"note": "As configurações de histórico devem ser feitas para cada estado individual na guia \"Estados\" e somente se o adaptador estiver ativo",
"Default settings:": "Configurações padrão",
"Start or enable adapter first": "Inicie ou ative o adaptador primeiro",
"debounce": "Intervalo de desvio (ms)",
"log changes interval(s)": "Registre valores inalterados qualquer (s)",
"log changes minimal delta": "Diferença mínima do último valor ao log",
"0 = disable delta check": "0 = desativar o cheque delta",
"0 = disable": "0 = desativar",
"DB settings": "Configurações de banco de dados",
"Default settings": "Configurações padrão",
"retention": "Retenção de armazenamento",
"keep forever": "mantenha para sempre",
"2 years": "2 anos",
"1 year": "1 ano",
"6 months": "6 meses",
"3 months": "3 meses",
"1 months": "1 mês",
"2 weeks": "2 semanas",
"1 week": "1 semana",
"5 days": "5 dias",
"3 days": "3 dias",
"1 day": "1 dia",
"SQL history adapter settings": "Configurações do adaptador de histórico SQL",
"DB settings:": "Configurações de banco de dados",
"DB Type": "DB Type",
"Host": "Hospedeiro",
"DB Name": "Nome do banco de dados",
"Port": "Porta",
"User": "Do utilizador",
"Password": "Senha",
"Password confirm": "Confirmação de senha",
"File for sqlite:": "Arquivo para sqlite",
"Encrypt:": "Criptografar",
"Test connection": "Conexão de teste",
"requestInterval": "Pausa entre solicitações (ms)",
"Round real to:": "Round real to",
"Password confirmation is not equal with password!": "A confirmação da senha não é igual com a senha!",
"Input path with the file name.": "Por exemplo. /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Você tem certeza? Todos os dados serão descartados.",
"Reset DB": "Redefinir DB",
"Ok": "Está bem",
"Allow parallel requests:": "Permitir pedidos paralelos",
"Write NULL values on start/stop boundaries:": "Escreva valores NULL nos limites de início / parada:"
}

View File

@@ -0,0 +1,46 @@
{
"History adapter settings": "Настройки профайлера",
"note": "Настройки профайлера делаются для каждого состояния отдельно в закладке \"Состояния\" и только, когда драйвер активирован",
"Default settings:": "Настройки по умолчанию для состояний",
"Start or enable adapter first": "Сначала надо активировать драйвер SQL",
"debounce": "Минимальный интервал(ms)",
"log changes interval(s)": "Запись неизменённых значений каждые (сек)",
"log changes minimal delta": "Минимальная разница с последним записанным значением",
"0 = disable delta check": "0 = не проверять минимальное изменение",
"0 = disable": "0 = не активно",
"DB settings": "Настройки соединения с DB",
"Default settings": "Настройки по умолчанию",
"retention": "Время хранения в базе",
"keep forever": "хранить вечно",
"2 years": "2 года",
"1 year": "1 год",
"6 months": "6 месяцев",
"3 months": "3 месяца",
"1 months": "1 месяц",
"2 weeks": "2 недели",
"1 week": "1 неделя",
"5 days": "5 дней",
"3 days": "3 дня",
"1 day": "1 день",
"SQL history adapter settings": "Настройки профайлера в SQL базу данных",
"DB settings:": "DB settings",
"DB Type": "DB Type",
"Host": "Хост",
"DB Name": "Имя базы данных",
"Port": "Порт",
"User": "Пользователь",
"Password": "Пароль",
"Password confirm": "Подтверждение пароля",
"File for sqlite:": "Файл для sqlite",
"Encrypt:": "Шифрование",
"Test connection": "Проверить соединение",
"requestInterval": "Пауза между запросами к базе",
"Round real to:": "Округлять до",
"Password confirmation is not equal with password!": "Подтверждение пароля не совпадает с паролем!",
"Input path with the file name.": "Например /opt/sqlite/data.db",
"Are you sure? All data will be dropped.": "Вы уверенны? Все данные в базе будут удалены.",
"Reset DB": "Сбросить DB",
"Ok": "Ok",
"Allow parallel requests:": "Разрешить параллельные запросы к базе",
"Write NULL values on start/stop boundaries:": "Запись значений NULL на границах начала / остановки:"
}

276
admin/index.html Normal file
View File

@@ -0,0 +1,276 @@
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!-- these 4 files always have to be included -->
<link rel="stylesheet" type="text/css" href="../../lib/css/themes/jquery-ui/redmond/jquery-ui.min.css"/>
<script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
<script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script>
<!-- these three files have to be always included -->
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
<script type="text/javascript" src="../../js/translate.js"></script>
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
<script type="text/javascript" src="words.js"></script>
<!-- you have to define 2 functions in the global scope: -->
<script type="text/javascript">
var convertComma = null;
function setValue(id, value, onChange) {
var $value = $('#' + id + '.value');
if ($value.attr('type') === 'checkbox') {
$value.prop('checked', value).change(function () {
onChange();
});
} else {
$value.val(value).change(function() {
onChange();
}).keyup(function() {
// Check that only numbers entered
if ($(this).hasClass('number')) {
var val = $(this).val();
if (val) {
var newVal = '';
for (var i = 0; i < val.length; i++) {
if ((val[i] >= '0' && val[i] <= '9') || val[i] === '-' || val[i] === '+' || val[i] === '.' || val[i] === ',') {
if (val[i] === '.' && convertComma === true) val[i] = ',';
if (val[i] === ',' && convertComma === false) val[i] = '.';
newVal += val[i];
}
}
if (val != newVal) {
$(this).val(newVal);
}
}
}
$(this).trigger('change');
});
}
}
function load(settings, onChange) {
$('#tabs').tabs();
// works only with newest admin adapter
if (typeof systemConfig !== 'undefined') {
convertComma = systemConfig.common.isFloatComma;
}
if (settings.writeNulls === undefined) settings.writeNulls = true;
for (var key in settings) {
if (settings.hasOwnProperty(key)) {
setValue(key, settings[key], onChange);
}
}
$('#passwordConfirm').val(settings.password);
$('#test').button().click(function () {
getIsAdapterAlive(function (isAlive) {
if (!isAlive) {
showMessage(_('Start or enable adapter first'));
} else {
$('#test').button('option', 'disabled', true);
sendTo(null, 'test', {
config: {
dbtype: $('#dbtype').val(),
port: $('#port').val(),
host: $('#host').val(),
user: $('#user').val(),
fileName: $('#fileName').val(),
password: $('#password').val()
}
}, function (response) {
$('#test').button('option', 'disabled', false);
showMessage(response.error || 'OK');
});
}
});
});
$('#reset').button().click(function () {
getIsAdapterAlive(function (isAlive) {
if (!isAlive) {
showMessage(_('Start or enable adapter first'));
} else {
if (confirm(_('Are you sure? All data will be dropped.'))) {
$('#reset').button('option', 'disabled', true);
sendTo(null, 'destroy', null, function (response) {
$('#reset').button('option', 'disabled', false);
showMessage(response.error || _('Adapter will be restarted'));
});
}
}
});
});
$('#dbtype').change(function () {
if ($(this).val() === 'sqlite') {
$('.baby-sql').show();
$('.real-sql').hide();
$('.ms-sql').hide();
} else if ($(this).val() === 'mssql') {
$('.baby-sql').hide();
$('.real-sql').show();
$('.ms-sql').show();
} else {
$('.baby-sql').hide();
$('.ms-sql').hide();
$('.real-sql').show();
}
}).trigger('change');
onChange(false);
}
function save(callback) {
var settings = {};
$('.value').each(function () {
var $this = $(this);
var id = $this.attr('id');
if ($this.attr('type') === 'checkbox') {
settings[id] = $this.prop('checked');
} else {
settings[id] = $this.val();
}
});
if (($('#dbtype').val() !== 'sqlite') && ($('#passwordConfirm').val() !== $('#password').val())) {
showMessage(_('Password confirmation is not equal with password!'));
return;
}
callback(settings);
}
</script>
</head>
<body>
<div id="adapter-container">
<table><tr>
<td><img src="sql.png"></td>
<td style="padding-top: 20px;padding-left: 10px"><h3 class="translate">SQL history adapter settings</h3></td>
</tr></table>
<div id="tabs">
<ul>
<li><a href="#tabs-1" class="translate">DB settings</a></li>
<li><a href="#tabs-2" class="translate">Default settings</a></li>
</ul>
<div id="tabs-1">
<table>
<tr>
<td><label class="translate" for="dbtype">DB Type</label></td>
<td><select id="dbtype" class="value">
<option value="mysql">MySQL</option>
<option value="postgresql">PostgreSQL</option>
<option value="sqlite">SQLite3</option>
<option value="mssql">MS-SQL</option>
</select></td>
<td></td>
</tr>
<tr class="real-sql">
<td><label class="translate" for="host">Host</label></td>
<td><input id="host" class="value"/></td>
<td></td>
</tr>
<tr class="real-sql">
<td><label class="translate" for="port">Port</label></td>
<td><input id="port" class="value"/></td>
<td></td>
</tr>
<tr class="ms-sql real-sql">
<td><label class="translate" for="dbname">DB Name</label></td>
<td><input id="dbname" class="value"/></td>
<td></td>
</tr>
<tr class="real-sql">
<td><label class="translate" for="user">User</label></td>
<td><input id="user" class="value"/></td>
<td></td>
</tr>
<tr class="real-sql">
<td><label class="translate" for="password">Password</label></td>
<td><input id="password" type="password" class="value"/></td>
<td></td>
</tr>
<tr class="real-sql">
<td><label class="translate" for="passwordConfirm">Password confirm</label></td>
<td><input id="passwordConfirm" type="password"/></td>
<td></td>
</tr>
<tr class="baby-sql">
<td><label class="translate" for="fileName">File for sqlite:</label></td>
<td><input id="fileName" class="value"/></td>
<td class="translate">Input path with the file name.</td>
</tr>
<tr class="baby-sql">
<td><label class="translate" for="requestInterval">requestInterval</label></td>
<td><input id="requestInterval" class="value"/></td>
<td></td>
</tr>
<tr class="ms-sql real-sql">
<td><label class="translate" for="encrypt">Encrypt:</label></td>
<td><input id="encrypt" type="checkbox" class="value"/></td>
<td></td>
</tr>
<tr class="ms-sql real-sql">
<td><label class="translate" for="round">Round real to:</label></td>
<td><input id="round" class="value"/></td>
<td></td>
</tr>
<tr class="ms-sql real-sql">
<td><label class="translate" for="multiRequests">Allow parallel requests:</label></td>
<td><input id="multiRequests" type="checkbox" class="value"/></td>
<td></td>
</tr>
<tr>
<td><label class="translate" for="writeNulls">Write NULL values on start/stop boundaries:</label></td>
<td><input id="writeNulls" type="checkbox" class="value"/></td>
<td></td>
</tr>
</table>
<br>
<button id="test" class="translate">Test connection</button>
<button id="reset" class="translate">Reset DB</button>
</div>
<div id="tabs-2">
<table>
<tr><td colspan="3"><h4 class="translate">Default settings:</h4></td></tr>
<tr>
<td><label class="translate" for="debounce">debounce</label></td>
<td><input id="debounce" size="5" class="value number"/></td>
<td></td>
</tr>
<tr>
<td><label class="translate" for="changesRelogInterval">log changes interval(s)</label></td>
<td><input id="changesRelogInterval" size="5" class="value number"/></td>
<td class="translate">0 = disable</td>
</tr>
<tr>
<td><label class="translate" for="changesMinDelta">log changes minimal delta</label></td>
<td><input id="changesMinDelta" size="5" class="value number"/></td>
<td class="translate">0 = disable delta check</td>
</tr>
<tr>
<td><label class="translate" for="retention">retention</label></td>
<td><select id="retention" class="value">
<option value="0" class="translate">keep forever</option>
<option value="63072000" class="translate">2 years</option>
<option value="31536000" class="translate">1 year</option>
<option value="15811200" class="translate">6 months</option>
<option value="7948800" class="translate">3 months</option>
<option value="2678400" class="translate">1 months</option>
<option value="1209600" class="translate">2 weeks</option>
<option value="604800" class="translate">1 week</option>
<option value="432000" class="translate">5 days</option>
<option value="259200" class="translate">3 days</option>
<option value="86400" class="translate">1 day</option>
</select></td>
<td></td>
</tr>
</table>
</div>
</div>
</div>
</body>
</html>

296
admin/index_m.html Normal file
View File

@@ -0,0 +1,296 @@
<html>
<head>
<meta charset="UTF-8">
<!-- Materialze style -->
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
<link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
<script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
<script type="text/javascript" src="../../js/translate.js"></script>
<script type="text/javascript" src="../../lib/js/materialize.js"></script>
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
<script type="text/javascript" src="words.js"></script>
<script type="text/javascript">
var convertComma = null;
function setValue(id, value, onChange) {
var $value = $('#' + id + '.value');
if ($value.attr('type') === 'checkbox') {
$value.prop('checked', value).change(function () {
onChange();
});
} else {
$value.val(value).change(function() {
onChange();
}).keyup(function() {
// Check that only numbers entered
if ($(this).hasClass('number')) {
var val = $(this).val();
if (val) {
var newVal = '';
for (var i = 0; i < val.length; i++) {
if ((val[i] >= '0' && val[i] <= '9') || val[i] === '-' || val[i] === '+' || val[i] === '.' || val[i] === ',') {
if (val[i] === '.' && convertComma === true) val[i] = ',';
if (val[i] === ',' && convertComma === false) val[i] = '.';
newVal += val[i];
}
}
if (val != newVal) {
$(this).val(newVal);
}
}
}
$(this).trigger('change');
});
}
}
function load(settings, onChange) {
// works only with newest admin adapter
if (typeof systemConfig !== 'undefined') {
convertComma = systemConfig.common.isFloatComma;
}
if (settings.writeNulls === undefined) settings.writeNulls = true;
for (var key in settings) {
if (settings.hasOwnProperty(key)) {
setValue(key, settings[key], onChange);
}
}
$('#passwordConfirm').val(settings.password);
$('#test').on('click', function () {
getIsAdapterAlive(function (isAlive) {
if (!isAlive) {
showToast(null, _('Start or enable adapter first'));
} else {
$('#test').addClass('disabled');
sendTo(null, 'test', {
config: {
dbtype: $('#dbtype').val(),
port: $('#port').val(),
host: $('#host').val(),
user: $('#user').val(),
fileName: $('#fileName').val(),
password: $('#password').val()
}
}, function (response) {
$('#test').removeClass('disabled');
if (response.error) {
showError(response.error);
} else {
showMessage('OK');
}
});
}
});
});
$('#reset').on('click', function () {
getIsAdapterAlive(function (isAlive) {
if (!isAlive) {
showToast(null, _('Start or enable adapter first'));
} else {
if (confirm(_('Are you sure? All data will be dropped.'))) {
$('#reset').addClass('disabled');
sendTo(null, 'destroy', null, function (response) {
$('#reset').removeClass('disabled');
if (response.error) {
showError(response.error);
} else {
showToast(null, _('Adapter will be restarted'));
}
});
}
}
});
});
$('#dbtype').on('change', function () {
if ($(this).val() === 'sqlite') {
$('.baby-sql').show();
$('.real-sql').hide();
$('.ms-sql').hide();
} else if ($(this).val() === 'mssql') {
$('.baby-sql').hide();
$('.real-sql').show();
$('.ms-sql').show();
} else {
$('.baby-sql').hide();
$('.ms-sql').hide();
$('.real-sql').show();
}
}).trigger('change');
onChange(false);
if (M) M.updateTextFields();
}
function save(callback) {
var settings = {};
$('.value').each(function () {
var $this = $(this);
var id = $this.attr('id');
if ($this.attr('type') === 'checkbox') {
settings[id] = $this.prop('checked');
} else {
settings[id] = $this.val();
}
});
if (($('#dbtype').val() !== 'sqlite') && ($('#passwordConfirm').val() !== $('#password').val())) {
showMessage(_('Password confirmation is not equal with password!'));
return;
}
callback(settings);
}
</script>
<style>
.adapter-container>div {
margin-bottom: 0 !important;
}
.page {
height: calc(100% - 50px) !important;
}
.marg{
margin-top: 3em;
}
</style>
</head>
<body>
<div class="m adapter-container">
<div class="row">
<div class="col s12">
<ul class="tabs">
<li class="tab col s3"><a href="#tab-main" class="translate active">DB settings</a></li>
<li class="tab col s3"><a href="#tab-default" class="translate">Default settings</a></li>
</ul>
</div>
<div id="tab-main" class="col s12 page">
<div class="row">
<div class="col s6">
<img src="sql.png" class="logo">
</div>
</div>
<div class="row">
<div class="input-field col s12 m4">
<select id="dbtype" class="value">
<option value="mysql">MySQL</option>
<option value="postgresql">PostgreSQL</option>
<option value="sqlite">SQLite3</option>
<option value="mssql">MS-SQL</option>
</select>
<label class="translate" for="dbtype">DB Type</label>
</div>
</div>
<div class="row">
<div class="input-field real-sql col s12 m3 l4">
<input id="host" type="text" class="value" />
<label class="translate" for="host">Host</label>
</div>
<div class="input-field real-sql col s12 m3 l4 ">
<input id="port" type="number" min="1" max="65565" class="value" />
<label class="translate" for="port">Port</label>
</div>
<div class="input-field ms-sql real-sql col s12 m6 l4">
<input id="dbname" type="text" class="value" />
<label class="translate" for="dbname">DB Name</label>
</div>
</div>
<div class="row real-sql">
<div class="input-field col s12 m6 l4">
<input id="user" type="text" class="value" />
<label class="translate" for="user">User</label>
</div>
<div class="input-field col s12 m3 l4">
<input id="password" type="password" class="value" />
<label class="translate" for="password">Password</label>
</div>
<div class="input-field col s12 m3 l4">
<input id="passwordConfirm" type="password" />
<label class="translate" for="passwordConfirm">Password confirm</label>
</div>
</div>
<div class="row baby-sql">
<div class="input-field col s12 m6 l4">
<input id="fileName" type="text" class="value" />
<label for="fileName" class="translate">File for sqlite:</label>
<span class="translate">Input path with the file name.</span>
</div>
<div class="input-field col s12 m6 l4">
<input id="requestInterval" type="number" class="value" />
<label class="translate" for="requestInterval">requestInterval</label>
</div>
</div>
<div class="row ms-sql real-sql">
<div class="input-field col s12 m4">
<input id="encrypt" type="checkbox" class="value" />
<label class="translate" for="encrypt">Encrypt:</label>
</div>
<div class="input-field col s12 m4">
<input id="round" type="text" class="value" />
<label class="translate" for="round">Round real to:</label>
</div>
<div class="input-field col s12 m4">
<input id="multiRequests" type="checkbox" class="value" />
<label class="translate" for="multiRequests">Allow parallel requests:</label>
</div>
</div>
<div class="row">
<div class="input-field col s12 m4">
<input id="writeNulls" type="checkbox" class="value" />
<label class="translate" for="writeNulls">Write NULL values on start/stop boundaries:</label>
</div>
</div>
<div class="row">
<div class="col s12">
<a id="test" class="waves-effect waves-light btn"><i class="material-icons left">wifi_tethering</i><span class="translate">Test connection</span></a>
<a id="reset" class="waves-effect waves-light btn"><i class="material-icons left">report</i><span class="translate">Reset DB</span></a>
</div>
</div>
</div>
<div id="tab-default" class="col s12 page">
<div class="row marg">
<div class="input-field col s12 m6 l4">
<input id="debounce" size="5" class="value" type="number" />
<label class="translate" for="debounce">debounce</label>
</div>
<div class="input-field col s12 m6 l4">
<input id="changesRelogInterval" size="5" class="value" type="number" />
<label for="changesRelogInterval" class="translate">log changes interval(s)</label>
(<span class="translate">0 = disable</span>)
</div>
</div>
<div class="row">
<div class="input-field col s12 m6 l4">
<input id="changesMinDelta" type="number" size="5" class="value" />
<label for="changesMinDelta" class="translate">log changes minimal delta</label>
(<span class="translate">0 = disable delta check</span>)
</div>
<div class="input-field col s12 m6 l4">
<select id="retention" class="value">
<option value="0" class="translate">keep forever</option>
<option value="63072000" class="translate">2 years</option>
<option value="31536000" class="translate">1 year</option>
<option value="15811200" class="translate">6 months</option>
<option value="7948800" class="translate">3 months</option>
<option value="2678400" class="translate">1 months</option>
<option value="1209600" class="translate">2 weeks</option>
<option value="604800" class="translate">1 week</option>
<option value="432000" class="translate">5 days</option>
<option value="259200" class="translate">3 days</option>
<option value="86400" class="translate">1 day</option>
</select>
<label class="translate" for="retention">retention</label>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

BIN
admin/sql.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

60
admin/words.js Normal file
View File

@@ -0,0 +1,60 @@
// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n
/*global systemDictionary:true */
'use strict';
systemDictionary = {
"History adapter settings": { "en": "History adapter settings", "de": "History-Adapter Einstellungen", "ru": "Настройки профайлера", "pt": "Configurações do adaptador de histórico", "nl": "Geschiedenis adapter instellingen", "fr": "Paramètres de l'adaptateur d'historique", "it": "Impostazioni della scheda Cronologia", "es": "Configuración del adaptador de historial", "pl": "Ustawienia adaptera historii"},
"note": { "en": "History settings must be done for every state individually on the tab \"States\" and only if adapter is active", "de": "History Einstellungen mussen für jeden State einzeln gemacht werden auf der Lasche \"States\" und nur wenn adapter aktiv ist", "ru": "Настройки профайлера делаются для каждого состояния отдельно в закладке \"Состояния\" и только, когда драйвер активирован", "pt": "As configurações de histórico devem ser feitas para cada estado individual na guia \"Estados\" e somente se o adaptador estiver ativo", "nl": "Geschiedenisinstellingen moeten voor elke afzonderlijke status worden uitgevoerd op het tabblad \"Staten\" en alleen als de adapter actief is", "fr": "Les paramètres d'historique doivent être définis pour chaque état individuellement dans l'onglet \"Etats\" et uniquement si l'adaptateur est actif", "it": "Le impostazioni della cronologia devono essere eseguite singolarmente per ogni stato nella scheda \"Stati\" e solo se l'adattatore è attivo", "es": "La configuración del historial se debe realizar para cada estado individualmente en la pestaña \"Estados\" y solo si el adaptador está activo", "pl": "Ustawienia historii muszą być wykonane dla każdego stanu indywidualnie na karcie \"Stany\" i tylko wtedy, gdy adapter jest aktywny"},
"Default settings:": { "en": "Default settings", "de": "Default Einstellungen für Zuständen", "ru": "Настройки по умолчанию для состояний", "pt": "Configurações padrão", "nl": "Standaard instellingen", "fr": "Paramètres par défaut", "it": "Impostazioni predefinite", "es": "Configuración por defecto", "pl": "Ustawienia domyślne"},
"Start or enable adapter first": { "en": "Start or enable adapter first", "de": "Adapter muss zuerst aktiviert werden", "ru": "Сначала надо активировать драйвер SQL", "pt": "Inicie ou ative o adaptador primeiro", "nl": "Start of schakel eerst de adapter in", "fr": "Démarrer ou activer l'adaptateur en premier", "it": "Inizia o abilita prima l'adattatore", "es": "Comience o habilite el adaptador primero", "pl": "Najpierw włącz lub włącz adapter"},
"debounce": { "en": "De-bounce interval(ms)", "de": "Entprellzeit(ms)", "ru": "Минимальный интервал(ms)", "pt": "Intervalo de desvio (ms)", "nl": "De-bounce interval (ms)", "fr": "Intervalle de rebond (ms)", "it": "Intervallo di rimbalzo (ms)", "es": "Intervalo de rebote (ms)", "pl": "Interwał odbicia (ms)"},
"log changes interval(s)": { "en": "Log unchanged values any(s)", "de": "Gleiche Werte aufzeichnen(s)", "ru": "Запись неизменённых значений каждые (сек)", "pt": "Registre valores inalterados qualquer (s)", "nl": "Log onveranderde waarden voor elke", "fr": "Consigner les valeurs inchangées any (s)", "it": "Registra valori invariati nessuno (i)", "es": "Registre los valores sin modificar cualquier (s)", "pl": "Zaloguj niezmienione wartości dowolne (s)"},
"log changes minimal delta": { "en": "Minimum difference from last value to log", "de": "Minimale Abweichung vom letzten Wert für Aufzeichnung", "ru": "Минимальная разница с последним записанным значением", "pt": "Diferença mínima do último valor ao log", "nl": "Minimaal verschil van laatste waarde tot log", "fr": "Différence minimale de la dernière valeur à la notation", "it": "Differenza minima dall'ultimo valore da registrare", "es": "Diferencia mínima desde el último valor para registrar", "pl": "Minimalna różnica od ostatniej wartości do dziennika"},
"0 = disable delta check": { "en": "0 = disable delta check", "de": "0 = Abweichungsprüfung deaktivieren", "ru": "0 = не проверять минимальное изменение", "pt": "0 = desativar o cheque delta", "nl": "0 = delta-controle uitschakelen", "fr": "0 = désactiver le contrôle delta", "it": "0 = disabilita il controllo delta", "es": "0 = deshabilitar la verificación delta", "pl": "0 = wyłącz kontrolę delta"},
"0 = disable": { "en": "0 = disable", "de": "0 = Deaktivieren", "ru": "0 = не активно", "pt": "0 = desativar", "nl": "0 = uitschakelen", "fr": "0 = désactiver", "it": "0 = disabilita", "es": "0 = desactivar", "pl": "0 = wyłącz"},
"DB settings": { "en": "DB settings", "de": "DB Einstellungen", "ru": "Настройки соединения с DB", "pt": "Configurações de banco de dados", "nl": "DB-instellingen", "fr": "Paramètres DB", "it": "Impostazioni DB", "es": "Configuración de DB", "pl": "Ustawienia DB"},
"Default settings": { "en": "Default settings", "de": "Default Einstellungen", "ru": "Настройки по умолчанию", "pt": "Configurações padrão", "nl": "Standaard instellingen", "fr": "Paramètres par défaut", "it": "Impostazioni predefinite", "es": "Configuración por defecto", "pl": "Ustawienia domyślne"},
"retention": { "en": "Storage retention", "de": "Storage Vorhaltezeit", "ru": "Время хранения в базе", "pt": "Retenção de armazenamento", "nl": "Bewaring van opslag", "fr": "Rétention de stockage", "it": "Conservazione dello spazio", "es": "Retención de almacenamiento", "pl": "Zatrzymanie przechowywania"},
"keep forever": { "en": "keep forever", "de": "keine automatische Löschung", "ru": "хранить вечно", "pt": "mantenha para sempre", "nl": "blijf voor altijd", "fr": "garde pour toujours", "it": "tienilo per sempre", "es": "mantener para siempre", "pl": "zachowaj na zawsze"},
"2 years": { "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"},
"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"},
"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"},
"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"},
"1 months": { "en": "1 months", "de": "1 Monat", "ru": "1 месяц", "pt": "1 mês", "nl": "1 maanden", "fr": "1 mois", "it": "1 mese", "es": "1 mes", "pl": "1 miesiąc"},
"2 weeks": { "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"},
"1 week": { "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ń"},
"5 days": { "en": "5 days", "de": "5 Tage", "ru": "5 дней", "pt": "5 dias", "nl": "5 dagen", "fr": "5 jours", "it": "5 giorni", "es": "5 dias", "pl": "5 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"},
"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ń"},
"SQL history adapter settings": { "en": "SQL history adapter settings", "de": "SQL history adapter Einstellungen", "ru": "Настройки профайлера в SQL базу данных", "pt": "Configurações do adaptador de histórico SQL", "nl": "Instellingen voor SQL-geschiedenisadapter", "fr": "Paramètres de l'adaptateur d'historique SQL", "it": "Impostazioni della scheda cronologia SQL", "es": "Configuración del adaptador de historial SQL", "pl": "Ustawienia adaptera historii SQL"},
"DB settings:": { "en": "DB settings", "de": "DB Einstellungen", "ru": "DB settings", "pt": "Configurações de banco de dados", "nl": "DB-instellingen", "fr": "Paramètres de base de données", "it": "Impostazioni DB", "es": "Configuración de DB", "pl": "Ustawienia DB"},
"DB Type": { "en": "DB Type", "de": "DB Typ", "ru": "DB Type", "pt": "DB Type", "nl": "DB Type", "fr": "Type de DB", "it": "Tipo di DB", "es": "Tipo de DB", "pl": "Typ DB"},
"Host": { "en": "Host", "de": "Host", "ru": "Хост", "pt": "Hospedeiro", "nl": "Host", "fr": "Hôte", "it": "Ospite", "es": "Anfitrión", "pl": "Gospodarz"},
"DB Name": { "en": "Database name", "de": "Datenbankname", "ru": "Имя базы данных", "pt": "Nome do banco de dados", "nl": "Database naam", "fr": "Nom de la base de données", "it": "Nome del database", "es": "Nombre de la base de datos", "pl": "Nazwa bazy danych"},
"Port": { "en": "Port", "de": "Port", "ru": "Порт", "pt": "Porta", "nl": "Haven", "fr": "Port", "it": "Porta", "es": "Puerto", "pl": "Port"},
"User": { "en": "User", "de": "Login", "ru": "Пользователь", "pt": "Do utilizador", "nl": "Gebruiker", "fr": "Utilisateur", "it": "Utente", "es": "Usuario", "pl": "Użytkownik"},
"Password": { "en": "Password", "de": "Kennwort", "ru": "Пароль", "pt": "Senha", "nl": "Wachtwoord", "fr": "Mot de passe", "it": "Parola d'ordine", "es": "Contraseña", "pl": "Hasło"},
"Password confirm": { "en": "Password confirm", "de": "Kennwort-Wiederholung", "ru": "Подтверждение пароля", "pt": "Confirmação de senha", "nl": "Wachtwoord bevestigen", "fr": "Confirmer le mot de passe", "it": "Conferma la password", "es": "Contraseña confirmada", "pl": "Potwierdź hasło"},
"File for sqlite:": { "en": "File for sqlite", "de": "Datei für sqlite", "ru": "Файл для sqlite", "pt": "Arquivo para sqlite", "nl": "Bestand voor sqlite", "fr": "Fichier pour sqlite", "it": "File per sqlite", "es": "Archivo para sqlite", "pl": "Plik dla sqlite"},
"Encrypt:": { "en": "Encrypt", "de": "Verschlüsseln", "ru": "Шифрование", "pt": "Criptografar", "nl": "versleutelen", "fr": "Crypter", "it": "Encrypt", "es": "Encriptar", "pl": "Szyfruj"},
"Test connection": { "en": "Test connection", "de": "Verbindung testen", "ru": "Проверить соединение", "pt": "Conexão de teste", "nl": "Test verbinding", "fr": "Test de connexion", "it": "Connessione di prova", "es": "Conexión de prueba", "pl": "Testuj połączenie"},
"requestInterval": { "en": "Pause between requests(ms)", "de": "Intervall zwischen DB Anfragen(ms)", "ru": "Пауза между запросами к базе", "pt": "Pausa entre solicitações (ms)", "nl": "Pauzeren tussen verzoeken (ms)", "fr": "Pause entre les demandes (ms)", "it": "Pausa tra le richieste (ms)", "es": "Pausa entre solicitudes (ms)", "pl": "Wstrzymaj między żądaniami (ms)"},
"Round real to:": { "en": "Round real to", "de": "Aufrunden auf: ", "ru": "Округлять до", "pt": "Round real to", "nl": "Rond echt naar", "fr": "Rond réel à", "it": "Round reale a", "es": "Redondo real para", "pl": "Runda prawdziwa do"},
"Password confirmation is not equal with password!": {"en": "Password confirmation is not equal with password!", "de": "Kennwort-Bestätigung ist nicht gleich mit dem Kennwort!", "ru": "Подтверждение пароля не совпадает с паролем!", "pt": "A confirmação da senha não é igual com a senha!", "nl": "Wachtwoordbevestiging is niet gelijk aan wachtwoord!", "fr": "La confirmation du mot de passe n'est pas égale au mot de passe!", "it": "La conferma della password non è uguale alla password!", "es": "La confirmación de la contraseña no es igual a la contraseña!", "pl": "Potwierdzenie hasła nie jest równe hasłu!"},
"Input path with the file name.": { "en": "E.g. /opt/sqlite/data.db", "de": "Z.B. /opt/sqlite/data.db", "ru": "Например /opt/sqlite/data.db", "pt": "Por exemplo. /opt/sqlite/data.db", "nl": "Bijv. /opt/sqlite/data.db", "fr": "Par exemple. /opt/sqlite/data.db", "it": "Per esempio. /opt/sqlite/data.db", "es": "P.ej. /opt/sqlite/data.db", "pl": "Na przykład. /opt/sqlite/data.db"},
"Are you sure? All data will be dropped.": { "en": "Are you sure? All data will be dropped.", "de": "Sind Sie sicher? ALLE Daten werden geöscht.", "ru": "Вы уверенны? Все данные в базе будут удалены.", "pt": "Você tem certeza? Todos os dados serão descartados.", "nl": "Weet je het zeker? Alle gegevens worden verwijderd.", "fr": "Êtes-vous sûr? Toutes les données seront supprimées.", "it": "Sei sicuro? Tutti i dati verranno eliminati.", "es": "¿Estás seguro? Todos los datos serán eliminados.", "pl": "Jesteś pewny? Wszystkie dane zostaną usunięte."},
"Reset DB": { "en": "Reset DB", "de": "Alle Daten in DB löschen", "ru": "Сбросить DB", "pt": "Redefinir DB", "nl": "Stel DB opnieuw in", "fr": "Reset DB", "it": "Ripristina DB", "es": "Restablecer DB", "pl": "Zresetuj DB"},
"Ok": { "en": "Ok", "de": "Ok", "ru": "Ok", "pt": "Está bem", "nl": "OK", "fr": "D'accord", "it": "Ok", "es": "De acuerdo", "pl": "Ok"},
"Allow parallel requests:": { "en": "Allow parallel requests", "de": "Parallelanfragen erlauben", "ru": "Разрешить параллельные запросы к базе", "pt": "Permitir pedidos paralelos", "nl": "Sta parallelle verzoeken toe", "fr": "Autoriser les demandes parallèles", "it": "Consenti richieste parallele", "es": "Permitir solicitudes paralelas", "pl": "Pozwól na równoległe żądania"},
"Write NULL values on start/stop boundaries:": {
"en": "Write NULL values on start/stop boundaries:",
"de": "Schreibe NULL-Werte an Start- / Stop-Grenzen:",
"ru": "Запись значений NULL на границах начала / остановки:",
"pt": "Escreva valores NULL nos limites de início / parada:",
"nl": "Schrijf NULL-waarden op start / stop-grenzen:",
"fr": "Écrire des valeurs NULL sur les limites de démarrage / arrêt:",
"it": "Scrivi valori NULL sui limiti di avvio / arresto:",
"es": "Escribe valores NULL en los límites de inicio / finalización:",
"pl": "Napisz wartości NULL na granicach start / stop:"
}
};