Skip to content

Commit b078105

Browse files
committed
Add rendering function docs and update telemetry table renderer to support hidden dataset flags
Signed-off-by: Harper, Jason M <[email protected]>
1 parent c614592 commit b078105

File tree

1 file changed

+52
-25
lines changed

1 file changed

+52
-25
lines changed

internal/report/render_html.go

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,18 @@ func dimmTableHTMLRenderer(tableValues TableValues, targetName string) string {
716716
return renderHTMLTable(socketTableHeaders, socketTableValues, "pure-table pure-table-bordered", [][]string{})
717717
}
718718

719+
// renderChart generates an HTML/JavaScript representation of a chart using the provided data and configuration.
720+
// It supports different chart types (e.g., "line", "scatter") and uses Go templates to format the datasets and chart.
721+
// Parameters:
722+
// - chartType: the type of chart to render ("line", "scatter").
723+
// - allFormattedPoints: a slice of strings, each representing formatted data points for a dataset.
724+
// - datasetNames: a slice of dataset names corresponding to each dataset.
725+
// - xAxisLabels: a slice of labels for the x-axis (used for line charts).
726+
// - config: a chartTemplateStruct containing chart configuration and template variables.
727+
// - datasetHiddenFlags: a slice of booleans indicating whether each dataset should be hidden initially.
728+
//
729+
// Returns:
730+
// - A string containing the rendered chart HTML/JavaScript, or an error message if rendering fails.
719731
func renderChart(chartType string, allFormattedPoints []string, datasetNames []string, xAxisLabels []string, config chartTemplateStruct, datasetHiddenFlags []bool) string {
720732
datasets := []string{}
721733
for dataIdx, formattedPoints := range allFormattedPoints {
@@ -780,6 +792,17 @@ type scatterPoint struct {
780792
y float64
781793
}
782794

795+
// renderScatterChart generates an HTML string for a scatter chart using the provided data and configuration.
796+
//
797+
// Parameters:
798+
//
799+
// data - 2D slice of scatterPoint values, where each inner slice represents a dataset's data points.
800+
// datasetNames - Slice of strings representing the names of each dataset.
801+
// config - chartTemplateStruct containing chart configuration options.
802+
//
803+
// Returns:
804+
//
805+
// A string containing the rendered HTML for the scatter chart.
783806
func renderScatterChart(data [][]scatterPoint, datasetNames []string, config chartTemplateStruct) string {
784807
allFormattedPoints := []string{}
785808
for dataIdx := range data {
@@ -792,6 +815,19 @@ func renderScatterChart(data [][]scatterPoint, datasetNames []string, config cha
792815
return renderChart("scatter", allFormattedPoints, datasetNames, nil, config, nil)
793816
}
794817

818+
// renderLineChart generates an HTML string for a line chart using the provided data and configuration.
819+
//
820+
// Parameters:
821+
//
822+
// xAxisLabels - Slice of strings representing the labels for the X axis.
823+
// data - 2D slice of float64 values, where each inner slice represents a dataset's data points.
824+
// datasetNames - Slice of strings representing the names of each dataset.
825+
// config - chartTemplateStruct containing chart configuration options.
826+
// datasetHiddenFlags - Slice of booleans indicating whether each dataset should be hidden initially.
827+
//
828+
// Returns:
829+
//
830+
// A string containing the rendered HTML for the line chart.
795831
func renderLineChart(xAxisLabels []string, data [][]float64, datasetNames []string, config chartTemplateStruct, datasetHiddenFlags []bool) string {
796832
allFormattedPoints := []string{}
797833
for dataIdx := range data {
@@ -907,7 +943,7 @@ func getColor(idx int) string {
907943
return colors[idx%len(colors)]
908944
}
909945

910-
func telemetryTableHTMLRenderer(tableValues TableValues, data [][]float64, datasetNames []string, chartConfig chartTemplateStruct) string {
946+
func telemetryTableHTMLRenderer(tableValues TableValues, data [][]float64, datasetNames []string, chartConfig chartTemplateStruct, datasetHiddenFlags []bool) string {
911947
tsFieldIdx := 0
912948
var timestamps []string
913949
for i := range tableValues.Fields[0].Values {
@@ -916,7 +952,7 @@ func telemetryTableHTMLRenderer(tableValues TableValues, data [][]float64, datas
916952
timestamps = append(timestamps, timestamp)
917953
}
918954
}
919-
return renderLineChart(timestamps, data, datasetNames, chartConfig, nil)
955+
return renderLineChart(timestamps, data, datasetNames, chartConfig, datasetHiddenFlags)
920956
}
921957

922958
func cpuUtilizationTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -965,7 +1001,7 @@ func cpuUtilizationTelemetryTableHTMLRenderer(tableValues TableValues, targetNam
9651001
SuggestedMin: "0",
9661002
SuggestedMax: "100",
9671003
}
968-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1004+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
9691005
}
9701006

9711007
func utilizationCategoriesTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1000,7 +1036,7 @@ func utilizationCategoriesTelemetryTableHTMLRenderer(tableValues TableValues, ta
10001036
SuggestedMin: "0",
10011037
SuggestedMax: "100",
10021038
}
1003-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1039+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
10041040
}
10051041

10061042
func irqRateTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1040,7 +1076,7 @@ func irqRateTelemetryTableHTMLRenderer(tableValues TableValues, targetName strin
10401076
SuggestedMin: "0",
10411077
SuggestedMax: "0",
10421078
}
1043-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1079+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
10441080
}
10451081

10461082
// driveTelemetryTableHTMLRenderer renders charts of drive statistics
@@ -1096,7 +1132,7 @@ func driveTelemetryTableHTMLRenderer(tableValues TableValues, targetName string)
10961132
SuggestedMin: "0",
10971133
SuggestedMax: "0",
10981134
}
1099-
out += telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1135+
out += telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
11001136
}
11011137
return out
11021138
}
@@ -1154,7 +1190,7 @@ func networkTelemetryTableHTMLRenderer(tableValues TableValues, targetName strin
11541190
SuggestedMin: "0",
11551191
SuggestedMax: "0",
11561192
}
1157-
out += telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1193+
out += telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
11581194
}
11591195
return out
11601196
}
@@ -1191,7 +1227,7 @@ func memoryTelemetryTableHTMLRenderer(tableValues TableValues, targetName string
11911227
SuggestedMin: "0",
11921228
SuggestedMax: "0",
11931229
}
1194-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1230+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
11951231
}
11961232

11971233
func averageFrequencyTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1226,7 +1262,7 @@ func averageFrequencyTelemetryTableHTMLRenderer(tableValues TableValues, targetN
12261262
SuggestedMin: "0",
12271263
SuggestedMax: "0",
12281264
}
1229-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1265+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
12301266
}
12311267

12321268
func powerTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1261,7 +1297,7 @@ func powerTelemetryTableHTMLRenderer(tableValues TableValues, targetName string)
12611297
SuggestedMin: "0",
12621298
SuggestedMax: "0",
12631299
}
1264-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1300+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
12651301
}
12661302

12671303
func temperatureTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1296,7 +1332,7 @@ func temperatureTelemetryTableHTMLRenderer(tableValues TableValues, targetName s
12961332
SuggestedMin: "0",
12971333
SuggestedMax: "0",
12981334
}
1299-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1335+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
13001336
}
13011337

13021338
func ipcTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1331,7 +1367,7 @@ func ipcTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) s
13311367
SuggestedMin: "0",
13321368
SuggestedMax: "0",
13331369
}
1334-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1370+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
13351371
}
13361372

13371373
func c6TelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1366,7 +1402,7 @@ func c6TelemetryTableHTMLRenderer(tableValues TableValues, targetName string) st
13661402
SuggestedMin: "0",
13671403
SuggestedMax: "0",
13681404
}
1369-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1405+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
13701406
}
13711407

13721408
// instructionTelemetryTableHTMLRenderer renders instruction set usage statistics.
@@ -1434,16 +1470,7 @@ func instructionTelemetryTableHTMLRenderer(tableValues TableValues, targetname s
14341470
SuggestedMin: "0",
14351471
SuggestedMax: "0",
14361472
}
1437-
// render directly using renderLineChart to supply hidden flags
1438-
tsFieldIdx := 0
1439-
var timestamps []string
1440-
for i := range tableValues.Fields[0].Values {
1441-
timestamp := tableValues.Fields[tsFieldIdx].Values[i]
1442-
if !slices.Contains(timestamps, timestamp) {
1443-
timestamps = append(timestamps, timestamp)
1444-
}
1445-
}
1446-
return renderLineChart(timestamps, data, datasetNames, chartConfig, hiddenFlags)
1473+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, hiddenFlags)
14471474
}
14481475

14491476
func renderGaudiStatsChart(tableValues TableValues, chartStatFieldName string, titleText string, yAxisText string, suggestedMax string) string {
@@ -1500,7 +1527,7 @@ func renderGaudiStatsChart(tableValues TableValues, chartStatFieldName string, t
15001527
SuggestedMin: "0",
15011528
SuggestedMax: suggestedMax,
15021529
}
1503-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1530+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
15041531
}
15051532

15061533
func gaudiTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) string {
@@ -1527,7 +1554,7 @@ func pduTelemetryTableHTMLRenderer(tableValues TableValues, targetName string) s
15271554
SuggestedMin: "0",
15281555
SuggestedMax: "0",
15291556
}
1530-
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig)
1557+
return telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)
15311558
}
15321559

15331560
func callStackFrequencyTableHTMLRenderer(tableValues TableValues, targetName string) string {

0 commit comments

Comments
 (0)