iobroker.sprinklecontrol 0.2.13 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{Lizenz → LICENSE} +21 -21
- package/README.md +60 -110
- package/admin/i18n/de/translations.json +134 -0
- package/admin/i18n/en/translations.json +134 -0
- package/admin/i18n/es/translations.json +134 -0
- package/admin/i18n/fr/translations.json +134 -0
- package/admin/i18n/it/translations.json +134 -0
- package/admin/i18n/nl/translations.json +134 -0
- package/admin/i18n/pl/translations.json +134 -0
- package/admin/i18n/pt/translations.json +134 -0
- package/admin/i18n/ru/translations.json +134 -0
- package/admin/i18n/uk/translations.json +134 -0
- package/admin/i18n/zh-cn/translations.json +134 -0
- package/admin/index_m.html +904 -907
- package/admin/index_m.js +779 -779
- package/admin/style.css +453 -158
- package/admin/words.js +143 -136
- package/io-package.json +256 -189
- package/lib/adapter-config.d.ts +19 -16
- package/lib/evaporation.js +443 -412
- package/lib/myConfig.js +373 -359
- package/lib/sendMessageText.js +162 -199
- package/lib/tools.js +148 -125
- package/lib/valveControl.js +918 -887
- package/main.js +2041 -1828
- package/package.json +50 -32
- package/.gitattributes +0 -2
- package/admin/admin.d.ts +0 -1
- package/docs/de/img/E-Mail.jpg +0 -0
- package/docs/de/img/Extraeinstellungen.jpg +0 -0
- package/docs/de/img/Pumpeneinstellung.jpg +0 -0
- package/docs/de/img/Pushover.jpg +0 -0
- package/docs/de/img/Select_ID.jpg +0 -0
- package/docs/de/img/Telegram.jpg +0 -0
- package/docs/de/img/Ventil-Haupteinstellung.jpg +0 -0
- package/docs/de/img/Ventil-Pumpeneinstellung.jpg +0 -0
- package/docs/de/img/WhatsApp.jpg +0 -0
- package/docs/de/img/Zeiteinstellung.jpg +0 -0
- package/docs/de/img/addTime.jpg +0 -0
- package/docs/de/img/analog.jpg +0 -0
- package/docs/de/img/ber-verdunstung.jpg +0 -0
- package/docs/de/img/bew-einstellung.jpg +0 -0
- package/docs/de/img/bew-feste-tage.jpg +0 -0
- package/docs/de/img/bistabil.jpg +0 -0
- package/docs/de/img/bodenf-analog.jpg +0 -0
- package/docs/de/img/bodenf-bistabil.jpg +0 -0
- package/docs/de/img/calculation.jpg +0 -0
- package/docs/de/img/control.jpg +0 -0
- package/docs/de/img/einschaltpunkt-giessen.jpg +0 -0
- package/docs/de/img/festeTage.jpg +0 -0
- package/docs/de/img/main.jpg +0 -0
- package/docs/de/img/main_tab.jpg +0 -0
- package/docs/de/img/max-bodenfeuchtigkeit.jpg +0 -0
- package/docs/de/img/schaltverhalten.jpg +0 -0
- package/docs/de/img/sprinklecontrol.png +0 -0
- package/docs/de/img/verdunstDiagra.jpg +0 -0
- package/docs/de/img/verdunstung.jpg +0 -0
- package/docs/de/img/zus-bew-einstellung.jpg +0 -0
- package/docs/de/sprinklecontrol.md +0 -656
- package/docs/en/img/schaltverhalten.jpg +0 -0
- package/docs/en/img/screenshot1.jpg +0 -0
- package/docs/en/img/screenshot2.jpg +0 -0
- package/docs/en/img/screenshot3.jpg +0 -0
- package/docs/en/img/screenshot4.jpg +0 -0
- package/docs/en/img/screenshot5.jpg +0 -0
- package/docs/en/img/screenshot6.jpg +0 -0
- package/docs/en/img/screenshot7.jpg +0 -0
- package/docs/en/img/screenshot8.jpg +0 -0
- package/docs/en/img/sprinklecontrol.png +0 -0
- package/docs/en/sprinklecontrol.md +0 -230
- package/main.test.js +0 -30
package/admin/index_m.js
CHANGED
|
@@ -1,780 +1,780 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* iobroker.sprinklecontrol - Copyright (c) by Dirk-Peter-md
|
|
4
|
-
* Please visit https://github.com/Dirk-Peter-md/ioBroker.sprinklecontrol for licence-agreement and further information
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
//Settings
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* This will be called by the admin adapter when the settings page loads
|
|
11
|
-
* Dies wird vom Adapter Administrator aufgerufen, wenn die Einstellungsseite geladen wird
|
|
12
|
-
* @param {object} settings - represents the adapter config object
|
|
13
|
-
* @param {object} onChange - callback
|
|
14
|
-
*/
|
|
15
|
-
function load(settings, onChange) {
|
|
16
|
-
// example: select elements with id=key and class=value and insert value
|
|
17
|
-
// Beispiel: Wählen Sie Elemente mit id = key und class = value aus und fügen Sie einen Wert ein
|
|
18
|
-
if (!settings) return;
|
|
19
|
-
$('.value').each(function () {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// check which type of html element
|
|
24
|
-
// do not call onChange direct, because onChange could expect some arguments
|
|
25
|
-
// Rufen Sie onChange nicht direkt auf, da onChange einige Argumente erwarten kann
|
|
26
|
-
if ($key.attr('type') === 'checkbox') {
|
|
27
|
-
$key.prop('checked', settings[id]) // read setting value from adapter config object and set checkbox in config page → Lesen Sie den Einstellungswert aus dem Adapterkonfigurationsobjekt und setzen Sie das Kontrollkästchen auf der Konfigurationsseite
|
|
28
|
-
.on('change', () => {
|
|
29
|
-
showHideSettings();
|
|
30
|
-
onChange(); // set listener to checkbox and call onChange if the value has changed => setze listener auf checkbox und rufe onChange auf, wenn sich der Wert geändert hat
|
|
31
|
-
});
|
|
32
|
-
} else {
|
|
33
|
-
$key.val(settings[id])
|
|
34
|
-
.on('change', () => onChange())
|
|
35
|
-
.on('keyup', () => onChange())
|
|
36
|
-
;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
//var events = [];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
showHideSettings();
|
|
46
|
-
|
|
47
|
-
values2table('events', events, onChange, tableOnReady);
|
|
48
|
-
|
|
49
|
-
$('#responseOIDDialog').on('click', function () {
|
|
50
|
-
|
|
51
|
-
let id = 0;
|
|
52
|
-
for (let i = 0; i < devices.length; i++) {
|
|
53
|
-
id = id +1;
|
|
54
|
-
}
|
|
55
|
-
setTimeout(function () {
|
|
56
|
-
$('#events .values-input[data-name="enabled"][data-index="' + id + '"]').prop('checked', true);
|
|
57
|
-
$('#events .values-input[data-name="wateringTime"][data-index="' + id + '"]').val('20').trigger('change');
|
|
58
|
-
$('#events .values-input[data-name="wateringAdd"][data-index="' + id + '"]').val('200').trigger('change');
|
|
59
|
-
$('#events .values-input[data-name="wateringInterval"][data-index="' + id + '"]').val('0').trigger('change');
|
|
60
|
-
$('#events .values-input[data-name="addWateringTime"][data-index="' + id + '"]').val('0').trigger('change');
|
|
61
|
-
$('#events .values-input[data-name="addTriggersIrrigation"][data-index="' + id + '"]').val('50').trigger('change');
|
|
62
|
-
$('#events .values-input[data-name="maxSoilMoistureIrrigation"][data-index="' + id + '"]').val('8').trigger('change');
|
|
63
|
-
$('#events .values-input[data-name="maxSoilMoistureRainPct"][data-index="' + id + '"]').val('120').trigger('change');
|
|
64
|
-
$('#events .values-input[data-name="triggersIrrigation"][data-index="' + id + '"]').val('50').trigger('change');
|
|
65
|
-
$('#events .values-input[data-name="pipeFlow"][data-index="' + id + '"]').val('700').trigger('change');
|
|
66
|
-
$('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').val('calculation').trigger('change');
|
|
67
|
-
//$('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').select().trigger('change'); // select() > val
|
|
68
|
-
//$('#events .values-input[data-name="triggerSM"][data-index="' + id + '"]').val().trigger('change');
|
|
69
|
-
$('#events .values-input[data-name="analogZPct"][data-index="' + id + '"]').val('0').trigger('change');
|
|
70
|
-
$('#events .values-input[data-name="analogOHPct"][data-index="' + id + '"]').val('100').trigger('change');
|
|
71
|
-
$('#events .values-input[data-name="startDay"][data-index="' + id + '"]').val('threeRd').trigger('change');
|
|
72
|
-
//$('#events .values-input[data-name="startDay"][data-index="' + id + '"]').select().trigger('change');
|
|
73
|
-
// boolean
|
|
74
|
-
$('#events .values-input[data-name="booster"][data-index="' + id + '"]').prop('checked', false);
|
|
75
|
-
$('#events .values-input[data-name="endIrrigation"][data-index="' + id + '"]').prop('checked', true);
|
|
76
|
-
$('#events .values-input[data-name="inGreenhouse"][data-index="' + id + '"]').prop('checked', false);
|
|
77
|
-
|
|
78
|
-
$('#events .values-input[data-name="sun"][data-index="' + id + '"]').prop('checked', false);
|
|
79
|
-
$('#events .values-input[data-name="mon"][data-index="' + id + '"]').prop('checked', false);
|
|
80
|
-
$('#events .values-input[data-name="tue"][data-index="' + id + '"]').prop('checked', false);
|
|
81
|
-
$('#events .values-input[data-name="wed"][data-index="' + id + '"]').prop('checked', false);
|
|
82
|
-
$('#events .values-input[data-name="thur"][data-index="' + id + '"]').prop('checked', false);
|
|
83
|
-
$('#events .values-input[data-name="fri"][data-index="' + id + '"]').prop('checked', false);
|
|
84
|
-
$('#events .values-input[data-name="sat"][data-index="' + id + '"]').prop('checked', false);
|
|
85
|
-
|
|
86
|
-
}, 1000);
|
|
87
|
-
|
|
88
|
-
initSelectId(function (sid) {
|
|
89
|
-
sid.selectId('show', $('#events .values-input[data-name="name"][data-index="' + id + '"]').val(), function (newId) {
|
|
90
|
-
if (newId) {
|
|
91
|
-
$('#events .values-input[data-name="name"][data-index="' + id + '"]').val(newId).trigger('change');
|
|
92
|
-
socket.emit('getObject', newId, function (err, obj) {
|
|
93
|
-
|
|
94
|
-
$('#events .values-input[data-name="sprinkleName"][data-index="' + id + '"]').val(name).trigger('change');
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
// Registerkarte Sprinkler => Irrigation settings
|
|
102
|
-
|
|
103
|
-
$('#triggerSMDialogPopUp').on('click', function () {
|
|
104
|
-
initSelectId(function (sid) {
|
|
105
|
-
sid.selectId('show', $('#triggerSM').val(), function (newId) {
|
|
106
|
-
if (newId) {
|
|
107
|
-
$('#triggerSM').val(newId).trigger('change');
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
// Registerkarte Pump Settings
|
|
114
|
-
|
|
115
|
-
$('#triggerControlVoltageDialogPopUp').on('click', function () {
|
|
116
|
-
initSelectId(function (sid) {
|
|
117
|
-
sid.selectId('show', $('#triggerControlVoltage').val(), function (newId) {
|
|
118
|
-
if (newId) {
|
|
119
|
-
$('#triggerControlVoltage').val(newId).trigger('change');
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
$('#triggerMainPumpDialogPopUp').on('click', function () {
|
|
126
|
-
initSelectId(function (sid) {
|
|
127
|
-
sid.selectId('show', $('#triggerMainPump').val(), function (newId) {
|
|
128
|
-
if (newId) {
|
|
129
|
-
$('#triggerMainPump').val(newId).trigger('change');
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
$('#triggerCisternPumpDialogPopUp').on('click', function () {
|
|
136
|
-
initSelectId(function (sid) {
|
|
137
|
-
sid.selectId('show', $('#triggerCisternPump').val(), function (newId) {
|
|
138
|
-
if (newId) {
|
|
139
|
-
$('#triggerCisternPump').val(newId).trigger('change');
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
$('#actualValueLevelDialogPopUp').on('click', function () {
|
|
146
|
-
initSelectId(function (sid) {
|
|
147
|
-
sid.selectId('show', $('#actualValueLevel').val(), function (newId) {
|
|
148
|
-
if (newId) {
|
|
149
|
-
$('#actualValueLevel').val(newId).trigger('change');
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
// Registerkarte Extra Settings
|
|
156
|
-
|
|
157
|
-
$('#sensorOutsideTemperatureDialogPopUp').on('click', function () {
|
|
158
|
-
initSelectId(function (sid) {
|
|
159
|
-
sid.selectId('show', $('#sensorOutsideTemperature').val(), function (newId) {
|
|
160
|
-
if (newId) {
|
|
161
|
-
$('#sensorOutsideTemperature').val(newId).trigger('change');
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
$('#sensorOutsideHumidityDialogPopUp').on('click', function () {
|
|
168
|
-
initSelectId(function (sid) {
|
|
169
|
-
sid.selectId('show', $('#sensorOutsideHumidity').val(), function (newId) {
|
|
170
|
-
if (newId) {
|
|
171
|
-
$('#sensorOutsideHumidity').val(newId).trigger('change');
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
$('#sensorWindSpeedDialogPopUp').on('click', function () {
|
|
178
|
-
initSelectId(function (sid) {
|
|
179
|
-
sid.selectId('show', $('#sensorWindSpeed').val(), function (newId) {
|
|
180
|
-
if (newId) {
|
|
181
|
-
$('#sensorWindSpeed').val(newId).trigger('change');
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
$('#sensorBrightnessDialogPopUp').on('click', function () {
|
|
188
|
-
initSelectId(function (sid) {
|
|
189
|
-
sid.selectId('show', $('#sensorBrightness').val(), function (newId) {
|
|
190
|
-
if (newId) {
|
|
191
|
-
$('#sensorBrightness').val(newId).trigger('change');
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
$('#sensorRainfallDialogPopUp').on('click', function () {
|
|
198
|
-
initSelectId(function (sid) {
|
|
199
|
-
sid.selectId('show', $('#sensorRainfall').val(), function (newId) {
|
|
200
|
-
if (newId) {
|
|
201
|
-
$('#sensorRainfall').val(newId).trigger('change');
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
$('#pathRainForecastDialogPopUp').on('click', function () {
|
|
208
|
-
initSelectId(function (sid) {
|
|
209
|
-
sid.selectId('show', $('#pathRainForecast').val(), function (newId) {
|
|
210
|
-
if (newId) {
|
|
211
|
-
$('#pathRainForecast').val(newId).trigger('change');
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
onChange(false);
|
|
218
|
-
// reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
|
|
219
|
-
// Initialisieren Sie alle Materialise-Beschriftungen auf der Seite neu, wenn Sie dynamisch Eingaben hinzufügen:
|
|
220
|
-
|
|
221
|
-
$('.timepicker').timepicker({
|
|
222
|
-
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
if (M) M.updateTextFields();
|
|
226
|
-
|
|
227
|
-
getAdapterInstances('feiertage', function (instances) {
|
|
228
|
-
fillInstances('publicHolInstance', instances, settings['publicHolInstance']);
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
getAdapterInstances('daswetter', function (instances) {
|
|
232
|
-
fillInstances('weatherForInstance', instances, settings['weatherForInstance']);
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
getAdapterInstances('telegram', function (instances) {
|
|
236
|
-
fillInstances('telegramInstance', instances, settings['telegramInstance']);
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
getAdapterInstances('whatsapp-cmb', function (instances) {
|
|
240
|
-
fillInstances('whatsappInstance', instances, settings['whatsappInstance']);
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
getAdapterInstances('email', function (instances) {
|
|
244
|
-
fillInstances('emailInstance', instances, settings['emailInstance']);
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
getAdapterInstances('pushover', function (instances) {
|
|
248
|
-
fillInstances('pushoverInstance', instances, settings['pushoverInstance']);
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
sendTo(null, 'getTelegramUser', null, function (obj) {
|
|
252
|
-
fillTelegramUser(settings['telegramUser'], obj);
|
|
253
|
-
});
|
|
254
|
-
fillPosition();
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Automatic filling in of astronomical data if the field is empty.
|
|
259
|
-
* Automatisches Ausfüllen von astronomischen Daten, wenn das Feld leer ist.
|
|
260
|
-
*/
|
|
261
|
-
function fillPosition() {
|
|
262
|
-
socket.emit('getObject', 'system.config', function (err, obj) {
|
|
263
|
-
|
|
264
|
-
if ($mLongitude.val() === '') {
|
|
265
|
-
$mLongitude.val(obj.common.longitude).trigger('change');
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
if ($mLatitude.val() === '') {
|
|
269
|
-
$mLatitude.val(obj.common.latitude).trigger('change');
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
*
|
|
276
|
-
* @param id
|
|
277
|
-
* @param obj
|
|
278
|
-
*/
|
|
279
|
-
function fillTelegramUser(id, obj) {
|
|
280
|
-
/*let user = str.replace(/[{}"\\]/g,"").split(',');*/
|
|
281
|
-
/*obj = {"0123456789":{"firstName":"Dirk","userName":"Dirk_Peter"}};*/
|
|
282
|
-
|
|
283
|
-
$sel.html('<option value="allTelegramUsers">' + _('All Receiver') + '</option>');
|
|
284
|
-
for(
|
|
285
|
-
if (obj.hasOwnProperty (key)) {
|
|
286
|
-
|
|
287
|
-
let userName;
|
|
288
|
-
obj[key].userName && names.push(obj[key].userName);
|
|
289
|
-
obj[key].firstName && names.push(obj[key].firstName);
|
|
290
|
-
if (obj[key].userName) {
|
|
291
|
-
userName = obj[key].userName;
|
|
292
|
-
} else {
|
|
293
|
-
userName = obj[key].firstName
|
|
294
|
-
}
|
|
295
|
-
$sel.append('<option value="' + userName + '"' + (id === userName ? ' selected' : '') + '>' + names.join(' / ') +'</option>');
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
$sel.select();
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
*
|
|
303
|
-
* @param {string} id
|
|
304
|
-
* @param arr
|
|
305
|
-
* @param val
|
|
306
|
-
*/
|
|
307
|
-
function fillInstances(id, arr, val) {
|
|
308
|
-
|
|
309
|
-
$sel.html('<option value="">' + _('none') + '</option>');
|
|
310
|
-
for (let i = 0; i < arr.length; i++) {
|
|
311
|
-
|
|
312
|
-
$sel.append('<option value="' + _id + '"' + (_id === val ? ' selected' : '') + '>' + _id + '</option>');
|
|
313
|
-
}
|
|
314
|
-
$sel.select();
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
*
|
|
319
|
-
*/
|
|
320
|
-
function tableOnReady() {
|
|
321
|
-
$('#events .table-values-div .table-values .values-buttons[data-command="edit2"]').on('click', function () {
|
|
322
|
-
|
|
323
|
-
initSelectId(function (sid) {
|
|
324
|
-
sid.selectId('show', $('#events .values-input[data-name="name"][data-index="' + id + '"]').val(), function (newId) {
|
|
325
|
-
if (newId) {
|
|
326
|
-
$('#events .values-input[data-name="name"][data-index="' + id + '"]').val(newId).trigger('change');
|
|
327
|
-
socket.emit('getObject', newId, function (err, obj) {
|
|
328
|
-
|
|
329
|
-
$('#events .values-input[data-name="sprinkleName"][data-index="' + id + '"]').val(name).trigger('change');
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
});
|
|
333
|
-
});
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
$('#events .table-values-div .table-values .values-buttons[data-command="edit"]').on('click', function () {
|
|
337
|
-
|
|
338
|
-
$('#triggerID').val($('#events .values-input[data-name="triggerID"][data-index="' + id + '"]').val());
|
|
339
|
-
$('#wateringTime').val($('#events .values-input[data-name="wateringTime"][data-index="' + id + '"]').val());
|
|
340
|
-
$('#wateringAdd').val($('#events .values-input[data-name="wateringAdd"][data-index="' + id + '"]').val());
|
|
341
|
-
$('#wateringInterval').val($('#events .values-input[data-name="wateringInterval"][data-index="' + id + '"]').val());
|
|
342
|
-
$('#addWateringTime').val($('#events .values-input[data-name="addWateringTime"][data-index="' + id + '"]').val());
|
|
343
|
-
$('#addTriggersIrrigation').val($('#events .values-input[data-name="addTriggersIrrigation"][data-index="' + id + '"]').val());
|
|
344
|
-
$('#maxSoilMoistureIrrigation').val($('#events .values-input[data-name="maxSoilMoistureIrrigation"][data-index="' + id + '"]').val());
|
|
345
|
-
$('#maxSoilMoistureRainPct').val($('#events .values-input[data-name="maxSoilMoistureRainPct"][data-index="' + id + '"]').val());
|
|
346
|
-
$('#triggersIrrigation').val($('#events .values-input[data-name="triggersIrrigation"][data-index="' + id + '"]').val());
|
|
347
|
-
$('#pipeFlow').val($('#events .values-input[data-name="pipeFlow"][data-index="' + id + '"]').val());
|
|
348
|
-
$('#methodControlSM').val($('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').val());
|
|
349
|
-
$('#methodControlSM').select().trigger('change');
|
|
350
|
-
$('#triggerSM').val($('#events .values-input[data-name="triggerSM"][data-index="' + id + '"]').val());
|
|
351
|
-
$('#analogZPct').val($('#events .values-input[data-name="analogZPct"][data-index="' + id + '"]').val());
|
|
352
|
-
$('#analogOHPct').val($('#events .values-input[data-name="analogOHPct"][data-index="' + id + '"]').val());
|
|
353
|
-
$('#startDay').val($('#events .values-input[data-name="startDay"][data-index="' + id + '"]').val());
|
|
354
|
-
$('#startDay').select().trigger('change');
|
|
355
|
-
// boolean
|
|
356
|
-
$('#booster').prop('checked', ($('#events .values-input[data-name="booster"][data-index="' + id + '"]')).prop('checked'));
|
|
357
|
-
$('#endIrrigation').prop('checked', ($('#events .values-input[data-name="endIrrigation"][data-index="' +id + '"]')).prop('checked'));
|
|
358
|
-
$('#inGreenhouse').prop('checked', ($('#events .values-input[data-name="inGreenhouse"][data-index="' +id + '"]')).prop('checked'));
|
|
359
|
-
$('#sun').prop('checked', ($('#events .values-input[data-name="sun"][data-index="' +id + '"]')).prop('checked'));
|
|
360
|
-
$('#mon').prop('checked', ($('#events .values-input[data-name="mon"][data-index="' +id + '"]')).prop('checked'));
|
|
361
|
-
$('#tue').prop('checked', ($('#events .values-input[data-name="tue"][data-index="' +id + '"]')).prop('checked'));
|
|
362
|
-
$('#wed').prop('checked', ($('#events .values-input[data-name="wed"][data-index="' +id + '"]')).prop('checked'));
|
|
363
|
-
$('#thur').prop('checked', ($('#events .values-input[data-name="thur"][data-index="' +id + '"]')).prop('checked'));
|
|
364
|
-
$('#fri').prop('checked', ($('#events .values-input[data-name="fri"][data-index="' +id + '"]')).prop('checked'));
|
|
365
|
-
$('#sat').prop('checked', ($('#events .values-input[data-name="sat"][data-index="' +id + '"]')).prop('checked'));
|
|
366
|
-
|
|
367
|
-
$('#dialogDeviceEditSprinkle').html($('#events .values-input[data-name="sprinkleName"][data-index="' + id + '"]').val());
|
|
368
|
-
|
|
369
|
-
setTimeout(function () {
|
|
370
|
-
initDialogSprinkle(function (sid) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
// boolean
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
$('#events .values-input[data-name="triggerID"][data-index="' + id + '"]').val(newTriggerID).trigger('change');
|
|
399
|
-
$('#events .values-input[data-name="wateringTime"][data-index="' + id + '"]').val(newWateringTime).trigger('change');
|
|
400
|
-
$('#events .values-input[data-name="wateringAdd"][data-index="' + id + '"]').val(newWateringAdd).trigger('change');
|
|
401
|
-
$('#events .values-input[data-name="wateringInterval"][data-index="' + id + '"]').val(newWateringInterval).trigger('change');
|
|
402
|
-
$('#events .values-input[data-name="addWateringTime"][data-index="' + id + '"]').val(newAddWateringTime).trigger('change');
|
|
403
|
-
$('#events .values-input[data-name="addTriggersIrrigation"][data-index="' + id + '"]').val(newAddTriggersIrrigation).trigger('change');
|
|
404
|
-
$('#events .values-input[data-name="maxSoilMoistureIrrigation"][data-index="' + id + '"]').val(newMaxSoilMoistureIrrigation).trigger('change');
|
|
405
|
-
$('#events .values-input[data-name="maxSoilMoistureRainPct"][data-index="' + id + '"]').val(newMaxSoilMoistureRainPct).trigger('change');
|
|
406
|
-
$('#events .values-input[data-name="triggersIrrigation"][data-index="' + id + '"]').val(newTriggersIrrigation).trigger('change');
|
|
407
|
-
$('#events .values-input[data-name="pipeFlow"][data-index="' + id + '"]').val(newPipeFlow).trigger('change');
|
|
408
|
-
$('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').val(newMethodControlSM).trigger('change');
|
|
409
|
-
$('#events .values-input[data-name="triggerSM"][data-index="' + id + '"]').val(newTriggerSM).trigger('change');
|
|
410
|
-
$('#events .values-input[data-name="analogZPct"][data-index="' + id + '"]').val(newAnalogZPct).trigger('change');
|
|
411
|
-
$('#events .values-input[data-name="analogOHPct"][data-index="' + id + '"]').val(newAnalogOHPct).trigger('change');
|
|
412
|
-
$('#events .values-input[data-name="startDay"][data-index="' + id + '"]').val(newStartDay).trigger('change');
|
|
413
|
-
// boolean
|
|
414
|
-
$('#events .values-input[data-name="booster"][data-index="' + id + '"]').prop('checked',newBooster);
|
|
415
|
-
$('#events .values-input[data-name="endIrrigation"][data-index="' + id + '"]').prop('checked',newEndIrrigation);
|
|
416
|
-
$('#events .values-input[data-name="inGreenhouse"][data-index="' + id + '"]').prop('checked',newInGreenhouse);
|
|
417
|
-
$('#events .values-input[data-name="sun"][data-index="' + id + '"]').prop('checked',newSun);
|
|
418
|
-
$('#events .values-input[data-name="mon"][data-index="' + id + '"]').prop('checked',newMon);
|
|
419
|
-
$('#events .values-input[data-name="tue"][data-index="' + id + '"]').prop('checked',newTue);
|
|
420
|
-
$('#events .values-input[data-name="wed"][data-index="' + id + '"]').prop('checked',newWed);
|
|
421
|
-
$('#events .values-input[data-name="thur"][data-index="' + id + '"]').prop('checked',newThur);
|
|
422
|
-
$('#events .values-input[data-name="fri"][data-index="' + id + '"]').prop('checked',newFri);
|
|
423
|
-
$('#events .values-input[data-name="sat"][data-index="' + id + '"]').prop('checked',newSat);
|
|
424
|
-
|
|
425
|
-
});
|
|
426
|
-
}, 20)
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* This will be called by the admin adapter when the user presses the Save or Save and Close button
|
|
432
|
-
* Dies wird vom Admin-Adapter aufgerufen, wenn der Benutzer die Schaltfläche Speichern oder Speichern und Schließen drückt
|
|
433
|
-
* @param {object} callback - JSON object which holds keys and their values that will be written to adapter config object
|
|
434
|
-
* - JSON-Objekt, das Schlüssel und deren Werte enthält, die in das Adapterkonfigurationsobjekt geschrieben werden
|
|
435
|
-
*/
|
|
436
|
-
function save(callback) {
|
|
437
|
-
// example: select elements with class=value and build settings object
|
|
438
|
-
// Beispiel: Wählen Sie Elemente mit class = value aus und erstellen Sie das Einstellungsobjekt
|
|
439
|
-
|
|
440
|
-
$('#mainSettings .value').each(function () {
|
|
441
|
-
|
|
442
|
-
if ($this.attr('type') === 'checkbox') {
|
|
443
|
-
obj[$this.attr('id')] = $this.prop('checked');
|
|
444
|
-
} else if ($this.attr('type') === 'number') {
|
|
445
|
-
obj[$this.attr('id')] = parseFloat($this.val());
|
|
446
|
-
} else {
|
|
447
|
-
obj[$this.attr('id')] = $this.val();
|
|
448
|
-
}
|
|
449
|
-
});
|
|
450
|
-
|
|
451
|
-
// Get edited table
|
|
452
|
-
obj.events = table2values('events'); //es wird nicht devices abgespeichert, sondern der Inhalt der Tabelle (all Zeilen müssen value="" haben)
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
callback(obj);
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
* Show and hide the display depending on the events
|
|
460
|
-
*
|
|
461
|
-
* Anzeige je nach Ereignissen ein- und ausblenden
|
|
462
|
-
* @param callback
|
|
463
|
-
*/
|
|
464
|
-
function showHideSettings(callback) {
|
|
465
|
-
/** additional irrigation activated =>
|
|
466
|
-
* zusätzliche Bewässerung aktiviert
|
|
467
|
-
* @type {boolean}
|
|
468
|
-
*/
|
|
469
|
-
let selAddStartTime = false;
|
|
470
|
-
|
|
471
|
-
// Zeiteinstellungen => Feiertagseinstellung sichtbar bei combobox
|
|
472
|
-
$('#wateringStartTime').on('change', function () {
|
|
473
|
-
if ($(this).val() === 'livingTime') { /*Start zur festen Zeit*/
|
|
474
|
-
$('.visTimeShift').hide();
|
|
475
|
-
$('.visWeekLiving').show();
|
|
476
|
-
} else if ($(this).val() === 'livingSunrise') { /*Start mit Sonnenaufgang*/
|
|
477
|
-
$('.visTimeShift').show();
|
|
478
|
-
$('.visWeekLiving').hide();
|
|
479
|
-
} else if ($(this).val() === 'livingGoldenHourEnd') { /*Start mit dem Ende der Golden hour*/
|
|
480
|
-
$('.visTimeShift').hide();
|
|
481
|
-
$('.visWeekLiving').hide();
|
|
482
|
-
} else if ($(this).val() === 'livingSunset') { /*Start mit Sonnenaufgang*/
|
|
483
|
-
$('.visTimeShift').show();
|
|
484
|
-
$('.visWeekLiving').hide();
|
|
485
|
-
}
|
|
486
|
-
}).trigger('change');
|
|
487
|
-
|
|
488
|
-
// Pumpeneinstellungen → Zisterne sichtbar bei checkbox
|
|
489
|
-
if ($('#cisternSettings').prop('checked')) {
|
|
490
|
-
$('.cisternObjekt').show();
|
|
491
|
-
} else {
|
|
492
|
-
$('.cisternObjekt').hide();
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
// Additional start time => sichtbar je nach auswahl
|
|
497
|
-
$('#selectAddStartTime').on('change',function(){
|
|
498
|
-
if ($(this).val() === 'noAddStartTime') {
|
|
499
|
-
selAddStartTime = false;
|
|
500
|
-
$('.showGreaterETpCur').hide();
|
|
501
|
-
$('.showAddStartTime').hide();
|
|
502
|
-
$('.showExtSig').hide();
|
|
503
|
-
} else if ($(this).val() === 'greaterETpCurrent') {
|
|
504
|
-
selAddStartTime = true;
|
|
505
|
-
$('.showGreaterETpCur').show();
|
|
506
|
-
$('.showAddStartTime').show();
|
|
507
|
-
$('.showExtSig').hide();
|
|
508
|
-
} else if ($(this).val() === 'withExternalSignal') {
|
|
509
|
-
selAddStartTime = true;
|
|
510
|
-
$('.showGreaterETpCur').hide();
|
|
511
|
-
$('.showAddStartTime').show();
|
|
512
|
-
$('.showExtSig').show();
|
|
513
|
-
} else {
|
|
514
|
-
selAddStartTime = false;
|
|
515
|
-
$('.showGreaterETpCur').hide();
|
|
516
|
-
$('.showAddStartTime').hide();
|
|
517
|
-
$('.showExtSig').hide();
|
|
518
|
-
}
|
|
519
|
-
}).trigger('change');
|
|
520
|
-
|
|
521
|
-
// Zeiteinstellungen => Feiertagseinstellung sichtbar bei checkbox
|
|
522
|
-
|
|
523
|
-
if (mPublicWeekend) {
|
|
524
|
-
$('.publicWeek').show();
|
|
525
|
-
$('.publicWeekHol').show();
|
|
526
|
-
} else {
|
|
527
|
-
$('.publicWeek').hide();
|
|
528
|
-
$('.publicWeekHol').hide();
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
if ($('#publicHolidays').prop('checked') && mPublicWeekend) {
|
|
532
|
-
$('.publicHol').show();
|
|
533
|
-
} else {
|
|
534
|
-
$('.publicHol').hide();
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
// zusätzliche Einstellungen => Wettervorhersage
|
|
538
|
-
|
|
539
|
-
if (mWeatherForecast) {
|
|
540
|
-
$('.weatherFor').show();
|
|
541
|
-
} else {
|
|
542
|
-
$('.weatherFor').hide();
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
// individuelle Wettervorhersage
|
|
546
|
-
$('#weatherForecastService').on('change', function () {
|
|
547
|
-
if ($(this).val() === 'ownDataPoint') {
|
|
548
|
-
$('.showOwnDataPoint').show();
|
|
549
|
-
$('.showDasWetter').hide();
|
|
550
|
-
} else if ($(this).val() === 'dasWetter') {
|
|
551
|
-
$('.showOwnDataPoint').hide();
|
|
552
|
-
$('.showDasWetter').show();
|
|
553
|
-
}
|
|
554
|
-
}).trigger('change');
|
|
555
|
-
|
|
556
|
-
// Benachrichtigung Karte Ein / Aus
|
|
557
|
-
if ($('#notificationEnabled').prop('checked')) {
|
|
558
|
-
$('.tab-notification').show();
|
|
559
|
-
} else {
|
|
560
|
-
$('.tab-notification').hide();
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
// Benachrichtigung - Typ auswahl
|
|
565
|
-
$('#notificationsType').on('change', function () {
|
|
566
|
-
if ($(this).val() === 'Telegram') {
|
|
567
|
-
$('.email').hide();
|
|
568
|
-
$('.pushover').hide();
|
|
569
|
-
$('.telegram').show();
|
|
570
|
-
$('.whatsapp').hide();
|
|
571
|
-
} else if ($(this).val() === 'E-Mail') {
|
|
572
|
-
$('.email').show();
|
|
573
|
-
$('.telegram').hide();
|
|
574
|
-
$('.pushover').hide();
|
|
575
|
-
$('.whatsapp').hide();
|
|
576
|
-
} else if ($(this).val() === 'Pushover') {
|
|
577
|
-
$('.pushover').show();
|
|
578
|
-
$('.telegram').hide();
|
|
579
|
-
$('.email').hide();
|
|
580
|
-
$('.whatsapp').hide();
|
|
581
|
-
} else if ($(this).val() === 'WhatsApp') {
|
|
582
|
-
$('.whatsapp').show();
|
|
583
|
-
$('.telegram').hide();
|
|
584
|
-
$('.email').hide();
|
|
585
|
-
$('.pushover').hide();
|
|
586
|
-
}
|
|
587
|
-
}).trigger('change');
|
|
588
|
-
|
|
589
|
-
// Sensorauswahl in Sprinkler - Main settings
|
|
590
|
-
$('#methodControlSM').on('change',function(){
|
|
591
|
-
|
|
592
|
-
if ($(this).val() === 'calculation') {
|
|
593
|
-
if (selAddStartTime) {
|
|
594
|
-
$('.showAddWateringTime').show();
|
|
595
|
-
$('.showAddTriggersIrrigation').hide();
|
|
596
|
-
}else{
|
|
597
|
-
$('.showAddWateringTime').hide();
|
|
598
|
-
$('.showAddTriggersIrrigation').hide();
|
|
599
|
-
}
|
|
600
|
-
$('.visInGreenhouse').show()
|
|
601
|
-
$('.visSensor').hide();
|
|
602
|
-
$('.visAnalog').hide();
|
|
603
|
-
$('.visCalculation').show();
|
|
604
|
-
$('.visNotAnalog').show();
|
|
605
|
-
$('.visFixDay').hide();
|
|
606
|
-
|
|
607
|
-
} else if ($(this).val() === 'bistable') {
|
|
608
|
-
if (mWeatherForecast) {
|
|
609
|
-
$('.visInGreenhouse').show()
|
|
610
|
-
} else {
|
|
611
|
-
$('.visInGreenhouse').hide()
|
|
612
|
-
}
|
|
613
|
-
if (selAddStartTime) {
|
|
614
|
-
$('.showAddWateringTime').show();
|
|
615
|
-
$('.showAddTriggersIrrigation').hide();
|
|
616
|
-
}else{
|
|
617
|
-
$('.showAddWateringTime').hide();
|
|
618
|
-
$('.showAddTriggersIrrigation').hide();
|
|
619
|
-
}
|
|
620
|
-
$('.visSensor').show();
|
|
621
|
-
$('.visAnalog').hide();
|
|
622
|
-
$('.visCalculation').hide();
|
|
623
|
-
$('.visNotAnalog').hide();
|
|
624
|
-
$('.visFixDay').hide();
|
|
625
|
-
|
|
626
|
-
} else if ($(this).val() === 'analog') {
|
|
627
|
-
if (mWeatherForecast) {
|
|
628
|
-
$('.visInGreenhouse').show()
|
|
629
|
-
} else {
|
|
630
|
-
$('.visInGreenhouse').hide()
|
|
631
|
-
}
|
|
632
|
-
if (selAddStartTime) {
|
|
633
|
-
$('.showAddWateringTime').show();
|
|
634
|
-
$('.showAddTriggersIrrigation').show();
|
|
635
|
-
}else{
|
|
636
|
-
$('.showAddWateringTime').hide();
|
|
637
|
-
$('.showAddTriggersIrrigation').hide();
|
|
638
|
-
}
|
|
639
|
-
$('.visSensor').show();
|
|
640
|
-
$('.visAnalog').show();
|
|
641
|
-
$('.visCalculation').hide();
|
|
642
|
-
$('.visNotAnalog').show();
|
|
643
|
-
$('.visFixDay').hide();
|
|
644
|
-
|
|
645
|
-
} else if ($(this).val() === 'fixDay') {
|
|
646
|
-
if (mWeatherForecast) {
|
|
647
|
-
$('.visInGreenhouse').show()
|
|
648
|
-
} else {
|
|
649
|
-
$('.visInGreenhouse').hide()
|
|
650
|
-
}
|
|
651
|
-
if (selAddStartTime) {
|
|
652
|
-
$('.showAddWateringTime').show();
|
|
653
|
-
$('.showAddTriggersIrrigation').hide();
|
|
654
|
-
}else{
|
|
655
|
-
$('.showAddWateringTime').hide();
|
|
656
|
-
$('.showAddTriggersIrrigation').hide();
|
|
657
|
-
}
|
|
658
|
-
$('.visSensor').hide();
|
|
659
|
-
$('.visAnalog').hide();
|
|
660
|
-
$('.visCalculation').hide();
|
|
661
|
-
$('.visNotAnalog').hide();
|
|
662
|
-
$('.visFixDay').show();
|
|
663
|
-
} else {
|
|
664
|
-
$(this).val('calculation');
|
|
665
|
-
if (selAddStartTime) {
|
|
666
|
-
$('.showAddWateringTime').show();
|
|
667
|
-
$('.showAddTriggersIrrigation').show();
|
|
668
|
-
}else{
|
|
669
|
-
$('.showAddWateringTime').hide();
|
|
670
|
-
$('.showAddTriggersIrrigation').hide();
|
|
671
|
-
}
|
|
672
|
-
$('.visInGreenhouse').show()
|
|
673
|
-
$('.visSensor').hide();
|
|
674
|
-
$('.visAnalog').hide();
|
|
675
|
-
$('.visCalculation').show();
|
|
676
|
-
$('.visNotAnalog').show();
|
|
677
|
-
$('.visFixDay').hide();
|
|
678
|
-
}
|
|
679
|
-
}).trigger('change');
|
|
680
|
-
|
|
681
|
-
// Wochentags-Auswahl in Sprinkler - Main settings
|
|
682
|
-
$('#startDay').on('change', function () {
|
|
683
|
-
if (($(this).val() === 'fixDay')) {
|
|
684
|
-
$('.visFixDaysWeek').show();
|
|
685
|
-
} else {
|
|
686
|
-
$('.visFixDaysWeek').hide();
|
|
687
|
-
}
|
|
688
|
-
}).trigger('change');
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
let selectId;
|
|
692
|
-
|
|
693
|
-
/**
|
|
694
|
-
*
|
|
695
|
-
* @param {object} callback
|
|
696
|
-
* @returns {*}
|
|
697
|
-
*/
|
|
698
|
-
function initSelectId(callback) {
|
|
699
|
-
if (selectId) {
|
|
700
|
-
return callback(selectId);
|
|
701
|
-
}
|
|
702
|
-
socket.emit('getObjects', function (err, objs) {
|
|
703
|
-
selectId = $('#dialog-select-member').selectId('init', {
|
|
704
|
-
noMultiselect: true,
|
|
705
|
-
objects: objs,
|
|
706
|
-
imgPath: '../../lib/css/fancytree/',
|
|
707
|
-
filter: {type: 'state'},
|
|
708
|
-
name: 'scenes-select-state',
|
|
709
|
-
texts: {
|
|
710
|
-
select: _('Select'),
|
|
711
|
-
cancel: _('Cancel'),
|
|
712
|
-
all: _('All'),
|
|
713
|
-
id: _('ID'),
|
|
714
|
-
name: _('Name'),
|
|
715
|
-
role: _('Role'),
|
|
716
|
-
room: _('Room'),
|
|
717
|
-
value: _('Value'),
|
|
718
|
-
selectid: _('Select ID'),
|
|
719
|
-
from: _('From'),
|
|
720
|
-
lc: _('Last changed'),
|
|
721
|
-
ts: _('Time stamp'),
|
|
722
|
-
wait: _('Processing...'),
|
|
723
|
-
ack: _('Acknowledged'),
|
|
724
|
-
selectAll: _('Select all'),
|
|
725
|
-
unselectAll: _('Deselect all'),
|
|
726
|
-
invertSelection: _('Invert selection')
|
|
727
|
-
},
|
|
728
|
-
columns: ['image', 'name', 'role', 'room']
|
|
729
|
-
});
|
|
730
|
-
callback(selectId);
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
/**
|
|
735
|
-
*
|
|
736
|
-
* @param obj
|
|
737
|
-
* @returns {string|*}
|
|
738
|
-
*/
|
|
739
|
-
function getName(obj) {
|
|
740
|
-
if (obj && obj.common && obj.common.name) {
|
|
741
|
-
let name = obj.common.name;
|
|
742
|
-
if (typeof name === 'object') {
|
|
743
|
-
name = name[systemLang] || name.en;
|
|
744
|
-
}
|
|
745
|
-
return name;
|
|
746
|
-
} else if (obj && obj.name) {
|
|
747
|
-
let name = obj.name;
|
|
748
|
-
if (typeof name === 'object') {
|
|
749
|
-
name = name[systemLang] || name.en;
|
|
750
|
-
}
|
|
751
|
-
return name;
|
|
752
|
-
} else {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
return last[0].toUpperCase() + last.substring(1).toLowerCase();
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
/**
|
|
760
|
-
*
|
|
761
|
-
* @param callback
|
|
762
|
-
*/
|
|
763
|
-
function initDialogSprinkle(callback) {
|
|
764
|
-
|
|
765
|
-
if (!$editDialog.data('inited')) {
|
|
766
|
-
$editDialog.data('inited', true);
|
|
767
|
-
$editDialog.modal({
|
|
768
|
-
dismissible: false
|
|
769
|
-
});
|
|
770
|
-
|
|
771
|
-
$editDialog.find('.btn-set').on('click', function () {
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
if (typeof callback === 'function') callback();
|
|
775
|
-
$editDialog.data('callback', null);
|
|
776
|
-
});
|
|
777
|
-
}
|
|
778
|
-
$editDialog.data('callback', callback);
|
|
779
|
-
$editDialog.modal('open');
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* iobroker.sprinklecontrol - Copyright (c) by Dirk-Peter-md
|
|
4
|
+
* Please visit https://github.com/Dirk-Peter-md/ioBroker.sprinklecontrol for licence-agreement and further information
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
//Settings
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This will be called by the admin adapter when the settings page loads
|
|
11
|
+
* Dies wird vom Adapter Administrator aufgerufen, wenn die Einstellungsseite geladen wird
|
|
12
|
+
* @param {object} settings - represents the adapter config object
|
|
13
|
+
* @param {object} onChange - callback
|
|
14
|
+
*/
|
|
15
|
+
function load(settings, onChange) {
|
|
16
|
+
// example: select elements with id=key and class=value and insert value
|
|
17
|
+
// Beispiel: Wählen Sie Elemente mit id = key und class = value aus und fügen Sie einen Wert ein
|
|
18
|
+
if (!settings) return;
|
|
19
|
+
$('.value').each(function () {
|
|
20
|
+
const $key = $(this);
|
|
21
|
+
const id = $key.attr('id');
|
|
22
|
+
|
|
23
|
+
// check which type of html element
|
|
24
|
+
// do not call onChange direct, because onChange could expect some arguments
|
|
25
|
+
// Rufen Sie onChange nicht direkt auf, da onChange einige Argumente erwarten kann
|
|
26
|
+
if ($key.attr('type') === 'checkbox') {
|
|
27
|
+
$key.prop('checked', settings[id]) // read setting value from adapter config object and set checkbox in config page → Lesen Sie den Einstellungswert aus dem Adapterkonfigurationsobjekt und setzen Sie das Kontrollkästchen auf der Konfigurationsseite
|
|
28
|
+
.on('change', () => {
|
|
29
|
+
showHideSettings();
|
|
30
|
+
onChange(); // set listener to checkbox and call onChange if the value has changed => setze listener auf checkbox und rufe onChange auf, wenn sich der Wert geändert hat
|
|
31
|
+
});
|
|
32
|
+
} else {
|
|
33
|
+
$key.val(settings[id])
|
|
34
|
+
.on('change', () => onChange())
|
|
35
|
+
.on('keyup', () => onChange())
|
|
36
|
+
;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
//var events = [];
|
|
42
|
+
|
|
43
|
+
const events = settings.events || [];
|
|
44
|
+
|
|
45
|
+
showHideSettings();
|
|
46
|
+
|
|
47
|
+
values2table('events', events, onChange, tableOnReady);
|
|
48
|
+
|
|
49
|
+
$('#responseOIDDialog').on('click', function () {
|
|
50
|
+
const devices = table2values('events');
|
|
51
|
+
let id = 0;
|
|
52
|
+
for (let i = 0; i < devices.length; i++) {
|
|
53
|
+
id = id +1;
|
|
54
|
+
}
|
|
55
|
+
setTimeout(function () {
|
|
56
|
+
$('#events .values-input[data-name="enabled"][data-index="' + id + '"]').prop('checked', true);
|
|
57
|
+
$('#events .values-input[data-name="wateringTime"][data-index="' + id + '"]').val('20').trigger('change');
|
|
58
|
+
$('#events .values-input[data-name="wateringAdd"][data-index="' + id + '"]').val('200').trigger('change');
|
|
59
|
+
$('#events .values-input[data-name="wateringInterval"][data-index="' + id + '"]').val('0').trigger('change');
|
|
60
|
+
$('#events .values-input[data-name="addWateringTime"][data-index="' + id + '"]').val('0').trigger('change');
|
|
61
|
+
$('#events .values-input[data-name="addTriggersIrrigation"][data-index="' + id + '"]').val('50').trigger('change');
|
|
62
|
+
$('#events .values-input[data-name="maxSoilMoistureIrrigation"][data-index="' + id + '"]').val('8').trigger('change');
|
|
63
|
+
$('#events .values-input[data-name="maxSoilMoistureRainPct"][data-index="' + id + '"]').val('120').trigger('change');
|
|
64
|
+
$('#events .values-input[data-name="triggersIrrigation"][data-index="' + id + '"]').val('50').trigger('change');
|
|
65
|
+
$('#events .values-input[data-name="pipeFlow"][data-index="' + id + '"]').val('700').trigger('change');
|
|
66
|
+
$('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').val('calculation').trigger('change');
|
|
67
|
+
//$('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').select().trigger('change'); // select() > val
|
|
68
|
+
//$('#events .values-input[data-name="triggerSM"][data-index="' + id + '"]').val().trigger('change');
|
|
69
|
+
$('#events .values-input[data-name="analogZPct"][data-index="' + id + '"]').val('0').trigger('change');
|
|
70
|
+
$('#events .values-input[data-name="analogOHPct"][data-index="' + id + '"]').val('100').trigger('change');
|
|
71
|
+
$('#events .values-input[data-name="startDay"][data-index="' + id + '"]').val('threeRd').trigger('change');
|
|
72
|
+
//$('#events .values-input[data-name="startDay"][data-index="' + id + '"]').select().trigger('change');
|
|
73
|
+
// boolean
|
|
74
|
+
$('#events .values-input[data-name="booster"][data-index="' + id + '"]').prop('checked', false);
|
|
75
|
+
$('#events .values-input[data-name="endIrrigation"][data-index="' + id + '"]').prop('checked', true);
|
|
76
|
+
$('#events .values-input[data-name="inGreenhouse"][data-index="' + id + '"]').prop('checked', false);
|
|
77
|
+
|
|
78
|
+
$('#events .values-input[data-name="sun"][data-index="' + id + '"]').prop('checked', false);
|
|
79
|
+
$('#events .values-input[data-name="mon"][data-index="' + id + '"]').prop('checked', false);
|
|
80
|
+
$('#events .values-input[data-name="tue"][data-index="' + id + '"]').prop('checked', false);
|
|
81
|
+
$('#events .values-input[data-name="wed"][data-index="' + id + '"]').prop('checked', false);
|
|
82
|
+
$('#events .values-input[data-name="thur"][data-index="' + id + '"]').prop('checked', false);
|
|
83
|
+
$('#events .values-input[data-name="fri"][data-index="' + id + '"]').prop('checked', false);
|
|
84
|
+
$('#events .values-input[data-name="sat"][data-index="' + id + '"]').prop('checked', false);
|
|
85
|
+
|
|
86
|
+
}, 1000);
|
|
87
|
+
|
|
88
|
+
initSelectId(function (sid) {
|
|
89
|
+
sid.selectId('show', $('#events .values-input[data-name="name"][data-index="' + id + '"]').val(), function (newId) {
|
|
90
|
+
if (newId) {
|
|
91
|
+
$('#events .values-input[data-name="name"][data-index="' + id + '"]').val(newId).trigger('change');
|
|
92
|
+
socket.emit('getObject', newId, function (err, obj) {
|
|
93
|
+
const name = getName(obj);
|
|
94
|
+
$('#events .values-input[data-name="sprinkleName"][data-index="' + id + '"]').val(name).trigger('change');
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Registerkarte Sprinkler => Irrigation settings
|
|
102
|
+
|
|
103
|
+
$('#triggerSMDialogPopUp').on('click', function () {
|
|
104
|
+
initSelectId(function (sid) {
|
|
105
|
+
sid.selectId('show', $('#triggerSM').val(), function (newId) {
|
|
106
|
+
if (newId) {
|
|
107
|
+
$('#triggerSM').val(newId).trigger('change');
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Registerkarte Pump Settings
|
|
114
|
+
|
|
115
|
+
$('#triggerControlVoltageDialogPopUp').on('click', function () {
|
|
116
|
+
initSelectId(function (sid) {
|
|
117
|
+
sid.selectId('show', $('#triggerControlVoltage').val(), function (newId) {
|
|
118
|
+
if (newId) {
|
|
119
|
+
$('#triggerControlVoltage').val(newId).trigger('change');
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
$('#triggerMainPumpDialogPopUp').on('click', function () {
|
|
126
|
+
initSelectId(function (sid) {
|
|
127
|
+
sid.selectId('show', $('#triggerMainPump').val(), function (newId) {
|
|
128
|
+
if (newId) {
|
|
129
|
+
$('#triggerMainPump').val(newId).trigger('change');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
$('#triggerCisternPumpDialogPopUp').on('click', function () {
|
|
136
|
+
initSelectId(function (sid) {
|
|
137
|
+
sid.selectId('show', $('#triggerCisternPump').val(), function (newId) {
|
|
138
|
+
if (newId) {
|
|
139
|
+
$('#triggerCisternPump').val(newId).trigger('change');
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
$('#actualValueLevelDialogPopUp').on('click', function () {
|
|
146
|
+
initSelectId(function (sid) {
|
|
147
|
+
sid.selectId('show', $('#actualValueLevel').val(), function (newId) {
|
|
148
|
+
if (newId) {
|
|
149
|
+
$('#actualValueLevel').val(newId).trigger('change');
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
// Registerkarte Extra Settings
|
|
156
|
+
|
|
157
|
+
$('#sensorOutsideTemperatureDialogPopUp').on('click', function () {
|
|
158
|
+
initSelectId(function (sid) {
|
|
159
|
+
sid.selectId('show', $('#sensorOutsideTemperature').val(), function (newId) {
|
|
160
|
+
if (newId) {
|
|
161
|
+
$('#sensorOutsideTemperature').val(newId).trigger('change');
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
$('#sensorOutsideHumidityDialogPopUp').on('click', function () {
|
|
168
|
+
initSelectId(function (sid) {
|
|
169
|
+
sid.selectId('show', $('#sensorOutsideHumidity').val(), function (newId) {
|
|
170
|
+
if (newId) {
|
|
171
|
+
$('#sensorOutsideHumidity').val(newId).trigger('change');
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
$('#sensorWindSpeedDialogPopUp').on('click', function () {
|
|
178
|
+
initSelectId(function (sid) {
|
|
179
|
+
sid.selectId('show', $('#sensorWindSpeed').val(), function (newId) {
|
|
180
|
+
if (newId) {
|
|
181
|
+
$('#sensorWindSpeed').val(newId).trigger('change');
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
$('#sensorBrightnessDialogPopUp').on('click', function () {
|
|
188
|
+
initSelectId(function (sid) {
|
|
189
|
+
sid.selectId('show', $('#sensorBrightness').val(), function (newId) {
|
|
190
|
+
if (newId) {
|
|
191
|
+
$('#sensorBrightness').val(newId).trigger('change');
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
$('#sensorRainfallDialogPopUp').on('click', function () {
|
|
198
|
+
initSelectId(function (sid) {
|
|
199
|
+
sid.selectId('show', $('#sensorRainfall').val(), function (newId) {
|
|
200
|
+
if (newId) {
|
|
201
|
+
$('#sensorRainfall').val(newId).trigger('change');
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
$('#pathRainForecastDialogPopUp').on('click', function () {
|
|
208
|
+
initSelectId(function (sid) {
|
|
209
|
+
sid.selectId('show', $('#pathRainForecast').val(), function (newId) {
|
|
210
|
+
if (newId) {
|
|
211
|
+
$('#pathRainForecast').val(newId).trigger('change');
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
onChange(false);
|
|
218
|
+
// reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
|
|
219
|
+
// Initialisieren Sie alle Materialise-Beschriftungen auf der Seite neu, wenn Sie dynamisch Eingaben hinzufügen:
|
|
220
|
+
|
|
221
|
+
$('.timepicker').timepicker({
|
|
222
|
+
'twelveHour': false
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
if (M) M.updateTextFields();
|
|
226
|
+
|
|
227
|
+
getAdapterInstances('feiertage', function (instances) {
|
|
228
|
+
fillInstances('publicHolInstance', instances, settings['publicHolInstance']);
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
getAdapterInstances('daswetter', function (instances) {
|
|
232
|
+
fillInstances('weatherForInstance', instances, settings['weatherForInstance']);
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
getAdapterInstances('telegram', function (instances) {
|
|
236
|
+
fillInstances('telegramInstance', instances, settings['telegramInstance']);
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
getAdapterInstances('whatsapp-cmb', function (instances) {
|
|
240
|
+
fillInstances('whatsappInstance', instances, settings['whatsappInstance']);
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
getAdapterInstances('email', function (instances) {
|
|
244
|
+
fillInstances('emailInstance', instances, settings['emailInstance']);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
getAdapterInstances('pushover', function (instances) {
|
|
248
|
+
fillInstances('pushoverInstance', instances, settings['pushoverInstance']);
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
sendTo(null, 'getTelegramUser', null, function (obj) {
|
|
252
|
+
fillTelegramUser(settings['telegramUser'], obj);
|
|
253
|
+
});
|
|
254
|
+
fillPosition();
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Automatic filling in of astronomical data if the field is empty.
|
|
259
|
+
* Automatisches Ausfüllen von astronomischen Daten, wenn das Feld leer ist.
|
|
260
|
+
*/
|
|
261
|
+
function fillPosition() {
|
|
262
|
+
socket.emit('getObject', 'system.config', function (err, obj) {
|
|
263
|
+
const $mLongitude = $('#longitude');
|
|
264
|
+
if ($mLongitude.val() === '') {
|
|
265
|
+
$mLongitude.val(obj.common.longitude).trigger('change');
|
|
266
|
+
}
|
|
267
|
+
const $mLatitude = $('#latitude');
|
|
268
|
+
if ($mLatitude.val() === '') {
|
|
269
|
+
$mLatitude.val(obj.common.latitude).trigger('change');
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
*
|
|
276
|
+
* @param id
|
|
277
|
+
* @param obj
|
|
278
|
+
*/
|
|
279
|
+
function fillTelegramUser(id, obj) {
|
|
280
|
+
/*let user = str.replace(/[{}"\\]/g,"").split(',');*/
|
|
281
|
+
/*obj = {"0123456789":{"firstName":"Dirk","userName":"Dirk_Peter"}};*/
|
|
282
|
+
const $sel = $('#telegramUser');
|
|
283
|
+
$sel.html('<option value="allTelegramUsers">' + _('All Receiver') + '</option>');
|
|
284
|
+
for(const key in obj){
|
|
285
|
+
if (obj.hasOwnProperty (key)) {
|
|
286
|
+
const names = [];
|
|
287
|
+
let userName;
|
|
288
|
+
obj[key].userName && names.push(obj[key].userName);
|
|
289
|
+
obj[key].firstName && names.push(obj[key].firstName);
|
|
290
|
+
if (obj[key].userName) {
|
|
291
|
+
userName = obj[key].userName;
|
|
292
|
+
} else {
|
|
293
|
+
userName = obj[key].firstName;
|
|
294
|
+
}
|
|
295
|
+
$sel.append('<option value="' + userName + '"' + (id === userName ? ' selected' : '') + '>' + names.join(' / ') +'</option>');
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
$sel.select();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
*
|
|
303
|
+
* @param {string} id
|
|
304
|
+
* @param arr
|
|
305
|
+
* @param val
|
|
306
|
+
*/
|
|
307
|
+
function fillInstances(id, arr, val) {
|
|
308
|
+
const $sel = $('#' + id);
|
|
309
|
+
$sel.html('<option value="">' + _('none') + '</option>');
|
|
310
|
+
for (let i = 0; i < arr.length; i++) {
|
|
311
|
+
const _id = arr[i]._id.replace('system.adapter.', '');
|
|
312
|
+
$sel.append('<option value="' + _id + '"' + (_id === val ? ' selected' : '') + '>' + _id + '</option>');
|
|
313
|
+
}
|
|
314
|
+
$sel.select();
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
*
|
|
319
|
+
*/
|
|
320
|
+
function tableOnReady() {
|
|
321
|
+
$('#events .table-values-div .table-values .values-buttons[data-command="edit2"]').on('click', function () {
|
|
322
|
+
const id = $(this).data('index');
|
|
323
|
+
initSelectId(function (sid) {
|
|
324
|
+
sid.selectId('show', $('#events .values-input[data-name="name"][data-index="' + id + '"]').val(), function (newId) {
|
|
325
|
+
if (newId) {
|
|
326
|
+
$('#events .values-input[data-name="name"][data-index="' + id + '"]').val(newId).trigger('change');
|
|
327
|
+
socket.emit('getObject', newId, function (err, obj) {
|
|
328
|
+
const name = getName(obj);
|
|
329
|
+
$('#events .values-input[data-name="sprinkleName"][data-index="' + id + '"]').val(name).trigger('change');
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
$('#events .table-values-div .table-values .values-buttons[data-command="edit"]').on('click', function () {
|
|
337
|
+
const id = $(this).data('index');
|
|
338
|
+
$('#triggerID').val($('#events .values-input[data-name="triggerID"][data-index="' + id + '"]').val());
|
|
339
|
+
$('#wateringTime').val($('#events .values-input[data-name="wateringTime"][data-index="' + id + '"]').val());
|
|
340
|
+
$('#wateringAdd').val($('#events .values-input[data-name="wateringAdd"][data-index="' + id + '"]').val());
|
|
341
|
+
$('#wateringInterval').val($('#events .values-input[data-name="wateringInterval"][data-index="' + id + '"]').val());
|
|
342
|
+
$('#addWateringTime').val($('#events .values-input[data-name="addWateringTime"][data-index="' + id + '"]').val());
|
|
343
|
+
$('#addTriggersIrrigation').val($('#events .values-input[data-name="addTriggersIrrigation"][data-index="' + id + '"]').val());
|
|
344
|
+
$('#maxSoilMoistureIrrigation').val($('#events .values-input[data-name="maxSoilMoistureIrrigation"][data-index="' + id + '"]').val());
|
|
345
|
+
$('#maxSoilMoistureRainPct').val($('#events .values-input[data-name="maxSoilMoistureRainPct"][data-index="' + id + '"]').val());
|
|
346
|
+
$('#triggersIrrigation').val($('#events .values-input[data-name="triggersIrrigation"][data-index="' + id + '"]').val());
|
|
347
|
+
$('#pipeFlow').val($('#events .values-input[data-name="pipeFlow"][data-index="' + id + '"]').val());
|
|
348
|
+
$('#methodControlSM').val($('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').val());
|
|
349
|
+
$('#methodControlSM').select().trigger('change');
|
|
350
|
+
$('#triggerSM').val($('#events .values-input[data-name="triggerSM"][data-index="' + id + '"]').val());
|
|
351
|
+
$('#analogZPct').val($('#events .values-input[data-name="analogZPct"][data-index="' + id + '"]').val());
|
|
352
|
+
$('#analogOHPct').val($('#events .values-input[data-name="analogOHPct"][data-index="' + id + '"]').val());
|
|
353
|
+
$('#startDay').val($('#events .values-input[data-name="startDay"][data-index="' + id + '"]').val());
|
|
354
|
+
$('#startDay').select().trigger('change');
|
|
355
|
+
// boolean
|
|
356
|
+
$('#booster').prop('checked', ($('#events .values-input[data-name="booster"][data-index="' + id + '"]')).prop('checked'));
|
|
357
|
+
$('#endIrrigation').prop('checked', ($('#events .values-input[data-name="endIrrigation"][data-index="' +id + '"]')).prop('checked'));
|
|
358
|
+
$('#inGreenhouse').prop('checked', ($('#events .values-input[data-name="inGreenhouse"][data-index="' +id + '"]')).prop('checked'));
|
|
359
|
+
$('#sun').prop('checked', ($('#events .values-input[data-name="sun"][data-index="' +id + '"]')).prop('checked'));
|
|
360
|
+
$('#mon').prop('checked', ($('#events .values-input[data-name="mon"][data-index="' +id + '"]')).prop('checked'));
|
|
361
|
+
$('#tue').prop('checked', ($('#events .values-input[data-name="tue"][data-index="' +id + '"]')).prop('checked'));
|
|
362
|
+
$('#wed').prop('checked', ($('#events .values-input[data-name="wed"][data-index="' +id + '"]')).prop('checked'));
|
|
363
|
+
$('#thur').prop('checked', ($('#events .values-input[data-name="thur"][data-index="' +id + '"]')).prop('checked'));
|
|
364
|
+
$('#fri').prop('checked', ($('#events .values-input[data-name="fri"][data-index="' +id + '"]')).prop('checked'));
|
|
365
|
+
$('#sat').prop('checked', ($('#events .values-input[data-name="sat"][data-index="' +id + '"]')).prop('checked'));
|
|
366
|
+
|
|
367
|
+
$('#dialogDeviceEditSprinkle').html($('#events .values-input[data-name="sprinkleName"][data-index="' + id + '"]').val());
|
|
368
|
+
|
|
369
|
+
setTimeout(function () {
|
|
370
|
+
initDialogSprinkle(function (sid) {
|
|
371
|
+
const newTriggerID = $('#triggerID').val();
|
|
372
|
+
const newWateringTime = $('#wateringTime').val();
|
|
373
|
+
const newWateringAdd = $('#wateringAdd').val();
|
|
374
|
+
const newWateringInterval = $('#wateringInterval').val();
|
|
375
|
+
const newAddWateringTime = $('#addWateringTime').val();
|
|
376
|
+
const newAddTriggersIrrigation = $('#addTriggersIrrigation').val();
|
|
377
|
+
const newMaxSoilMoistureIrrigation = $('#maxSoilMoistureIrrigation').val();
|
|
378
|
+
const newMaxSoilMoistureRainPct = $('#maxSoilMoistureRainPct').val();
|
|
379
|
+
const newTriggersIrrigation = $('#triggersIrrigation').val();
|
|
380
|
+
const newPipeFlow = $('#pipeFlow').val();
|
|
381
|
+
const newMethodControlSM = $('#methodControlSM').val();
|
|
382
|
+
const newTriggerSM = $('#triggerSM').val();
|
|
383
|
+
const newAnalogZPct = $('#analogZPct').val();
|
|
384
|
+
const newAnalogOHPct = $('#analogOHPct').val();
|
|
385
|
+
const newStartDay = $('#startDay').val();
|
|
386
|
+
// boolean
|
|
387
|
+
const newBooster = $('#booster').prop('checked');
|
|
388
|
+
const newEndIrrigation = $('#endIrrigation').prop('checked');
|
|
389
|
+
const newInGreenhouse = $('#inGreenhouse').prop('checked');
|
|
390
|
+
const newSun = $('#sun').prop('checked');
|
|
391
|
+
const newMon = $('#mon').prop('checked');
|
|
392
|
+
const newTue = $('#tue').prop('checked');
|
|
393
|
+
const newWed = $('#wed').prop('checked');
|
|
394
|
+
const newThur = $('#thur').prop('checked');
|
|
395
|
+
const newFri = $('#fri').prop('checked');
|
|
396
|
+
const newSat = $('#sat').prop('checked');
|
|
397
|
+
|
|
398
|
+
$('#events .values-input[data-name="triggerID"][data-index="' + id + '"]').val(newTriggerID).trigger('change');
|
|
399
|
+
$('#events .values-input[data-name="wateringTime"][data-index="' + id + '"]').val(newWateringTime).trigger('change');
|
|
400
|
+
$('#events .values-input[data-name="wateringAdd"][data-index="' + id + '"]').val(newWateringAdd).trigger('change');
|
|
401
|
+
$('#events .values-input[data-name="wateringInterval"][data-index="' + id + '"]').val(newWateringInterval).trigger('change');
|
|
402
|
+
$('#events .values-input[data-name="addWateringTime"][data-index="' + id + '"]').val(newAddWateringTime).trigger('change');
|
|
403
|
+
$('#events .values-input[data-name="addTriggersIrrigation"][data-index="' + id + '"]').val(newAddTriggersIrrigation).trigger('change');
|
|
404
|
+
$('#events .values-input[data-name="maxSoilMoistureIrrigation"][data-index="' + id + '"]').val(newMaxSoilMoistureIrrigation).trigger('change');
|
|
405
|
+
$('#events .values-input[data-name="maxSoilMoistureRainPct"][data-index="' + id + '"]').val(newMaxSoilMoistureRainPct).trigger('change');
|
|
406
|
+
$('#events .values-input[data-name="triggersIrrigation"][data-index="' + id + '"]').val(newTriggersIrrigation).trigger('change');
|
|
407
|
+
$('#events .values-input[data-name="pipeFlow"][data-index="' + id + '"]').val(newPipeFlow).trigger('change');
|
|
408
|
+
$('#events .values-input[data-name="methodControlSM"][data-index="' + id + '"]').val(newMethodControlSM).trigger('change');
|
|
409
|
+
$('#events .values-input[data-name="triggerSM"][data-index="' + id + '"]').val(newTriggerSM).trigger('change');
|
|
410
|
+
$('#events .values-input[data-name="analogZPct"][data-index="' + id + '"]').val(newAnalogZPct).trigger('change');
|
|
411
|
+
$('#events .values-input[data-name="analogOHPct"][data-index="' + id + '"]').val(newAnalogOHPct).trigger('change');
|
|
412
|
+
$('#events .values-input[data-name="startDay"][data-index="' + id + '"]').val(newStartDay).trigger('change');
|
|
413
|
+
// boolean
|
|
414
|
+
$('#events .values-input[data-name="booster"][data-index="' + id + '"]').prop('checked',newBooster);
|
|
415
|
+
$('#events .values-input[data-name="endIrrigation"][data-index="' + id + '"]').prop('checked',newEndIrrigation);
|
|
416
|
+
$('#events .values-input[data-name="inGreenhouse"][data-index="' + id + '"]').prop('checked',newInGreenhouse);
|
|
417
|
+
$('#events .values-input[data-name="sun"][data-index="' + id + '"]').prop('checked',newSun);
|
|
418
|
+
$('#events .values-input[data-name="mon"][data-index="' + id + '"]').prop('checked',newMon);
|
|
419
|
+
$('#events .values-input[data-name="tue"][data-index="' + id + '"]').prop('checked',newTue);
|
|
420
|
+
$('#events .values-input[data-name="wed"][data-index="' + id + '"]').prop('checked',newWed);
|
|
421
|
+
$('#events .values-input[data-name="thur"][data-index="' + id + '"]').prop('checked',newThur);
|
|
422
|
+
$('#events .values-input[data-name="fri"][data-index="' + id + '"]').prop('checked',newFri);
|
|
423
|
+
$('#events .values-input[data-name="sat"][data-index="' + id + '"]').prop('checked',newSat);
|
|
424
|
+
|
|
425
|
+
});
|
|
426
|
+
}, 20);
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* This will be called by the admin adapter when the user presses the Save or Save and Close button
|
|
432
|
+
* Dies wird vom Admin-Adapter aufgerufen, wenn der Benutzer die Schaltfläche Speichern oder Speichern und Schließen drückt
|
|
433
|
+
* @param {object} callback - JSON object which holds keys and their values that will be written to adapter config object
|
|
434
|
+
* - JSON-Objekt, das Schlüssel und deren Werte enthält, die in das Adapterkonfigurationsobjekt geschrieben werden
|
|
435
|
+
*/
|
|
436
|
+
function save(callback) {
|
|
437
|
+
// example: select elements with class=value and build settings object
|
|
438
|
+
// Beispiel: Wählen Sie Elemente mit class = value aus und erstellen Sie das Einstellungsobjekt
|
|
439
|
+
const obj = {};
|
|
440
|
+
$('#mainSettings .value').each(function () {
|
|
441
|
+
const $this = $(this);
|
|
442
|
+
if ($this.attr('type') === 'checkbox') {
|
|
443
|
+
obj[$this.attr('id')] = $this.prop('checked');
|
|
444
|
+
} else if ($this.attr('type') === 'number') {
|
|
445
|
+
obj[$this.attr('id')] = parseFloat($this.val());
|
|
446
|
+
} else {
|
|
447
|
+
obj[$this.attr('id')] = $this.val();
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
|
|
451
|
+
// Get edited table
|
|
452
|
+
obj.events = table2values('events'); //es wird nicht devices abgespeichert, sondern der Inhalt der Tabelle (all Zeilen müssen value="" haben)
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
callback(obj);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Show and hide the display depending on the events
|
|
460
|
+
*
|
|
461
|
+
* Anzeige je nach Ereignissen ein- und ausblenden
|
|
462
|
+
* @param callback
|
|
463
|
+
*/
|
|
464
|
+
function showHideSettings(callback) {
|
|
465
|
+
/** additional irrigation activated =>
|
|
466
|
+
* zusätzliche Bewässerung aktiviert
|
|
467
|
+
* @type {boolean}
|
|
468
|
+
*/
|
|
469
|
+
let selAddStartTime = false;
|
|
470
|
+
|
|
471
|
+
// Zeiteinstellungen => Feiertagseinstellung sichtbar bei combobox
|
|
472
|
+
$('#wateringStartTime').on('change', function () {
|
|
473
|
+
if ($(this).val() === 'livingTime') { /*Start zur festen Zeit*/
|
|
474
|
+
$('.visTimeShift').hide();
|
|
475
|
+
$('.visWeekLiving').show();
|
|
476
|
+
} else if ($(this).val() === 'livingSunrise') { /*Start mit Sonnenaufgang*/
|
|
477
|
+
$('.visTimeShift').show();
|
|
478
|
+
$('.visWeekLiving').hide();
|
|
479
|
+
} else if ($(this).val() === 'livingGoldenHourEnd') { /*Start mit dem Ende der Golden hour*/
|
|
480
|
+
$('.visTimeShift').hide();
|
|
481
|
+
$('.visWeekLiving').hide();
|
|
482
|
+
} else if ($(this).val() === 'livingSunset') { /*Start mit Sonnenaufgang*/
|
|
483
|
+
$('.visTimeShift').show();
|
|
484
|
+
$('.visWeekLiving').hide();
|
|
485
|
+
}
|
|
486
|
+
}).trigger('change');
|
|
487
|
+
|
|
488
|
+
// Pumpeneinstellungen → Zisterne sichtbar bei checkbox
|
|
489
|
+
if ($('#cisternSettings').prop('checked')) {
|
|
490
|
+
$('.cisternObjekt').show();
|
|
491
|
+
} else {
|
|
492
|
+
$('.cisternObjekt').hide();
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
// Additional start time => sichtbar je nach auswahl
|
|
497
|
+
$('#selectAddStartTime').on('change',function(){
|
|
498
|
+
if ($(this).val() === 'noAddStartTime') {
|
|
499
|
+
selAddStartTime = false;
|
|
500
|
+
$('.showGreaterETpCur').hide();
|
|
501
|
+
$('.showAddStartTime').hide();
|
|
502
|
+
$('.showExtSig').hide();
|
|
503
|
+
} else if ($(this).val() === 'greaterETpCurrent') {
|
|
504
|
+
selAddStartTime = true;
|
|
505
|
+
$('.showGreaterETpCur').show();
|
|
506
|
+
$('.showAddStartTime').show();
|
|
507
|
+
$('.showExtSig').hide();
|
|
508
|
+
} else if ($(this).val() === 'withExternalSignal') {
|
|
509
|
+
selAddStartTime = true;
|
|
510
|
+
$('.showGreaterETpCur').hide();
|
|
511
|
+
$('.showAddStartTime').show();
|
|
512
|
+
$('.showExtSig').show();
|
|
513
|
+
} else {
|
|
514
|
+
selAddStartTime = false;
|
|
515
|
+
$('.showGreaterETpCur').hide();
|
|
516
|
+
$('.showAddStartTime').hide();
|
|
517
|
+
$('.showExtSig').hide();
|
|
518
|
+
}
|
|
519
|
+
}).trigger('change');
|
|
520
|
+
|
|
521
|
+
// Zeiteinstellungen => Feiertagseinstellung sichtbar bei checkbox
|
|
522
|
+
const mPublicWeekend = $('#publicWeekend').prop('checked');
|
|
523
|
+
if (mPublicWeekend) {
|
|
524
|
+
$('.publicWeek').show();
|
|
525
|
+
$('.publicWeekHol').show();
|
|
526
|
+
} else {
|
|
527
|
+
$('.publicWeek').hide();
|
|
528
|
+
$('.publicWeekHol').hide();
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
if ($('#publicHolidays').prop('checked') && mPublicWeekend) {
|
|
532
|
+
$('.publicHol').show();
|
|
533
|
+
} else {
|
|
534
|
+
$('.publicHol').hide();
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// zusätzliche Einstellungen => Wettervorhersage
|
|
538
|
+
const mWeatherForecast = $('#weatherForecast').prop('checked');
|
|
539
|
+
if (mWeatherForecast) {
|
|
540
|
+
$('.weatherFor').show();
|
|
541
|
+
} else {
|
|
542
|
+
$('.weatherFor').hide();
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
// individuelle Wettervorhersage
|
|
546
|
+
$('#weatherForecastService').on('change', function () {
|
|
547
|
+
if ($(this).val() === 'ownDataPoint') {
|
|
548
|
+
$('.showOwnDataPoint').show();
|
|
549
|
+
$('.showDasWetter').hide();
|
|
550
|
+
} else if ($(this).val() === 'dasWetter') {
|
|
551
|
+
$('.showOwnDataPoint').hide();
|
|
552
|
+
$('.showDasWetter').show();
|
|
553
|
+
}
|
|
554
|
+
}).trigger('change');
|
|
555
|
+
|
|
556
|
+
// Benachrichtigung Karte Ein / Aus
|
|
557
|
+
if ($('#notificationEnabled').prop('checked')) {
|
|
558
|
+
$('.tab-notification').show();
|
|
559
|
+
} else {
|
|
560
|
+
$('.tab-notification').hide();
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
// Benachrichtigung - Typ auswahl
|
|
565
|
+
$('#notificationsType').on('change', function () {
|
|
566
|
+
if ($(this).val() === 'Telegram') {
|
|
567
|
+
$('.email').hide();
|
|
568
|
+
$('.pushover').hide();
|
|
569
|
+
$('.telegram').show();
|
|
570
|
+
$('.whatsapp').hide();
|
|
571
|
+
} else if ($(this).val() === 'E-Mail') {
|
|
572
|
+
$('.email').show();
|
|
573
|
+
$('.telegram').hide();
|
|
574
|
+
$('.pushover').hide();
|
|
575
|
+
$('.whatsapp').hide();
|
|
576
|
+
} else if ($(this).val() === 'Pushover') {
|
|
577
|
+
$('.pushover').show();
|
|
578
|
+
$('.telegram').hide();
|
|
579
|
+
$('.email').hide();
|
|
580
|
+
$('.whatsapp').hide();
|
|
581
|
+
} else if ($(this).val() === 'WhatsApp') {
|
|
582
|
+
$('.whatsapp').show();
|
|
583
|
+
$('.telegram').hide();
|
|
584
|
+
$('.email').hide();
|
|
585
|
+
$('.pushover').hide();
|
|
586
|
+
}
|
|
587
|
+
}).trigger('change');
|
|
588
|
+
|
|
589
|
+
// Sensorauswahl in Sprinkler - Main settings
|
|
590
|
+
$('#methodControlSM').on('change',function(){
|
|
591
|
+
|
|
592
|
+
if ($(this).val() === 'calculation') {
|
|
593
|
+
if (selAddStartTime) {
|
|
594
|
+
$('.showAddWateringTime').show();
|
|
595
|
+
$('.showAddTriggersIrrigation').hide();
|
|
596
|
+
}else{
|
|
597
|
+
$('.showAddWateringTime').hide();
|
|
598
|
+
$('.showAddTriggersIrrigation').hide();
|
|
599
|
+
}
|
|
600
|
+
$('.visInGreenhouse').show();
|
|
601
|
+
$('.visSensor').hide();
|
|
602
|
+
$('.visAnalog').hide();
|
|
603
|
+
$('.visCalculation').show();
|
|
604
|
+
$('.visNotAnalog').show();
|
|
605
|
+
$('.visFixDay').hide();
|
|
606
|
+
|
|
607
|
+
} else if ($(this).val() === 'bistable') {
|
|
608
|
+
if (mWeatherForecast) {
|
|
609
|
+
$('.visInGreenhouse').show();
|
|
610
|
+
} else {
|
|
611
|
+
$('.visInGreenhouse').hide();
|
|
612
|
+
}
|
|
613
|
+
if (selAddStartTime) {
|
|
614
|
+
$('.showAddWateringTime').show();
|
|
615
|
+
$('.showAddTriggersIrrigation').hide();
|
|
616
|
+
}else{
|
|
617
|
+
$('.showAddWateringTime').hide();
|
|
618
|
+
$('.showAddTriggersIrrigation').hide();
|
|
619
|
+
}
|
|
620
|
+
$('.visSensor').show();
|
|
621
|
+
$('.visAnalog').hide();
|
|
622
|
+
$('.visCalculation').hide();
|
|
623
|
+
$('.visNotAnalog').hide();
|
|
624
|
+
$('.visFixDay').hide();
|
|
625
|
+
|
|
626
|
+
} else if ($(this).val() === 'analog') {
|
|
627
|
+
if (mWeatherForecast) {
|
|
628
|
+
$('.visInGreenhouse').show();
|
|
629
|
+
} else {
|
|
630
|
+
$('.visInGreenhouse').hide();
|
|
631
|
+
}
|
|
632
|
+
if (selAddStartTime) {
|
|
633
|
+
$('.showAddWateringTime').show();
|
|
634
|
+
$('.showAddTriggersIrrigation').show();
|
|
635
|
+
}else{
|
|
636
|
+
$('.showAddWateringTime').hide();
|
|
637
|
+
$('.showAddTriggersIrrigation').hide();
|
|
638
|
+
}
|
|
639
|
+
$('.visSensor').show();
|
|
640
|
+
$('.visAnalog').show();
|
|
641
|
+
$('.visCalculation').hide();
|
|
642
|
+
$('.visNotAnalog').show();
|
|
643
|
+
$('.visFixDay').hide();
|
|
644
|
+
|
|
645
|
+
} else if ($(this).val() === 'fixDay') {
|
|
646
|
+
if (mWeatherForecast) {
|
|
647
|
+
$('.visInGreenhouse').show();
|
|
648
|
+
} else {
|
|
649
|
+
$('.visInGreenhouse').hide();
|
|
650
|
+
}
|
|
651
|
+
if (selAddStartTime) {
|
|
652
|
+
$('.showAddWateringTime').show();
|
|
653
|
+
$('.showAddTriggersIrrigation').hide();
|
|
654
|
+
}else{
|
|
655
|
+
$('.showAddWateringTime').hide();
|
|
656
|
+
$('.showAddTriggersIrrigation').hide();
|
|
657
|
+
}
|
|
658
|
+
$('.visSensor').hide();
|
|
659
|
+
$('.visAnalog').hide();
|
|
660
|
+
$('.visCalculation').hide();
|
|
661
|
+
$('.visNotAnalog').hide();
|
|
662
|
+
$('.visFixDay').show();
|
|
663
|
+
} else {
|
|
664
|
+
$(this).val('calculation');
|
|
665
|
+
if (selAddStartTime) {
|
|
666
|
+
$('.showAddWateringTime').show();
|
|
667
|
+
$('.showAddTriggersIrrigation').show();
|
|
668
|
+
}else{
|
|
669
|
+
$('.showAddWateringTime').hide();
|
|
670
|
+
$('.showAddTriggersIrrigation').hide();
|
|
671
|
+
}
|
|
672
|
+
$('.visInGreenhouse').show();
|
|
673
|
+
$('.visSensor').hide();
|
|
674
|
+
$('.visAnalog').hide();
|
|
675
|
+
$('.visCalculation').show();
|
|
676
|
+
$('.visNotAnalog').show();
|
|
677
|
+
$('.visFixDay').hide();
|
|
678
|
+
}
|
|
679
|
+
}).trigger('change');
|
|
680
|
+
|
|
681
|
+
// Wochentags-Auswahl in Sprinkler - Main settings
|
|
682
|
+
$('#startDay').on('change', function () {
|
|
683
|
+
if (($(this).val() === 'fixDay')) {
|
|
684
|
+
$('.visFixDaysWeek').show();
|
|
685
|
+
} else {
|
|
686
|
+
$('.visFixDaysWeek').hide();
|
|
687
|
+
}
|
|
688
|
+
}).trigger('change');
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
let selectId;
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
*
|
|
695
|
+
* @param {object} callback
|
|
696
|
+
* @returns {*}
|
|
697
|
+
*/
|
|
698
|
+
function initSelectId(callback) {
|
|
699
|
+
if (selectId) {
|
|
700
|
+
return callback(selectId);
|
|
701
|
+
}
|
|
702
|
+
socket.emit('getObjects', function (err, objs) {
|
|
703
|
+
selectId = $('#dialog-select-member').selectId('init', {
|
|
704
|
+
noMultiselect: true,
|
|
705
|
+
objects: objs,
|
|
706
|
+
imgPath: '../../lib/css/fancytree/',
|
|
707
|
+
filter: {type: 'state'},
|
|
708
|
+
name: 'scenes-select-state',
|
|
709
|
+
texts: {
|
|
710
|
+
select: _('Select'),
|
|
711
|
+
cancel: _('Cancel'),
|
|
712
|
+
all: _('All'),
|
|
713
|
+
id: _('ID'),
|
|
714
|
+
name: _('Name'),
|
|
715
|
+
role: _('Role'),
|
|
716
|
+
room: _('Room'),
|
|
717
|
+
value: _('Value'),
|
|
718
|
+
selectid: _('Select ID'),
|
|
719
|
+
from: _('From'),
|
|
720
|
+
lc: _('Last changed'),
|
|
721
|
+
ts: _('Time stamp'),
|
|
722
|
+
wait: _('Processing...'),
|
|
723
|
+
ack: _('Acknowledged'),
|
|
724
|
+
selectAll: _('Select all'),
|
|
725
|
+
unselectAll: _('Deselect all'),
|
|
726
|
+
invertSelection: _('Invert selection')
|
|
727
|
+
},
|
|
728
|
+
columns: ['image', 'name', 'role', 'room']
|
|
729
|
+
});
|
|
730
|
+
callback(selectId);
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
/**
|
|
735
|
+
*
|
|
736
|
+
* @param obj
|
|
737
|
+
* @returns {string|*}
|
|
738
|
+
*/
|
|
739
|
+
function getName(obj) {
|
|
740
|
+
if (obj && obj.common && obj.common.name) {
|
|
741
|
+
let name = obj.common.name;
|
|
742
|
+
if (typeof name === 'object') {
|
|
743
|
+
name = name[systemLang] || name.en;
|
|
744
|
+
}
|
|
745
|
+
return name;
|
|
746
|
+
} else if (obj && obj.name) {
|
|
747
|
+
let name = obj.name;
|
|
748
|
+
if (typeof name === 'object') {
|
|
749
|
+
name = name[systemLang] || name.en;
|
|
750
|
+
}
|
|
751
|
+
return name;
|
|
752
|
+
} else {
|
|
753
|
+
const parts = obj.id.split('.');
|
|
754
|
+
const last = parts.pop();
|
|
755
|
+
return last[0].toUpperCase() + last.substring(1).toLowerCase();
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
*
|
|
761
|
+
* @param callback
|
|
762
|
+
*/
|
|
763
|
+
function initDialogSprinkle(callback) {
|
|
764
|
+
const $editDialog = $('#dialog-sprinkle-edit');
|
|
765
|
+
if (!$editDialog.data('inited')) {
|
|
766
|
+
$editDialog.data('inited', true);
|
|
767
|
+
$editDialog.modal({
|
|
768
|
+
dismissible: false
|
|
769
|
+
});
|
|
770
|
+
|
|
771
|
+
$editDialog.find('.btn-set').on('click', function () {
|
|
772
|
+
const $editDialog = $('#dialog-sprinkle-edit');
|
|
773
|
+
const callback = $editDialog.data('callback');
|
|
774
|
+
if (typeof callback === 'function') callback();
|
|
775
|
+
$editDialog.data('callback', null);
|
|
776
|
+
});
|
|
777
|
+
}
|
|
778
|
+
$editDialog.data('callback', callback);
|
|
779
|
+
$editDialog.modal('open');
|
|
780
780
|
}
|