Add optional chaining for safer array access in data_generator

Co-authored-by: jpawlowski <75446+jpawlowski@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-12-01 00:56:09 +00:00
parent 789a9cd2f1
commit fd73dbbb1b

View file

@ -131,8 +131,9 @@ async def handle_apexcharts_yaml(call: ServiceCall) -> dict[str, Any]:
else:
filter_param = f"level_filter: ['{level_key}']"
# Data generator fetches chart data and removes trailing nulls for proper header display
# (ApexCharts in_header shows last value, so trailing nulls cause "N/A")
# Data generator fetches chart data and removes trailing nulls for proper header display.
# ApexCharts in_header shows last value, so trailing nulls cause "N/A".
# The pop loop safely removes trailing null price values ([timestamp, null]) from the end.
data_generator = (
f"const response = await hass.callWS({{ "
f"type: 'call_service', "
@ -142,7 +143,7 @@ async def handle_apexcharts_yaml(call: ServiceCall) -> dict[str, Any]:
f"service_data: {{ entry_id: '{entry_id}', day: ['{day}'], {filter_param}, "
f"output_format: 'array_of_arrays', insert_nulls: 'segments', minor_currency: true }} }}); "
f"const data = response.response.data; "
f"while (data.length > 0 && data[data.length - 1][1] === null) data.pop(); "
f"while (data.length > 0 && data[data.length - 1]?.[1] === null) data.pop(); "
f"return data;"
)
# Only show extremas for HIGH and LOW levels (not NORMAL)