MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / sortData

Function sortData

tsunami/ui/table.go:116–150  ·  view source on GitHub ↗

Sort data by column

(data []T, col TableColumn[T], direction string)

Source from the content-addressed store, hash-verified

114
115// Sort data by column
116func sortData[T any](data []T, col TableColumn[T], direction string) []T {
117 if len(data) == 0 || (col.AccessorKey == "" && col.AccessorFn == nil) {
118 return data
119 }
120
121 sorted := make([]T, len(data))
122 copy(sorted, data)
123
124 sort.Slice(sorted, func(i, j int) bool {
125 valI := getFieldValue(sorted[i], i, col)
126 valJ := getFieldValue(sorted[j], j, col)
127
128 // Handle nil values
129 if valI == nil && valJ == nil {
130 return false
131 }
132 if valI == nil {
133 return direction == "asc"
134 }
135 if valJ == nil {
136 return direction == "desc"
137 }
138
139 // Convert to strings for comparison (could be enhanced for numbers/dates)
140 strI := fmt.Sprintf("%v", valI)
141 strJ := fmt.Sprintf("%v", valJ)
142
143 if direction == "asc" {
144 return strI < strJ
145 }
146 return strI > strJ
147 })
148
149 return sorted
150}
151
152// Paginate data
153func paginateData[T any](data []T, config *PaginationConfig) []T {

Callers 1

genTableRenderFuncFunction · 0.85

Calls 1

getFieldValueFunction · 0.85

Tested by

no test coverage detected