github.com/kotovmak/go-admin@v1.1.1/template/components/composer.go (about)

     1  package components
     2  
     3  import (
     4  	"bytes"
     5  	"html/template"
     6  
     7  	"github.com/kotovmak/go-admin/modules/config"
     8  	"github.com/kotovmak/go-admin/modules/logger"
     9  	"github.com/kotovmak/go-admin/modules/utils"
    10  	template2 "github.com/kotovmak/go-admin/template"
    11  )
    12  
    13  func ComposeHtml(temList map[string]string, separation bool, compo interface{}, templateName ...string) template.HTML {
    14  
    15  	tmplName := ""
    16  	if len(templateName) > 0 {
    17  		tmplName = templateName[0] + " "
    18  	}
    19  
    20  	var (
    21  		tmpl *template.Template
    22  		err  error
    23  	)
    24  
    25  	if separation {
    26  		files := make([]string, 0)
    27  		root := config.GetAssetRootPath() + "pages/"
    28  		for _, v := range templateName {
    29  			files = append(files, root+temList["components/"+v]+".tmpl")
    30  		}
    31  		tmpl, err = template.New("comp").Funcs(template2.DefaultFuncMap).ParseFiles(files...)
    32  	} else {
    33  		var text = ""
    34  		for _, v := range templateName {
    35  			text += temList["components/"+v]
    36  		}
    37  		tmpl, err = template.New("comp").Funcs(template2.DefaultFuncMap).Parse(text)
    38  	}
    39  
    40  	if err != nil {
    41  		logger.Panic(tmplName + "ComposeHtml Error:" + err.Error())
    42  		return ""
    43  	}
    44  	buf := new(bytes.Buffer)
    45  
    46  	defineName := utils.ReplaceAll(templateName[0], "table/", "", "form/", "")
    47  
    48  	err = tmpl.ExecuteTemplate(buf, defineName, compo)
    49  	if err != nil {
    50  		logger.Error(tmplName+" ComposeHtml Error:", err)
    51  	}
    52  	return template.HTML(buf.String())
    53  }