diff options
| author | chrislu <chris.lu@gmail.com> | 2025-07-02 22:06:06 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2025-07-02 22:06:06 -0700 |
| commit | 2268d2f55e46a0264fd9bf4fb6d449cc7fda53c3 (patch) | |
| tree | 7b6b9cd17b50c6b86b48eac6005fac87960687f0 /weed/admin/dash/admin_server.go | |
| parent | 1cac3e73f98356d038a80b894943272cb1fec3af (diff) | |
| download | seaweedfs-2268d2f55e46a0264fd9bf4fb6d449cc7fda53c3.tar.xz seaweedfs-2268d2f55e46a0264fd9bf4fb6d449cc7fda53c3.zip | |
add back dynamic columns
Diffstat (limited to 'weed/admin/dash/admin_server.go')
| -rw-r--r-- | weed/admin/dash/admin_server.go | 76 |
1 files changed, 62 insertions, 14 deletions
diff --git a/weed/admin/dash/admin_server.go b/weed/admin/dash/admin_server.go index 1d73558d9..6fb158894 100644 --- a/weed/admin/dash/admin_server.go +++ b/weed/admin/dash/admin_server.go @@ -148,8 +148,19 @@ type ClusterVolumesData struct { SortOrder string `json:"sort_order"` // Statistics - RackCount int `json:"rack_count"` - DiskTypeCount int `json:"disk_type_count"` + DataCenterCount int `json:"datacenter_count"` + RackCount int `json:"rack_count"` + DiskTypeCount int `json:"disk_type_count"` + + // Conditional display flags + ShowDataCenterColumn bool `json:"show_datacenter_column"` + ShowRackColumn bool `json:"show_rack_column"` + ShowDiskTypeColumn bool `json:"show_disk_type_column"` + + // Single values when only one exists + SingleDataCenter string `json:"single_datacenter"` + SingleRack string `json:"single_rack"` + SingleDiskType string `json:"single_disk_type"` } type CollectionInfo struct { @@ -857,10 +868,14 @@ func (s *AdminServer) GetClusterVolumes(page int, pageSize int, sortBy string, s return nil, err } - // Calculate unique rack and disk type counts from all volumes + // Calculate unique data center, rack, and disk type counts from all volumes + dataCenterMap := make(map[string]bool) rackMap := make(map[string]bool) diskTypeMap := make(map[string]bool) for _, volume := range volumes { + if volume.DataCenter != "" { + dataCenterMap[volume.DataCenter] = true + } if volume.Rack != "" { rackMap[volume.Rack] = true } @@ -870,6 +885,7 @@ func (s *AdminServer) GetClusterVolumes(page int, pageSize int, sortBy string, s } diskTypeMap[diskType] = true } + dataCenterCount := len(dataCenterMap) rackCount := len(rackMap) diskTypeCount := len(diskTypeMap) @@ -895,18 +911,50 @@ func (s *AdminServer) GetClusterVolumes(page int, pageSize int, sortBy string, s volumes = volumes[startIndex:endIndex] } + // Determine conditional display flags and extract single values + showDataCenterColumn := dataCenterCount > 1 + showRackColumn := rackCount > 1 + showDiskTypeColumn := diskTypeCount > 1 + + var singleDataCenter, singleRack, singleDiskType string + if dataCenterCount == 1 { + for dc := range dataCenterMap { + singleDataCenter = dc + break + } + } + if rackCount == 1 { + for rack := range rackMap { + singleRack = rack + break + } + } + if diskTypeCount == 1 { + for diskType := range diskTypeMap { + singleDiskType = diskType + break + } + } + return &ClusterVolumesData{ - Volumes: volumes, - TotalVolumes: totalVolumes, - TotalSize: totalSize, - LastUpdated: time.Now(), - CurrentPage: page, - TotalPages: totalPages, - PageSize: pageSize, - SortBy: sortBy, - SortOrder: sortOrder, - RackCount: rackCount, - DiskTypeCount: diskTypeCount, + Volumes: volumes, + TotalVolumes: totalVolumes, + TotalSize: totalSize, + LastUpdated: time.Now(), + CurrentPage: page, + TotalPages: totalPages, + PageSize: pageSize, + SortBy: sortBy, + SortOrder: sortOrder, + DataCenterCount: dataCenterCount, + RackCount: rackCount, + DiskTypeCount: diskTypeCount, + ShowDataCenterColumn: showDataCenterColumn, + ShowRackColumn: showRackColumn, + ShowDiskTypeColumn: showDiskTypeColumn, + SingleDataCenter: singleDataCenter, + SingleRack: singleRack, + SingleDiskType: singleDiskType, }, nil } |
