MCPcopy Create free account
hub / github.com/codechenx/FastTableViewer / sortByDate

Method sortByDate

buffer.go:339–375  ·  view source on GitHub ↗

sortByDate sorts column by date format with optimized date parsing

(colIndex int, rev bool)

Source from the content-addressed store, hash-verified

337
338// sortByDate sorts column by date format with optimized date parsing
339func (b *Buffer) sortByDate(colIndex int, rev bool) {
340 hasHeader := I2B(b.rowFreeze)
341 dataRows := b.cont
342 if hasHeader {
343 dataRows = b.cont[1:]
344 }
345
346 // Create index-value pairs to sort
347 type dateRow struct {
348 row []string
349 date int64
350 }
351
352 pairs := make([]dateRow, len(dataRows))
353 for i := range dataRows {
354 pairs[i] = dateRow{
355 row: dataRows[i],
356 date: parseDateValueFast(dataRows[i][colIndex]),
357 }
358 }
359
360 // Sort the pairs
361 if rev {
362 sort.SliceStable(pairs, func(i, j int) bool {
363 return pairs[i].date > pairs[j].date
364 })
365 } else {
366 sort.SliceStable(pairs, func(i, j int) bool {
367 return pairs[i].date < pairs[j].date
368 })
369 }
370
371 // Copy back sorted rows
372 for i := range pairs {
373 dataRows[i] = pairs[i].row
374 }
375}
376
377// parseNumericValueFast quickly parses a string to float64
378// Handles commas, underscores, and returns 0 for invalid values

Callers 2

TestSortByDateFunction · 0.80
drawUIFunction · 0.80

Calls 2

I2BFunction · 0.85
parseDateValueFastFunction · 0.85

Tested by 1

TestSortByDateFunction · 0.64