yao/widgets/table/layout.go
2022-09-26 18:46:49 +08:00

46 lines
1.3 KiB
Go

package table
import (
"fmt"
jsoniter "github.com/json-iterator/go"
"github.com/yaoapp/gou"
)
// BindModel bind model
func (layout *LayoutDSL) BindModel(m *gou.Model) {
layout.Primary = m.PrimaryKey
}
// Xgen trans to Xgen setting
func (layout *LayoutDSL) Xgen() (map[string]interface{}, error) {
res := map[string]interface{}{}
data, err := jsoniter.Marshal(layout)
if err != nil {
return nil, err
}
err = jsoniter.Unmarshal(data, &res)
if err != nil {
return nil, err
}
// replace import
if layout.Header != nil && layout.Header.Preset != nil && layout.Header.Preset.Import != nil {
name := layout.Header.Preset.Import.Name
operation := layout.Header.Preset.Import.Operation
res["header"].(map[string]interface{})["preset"].(map[string]interface{})["import"] = map[string]interface{}{
"api": map[string]interface{}{
"setting": fmt.Sprintf("/api/xiang/import/%s/setting", name),
"mapping": fmt.Sprintf("/api/xiang/import/%s/mapping", name),
"preview": fmt.Sprintf("/api/xiang/import/%s/data", name),
"import": fmt.Sprintf("/api/xiang/import/%s", name),
"mapping_setting_model": fmt.Sprintf("import_%s_mapping", name),
"preview_setting_model": fmt.Sprintf("import_%s_preview", name),
},
"operation": operation,
}
}
return res, nil
}