@homebridge-plugins/homebridge-smarthq 0.4.0-beta.5 → 0.4.0-beta.7
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/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts +2 -2
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +4 -4
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.js +2 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.d.ts +11 -4
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.js +82 -31
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.d.ts +2 -0
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +10 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +0 -4
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +2 -26
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalSchedulingManager.d.ts +15 -0
- package/dist/devices/OpalIceMaker/Managers/OpalSchedulingManager.d.ts.map +1 -0
- package/dist/devices/OpalIceMaker/Managers/OpalSchedulingManager.js +38 -0
- package/dist/devices/OpalIceMaker/Managers/OpalSchedulingManager.js.map +1 -0
- package/dist/devices/OpalIceMaker/Managers/index.d.ts +1 -0
- package/dist/devices/OpalIceMaker/Managers/index.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/index.js +1 -0
- package/dist/devices/OpalIceMaker/Managers/index.js.map +1 -1
- package/dist/devices/OpalIceMaker/index.d.ts +2 -1
- package/dist/devices/OpalIceMaker/index.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/index.js +9 -4
- package/dist/devices/OpalIceMaker/index.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +328 -30
- package/dist/settings.d.ts +30 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/docs/classes/SmartHQPlatform.html +8 -8
- package/docs/functions/default.html +1 -1
- package/docs/interfaces/DeviceOptions.html +2 -2
- package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
- package/docs/interfaces/SmartHqContext.html +2 -2
- package/docs/interfaces/credentials.html +2 -2
- package/docs/interfaces/devicesConfig.html +2 -2
- package/docs/interfaces/options.html +2 -2
- package/docs/variables/API_URL.html +1 -1
- package/docs/variables/ERD_CODES.html +1 -1
- package/docs/variables/ERD_TYPES.html +1 -1
- package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -1
- package/docs/variables/LOGIN_URL.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_ID.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -1
- package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -1
- package/docs/variables/PLATFORM_NAME.html +1 -1
- package/docs/variables/PLUGIN_NAME.html +1 -1
- package/docs/variables/SECURE_URL.html +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/devices/OpalIceMaker/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAG7E,MAAM,OAAO,eAAgB,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/devices/OpalIceMaker/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAG7E,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAYlC;IAEA;IAbJ,YAAY,CAAqB;IAChC,iBAAiB,CAA0B;IAC5C,aAAa,CAAsB;IAClC,cAAc,CAAoB;IACnC,eAAe,CAAyB;IACvC,eAAe,CAAwB;IACxC,wBAAwB,CAAiC;IACzD,cAAc,CAAuB;IACrC,iBAAiB,CAAuB;IAE/C,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE7G,kCAAkC;QAClC,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QACxE,IAAI,CAAC,wBAAwB,GAAG,IAAI,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAChG,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAC5E,IAAI,CAAC,eAAe,GAAG,IAAI,sBAAsB,CAC/C,QAAQ,EACR,SAAS,EACT,MAAM,CACP,CAAA;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAClF,IAAI,CAAC,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAChF,wBAAwB;QAExB,IAAI,CAAC,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAErF,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,CAC1C,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,MAAM,CACP,CAAA;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAEpF,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAA;QAC7C,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAA;QAC9C,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAA;IAC7C,CAAC;IAED,QAAQ;QACN,yBAAyB;QACzB,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAA;QAC5C,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAA;IAC/C,CAAC;CACF"}
|
|
@@ -107,6 +107,65 @@
|
|
|
107
107
|
target="_blank">Changelog</a>
|
|
108
108
|
</li>
|
|
109
109
|
</ul>
|
|
110
|
+
<style>
|
|
111
|
+
/* iOS Switch Style */
|
|
112
|
+
.ios-switch {
|
|
113
|
+
position: relative;
|
|
114
|
+
display: inline-block;
|
|
115
|
+
width: 42px;
|
|
116
|
+
height: 24px;
|
|
117
|
+
margin: 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.ios-switch input {
|
|
121
|
+
opacity: 0;
|
|
122
|
+
width: 0;
|
|
123
|
+
height: 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.slider {
|
|
127
|
+
position: absolute;
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
top: 0;
|
|
130
|
+
left: 0;
|
|
131
|
+
right: 0;
|
|
132
|
+
bottom: 0;
|
|
133
|
+
background-color: #e4e4e4;
|
|
134
|
+
transition: .3s;
|
|
135
|
+
border-radius: 34px;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.slider:before {
|
|
139
|
+
position: absolute;
|
|
140
|
+
content: "";
|
|
141
|
+
height: 20px;
|
|
142
|
+
width: 20px;
|
|
143
|
+
left: 2px;
|
|
144
|
+
bottom: 2px;
|
|
145
|
+
background-color: white;
|
|
146
|
+
transition: .3s;
|
|
147
|
+
border-radius: 50%;
|
|
148
|
+
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
input:checked+.slider {
|
|
152
|
+
background-color: #FFA002;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
input:focus+.slider {
|
|
156
|
+
box-shadow: 0 0 1px #FFA002;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
input:checked+.slider:before {
|
|
160
|
+
transform: translateX(18px);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Add this to ensure the switch works with your form handling */
|
|
164
|
+
.ios-switch input:disabled+.slider {
|
|
165
|
+
opacity: 0.5;
|
|
166
|
+
cursor: not-allowed;
|
|
167
|
+
}
|
|
168
|
+
</style>
|
|
110
169
|
</div>
|
|
111
170
|
<script>
|
|
112
171
|
(async () => {
|
|
@@ -168,6 +227,7 @@
|
|
|
168
227
|
const advancedOptions = thisAcc.services.filter((svc) => !!svc.characteristics.find((char) => char.displayName === 'Product Data'))
|
|
169
228
|
|
|
170
229
|
if (advancedOptions.length) {
|
|
230
|
+
|
|
171
231
|
// currently only supporting one accessory for now - opal
|
|
172
232
|
const raw = advancedOptions[0].characteristics.find((char) => char.displayName === 'Product Data').value.split(',')
|
|
173
233
|
raw.forEach((r) => {
|
|
@@ -176,42 +236,280 @@
|
|
|
176
236
|
const metadata = Object.fromEntries(params)
|
|
177
237
|
const th = document.createElement('th')
|
|
178
238
|
th.scope = 'row'
|
|
239
|
+
th.style.width = '50%'
|
|
179
240
|
th.innerHTML = metadata.label?.replaceAll('_', ' ')
|
|
180
241
|
tr.appendChild(th)
|
|
242
|
+
|
|
181
243
|
const td = document.createElement('td')
|
|
244
|
+
td.style.borderTop = '1px solid white'
|
|
245
|
+
if (metadata.type === 'scheduler') {
|
|
246
|
+
// Create a button to open the scheduler dialog
|
|
247
|
+
const button = document.createElement('button');
|
|
248
|
+
button.className = 'btn btn-sm btn-primary';
|
|
249
|
+
button.innerHTML = 'Configure Schedule';
|
|
250
|
+
button.style.color = 'white'
|
|
182
251
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
:
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
...currentConfig[0].deviceOptions,
|
|
204
|
-
[metadata.device]: {
|
|
205
|
-
...currentConfig[0].deviceOptions?.[metadata.device],
|
|
206
|
-
[metadata.indicator]: value
|
|
207
|
-
}
|
|
252
|
+
// Create a unique ID for this dialog
|
|
253
|
+
const dialogId = `scheduler-dialog-${metadata.device}-${metadata.indicator}`;
|
|
254
|
+
|
|
255
|
+
// Get existing schedule data or create a default one
|
|
256
|
+
// Structure includes enabled property for each day
|
|
257
|
+
const defaultSchedule = {
|
|
258
|
+
Monday: { time: '08:00', enabled: false },
|
|
259
|
+
Tuesday: { time: '08:00', enabled: false },
|
|
260
|
+
Wednesday: { time: '08:00', enabled: false },
|
|
261
|
+
Thursday: { time: '08:00', enabled: false },
|
|
262
|
+
Friday: { time: '08:00', enabled: false },
|
|
263
|
+
Saturday: { time: '08:00', enabled: false },
|
|
264
|
+
Sunday: { time: '08:00', enabled: false }
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
// Parse existing value if available
|
|
268
|
+
let scheduleData = defaultSchedule;
|
|
269
|
+
try {
|
|
270
|
+
if (currentConfig[0].deviceOptions?.[metadata.device]?.[metadata.indicator]) {
|
|
271
|
+
scheduleData = currentConfig[0].deviceOptions[metadata.device][metadata.indicator]
|
|
208
272
|
}
|
|
273
|
+
} catch (e) {
|
|
274
|
+
console.error('Error parsing existing schedule data', e);
|
|
209
275
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
276
|
+
|
|
277
|
+
// Create the dialog element with a custom overlay
|
|
278
|
+
const dialogOverlay = document.createElement('div');
|
|
279
|
+
dialogOverlay.id = dialogId;
|
|
280
|
+
dialogOverlay.style.display = 'none';
|
|
281
|
+
dialogOverlay.style.position = 'fixed';
|
|
282
|
+
dialogOverlay.style.top = '0';
|
|
283
|
+
dialogOverlay.style.left = '0';
|
|
284
|
+
dialogOverlay.style.width = '100%';
|
|
285
|
+
dialogOverlay.style.height = '100%';
|
|
286
|
+
dialogOverlay.style.backgroundColor = 'rgba(0,0,0,0.5)';
|
|
287
|
+
dialogOverlay.style.zIndex = '1000';
|
|
288
|
+
dialogOverlay.style.overflow = 'auto';
|
|
289
|
+
|
|
290
|
+
// Create the dialog content with Bootstrap styling classes
|
|
291
|
+
dialogOverlay.innerHTML = `
|
|
292
|
+
<div style="display: flex; align-items: center; justify-content: center; height: 100%;">
|
|
293
|
+
<div class="card" style="width: 90%; max-width: 500px;">
|
|
294
|
+
<div class="card-header">
|
|
295
|
+
<h5 class="mb-0">${metadata.label?.replaceAll('_', ' ') || 'Weekly Schedule'}</h5>
|
|
296
|
+
<button type="button" class="close" id="close-${dialogId}" aria-label="Close" style="position: absolute; right: .5rem; top: .5rem; border: none; background-color: transparent;">
|
|
297
|
+
<span aria-hidden="true">×</span>
|
|
298
|
+
</button>
|
|
299
|
+
</div>
|
|
300
|
+
<div class="card-body">
|
|
301
|
+
<div class="form-group row align-items-center table-active" style="background-color: #6c757d; display: flex;">
|
|
302
|
+
<label class="col-md-3 col-form-label" style="flex: .35; border: 1.5px solid rgb(91.8, 99.45, 106.25); padding: .25rem;">Day</label>
|
|
303
|
+
<label class="col-sm-3 col-form-label" style="flex: .25; border: 1.5px solid rgb(91.8, 99.45, 106.25); padding: .25rem;">Enabled</label>
|
|
304
|
+
<label class="col-sm-3 col-form-label" style="flex: 1; border: 1.5px solid rgb(91.8, 99.45, 106.25); padding: .25rem;">Start Time</label>
|
|
305
|
+
</div>
|
|
306
|
+
<form id="scheduler-form-${dialogId}">
|
|
307
|
+
${Object.keys(scheduleData).map(day => `
|
|
308
|
+
<div class="form-group row align-items-center" style="display: flex;">
|
|
309
|
+
<label class="col-sm-3 col-form-label" style="border: 1.5px solid rgb(91.8, 99.45, 106.25); flex: .35; height: 2.75rem; padding: .25rem;">${day}</label>
|
|
310
|
+
|
|
311
|
+
<div class="col-sm-2 d-flex align-items-center" style="border: 1.5px solid rgb(91.8, 99.45, 106.25); flex: .25; height: 2.75rem; padding: .25rem;">
|
|
312
|
+
<label class="ios-switch" style="margin-bottom: 0; width: 42px; height: 24px;">
|
|
313
|
+
<input type="checkbox" id="enable-${dialogId}-${day}" name="enable-${day}"
|
|
314
|
+
${scheduleData[day].enabled ? 'checked' : ''}>
|
|
315
|
+
<span class="slider"></span>
|
|
316
|
+
</label>
|
|
317
|
+
</div>
|
|
318
|
+
|
|
319
|
+
<div class="col-sm-7" style="display: flex; flex: 1; height: 2.75rem; padding: .25rem; border: 1.5px solid #6c757d;">
|
|
320
|
+
<input type="time" class="form-control" name="time-${day}" value="${scheduleData[day].time}"
|
|
321
|
+
${!scheduleData[day].enabled ? 'disabled' : ''}>
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
`).join('')}
|
|
325
|
+
</form>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="card-footer d-flex justify-content-end" style="column-gap: .5rem;">
|
|
328
|
+
<button type="button" class="btn btn-secondary mr-2" id="cancel-${dialogId}">Cancel</button>
|
|
329
|
+
<button type="button" class="btn btn-primary" id="save-${dialogId}">Save</button>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
`;
|
|
334
|
+
|
|
335
|
+
// Add the dialog to the document
|
|
336
|
+
document.body.appendChild(dialogOverlay);
|
|
337
|
+
|
|
338
|
+
// Show dialog function
|
|
339
|
+
const showDialog = () => {
|
|
340
|
+
dialogOverlay.style.display = 'block';
|
|
341
|
+
document.body.style.overflow = 'hidden'; // Prevent scrolling while dialog is open
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
// Hide dialog function
|
|
345
|
+
const hideDialog = () => {
|
|
346
|
+
dialogOverlay.style.display = 'none';
|
|
347
|
+
document.body.style.overflow = ''; // Restore scrolling
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
// Add event listeners
|
|
351
|
+
button.addEventListener('click', showDialog);
|
|
352
|
+
|
|
353
|
+
// Close button handler
|
|
354
|
+
document.getElementById(`close-${dialogId}`).addEventListener('click', hideDialog);
|
|
355
|
+
|
|
356
|
+
// Cancel button handler
|
|
357
|
+
document.getElementById(`cancel-${dialogId}`).addEventListener('click', hideDialog);
|
|
358
|
+
|
|
359
|
+
// Add event listeners to enable/disable time inputs based on checkbox state
|
|
360
|
+
Object.keys(scheduleData).forEach(day => {
|
|
361
|
+
const enableCheckbox = document.getElementById(`enable-${dialogId}-${day}`);
|
|
362
|
+
const timeInput = enableCheckbox.closest('.form-group').querySelector('input[type="time"]');
|
|
363
|
+
|
|
364
|
+
enableCheckbox.addEventListener('change', () => {
|
|
365
|
+
timeInput.disabled = !enableCheckbox.checked;
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
// Save button handler
|
|
370
|
+
document.getElementById(`save-${dialogId}`).addEventListener('click', async () => {
|
|
371
|
+
// Show spinner while saving
|
|
372
|
+
homebridge.showSpinner();
|
|
373
|
+
|
|
374
|
+
try {
|
|
375
|
+
// Collect the schedule data from the form
|
|
376
|
+
const form = document.getElementById(`scheduler-form-${dialogId}`);
|
|
377
|
+
const formElements = form.elements;
|
|
378
|
+
const newScheduleData = {};
|
|
379
|
+
|
|
380
|
+
// Process the form data
|
|
381
|
+
Object.keys(scheduleData).forEach(day => {
|
|
382
|
+
const enabled = formElements[`enable-${day}`].checked;
|
|
383
|
+
const time = formElements[`time-${day}`].value;
|
|
384
|
+
|
|
385
|
+
newScheduleData[day] = {
|
|
386
|
+
time: time,
|
|
387
|
+
enabled: enabled
|
|
388
|
+
};
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
// Update the config
|
|
392
|
+
currentConfig[0] = {
|
|
393
|
+
...currentConfig[0],
|
|
394
|
+
deviceOptions: {
|
|
395
|
+
...currentConfig[0].deviceOptions,
|
|
396
|
+
[metadata.device]: {
|
|
397
|
+
...currentConfig[0].deviceOptions?.[metadata.device],
|
|
398
|
+
[metadata.indicator]: newScheduleData
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
|
|
403
|
+
// Save the config
|
|
404
|
+
await homebridge.updatePluginConfig([...currentConfig]);
|
|
405
|
+
await homebridge.savePluginConfig();
|
|
406
|
+
|
|
407
|
+
// Show a success message
|
|
408
|
+
homebridge.toast.success('Schedule saved successfully');
|
|
409
|
+
} catch (error) {
|
|
410
|
+
homebridge.toast.error(`Failed to save schedule: ${error.message}`);
|
|
411
|
+
} finally {
|
|
412
|
+
// Hide spinner and dialog
|
|
413
|
+
homebridge.hideSpinner();
|
|
414
|
+
hideDialog();
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
// Close dialog when clicking outside of it
|
|
419
|
+
dialogOverlay.addEventListener('click', (event) => {
|
|
420
|
+
if (event.target === dialogOverlay) {
|
|
421
|
+
hideDialog();
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
td.appendChild(button);
|
|
426
|
+
tr.appendChild(td)
|
|
427
|
+
document.getElementById('deviceAdvancedOptions').appendChild(tr)
|
|
428
|
+
} else if (metadata.type === 'number') {
|
|
429
|
+
|
|
430
|
+
const input = document.createElement('input');
|
|
431
|
+
input.type = 'number';
|
|
432
|
+
input.placeholder = metadata.placeholder?.replaceAll('_', ' ') || '';
|
|
433
|
+
const existingDefaultValue = Number(currentConfig[0].deviceOptions?.[metadata.device]?.[metadata.indicator] ?? 0);
|
|
434
|
+
input.defaultValue = existingDefaultValue;
|
|
435
|
+
td.appendChild(input);
|
|
436
|
+
tr.appendChild(td)
|
|
437
|
+
document.getElementById('deviceAdvancedOptions').appendChild(tr)
|
|
438
|
+
input.addEventListener('change', async () => {
|
|
439
|
+
const value = Number(event.target.value);
|
|
440
|
+
currentConfig[0] = {
|
|
441
|
+
...currentConfig[0],
|
|
442
|
+
deviceOptions: {
|
|
443
|
+
...currentConfig[0].deviceOptions,
|
|
444
|
+
[metadata.device]: {
|
|
445
|
+
...currentConfig[0].deviceOptions?.[metadata.device],
|
|
446
|
+
[metadata.indicator]: value
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
await homebridge.updatePluginConfig([...currentConfig]);
|
|
451
|
+
await homebridge.savePluginConfig();
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
} else if (metadata.type === 'boolean') {
|
|
455
|
+
const switchDiv = document.createElement('div');
|
|
456
|
+
const existingDefaultValue = Boolean(currentConfig[0].deviceOptions?.[metadata.device]?.[metadata.indicator] ?? false);
|
|
457
|
+
// input.type = 'checkbox';
|
|
458
|
+
switchDiv.innerHTML = `
|
|
459
|
+
<label class="ios-switch" style="margin-bottom: 0; width: 42px; height: 24px;">
|
|
460
|
+
<input type="checkbox" id="enable-${metadata.device}-${metadata.indicator}" name="enable-${metadata.indicator}"
|
|
461
|
+
${existingDefaultValue ? 'checked' : ''}>
|
|
462
|
+
<span class="slider"></span>
|
|
463
|
+
</label>
|
|
464
|
+
`
|
|
465
|
+
|
|
466
|
+
td.appendChild(switchDiv);
|
|
467
|
+
tr.appendChild(td)
|
|
468
|
+
document.getElementById('deviceAdvancedOptions').appendChild(tr)
|
|
469
|
+
|
|
470
|
+
const enableCheckbox = document.getElementById(`enable-${metadata.device}-${metadata.indicator}`);
|
|
471
|
+
|
|
472
|
+
enableCheckbox.addEventListener('change', async () => {
|
|
473
|
+
const value = Boolean(enableCheckbox.checked ?? false);
|
|
474
|
+
currentConfig[0] = {
|
|
475
|
+
...currentConfig[0],
|
|
476
|
+
deviceOptions: {
|
|
477
|
+
...currentConfig[0].deviceOptions,
|
|
478
|
+
[metadata.device]: {
|
|
479
|
+
...currentConfig[0].deviceOptions?.[metadata.device],
|
|
480
|
+
[metadata.indicator]: value
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
};
|
|
484
|
+
await homebridge.updatePluginConfig([...currentConfig]);
|
|
485
|
+
await homebridge.savePluginConfig();
|
|
486
|
+
});
|
|
487
|
+
} else {
|
|
488
|
+
const input = document.createElement('input');
|
|
489
|
+
input.type = 'text';
|
|
490
|
+
input.placeholder = metadata.placeholder?.replaceAll('_', ' ') || '';
|
|
491
|
+
const existingDefaultValue = currentConfig[0].deviceOptions?.[metadata.device]?.[metadata.indicator] ?? "";
|
|
492
|
+
input.defaultValue = existingDefaultValue;
|
|
493
|
+
td.appendChild(input);
|
|
494
|
+
tr.appendChild(td)
|
|
495
|
+
document.getElementById('deviceAdvancedOptions').appendChild(tr)
|
|
496
|
+
|
|
497
|
+
input.addEventListener('change', async () => {
|
|
498
|
+
const value = event.target.value ?? "";
|
|
499
|
+
currentConfig[0] = {
|
|
500
|
+
...currentConfig[0],
|
|
501
|
+
deviceOptions: {
|
|
502
|
+
...currentConfig[0].deviceOptions,
|
|
503
|
+
[metadata.device]: {
|
|
504
|
+
...currentConfig[0].deviceOptions?.[metadata.device],
|
|
505
|
+
[metadata.indicator]: value
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
await homebridge.updatePluginConfig([...currentConfig]);
|
|
510
|
+
await homebridge.savePluginConfig();
|
|
511
|
+
});
|
|
512
|
+
}
|
|
215
513
|
})
|
|
216
514
|
}
|
|
217
515
|
homebridge.hideSpinner();
|
package/dist/settings.d.ts
CHANGED
|
@@ -51,6 +51,36 @@ interface OpalOptions {
|
|
|
51
51
|
oplHKCAddWaterNotificationPath?: string;
|
|
52
52
|
oplHKCDescaleNotificationPath?: string;
|
|
53
53
|
oplAutoShutoffOnBlockingEvent?: boolean;
|
|
54
|
+
oplIceProductionSchedule?: {
|
|
55
|
+
Monday: {
|
|
56
|
+
time: string;
|
|
57
|
+
enabled: boolean;
|
|
58
|
+
};
|
|
59
|
+
Tuesday: {
|
|
60
|
+
time: string;
|
|
61
|
+
enabled: boolean;
|
|
62
|
+
};
|
|
63
|
+
Wednesday: {
|
|
64
|
+
time: string;
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
};
|
|
67
|
+
Thursday: {
|
|
68
|
+
time: string;
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
};
|
|
71
|
+
Friday: {
|
|
72
|
+
time: string;
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
};
|
|
75
|
+
Saturday: {
|
|
76
|
+
time: string;
|
|
77
|
+
enabled: boolean;
|
|
78
|
+
};
|
|
79
|
+
Sunday: {
|
|
80
|
+
time: string;
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
54
84
|
}
|
|
55
85
|
export interface DeviceOptions {
|
|
56
86
|
opal?: OpalOptions;
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,GAAG,MAAM,QAAQ,CAAA;AAIxB;;GAEG;AACH,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC;;GAEG;AACH,eAAO,MAAM,WAAW,2CAA2C,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,SAAS,gDAAgD,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,UAAU,6CAA6C,CAAA;AAGpE,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC,CAAC,EAAE,MAAM,CAAA;CAC9C;AAED,UAAU,WAAW;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mCAAmC,CAAC,EAAE,MAAM,CAAA;IAC5C,sCAAsC,CAAC,EAAE,MAAM,CAAA;IAC/C,uCAAuC,CAAC,EAAE,MAAM,CAAA;IAChD,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC,6BAA6B,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,GAAG,MAAM,QAAQ,CAAA;AAIxB;;GAEG;AACH,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC;;GAEG;AACH,eAAO,MAAM,WAAW,2CAA2C,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,SAAS,gDAAgD,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,UAAU,6CAA6C,CAAA;AAGpE,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC,CAAC,EAAE,MAAM,CAAA;CAC9C;AAED,UAAU,WAAW;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mCAAmC,CAAC,EAAE,MAAM,CAAA;IAC5C,sCAAsC,CAAC,EAAE,MAAM,CAAA;IAC/C,uCAAuC,CAAC,EAAE,MAAM,CAAA;IAChD,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IACvC,wBAAwB,CAAC,EAAE;QACzB,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAC;QACF,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAC;QACF,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAC;QACF,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAC;QACF,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAC;QACF,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAC;QACF,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAA;SACjB,CAAA;KACF,CAAA;CACF;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;CACF;AAGD,eAAO,MAAM,gBAAgB,6CAA6C,CAAA;AAC1E,eAAO,MAAM,oBAAoB,qEAAqE,CAAA;AACtG,eAAO,MAAM,mBAAmB,uEAAuE,CAAA;AACvG,eAAO,MAAM,OAAO,8CAA8C,CAAA;AAClE,eAAO,MAAM,iBAAiB,QAAY,CAAA;AAE1C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJrB,CAAA;AAED,eAAO,MAAM,SAAS,wBAAoB,CAAA"}
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAMA,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;AAEtB;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,wCAAwC,CAAA;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,6CAA6C,CAAA;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,0CAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|