61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package render
 | |
| 
 | |
| import (
 | |
| 	"html/template"
 | |
| 	"net/http"
 | |
| 
 | |
| 	v1 "management/internal/erpserver/service/v1"
 | |
| 	"management/internal/pkg/render/util"
 | |
| 	"management/internal/pkg/session"
 | |
| )
 | |
| 
 | |
| type Render interface {
 | |
| 	htmlRender
 | |
| 	jsonRender
 | |
| }
 | |
| 
 | |
| type htmlRender interface {
 | |
| 	HTML(w http.ResponseWriter, req *http.Request, name string, data map[string]any)
 | |
| }
 | |
| 
 | |
| type jsonRender interface {
 | |
| 	JSON(w http.ResponseWriter, data any)
 | |
| 	JSONObj(w http.ResponseWriter, message string, data any)
 | |
| 	JSONOk(w http.ResponseWriter, message string)
 | |
| 	JSONErr(w http.ResponseWriter, message string)
 | |
| }
 | |
| 
 | |
| type render struct {
 | |
| 	templateConfig *TemplateConfig
 | |
| 	templates      map[string]*template.Template
 | |
| 	session        session.Manager
 | |
| 
 | |
| 	menuService v1.MenuService
 | |
| }
 | |
| 
 | |
| func New(session session.Manager, menuService v1.MenuService) (Render, error) {
 | |
| 	r := &render{
 | |
| 		templateConfig: &TemplateConfig{
 | |
| 			Root:      ".",
 | |
| 			Extension: ".tmpl",
 | |
| 			Layout:    "base",
 | |
| 			Partial:   "partial",
 | |
| 		},
 | |
| 		session:     session,
 | |
| 		menuService: menuService,
 | |
| 	}
 | |
| 
 | |
| 	var err error
 | |
| 	r.templates, err = util.CreateTemplateCache(
 | |
| 		r.templateConfig.Root,
 | |
| 		r.templateConfig.Layout,
 | |
| 		r.templateConfig.Partial,
 | |
| 		r.templateConfig.Extension,
 | |
| 	)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	return r, nil
 | |
| }
 |