From ba895b64ef1978284cf366fca5611bf93ca5b4a7 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Tue, 24 Oct 2023 17:30:19 -0700 Subject: [PATCH] stats: Remove unchecked casts of Plotly data. Signed-off-by: Anders Kaseorg --- web/src/stats/stats.ts | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/web/src/stats/stats.ts b/web/src/stats/stats.ts index 3c44b07ea9..359781a8f2 100644 --- a/web/src/stats/stats.ts +++ b/web/src/stats/stats.ts @@ -554,9 +554,12 @@ function populate_messages_sent_over_time(raw_data: unknown): void { const plotDiv = document.querySelector( "#id_messages_sent_over_time", )!; - traces.me.visible = (plotDiv.data[0] as Plotly.PlotData).visible; - traces.human.visible = (plotDiv.data[1] as Plotly.PlotData).visible; - traces.bot.visible = (plotDiv.data[2] as Plotly.PlotData).visible; + assert("visible" in plotDiv.data[0]); + assert("visible" in plotDiv.data[1]); + assert("visible" in plotDiv.data[2]); + traces.me.visible = plotDiv.data[0].visible; + traces.human.visible = plotDiv.data[1].visible; + traces.bot.visible = plotDiv.data[2].visible; } layout.xaxis!.rangeselector = rangeselector; if (clicked_cumulative || initial_draw) { @@ -693,6 +696,9 @@ function populate_messages_sent_by_client(raw_data: unknown): void { } type PlotDataByMessageClient = PlotTrace & { + trace: { + x: number[]; + }; trace_annotations: Partial; }; @@ -806,8 +812,8 @@ function populate_messages_sent_by_client(raw_data: unknown): void { function draw_plot(): void { $("#id_messages_sent_by_client > div").removeClass("spinner"); const data_ = plot_data[user_button][time_button]; - layout.height = layout.margin!.b! + data_.trace.x!.length * 30; - layout.xaxis!.range = [0, Math.max(...(data_.trace.x as number[])) * 1.3]; + layout.height = layout.margin!.b! + data_.trace.x.length * 30; + layout.xaxis!.range = [0, Math.max(...data_.trace.x) * 1.3]; void Plotly.newPlot( "id_messages_sent_by_client", [data_.trace, data_.trace_annotations], @@ -1300,8 +1306,10 @@ function populate_messages_read_over_time(raw_data: unknown): void { const plotDiv = document.querySelector( "#id_messages_read_over_time", )!; - traces.me.visible = (plotDiv.data[0] as Plotly.PlotData).visible; - traces.everyone.visible = (plotDiv.data[1] as Plotly.PlotData).visible; + assert("visible" in plotDiv.data[0]); + assert("visible" in plotDiv.data[1]); + traces.me.visible = plotDiv.data[0].visible; + traces.everyone.visible = plotDiv.data[1].visible; } layout.xaxis!.rangeselector = rangeselector; if (clicked_cumulative || initial_draw) {