MCPcopy Create free account
hub / github.com/Thunder-Compute/thunder-cli / renderTable

Method renderTable

tui/status.go:403–474  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

401}
402
403func (m statusModel) renderTable() string {
404 if len(m.instances) == 0 {
405 return warningStyleTUI.Render("⚠ No instances found. Use 'tnr create' to create a Thunder Compute instance.")
406 }
407
408 colWidths := map[string]int{
409 "ID": 4,
410 "UUID": 15,
411 "Status": 14,
412 "Address": 18,
413 "Disk": 8,
414 "GPU": 14,
415 "vCPUs": 8,
416 "RAM": 8,
417 "Template": 18,
418 }
419
420 var b strings.Builder
421
422 headers := []string{"ID", "UUID", "Status", "Address", "Disk", "GPU", "vCPUs", "RAM", "Template"}
423 headerRow := make([]string, len(headers))
424 for i, h := range headers {
425 headerRow[i] = m.styles.header.Width(colWidths[h]).Render(h)
426 }
427 b.WriteString(strings.Join(headerRow, ""))
428 b.WriteString("\n")
429
430 separatorRow := make([]string, len(headers))
431 for i, h := range headers {
432 separatorRow[i] = strings.Repeat("─", colWidths[h]+2)
433 }
434 b.WriteString(strings.Join(separatorRow, ""))
435 b.WriteString("\n")
436
437 instances := m.instances
438 if len(instances) > 1 {
439 sortedInstances := make([]api.Instance, len(instances))
440 copy(sortedInstances, instances)
441 sort.Slice(sortedInstances, func(i, j int) bool {
442 return sortedInstances[i].ID < sortedInstances[j].ID
443 })
444 instances = sortedInstances
445 }
446
447 for _, instance := range instances {
448 id := truncate(instance.ID, colWidths["ID"])
449 uuid := truncate(instance.UUID, colWidths["UUID"])
450 status := m.formatStatus(instance.Status, colWidths["Status"])
451 address := truncate(instance.GetIP(), colWidths["Address"])
452 disk := truncate(fmt.Sprintf("%dGB", instance.Storage), colWidths["Disk"])
453 gpu := truncate(fmt.Sprintf("%sx%s", instance.NumGPUs, utils.FormatGPUType(instance.GPUType)), colWidths["GPU"])
454 vcpus := truncate(instance.CPUCores, colWidths["vCPUs"])
455 ram := truncate(fmt.Sprintf("%sGB", instance.Memory), colWidths["RAM"])
456 template := truncate(utils.Capitalize(instance.Template), colWidths["Template"])
457
458 row := []string{
459 m.styles.cell.Width(colWidths["ID"]).Render(id),
460 m.styles.cell.Width(colWidths["UUID"]).Render(uuid),

Callers 1

ViewMethod · 0.95

Calls 5

formatStatusMethod · 0.95
FormatGPUTypeFunction · 0.92
CapitalizeFunction · 0.92
GetIPMethod · 0.80
truncateFunction · 0.70

Tested by

no test coverage detected