aboutsummaryrefslogtreecommitdiff
path: root/weed/admin/dash/admin_server.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/admin/dash/admin_server.go')
-rw-r--r--weed/admin/dash/admin_server.go76
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
}