···
234
234
function valueAndUnit(v: any): { value: string | number | null; unit?: string } {
235
235
if (v == null) return { value: null };
236
236
if (typeof v === "object" && ("value" in v)) {
237
237
-
return { value: (v as any).value, unit: (v as any).unit };
237
237
+
// Stelle sicher, dass "0" und 0 als gültige Werte behandelt werden
238
238
+
const value = (v as any).value;
239
239
+
return { value: value, unit: (v as any).unit };
238
240
}
239
241
return { value: v };
240
242
}
···
247
249
* @private
248
250
*/
249
251
function fmtVU(vu: { value: string | number | null; unit?: string }, fallbackUnit?: string) {
252
252
+
// Prüfe explizit auf null und leere Strings, aber nicht auf 0
250
253
if (vu.value == null || vu.value === "") return "—";
254
254
+
255
255
+
// Stelle sicher, dass 0 und "0" korrekt angezeigt werden
251
256
const unit = vu.unit ?? fallbackUnit ?? "";
257
257
+
258
258
+
// Wenn der Wert 0 oder "0" oder "0.0" ist, zeige "0" mit der Einheit an
259
259
+
const numValue = Number(vu.value);
260
260
+
if (numValue === 0) {
261
261
+
return `0${unit ? ` ${unit}` : ""}`;
262
262
+
}
263
263
+
252
264
return `${vu.value}${unit ? ` ${unit}` : ""}`;
253
265
}
254
266
···
783
795
784
796
// Rain & solar
785
797
const rainRate = valueAndUnit(tryRead(payload, "rainfall.rain_rate") ?? tryRead(payload, "rain.rate"));
786
786
-
const rainHourly = valueAndUnit(tryRead(payload, "rainfall.hourly"));
798
798
+
const rainHourly = valueAndUnit(tryRead(payload, "rainfall.1_hour") ?? tryRead(payload, "rainfall.hourly"));
787
799
const rainDaily = valueAndUnit(tryRead(payload, "rainfall.daily"));
788
800
const rainWeekly = valueAndUnit(tryRead(payload, "rainfall.weekly"));
789
801
const rainMonthly = valueAndUnit(tryRead(payload, "rainfall.monthly"));
···
212
212
function valueAndUnit(v: any): { value: string | number | null; unit?: string } {
213
213
if (v == null) return { value: null };
214
214
if (typeof v === "object" && ("value" in v)) {
215
215
-
return { value: (v as any).value, unit: (v as any).unit };
215
215
+
// Stelle sicher, dass "0" und 0 als gültige Werte behandelt werden
216
216
+
const value = (v as any).value;
217
217
+
return { value: value, unit: (v as any).unit };
216
218
}
217
219
return { value: v };
218
220
}
219
221
220
222
function fmtVU(vu: { value: string | number | null; unit?: string }, fallbackUnit?: string) {
223
223
+
// Prüfe explizit auf null und leere Strings, aber nicht auf 0
221
224
if (vu.value == null || vu.value === "") return "—";
225
225
+
226
226
+
// Stelle sicher, dass 0 und "0" korrekt angezeigt werden
222
227
const unit = vu.unit ?? fallbackUnit ?? "";
228
228
+
229
229
+
// Wenn der Wert 0 oder "0" oder "0.0" ist, zeige "0" mit der Einheit an
230
230
+
const numValue = Number(vu.value);
231
231
+
if (numValue === 0) {
232
232
+
return `0${unit ? ` ${unit}` : ""}`;
233
233
+
}
234
234
+
223
235
return `${vu.value}${unit ? ` ${unit}` : ""}`;
224
236
}
225
237
···
351
363
// Rainfall
352
364
const rainRate = valueAndUnit(tryRead(payload, "rainfall.rain_rate") ?? tryRead(payload, "rain.rate"));
353
365
const rainDaily = valueAndUnit(tryRead(payload, "rainfall.daily"));
354
354
-
const rainHourly = valueAndUnit(tryRead(payload, "rainfall.hourly"));
366
366
+
const rainHourly = valueAndUnit(tryRead(payload, "rainfall.1_hour") ?? tryRead(payload, "rainfall.hourly"));
355
367
const rainWeekly = valueAndUnit(tryRead(payload, "rainfall.weekly"));
356
368
const rainMonthly = valueAndUnit(tryRead(payload, "rainfall.monthly"));
357
369
const rainYearly = valueAndUnit(tryRead(payload, "rainfall.yearly"));
···
273
273
numVal(tryRead(payload, "pressure.relative") ?? tryRead(payload, "barometer.relative") ?? tryRead(payload, "barometer.rel")),
274
274
numVal(tryRead(payload, "solar_and_uvi.solar")),
275
275
numVal(tryRead(payload, "solar_and_uvi.uvi")),
276
276
-
numVal(tryRead(payload, "rainfall.hourly")),
276
276
+
numVal(tryRead(payload, "rainfall.1_hour") ?? tryRead(payload, "rainfall.hourly")),
277
277
numVal(tryRead(payload, "rainfall.rain_event")),
278
278
numVal(tryRead(payload, "rainfall.daily")),
279
279
numVal(tryRead(payload, "rainfall.weekly")),