75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package chart
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/yaoapp/gou"
|
|
"github.com/yaoapp/kun/maps"
|
|
)
|
|
|
|
// 注册处理器
|
|
func init() {
|
|
gou.RegisterProcessHandler("xiang.chart.data", ProcessData)
|
|
gou.RegisterProcessHandler("xiang.chart.setting", ProcessSetting)
|
|
}
|
|
|
|
// ProcessData xiang.chart.data
|
|
// 查询数据分析图表中定义的数据
|
|
func ProcessData(process *gou.Process) interface{} {
|
|
|
|
process.ValidateArgNums(2)
|
|
name := process.ArgsString(0)
|
|
params := process.ArgsMap(1)
|
|
chart := Select(name)
|
|
api := chart.APIs["data"]
|
|
|
|
if len(api.Default) > 0 {
|
|
if defaults, ok := api.Default[0].(map[string]interface{}); ok {
|
|
for key, value := range defaults {
|
|
if !params.Has(key) {
|
|
params.Set(key, value)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return chart.GetData(params)
|
|
}
|
|
|
|
// ProcessSetting xiang.chart.setting
|
|
// 查询数据分析图表中定义的数据
|
|
func ProcessSetting(process *gou.Process) interface{} {
|
|
|
|
process.ValidateArgNums(2)
|
|
name := process.ArgsString(0)
|
|
field := process.ArgsString(1)
|
|
chart := Select(name)
|
|
|
|
fields := strings.Split(field, ",")
|
|
setting := maps.Map{
|
|
"name": chart.Name,
|
|
"label": chart.Label,
|
|
"version": chart.Version,
|
|
"description": chart.Description,
|
|
"filters": chart.Filters,
|
|
"page": chart.Page,
|
|
}
|
|
|
|
if len(fields) == 1 && setting.Has(fields[0]) {
|
|
field := strings.TrimSpace(fields[0])
|
|
return setting.Get(field)
|
|
}
|
|
|
|
if len(fields) > 1 {
|
|
res := maps.Map{}
|
|
for _, field := range fields {
|
|
field = strings.TrimSpace(field)
|
|
if setting.Has(field) {
|
|
res.Set(field, setting.Get(field))
|
|
}
|
|
}
|
|
return res
|
|
}
|
|
return setting
|
|
|
|
}
|