From 241d8d5a2588bfb5e609ac0839828be307672aca Mon Sep 17 00:00:00 2001 From: Jandro Date: Mon, 8 Dec 2025 18:58:59 +0100 Subject: [PATCH 1/3] fix(ups): convert estimatedRuntime from minutes to seconds The TIMELEFT value from apcupsd is returned in minutes, but the GraphQL schema documentation states it should be in seconds. This fix converts the value by multiplying by 60 to match the documented API contract. Fixes #1821 --- api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts b/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts index ed2eab9dc9..f3c94ae254 100644 --- a/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts +++ b/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts @@ -21,7 +21,10 @@ export class UPSResolver { status: upsData.STATUS || 'Online', battery: { chargeLevel: parseInt(upsData.BCHARGE || '100', 10), - estimatedRuntime: parseInt(upsData.TIMELEFT || '3600', 10), + // Convert TIMELEFT from minutes (apcupsd format) to seconds + estimatedRuntime: Math.round( + parseFloat(upsData.TIMELEFT || '60') * 60 + ), health: 'Good', }, power: { From 77026b3c19ece00510de0a604bbd2f07e1e36459 Mon Sep 17 00:00:00 2001 From: Jandro Date: Wed, 10 Dec 2025 21:08:39 +0100 Subject: [PATCH 2/3] fix: convert UPS TIMELEFT from minutes to seconds --- api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts b/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts index f3c94ae254..c70e48d05a 100644 --- a/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts +++ b/api/src/unraid-api/graph/resolvers/ups/ups.resolver.ts @@ -22,9 +22,7 @@ export class UPSResolver { battery: { chargeLevel: parseInt(upsData.BCHARGE || '100', 10), // Convert TIMELEFT from minutes (apcupsd format) to seconds - estimatedRuntime: Math.round( - parseFloat(upsData.TIMELEFT || '60') * 60 - ), + estimatedRuntime: Math.round(parseFloat(upsData.TIMELEFT || '60') * 60), health: 'Good', }, power: { From b605030640006995de2bfb333ab58fa9e75f7919 Mon Sep 17 00:00:00 2001 From: Jandro Date: Wed, 10 Dec 2025 21:14:41 +0100 Subject: [PATCH 3/3] test: update UPS test data to use minutes for TIMELEFT --- api/src/unraid-api/graph/resolvers/ups/ups.resolver.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/unraid-api/graph/resolvers/ups/ups.resolver.spec.ts b/api/src/unraid-api/graph/resolvers/ups/ups.resolver.spec.ts index 8d5118424f..a9b99077dc 100644 --- a/api/src/unraid-api/graph/resolvers/ups/ups.resolver.spec.ts +++ b/api/src/unraid-api/graph/resolvers/ups/ups.resolver.spec.ts @@ -22,7 +22,7 @@ describe('UPSResolver', () => { MODEL: 'Test UPS', STATUS: 'Online', BCHARGE: '100', - TIMELEFT: '3600', + TIMELEFT: '60', // 60 minutes (apcupsd format) LINEV: '120.5', OUTPUTV: '120.5', LOADPCT: '25',