v0.14.2-connectivity

This commit is contained in:
Mateusz Gruszczyński
2026-09-15 10:02:49 +02:00
parent 2fd7e47eb9
commit c3f6e773f8
41 changed files with 1295 additions and 108 deletions
+9 -6
View File
@@ -127,14 +127,15 @@ function renderPingDialog() {
const toggle = $('#pingToggleButton');
const grid = $('#pingLiveGrid');
if (!dialog || !select || !all || !toggle || !grid) return;
if (!app.pingMonitor.targetId || !app.devices.some(device => device.id === app.pingMonitor.targetId)) app.pingMonitor.targetId = app.devices[0]?.id || '';
select.innerHTML = app.devices.map(device => `<option value="${esc(device.id)}" ${device.id === app.pingMonitor.targetId ? 'selected' : ''}>${esc(device.name)}</option>`).join('');
const localDevices = app.devices.filter(device => device.connection_type !== 'gree_cloud');
if (!app.pingMonitor.targetId || !localDevices.some(device => device.id === app.pingMonitor.targetId)) app.pingMonitor.targetId = localDevices[0]?.id || '';
select.innerHTML = localDevices.map(device => `<option value="${esc(device.id)}" ${device.id === app.pingMonitor.targetId ? 'selected' : ''}>${esc(device.name)}</option>`).join('');
select.disabled = app.pingMonitor.all;
all.checked = app.pingMonitor.all;
toggle.textContent = tr(app.pingMonitor.running ? 'devices.pingStop' : 'devices.pingStart');
toggle.classList.toggle('primary', app.pingMonitor.running);
toggle.classList.toggle('secondary', !app.pingMonitor.running);
const devices = app.pingMonitor.all ? app.devices : app.devices.filter(device => device.id === app.pingMonitor.targetId);
const devices = app.pingMonitor.all ? localDevices : localDevices.filter(device => device.id === app.pingMonitor.targetId);
grid.innerHTML = devices.length ? devices.map(device => {
const samples = pingSamples(device.id);
const stats = pingStats(samples);
@@ -168,7 +169,8 @@ function schedulePingCycle(delay = null) {
async function runPingCycle() {
if (!app.pingMonitor.running || !$('#pingDialog')?.open || app.pingMonitor.inFlight) return;
const targets = app.pingMonitor.all ? [...app.devices] : app.devices.filter(device => device.id === app.pingMonitor.targetId);
const localDevices = app.devices.filter(device => device.connection_type !== 'gree_cloud');
const targets = app.pingMonitor.all ? [...localDevices] : localDevices.filter(device => device.id === app.pingMonitor.targetId);
if (!targets.length) { renderPingDialog(); schedulePingCycle(); return; }
app.pingMonitor.inFlight = true;
await Promise.allSettled(targets.map(async (device, index) => {
@@ -190,7 +192,7 @@ async function runPingCycle() {
}
function startPingMonitor() {
if (!app.devices.length) return;
if (!app.devices.some(device => device.connection_type !== 'gree_cloud')) return;
app.pingMonitor.running = true;
renderPingDialog();
clearTimeout(app.pingMonitor.timer);
@@ -206,7 +208,8 @@ function stopPingMonitor() {
}
function openDevicePing(id) {
app.pingMonitor.targetId = id || app.devices[0]?.id || '';
const localDevices = app.devices.filter(device => device.connection_type !== 'gree_cloud');
app.pingMonitor.targetId = (id && localDevices.some(device => device.id === id)) ? id : (localDevices[0]?.id || '');
app.pingMonitor.all = false;
openDialog('pingDialog');
renderPingDialog();