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  }