Browse Source

show RemoteVolumes/EcVolumes only if it is not empty

pull/2185/head
bingoohuang 4 years ago
parent
commit
ed57a55eae
  1. 1
      weed/server/volume_server_ui/templates.go
  2. 5
      weed/server/volume_server_ui/volume.html
  3. 40
      weed/util/reflect.go

1
weed/server/volume_server_ui/templates.go

@ -25,6 +25,7 @@ var funcMap = template.FuncMap{
"join": join,
"bytesToHumanReadable": util.BytesToHumanReadable,
"percentFrom": percentFrom,
"isNotEmpty": util.IsNotEmpty,
}
//go:embed volume.html

5
weed/server/volume_server_ui/volume.html

@ -133,6 +133,7 @@
</table>
</div>
{{ if isNotEmpty .RemoteVolumes }}
<div class="row">
<h2>Remote Volumes</h2>
<table class="table table-striped">
@ -162,7 +163,9 @@
</tbody>
</table>
</div>
{{ end }}
{{ if isNotEmpty .EcVolumes }}
<div class="row">
<h2>Erasure Coding Shards</h2>
<table class="table table-striped">
@ -188,7 +191,7 @@
</tbody>
</table>
</div>
{{ end }}
</div>
</body>
</html>

40
weed/util/reflect.go

@ -0,0 +1,40 @@
package util
import "reflect"
// IsNotEmpty returns true if the given value is not zero or empty.
func IsNotEmpty(given interface{}) bool {
return !IsEmpty(given)
}
// IsEmpty returns true if the given value has the zero value for its type.
func IsEmpty(given interface{}) bool {
g := reflect.ValueOf(given)
if !g.IsValid() {
return true
}
if g.Kind() == reflect.Ptr {
g = g.Elem()
}
// Basically adapted from text/template.isTrue
switch g.Kind() {
case reflect.Array, reflect.Slice, reflect.Map, reflect.String:
return g.Len() == 0
case reflect.Bool:
return !g.Bool()
case reflect.Complex64, reflect.Complex128:
return g.Complex() == 0
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
return g.Int() == 0
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
return g.Uint() == 0
case reflect.Float32, reflect.Float64:
return g.Float() == 0
case reflect.Struct:
return g.IsZero()
default:
return g.IsNil()
}
}
Loading…
Cancel
Save