github.com/kotovmak/go-admin@v1.1.1/template/types/display/progressbar.go (about) 1 package display 2 3 import ( 4 "fmt" 5 "html/template" 6 "strconv" 7 8 "github.com/kotovmak/go-admin/template/types" 9 ) 10 11 type ProgressBar struct { 12 types.BaseDisplayFnGenerator 13 } 14 15 func init() { 16 types.RegisterDisplayFnGenerator("progressbar", new(ProgressBar)) 17 } 18 19 func (p *ProgressBar) Get(args ...interface{}) types.FieldFilterFn { 20 return func(value types.FieldModel) interface{} { 21 param := args[0].([]types.FieldProgressBarData) 22 style := "primary" 23 size := "sm" 24 max := 100 25 if len(param) > 0 { 26 if param[0].Style != "" { 27 style = param[0].Style 28 } 29 if param[0].Size != "" { 30 size = param[0].Size 31 } 32 if param[0].Max != 0 { 33 max = param[0].Max 34 } 35 } 36 base, _ := strconv.Atoi(value.Value) 37 per := fmt.Sprintf("%.0f", float32(base)/float32(max)*100) 38 return template.HTML(` 39 <div class="row" style="min-width: 100px;"> 40 <span class="col-sm-3" style="color:#777;width: 60px">` + per + `%</span> 41 <div class="progress progress-` + size + ` col-sm-9" style="padding-left: 0;width: 100px;margin-left: -13px;"> 42 <div class="progress-bar progress-bar-` + style + `" role="progressbar" aria-valuenow="1" 43 aria-valuemin="0" aria-valuemax="` + strconv.Itoa(max) + `" style="width: ` + per + `%"> 44 </div> 45 </div> 46 </div>`) 47 } 48 }