feat: update auto render
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/gofiber/fiber/v3"
|
||||
"github.com/gofiber/fiber/v3/middleware/static"
|
||||
"github.com/rogeecn/database_render/internal/config"
|
||||
"github.com/rogeecn/database_render/internal/model"
|
||||
"github.com/rogeecn/database_render/internal/service"
|
||||
)
|
||||
|
||||
@@ -204,29 +205,81 @@ func (r *Renderer) RenderList(c fiber.Ctx, tableName string) error {
|
||||
|
||||
// Prepare template data
|
||||
templateData := map[string]interface{}{
|
||||
"Table": tableName,
|
||||
"TableAlias": tableConfig.Alias,
|
||||
"Columns": data.Columns,
|
||||
"Data": data.Data,
|
||||
"Total": data.Total,
|
||||
"Page": data.Page,
|
||||
"PerPage": data.PerPage,
|
||||
"Pages": data.Pages,
|
||||
"Search": search,
|
||||
"SortField": sortField,
|
||||
"SortOrder": sortOrder,
|
||||
"Tables": tables,
|
||||
"CurrentPath": c.Path(),
|
||||
"StartRecord": startRecord,
|
||||
"EndRecord": endRecord,
|
||||
"LastUpdate": time.Now().Format("2006-01-02 15:04:05"),
|
||||
"Table": tableName,
|
||||
"TableAlias": tableConfig.Alias,
|
||||
"Columns": data.Columns,
|
||||
"Data": data.Data,
|
||||
"Total": data.Total,
|
||||
"Page": data.Page,
|
||||
"PerPage": data.PerPage,
|
||||
"Pages": data.Pages,
|
||||
"Search": search,
|
||||
"SortField": sortField,
|
||||
"SortOrder": sortOrder,
|
||||
"Tables": tables,
|
||||
"CurrentPath": c.Path(),
|
||||
"StartRecord": startRecord,
|
||||
"EndRecord": endRecord,
|
||||
"LastUpdate": time.Now().Format("2006-01-02 15:04:05"),
|
||||
"TemplateType": "table", // Default to table view
|
||||
}
|
||||
|
||||
// set content-type html
|
||||
c.Response().Header.Set("Content-Type", "text/html; charset=utf-8")
|
||||
|
||||
// Render template
|
||||
return r.templates.ExecuteTemplate(c.Response().BodyWriter(), "list.html", templateData)
|
||||
// Use new template system for rendering
|
||||
absBuiltinPath, _ := filepath.Abs("./web/templates/builtin")
|
||||
absCustomPath, _ := filepath.Abs("./web/templates/custom")
|
||||
|
||||
loader := NewTemplateLoader(TemplateConfig{
|
||||
BuiltinPath: absBuiltinPath,
|
||||
CustomPath: absCustomPath,
|
||||
CacheEnabled: true,
|
||||
})
|
||||
|
||||
// Debug the data structure safely
|
||||
r.logger.Info("template data structure",
|
||||
"data_type", fmt.Sprintf("%T", templateData["Data"]),
|
||||
"columns_type", fmt.Sprintf("%T", templateData["Columns"]),
|
||||
)
|
||||
|
||||
// Check data length safely
|
||||
var dataLength int
|
||||
if data, ok := templateData["Data"].([]map[string]interface{}); ok {
|
||||
dataLength = len(data)
|
||||
} else if data, ok := templateData["Data"].([]interface{}); ok {
|
||||
dataLength = len(data)
|
||||
}
|
||||
|
||||
var columnsLength int
|
||||
if cols, ok := templateData["Columns"].([]model.ColumnConfig); ok {
|
||||
columnsLength = len(cols)
|
||||
} else if cols, ok := templateData["Columns"].([]interface{}); ok {
|
||||
columnsLength = len(cols)
|
||||
}
|
||||
|
||||
r.logger.Info("data lengths", "data_length", dataLength, "columns_length", columnsLength)
|
||||
|
||||
// Try complete template - standalone template without layout inheritance
|
||||
tmpl, err := loader.LoadTemplate("complete", tableName)
|
||||
if err != nil {
|
||||
r.logger.Error("failed to load complete template", "error", err)
|
||||
// Fallback to simple template
|
||||
tmpl, err = loader.LoadTemplate("simple", tableName)
|
||||
if err != nil {
|
||||
r.logger.Error("failed to load simple template", "error", err)
|
||||
return r.templates.ExecuteTemplate(c.Response().BodyWriter(), "list.html", templateData)
|
||||
}
|
||||
}
|
||||
|
||||
r.logger.Info("executing template", "template", "debug/simple")
|
||||
err = tmpl.Execute(c.Response().BodyWriter(), templateData)
|
||||
if err != nil {
|
||||
r.logger.Error("failed to execute template", "error", err)
|
||||
return r.templates.ExecuteTemplate(c.Response().BodyWriter(), "list.html", templateData)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RenderIndex renders the index page
|
||||
|
||||
Reference in New Issue
Block a user