[change] init application
This commit is contained in:
parent
50cedfb9f7
commit
5878b238c7
3 changed files with 88 additions and 945 deletions
106
data/bindata.go
106
data/bindata.go
|
|
@ -231,7 +231,7 @@ func initAppJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/app.json", size: 325, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/app.json", size: 325, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -251,7 +251,7 @@ func initChartsDashboardChartJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/charts/dashboard.chart.json", size: 8471, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/charts/dashboard.chart.json", size: 8471, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -271,7 +271,7 @@ func initFlowsAppMenuFlowJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/flows/app/menu.flow.json", size: 1327, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/flows/app/menu.flow.json", size: 1327, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -291,7 +291,7 @@ func initFormsPetFormJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/forms/pet.form.json", size: 87, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/forms/pet.form.json", size: 87, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -311,7 +311,7 @@ func initLangsZhCnGlobalYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/langs/zh-cn/global.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/langs/zh-cn/global.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -331,7 +331,7 @@ func initLangsZhHkLangsGlobalYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/langs/zh-hk/langs/global.yml", size: 88, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/langs/zh-hk/langs/global.yml", size: 88, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -351,7 +351,7 @@ func initLoginsAdminLoginJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/logins/admin.login.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/logins/admin.login.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -371,7 +371,7 @@ func initLoginsUserLoginJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/logins/user.login.json", size: 272, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/logins/user.login.json", size: 272, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -391,7 +391,7 @@ func initModelsPetModJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/models/pet.mod.json", size: 1418, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/models/pet.mod.json", size: 1418, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -411,7 +411,7 @@ func initPublicIndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/public/index.html", size: 1373, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/public/index.html", size: 1373, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -431,7 +431,7 @@ func initScriptsDemoJs() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/scripts/demo.js", size: 334, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/scripts/demo.js", size: 334, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -451,7 +451,7 @@ func initScriptsStatJs() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/scripts/stat.js", size: 2235, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/scripts/stat.js", size: 2235, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -471,7 +471,7 @@ func initTablesPetTabJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "init/tables/pet.tab.json", size: 118, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "init/tables/pet.tab.json", size: 118, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -491,7 +491,7 @@ func publicIndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -511,7 +511,7 @@ func uiIndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -531,7 +531,7 @@ func xgenSetupIndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -551,7 +551,7 @@ func xgenV09IndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -571,7 +571,7 @@ func xgenV10IndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -591,7 +591,7 @@ func xgenV10Layouts__indexAsyncJs() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -611,7 +611,7 @@ func xgenV10UmiJs() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -631,7 +631,7 @@ func yaoApisReadmeMd() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/README.md", size: 13, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/README.md", size: 13, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -651,7 +651,7 @@ func yaoApisChartHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/chart.http.json", size: 624, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/chart.http.json", size: 624, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -671,7 +671,7 @@ func yaoApisImportHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/import.http.json", size: 1676, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/import.http.json", size: 1676, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -691,7 +691,7 @@ func yaoApisPageHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/page.http.json", size: 609, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/page.http.json", size: 609, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -711,7 +711,7 @@ func yaoApisStorageHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/storage.http.json", size: 1026, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/storage.http.json", size: 1026, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -731,7 +731,7 @@ func yaoApisTableHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/table.http.json", size: 3213, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/table.http.json", size: 3213, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -751,7 +751,7 @@ func yaoApisUserHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/user.http.json", size: 1453, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/user.http.json", size: 1453, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -771,7 +771,7 @@ func yaoApisXiangHttpJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/apis/xiang.http.json", size: 1239, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/apis/xiang.http.json", size: 1239, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -791,7 +791,7 @@ func yaoDataAppJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/data/app.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/data/app.json", size: 277, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -811,7 +811,7 @@ func yaoDataIcons404Png() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -831,7 +831,7 @@ func yaoDataIconsIconIcns() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -851,7 +851,7 @@ func yaoDataIconsIconIco() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -871,7 +871,7 @@ func yaoDataIconsIconPng() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -891,7 +891,7 @@ func yaoDataIndexHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -911,7 +911,7 @@ func yaoFieldsModelTransJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14959, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14959, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -931,7 +931,7 @@ func yaoFlowsReadmeMd() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/flows/README.md", size: 12, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/flows/README.md", size: 12, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -951,7 +951,7 @@ func yaoFlowsAdminGuardFlowJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/flows/admin/guard.flow.json", size: 559, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/flows/admin/guard.flow.json", size: 559, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -971,7 +971,7 @@ func yaoFlowsMenuFlowJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/flows/menu.flow.json", size: 1045, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/flows/menu.flow.json", size: 1045, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -991,7 +991,7 @@ func yaoFlowsUserFindFlowJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/flows/user/find.flow.json", size: 328, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/flows/user/find.flow.json", size: 328, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1011,7 +1011,7 @@ func yaoLangsEnUsJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1031,7 +1031,7 @@ func yaoLangsZhCnGlobalYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1051,7 +1051,7 @@ func yaoLangsZhCnLoginsAdminLoginYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1071,7 +1071,7 @@ func yaoLangsZhCnLoginsUserLoginYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1091,7 +1091,7 @@ func yaoLangsZhHkGlobalYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1629, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1111,7 +1111,7 @@ func yaoLangsZhHkLoginsAdminLoginYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1131,7 +1131,7 @@ func yaoLangsZhHkLoginsUserLoginYml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1151,7 +1151,7 @@ func yaoModelsReadmeMd() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/models/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/models/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1171,7 +1171,7 @@ func yaoModelsMenuModJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/models/menu.mod.json", size: 2378, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/models/menu.mod.json", size: 2378, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1191,7 +1191,7 @@ func yaoModelsUserModJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/models/user.mod.json", size: 8826, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/models/user.mod.json", size: 8826, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1211,7 +1211,7 @@ func yaoModelsWorkflowModJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/models/workflow.mod.json", size: 3333, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/models/workflow.mod.json", size: 3333, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1231,7 +1231,7 @@ func yaoTablesReadmeMd() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/tables/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/tables/README.md", size: 15, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1251,7 +1251,7 @@ func yaoTablesMenuTabJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/tables/menu.tab.json", size: 10471, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/tables/menu.tab.json", size: 10471, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
@ -1271,7 +1271,7 @@ func yaoTablesUserTabJson() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "yao/tables/user.tab.json", size: 2357, mode: os.FileMode(420), modTime: time.Unix(1668656844, 0)}
|
||||
info := bindataFileInfo{name: "yao/tables/user.tab.json", size: 2357, mode: os.FileMode(420), modTime: time.Unix(1668659457, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
|
|||
910
setup/install.go
910
setup/install.go
|
|
@ -7,12 +7,9 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/yaoapp/gou"
|
||||
"github.com/yaoapp/gou/fs"
|
||||
"github.com/yaoapp/gou/fs/dsl"
|
||||
"github.com/yaoapp/gou/fs/system"
|
||||
"github.com/yaoapp/kun/log"
|
||||
"github.com/yaoapp/yao/data"
|
||||
"github.com/yaoapp/yao/engine"
|
||||
"github.com/yaoapp/yao/share"
|
||||
"github.com/yaoapp/yao/widgets/app"
|
||||
)
|
||||
|
||||
|
|
@ -95,7 +92,7 @@ func Install(payload map[string]map[string]string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
err = makeDemoWidgets(root)
|
||||
err = makeInit(root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -231,897 +228,26 @@ func makeDirs(root string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func makeDemoWidgets(root string) error {
|
||||
|
||||
dsl := dsl.New(root)
|
||||
|
||||
// make app
|
||||
ok, err := makeAppWidget(dsl, root)
|
||||
if err != nil || !ok {
|
||||
return err
|
||||
}
|
||||
|
||||
// make flows
|
||||
err = makeMenuFlowWidget(dsl, root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make logins
|
||||
err = makeLoginWidget(dsl, root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make models
|
||||
err = makeModelWidget(dsl, root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make tables & forms
|
||||
err = makeTableFormWidget(dsl, root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make chart
|
||||
err = makeChartWidget(dsl, root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make scripts
|
||||
err = makeScript(root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make scripts
|
||||
err = makeLang(root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// make index page
|
||||
err = makeIndexPage(root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeAppWidget(dsl fs.FileSystem, root string) (bool, error) {
|
||||
|
||||
file := filepath.Join("app.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return false, nil
|
||||
}
|
||||
|
||||
_, err := dsl.WriteFile(file, []byte(fmt.Sprintf(`
|
||||
{
|
||||
"xgen": "1.0",
|
||||
"name": "::Demo Application",
|
||||
"short": "::Demo",
|
||||
"description": "::Another yao application",
|
||||
"version": "%s",
|
||||
"adminRoot": "admin",
|
||||
"setup": "scripts.demo.Data",
|
||||
"menu": {
|
||||
"process": "flows.app.menu",
|
||||
"args": ["demo"]
|
||||
},
|
||||
"optional": {
|
||||
"hideNotification": true,
|
||||
"hideSetting": false
|
||||
}
|
||||
}
|
||||
`, share.VERSION)), 0644)
|
||||
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func makeMenuFlowWidget(dsl fs.FileSystem, root string) error {
|
||||
|
||||
file := filepath.Join("flows", "app", "menu.flow.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err := dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "APP Menu",
|
||||
"nodes": [],
|
||||
"output": [
|
||||
{
|
||||
"blocks": 0,
|
||||
"icon": "icon-activity",
|
||||
"id": 1,
|
||||
"name": "图表",
|
||||
"parent": null,
|
||||
"path": "/x/Chart/dashboard",
|
||||
"visible_menu": 0
|
||||
},
|
||||
{
|
||||
"blocks": 0,
|
||||
"icon": "icon-book",
|
||||
"id": 2,
|
||||
"name": "表格",
|
||||
"parent": null,
|
||||
"path": "/x/Table/pet",
|
||||
"visible_menu": 1,
|
||||
"children": [
|
||||
{
|
||||
"blocks": 0,
|
||||
"icon": "icon-book",
|
||||
"name": "宠物列表",
|
||||
"id": 2010,
|
||||
"parent": 2,
|
||||
"path": "/x/Table/pet",
|
||||
"visible_menu": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"blocks": 0,
|
||||
"icon": "icon-clipboard",
|
||||
"id": 2,
|
||||
"name": "表单",
|
||||
"parent": null,
|
||||
"path": "/x/Form/pet/1/edit",
|
||||
"visible_menu": 1,
|
||||
"children": [
|
||||
{
|
||||
"blocks": 0,
|
||||
"icon": "icon-clipboard",
|
||||
"name": "编辑模式",
|
||||
"id": 2010,
|
||||
"parent": 2,
|
||||
"path": "/x/Form/pet/1/edit",
|
||||
"visible_menu": 1
|
||||
},
|
||||
{
|
||||
"blocks": 0,
|
||||
"icon": "icon-clipboard",
|
||||
"name": "查看模式",
|
||||
"id": 2010,
|
||||
"parent": 2,
|
||||
"path": "/x/Form/pet/1/view",
|
||||
"visible_menu": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeLoginWidget(dsl fs.FileSystem, root string) error {
|
||||
file := filepath.Join("logins", "admin.login.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err := dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "::Admin Login",
|
||||
"action": {
|
||||
"process": "yao.login.Admin",
|
||||
"args": [":payload"]
|
||||
},
|
||||
"layout": {
|
||||
"entry": "/x/Chart/dashboard",
|
||||
"slogan": "::Make Your Dream With Yao App Engine",
|
||||
"site": "https://yaoapps.com?from=instance-admin-login"
|
||||
}
|
||||
}
|
||||
`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
file = filepath.Join("logins", "user.login.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err = dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "::User Login",
|
||||
"action": {
|
||||
"process": "scripts.user.Login",
|
||||
"args": [":payload"]
|
||||
},
|
||||
"layout": {
|
||||
"entry": "/x/Table/pet",
|
||||
"slogan": "::Make Your Dream With Yao App Engine",
|
||||
"site": "https://yaoapps.com/from=instance-user-login"
|
||||
}
|
||||
}
|
||||
`), 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeModelWidget(dsl fs.FileSystem, root string) error {
|
||||
file := filepath.Join("models", "pet.mod.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err := dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "Pet",
|
||||
"table": { "name": "pet", "comment": "宠物表" },
|
||||
"columns": [
|
||||
{ "name": "id", "comment": "ID", "type": "ID" },
|
||||
{
|
||||
"name": "name",
|
||||
"comment": "昵称",
|
||||
"type": "string",
|
||||
"length": 80,
|
||||
"index": true,
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "type",
|
||||
"comment": "类型",
|
||||
"type": "enum",
|
||||
"option": ["cat", "dog", "others"],
|
||||
"index": true
|
||||
},
|
||||
{
|
||||
"name": "status",
|
||||
"comment": "入院状态",
|
||||
"type": "enum",
|
||||
"option": ["checked", "curing", "cured"],
|
||||
"index": true
|
||||
},
|
||||
{
|
||||
"name": "mode",
|
||||
"comment": "状态",
|
||||
"type": "enum",
|
||||
"option": ["enabled", "disabled"],
|
||||
"index": true
|
||||
},
|
||||
{
|
||||
"name": "online",
|
||||
"comment": "是否在线",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"index": true
|
||||
},
|
||||
{
|
||||
"name": "curing_status",
|
||||
"comment": "治疗状态",
|
||||
"type": "enum",
|
||||
"default": "0",
|
||||
"option": ["0", "1", "2"],
|
||||
"index": true
|
||||
},
|
||||
{
|
||||
"name": "stay",
|
||||
"comment": "入院时间",
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"name": "cost",
|
||||
"comment": "花费",
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"name": "doctor_id",
|
||||
"type": "integer",
|
||||
"comment": "相关职工",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "images",
|
||||
"type": "json",
|
||||
"comment": "相关图片",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "test_string",
|
||||
"comment": "测试字段(字符串)",
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "test_number",
|
||||
"comment": "测试字段(数字)",
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
},
|
||||
{
|
||||
"name": "test_array",
|
||||
"comment": "测试字段(数组)",
|
||||
"type": "json",
|
||||
"nullable": true
|
||||
}
|
||||
],
|
||||
"relations": {},
|
||||
"values": [],
|
||||
"indexes": [],
|
||||
"option": { "timestamps": true,"soft_deletes": true }
|
||||
}
|
||||
`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeTableFormWidget(dsl fs.FileSystem, root string) error {
|
||||
file := filepath.Join("tables", "pet.tab.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err := dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "::Pet Admin Bind Model",
|
||||
"action": {
|
||||
"bind": { "model": "pet", "option": {} }
|
||||
}
|
||||
}
|
||||
`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
file = filepath.Join("forms", "pet.form.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err = dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "::Pet Admin Bind Table",
|
||||
"action": {
|
||||
"bind": { "table": "pet", "option": {} }
|
||||
}
|
||||
}
|
||||
`), 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeChartWidget(dsl fs.FileSystem, root string) error {
|
||||
|
||||
file := filepath.Join("charts", "dashboard.chart.json")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err := dsl.WriteFile(file, []byte(`
|
||||
{
|
||||
"name": "宠物医院数据图表",
|
||||
|
||||
"config":{"full":false},
|
||||
|
||||
"action": {
|
||||
"before:data": "scripts.stat.BeforeData",
|
||||
"data": { "process": "scripts.stat.Data", "default": ["2022-09-20"] },
|
||||
"after:data": "scripts.stat.AfterData"
|
||||
},
|
||||
|
||||
"layout": {
|
||||
"operation": {
|
||||
"actions": [
|
||||
{
|
||||
"title": "跳转至大屏",
|
||||
"icon": "icon-airplay",
|
||||
"action": { "Common.historyPush": { "pathname": "/x/Cool/demo" } }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"filter": {
|
||||
"columns": [{ "name": "时间区间", "width": 6 }]
|
||||
},
|
||||
|
||||
"chart": {
|
||||
"columns": [
|
||||
{ "name": "宠物数量", "width": 6 },
|
||||
{ "name": "宠物类型", "width": 6 },
|
||||
{ "name": "当月收入", "width": 6 },
|
||||
{ "name": "医师数量", "width": 6 },
|
||||
{ "name": "宠物数量_上月", "width": 6 },
|
||||
{ "name": "宠物类型_上月", "width": 6 },
|
||||
{ "name": "当月收入_上月", "width": 6 },
|
||||
{ "name": "医师数量_上月", "width": 6 },
|
||||
{ "name": "收入", "width": 8 },
|
||||
{ "name": "支出", "width": 8 },
|
||||
{ "name": "综合评分", "width": 8 },
|
||||
{ "name": "收入_折线图", "width": 8 },
|
||||
{ "name": "支出_折线图", "width": 8 },
|
||||
{ "name": "综合评分_折线图", "width": 8 },
|
||||
{ "name": "类型排布", "width": 12 },
|
||||
{ "name": "状态分布", "width": 12 },
|
||||
{ "name": "综合消费", "width": 24 }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"fields": {
|
||||
"filter": {
|
||||
"时间区间": {
|
||||
"bind": "range",
|
||||
"edit": { "type": "RangePicker", "props": {} }
|
||||
},
|
||||
"状态": {
|
||||
"bind": "status",
|
||||
"edit": {
|
||||
"type": "Select",
|
||||
"props": {
|
||||
"xProps": {
|
||||
"$remote": {
|
||||
"process": "models.pet.Get",
|
||||
"query": { "select": "name,status", "limit": 2 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
func makeInit(root string) error {
|
||||
files := data.AssetNames()
|
||||
for _, file := range files {
|
||||
if strings.HasPrefix(file, "init/") {
|
||||
dst := filepath.Join(root, strings.TrimPrefix(file, "init/"))
|
||||
content, err := data.Read(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
},
|
||||
"chart": {
|
||||
"收入": {
|
||||
"bind": "income",
|
||||
"link": "/x/Table/pet",
|
||||
"out": "scripts.stat.Income",
|
||||
"view": {
|
||||
"type": "NumberChart",
|
||||
"props": {
|
||||
"chartHeight": 150,
|
||||
"prefix": "¥",
|
||||
"decimals": 2,
|
||||
"nameKey": "date",
|
||||
"valueKey": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"支出": {
|
||||
"bind": "cost",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "NumberChart",
|
||||
"props": {
|
||||
"chartHeight": 150,
|
||||
"color": "red",
|
||||
"prefix": "¥",
|
||||
"decimals": 2,
|
||||
"nameKey": "date",
|
||||
"valueKey": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"综合评分": {
|
||||
"bind": "rate",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "NumberChart",
|
||||
"props": {
|
||||
"chartHeight": 150,
|
||||
"color": "orange",
|
||||
"unit": "分",
|
||||
"decimals": 1,
|
||||
"nameKey": "date",
|
||||
"valueKey": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"收入_折线图": {
|
||||
"bind": "income",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "NumberChart",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"type": "line",
|
||||
"chartHeight": 120,
|
||||
"prefix": "¥",
|
||||
"decimals": 2,
|
||||
"nameKey": "date",
|
||||
"valueKey": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"支出_折线图": {
|
||||
"bind": "cost",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "NumberChart",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"type": "line",
|
||||
"chartHeight": 120,
|
||||
"color": "red",
|
||||
"prefix": "¥",
|
||||
"decimals": 2,
|
||||
"nameKey": "date",
|
||||
"valueKey": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"综合评分_折线图": {
|
||||
"bind": "rate",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "NumberChart",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"type": "line",
|
||||
"chartHeight": 120,
|
||||
"color": "orange",
|
||||
"unit": "分",
|
||||
"decimals": 1,
|
||||
"nameKey": "date",
|
||||
"valueKey": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
"宠物数量": {
|
||||
"bind": "pet_count",
|
||||
"link": "/x/Table/pet",
|
||||
"view": { "type": "Number", "props": { "unit": "个" } }
|
||||
},
|
||||
"宠物类型": {
|
||||
"bind": "pet_type",
|
||||
"view": { "type": "Number", "props": { "unit": "种" } }
|
||||
},
|
||||
"当月收入": {
|
||||
"bind": "income_monthly",
|
||||
"view": { "type": "Number", "props": { "unit": "元" } }
|
||||
},
|
||||
"医师数量": {
|
||||
"bind": "doctor_count",
|
||||
"view": { "type": "Number", "props": { "unit": "个" } }
|
||||
},
|
||||
"宠物数量_上月": {
|
||||
"bind": "prev_pet_count",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "Number",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"unit": "个",
|
||||
"prev_title": "上月数据"
|
||||
}
|
||||
}
|
||||
},
|
||||
"宠物类型_上月": {
|
||||
"bind": "prev_pet_type",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "Number",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"unit": "种",
|
||||
"prev_title": "上月数据"
|
||||
}
|
||||
}
|
||||
},
|
||||
"当月收入_上月": {
|
||||
"bind": "prev_income_monthly",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "Number",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"unit": "元",
|
||||
"prev_title": "上月数据"
|
||||
}
|
||||
}
|
||||
},
|
||||
"医师数量_上月": {
|
||||
"bind": "prev_doctor_count",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "Number",
|
||||
"props": {
|
||||
"cardStyle": { "padding": 0 },
|
||||
"unit": "个",
|
||||
"prev_title": "上月数据"
|
||||
}
|
||||
}
|
||||
},
|
||||
"类型排布": {
|
||||
"bind": "datasource_type",
|
||||
"link": "/x/Table/pet",
|
||||
"view": {
|
||||
"type": "Pie",
|
||||
"props": {
|
||||
"height": 240,
|
||||
"nameKey": "type",
|
||||
"series": [
|
||||
{
|
||||
"valueKey": "count",
|
||||
"roseType": "area",
|
||||
"radius": [10, 100],
|
||||
"center": ["60%", "50%"],
|
||||
"itemStyle": { "borderRadius": 6 }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"refer": {
|
||||
"type": "Table",
|
||||
"props": {
|
||||
"columns": [
|
||||
{ "title": "类型", "dataIndex": "type" },
|
||||
{ "title": "数量", "dataIndex": "count" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"状态分布": {
|
||||
"bind": "datasource_status",
|
||||
"view": {
|
||||
"type": "Bar",
|
||||
"props": {
|
||||
"height": 240,
|
||||
"nameKey": "status",
|
||||
"axisLabel": { "interval": 0, "fontSize": 12 },
|
||||
"series": [
|
||||
{
|
||||
"valueKey": "count",
|
||||
"type": "bar",
|
||||
"colorBy": "data",
|
||||
"itemStyle": { "borderRadius": 6 },
|
||||
"splitLine": { "show": false },
|
||||
"axisLabel": { "show": false }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"refer": {
|
||||
"type": "Table",
|
||||
"props": {
|
||||
"columns": [
|
||||
{ "title": "状态", "dataIndex": "status" },
|
||||
{ "title": "数量", "dataIndex": "count" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"综合消费": {
|
||||
"bind": "datasource_cost",
|
||||
"view": {
|
||||
"type": "LineBar",
|
||||
"props": {
|
||||
"height": 240,
|
||||
"nameKey": "name",
|
||||
"axisLabel": { "interval": 0, "fontSize": 12 },
|
||||
"series": [
|
||||
{
|
||||
"valueKey": "stay",
|
||||
"type": "line",
|
||||
"smooth": true,
|
||||
"symbolSize": 8,
|
||||
"itemStyle": { "borderRadius": 6 },
|
||||
"splitLine": { "show": false },
|
||||
"axisLabel": { "show": false }
|
||||
},
|
||||
{
|
||||
"valueKey": "cost",
|
||||
"type": "bar",
|
||||
"itemStyle": { "borderRadius": 6 },
|
||||
"splitLine": { "show": false },
|
||||
"axisLabel": { "show": false }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
dir := filepath.Dir(dst)
|
||||
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = os.WriteFile(dst, content, 0644); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeScript(root string) error {
|
||||
|
||||
fs := system.New(filepath.Join(root, "scripts"))
|
||||
file := "demo.js"
|
||||
if _, err := os.Stat(filepath.Join(root, "scripts", file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err := fs.WriteFile(file, []byte(`
|
||||
/**
|
||||
* Demo Data
|
||||
*/
|
||||
function Data() {
|
||||
return Process(
|
||||
"yao.table.Insert",
|
||||
"pet",
|
||||
["name", "type", "status", "mode", "stay", "cost", "doctor_id"],
|
||||
[
|
||||
["Cookie", "cat", "checked", "enabled", 200, 105, 1],
|
||||
["Baby", "dog", "checked", "enabled", 186, 24, 1],
|
||||
["Poo", "others", "checked", "enabled", 199, 66, 1],
|
||||
]
|
||||
);
|
||||
}
|
||||
`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
file = filepath.Join("stat.js")
|
||||
if _, err := os.Stat(filepath.Join(root, "scripts", file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err = fs.WriteFile(file, []byte(`
|
||||
/**
|
||||
* before:data hook
|
||||
* @param {*} params
|
||||
* @returns
|
||||
*/
|
||||
function BeforeData(params) {
|
||||
log.Info("[chart] before data hook: %s", JSON.stringify(params));
|
||||
return [params];
|
||||
}
|
||||
|
||||
/**
|
||||
* after:data hook
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
function AfterData(data) {
|
||||
log.Info("[chart] after data hook: %s", JSON.stringify(data));
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Data
|
||||
* @param {*} params
|
||||
*/
|
||||
function Data(params) {
|
||||
log.Info("[chart] process data query: %s", JSON.stringify(params));
|
||||
return {
|
||||
income: [
|
||||
{ value: 40300, date: "2022-1-1" },
|
||||
{ value: 50800, date: "2022-2-1" },
|
||||
{ value: 31300, date: "2022-3-1" },
|
||||
{ value: 48800, date: "2022-4-1" },
|
||||
{ value: 69900, date: "2022-5-1" },
|
||||
{ value: 37800, date: "2022-6-1" },
|
||||
],
|
||||
cost: [
|
||||
{ value: 28100, date: "2022-1-1" },
|
||||
{ value: 23000, date: "2022-2-1" },
|
||||
{ value: 29300, date: "2022-3-1" },
|
||||
{ value: 26700, date: "2022-4-1" },
|
||||
{ value: 26400, date: "2022-5-1" },
|
||||
{ value: 31200, date: "2022-6-1" },
|
||||
],
|
||||
rate: [
|
||||
{ value: 8.0, date: "2022-1-1" },
|
||||
{ value: 7.6, date: "2022-2-1" },
|
||||
{ value: 9.1, date: "2022-3-1" },
|
||||
{ value: 8.4, date: "2022-4-1" },
|
||||
{ value: 6.9, date: "2022-5-1" },
|
||||
{ value: 9.0, date: "2022-6-1" },
|
||||
],
|
||||
pet_count: 54,
|
||||
pet_type: 8,
|
||||
income_monthly: 68900,
|
||||
doctor_count: 23,
|
||||
prev_pet_count: { current: 54, prev: 45 },
|
||||
prev_pet_type: { current: 8, prev: 13 },
|
||||
prev_income_monthly: { current: 68900, prev: 92000 },
|
||||
prev_doctor_count: { current: 23, prev: 27 },
|
||||
datasource_type: [
|
||||
{ type: "猫猫", count: 18 },
|
||||
{ type: "狗狗", count: 6 },
|
||||
{ type: "其他", count: 3 },
|
||||
],
|
||||
datasource_status: [
|
||||
{ status: "已查看", count: 3 },
|
||||
{ status: "治疗中", count: 12 },
|
||||
{ status: "已治愈", count: 9 },
|
||||
],
|
||||
datasource_cost: [
|
||||
{ name: "毛毛", stay: 3, cost: 2000 },
|
||||
{ name: "阿布", stay: 6, cost: 4200 },
|
||||
{ name: "咪咪", stay: 7, cost: 6000 },
|
||||
{ name: "狗蛋", stay: 1, cost: 1000 },
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute out
|
||||
* @param {*} field
|
||||
* @param {*} value
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
function Income(field, value, data) {
|
||||
log.Info(
|
||||
"[chart] Income Compute: %s",
|
||||
JSON.stringify({ field: field, value: value, data: data })
|
||||
);
|
||||
return value;
|
||||
}
|
||||
`), 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeLang(root string) error {
|
||||
fs := system.New(filepath.Join(root, "langs"))
|
||||
file := filepath.Join("zh-cn", "global.yml")
|
||||
if _, err := os.Stat(filepath.Join(root, "langs", file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err := fs.WriteFile(file, []byte(`
|
||||
Demo: 演示
|
||||
Demo Application: 示例应用
|
||||
Another yao application: 又一个 YAO 应用`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
file = filepath.Join("zh-hk", "langs", "global.yml")
|
||||
if _, err := os.Stat(filepath.Join(root, file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
_, err = fs.WriteFile(file, []byte(`
|
||||
Demo: 演示
|
||||
Demo Application: 示例應用
|
||||
Another yao application: 又一個YAO應用`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeIndexPage(root string) error {
|
||||
fs := system.New(filepath.Join(root, "public"))
|
||||
file := "index.html"
|
||||
if _, err := os.Stat(filepath.Join(root, "public", file)); err == nil { // exists
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err := fs.WriteFile(file, []byte(`
|
||||
It works!`), 0644)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package setup
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
|
@ -10,3 +11,19 @@ func TestInstall(t *testing.T) {
|
|||
// t.Fatal(err)
|
||||
// }
|
||||
}
|
||||
|
||||
func TestMakeInit(t *testing.T) {
|
||||
root := prepare(t)
|
||||
err := makeInit(root)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func prepare(t *testing.T) string {
|
||||
dir, err := os.MkdirTemp("", "-install")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return dir
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue