add categorization to account resources
This commit is contained in:
@@ -18,7 +18,7 @@ type Account struct {
|
|||||||
Min int
|
Min int
|
||||||
Max int
|
Max int
|
||||||
}
|
}
|
||||||
Resources map[string]any
|
Resources map[string]map[string]any
|
||||||
}
|
}
|
||||||
|
|
||||||
type Constraint struct {
|
type Constraint struct {
|
||||||
@@ -46,6 +46,7 @@ type NumericResource struct {
|
|||||||
Global Constraint
|
Global Constraint
|
||||||
Nodes map[string]Constraint
|
Nodes map[string]Constraint
|
||||||
Total Constraint
|
Total Constraint
|
||||||
|
Category string
|
||||||
}
|
}
|
||||||
|
|
||||||
type StorageResource struct {
|
type StorageResource struct {
|
||||||
@@ -60,6 +61,7 @@ type StorageResource struct {
|
|||||||
Global Constraint
|
Global Constraint
|
||||||
Nodes map[string]Constraint
|
Nodes map[string]Constraint
|
||||||
Total Constraint
|
Total Constraint
|
||||||
|
Category string
|
||||||
}
|
}
|
||||||
|
|
||||||
type ListResource struct {
|
type ListResource struct {
|
||||||
@@ -69,6 +71,7 @@ type ListResource struct {
|
|||||||
Global []Match
|
Global []Match
|
||||||
Nodes map[string][]Match
|
Nodes map[string][]Match
|
||||||
Total []Match
|
Total []Match
|
||||||
|
Category string
|
||||||
}
|
}
|
||||||
|
|
||||||
type ResourceChart struct {
|
type ResourceChart struct {
|
||||||
@@ -104,11 +107,12 @@ func HandleGETAccount(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, v := range account.Resources {
|
for category, resources := range account.Resources {
|
||||||
|
for resource, v := range resources {
|
||||||
switch t := v.(type) {
|
switch t := v.(type) {
|
||||||
case NumericResource:
|
case NumericResource:
|
||||||
avail, prefix := common.FormatNumber(t.Total.Avail*t.Multiplier, t.Base)
|
avail, prefix := common.FormatNumber(t.Total.Avail*t.Multiplier, t.Base)
|
||||||
account.Resources[k] = ResourceChart{
|
account.Resources[category][resource] = ResourceChart{
|
||||||
Type: t.Type,
|
Type: t.Type,
|
||||||
Display: t.Display,
|
Display: t.Display,
|
||||||
Name: t.Name,
|
Name: t.Name,
|
||||||
@@ -121,7 +125,7 @@ func HandleGETAccount(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
case StorageResource:
|
case StorageResource:
|
||||||
avail, prefix := common.FormatNumber(t.Total.Avail*t.Multiplier, t.Base)
|
avail, prefix := common.FormatNumber(t.Total.Avail*t.Multiplier, t.Base)
|
||||||
account.Resources[k] = ResourceChart{
|
account.Resources[category][resource] = ResourceChart{
|
||||||
Type: t.Type,
|
Type: t.Type,
|
||||||
Display: t.Display,
|
Display: t.Display,
|
||||||
Name: t.Name,
|
Name: t.Name,
|
||||||
@@ -155,7 +159,8 @@ func HandleGETAccount(c *gin.Context) {
|
|||||||
ColorHex: InterpolateColorHSV(Green, Red, float64(r.Used)/float64(r.Max)).ToHTML(),
|
ColorHex: InterpolateColorHSV(Green, Red, float64(r.Used)/float64(r.Max)).ToHTML(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
account.Resources[k] = l
|
account.Resources[category][resource] = l
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +176,7 @@ func HandleGETAccount(c *gin.Context) {
|
|||||||
|
|
||||||
func GetUserAccount(auth common.Auth) (Account, error) {
|
func GetUserAccount(auth common.Auth) (Account, error) {
|
||||||
account := Account{
|
account := Account{
|
||||||
Resources: map[string]any{},
|
Resources: map[string]map[string]any{},
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := common.RequestContext{
|
ctx := common.RequestContext{
|
||||||
@@ -225,6 +230,10 @@ func GetUserAccount(auth common.Auth) (Account, error) {
|
|||||||
m := v.(map[string]any)
|
m := v.(map[string]any)
|
||||||
t := m["type"].(string)
|
t := m["type"].(string)
|
||||||
r := resources[k].(map[string]any)
|
r := resources[k].(map[string]any)
|
||||||
|
category := m["category"].(string)
|
||||||
|
if _, ok := account.Resources[category]; !ok {
|
||||||
|
account.Resources[category] = map[string]any{}
|
||||||
|
}
|
||||||
if t == "numeric" {
|
if t == "numeric" {
|
||||||
n := NumericResource{}
|
n := NumericResource{}
|
||||||
n.Type = t
|
n.Type = t
|
||||||
@@ -233,7 +242,7 @@ func GetUserAccount(auth common.Auth) (Account, error) {
|
|||||||
if err_m != nil || err_r != nil {
|
if err_m != nil || err_r != nil {
|
||||||
return account, fmt.Errorf("%s\n%s", err_m.Error(), err_r.Error())
|
return account, fmt.Errorf("%s\n%s", err_m.Error(), err_r.Error())
|
||||||
}
|
}
|
||||||
account.Resources[k] = n
|
account.Resources[category][k] = n
|
||||||
} else if t == "storage" {
|
} else if t == "storage" {
|
||||||
n := StorageResource{}
|
n := StorageResource{}
|
||||||
n.Type = t
|
n.Type = t
|
||||||
@@ -242,7 +251,7 @@ func GetUserAccount(auth common.Auth) (Account, error) {
|
|||||||
if err_m != nil || err_r != nil {
|
if err_m != nil || err_r != nil {
|
||||||
return account, fmt.Errorf("%s\n%s", err_m.Error(), err_r.Error())
|
return account, fmt.Errorf("%s\n%s", err_m.Error(), err_r.Error())
|
||||||
}
|
}
|
||||||
account.Resources[k] = n
|
account.Resources[category][k] = n
|
||||||
} else if t == "list" {
|
} else if t == "list" {
|
||||||
n := ListResource{}
|
n := ListResource{}
|
||||||
n.Type = t
|
n.Type = t
|
||||||
@@ -251,7 +260,7 @@ func GetUserAccount(auth common.Auth) (Account, error) {
|
|||||||
if err_m != nil || err_r != nil {
|
if err_m != nil || err_r != nil {
|
||||||
return account, fmt.Errorf("%s\n%s", err_m.Error(), err_r.Error())
|
return account, fmt.Errorf("%s\n%s", err_m.Error(), err_r.Error())
|
||||||
}
|
}
|
||||||
account.Resources[k] = n
|
account.Resources[category][k] = n
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<link rel="modulepreload" href="scripts/dialog.js">
|
<link rel="modulepreload" href="scripts/dialog.js">
|
||||||
<style>
|
<style>
|
||||||
@media screen and (width >= 1264px){
|
@media screen and (width >= 1264px){
|
||||||
#resource-container {
|
.resource-container {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, calc(100% / 6));
|
grid-template-columns: repeat(auto-fill, calc(100% / 6));
|
||||||
grid-gap: 0;
|
grid-gap: 0;
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media screen and (width <= 1264px) and (width >= 680px) {
|
@media screen and (width <= 1264px) and (width >= 680px) {
|
||||||
#resource-container {
|
.resource-container {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, 200px);
|
grid-template-columns: repeat(auto-fill, 200px);
|
||||||
grid-gap: 0;
|
grid-gap: 0;
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media screen and (width <= 680px) {
|
@media screen and (width <= 680px) {
|
||||||
#resource-container {
|
.resource-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 0;
|
gap: 0;
|
||||||
@@ -54,8 +54,13 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="w3-card w3-padding">
|
<section class="w3-card w3-padding">
|
||||||
<h3>Cluster Resources</h3>
|
<h3>Cluster Resources</h3>
|
||||||
<div id="resource-container">
|
<div>
|
||||||
{{range .account.Resources}}
|
{{range $category, $v := .account.Resources}}
|
||||||
|
{{if ne $category ""}}
|
||||||
|
<h4>{{$category}}</h4>
|
||||||
|
{{end}}
|
||||||
|
<div class="resource-container">
|
||||||
|
{{range $v}}
|
||||||
{{if .Display}}
|
{{if .Display}}
|
||||||
{{if eq .Type "numeric"}}
|
{{if eq .Type "numeric"}}
|
||||||
{{template "resource-chart" .}}
|
{{template "resource-chart" .}}
|
||||||
@@ -71,11 +76,13 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
</body>
|
||||||
|
|
||||||
<modal-dialog id="change-password-dialog">
|
<template id="change-password-dialog">
|
||||||
<template shadowrootmode="open">
|
|
||||||
<link rel="stylesheet" href="modules/w3.css">
|
<link rel="stylesheet" href="modules/w3.css">
|
||||||
<link rel="stylesheet" href="css/style.css">
|
<link rel="stylesheet" href="css/style.css">
|
||||||
<link rel="stylesheet" href="css/form.css">
|
<link rel="stylesheet" href="css/form.css">
|
||||||
@@ -97,6 +104,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</dialog>
|
</dialog>
|
||||||
</template>
|
</template>
|
||||||
</modal-dialog>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
Reference in New Issue
Block a user