yao/tests/widgets/dyform/compile.js

107 lines
2.4 KiB
JavaScript

/**
* The DSL compiler.
* Translate the customize DSL to Models, Processes, Flows, Tables, etc.
*/
/**
* Source
* Where to get the source of DSL
*/
function Source() {
return dyforms();
}
/**
* Compile
* Translate or extend the customize DSL
* @param {*} dsl
*/
function Compile(name, dsl) {
let newdsl = { name: name };
return newdsl;
}
/**
* OnLoad
* When the widget instance are loaded, the function will be called.
* For preparing the sources the widget need.
* @param {DSL} dsl
*/
function OnLoad(name, dsl) {
log.Info("[Widget] dyform.OnLoad %s %v", name, dsl);
}
/**
* Migrate
* When the migrate command executes, the function will be called
* @param {DSL} dsl
* @param {bool} force
*/
function Migrate(dsl, force) {}
/**
* Customize DSL
* @returns
*/
function dyforms() {
return {
pad: {
guard: "bearer-jwt",
title: "应用表单",
sn: "PAD1024",
orign: "手机平板",
columns: [
{
name: "门店",
field: "store_id",
searchable: true,
props: {
value: ":store_id",
type: "SelectStore",
title: "门店",
placeholder: "请选择门店",
validation: [
{ type: "Required" },
{ type: "StoreStatus", args: [":store_id"] },
],
},
},
{
name: "订单数量",
field: "orders_amount",
searchable: true,
props: {
value: ":orders_amount",
type: "Number",
title: "订单数量",
placeholder: "今日订单数量",
computed: "OrderAmount",
validation: [
{ type: "Required" },
{ type: "IsNumber", args: [":orders_amount"] },
],
},
},
{
name: "账单地址",
field: "address",
props: {
value: ":address",
type: "Text",
title: "账单地址",
placeholder: "填写账单地址",
validation: [
{ type: "Required" },
{ type: "MaxLength", args: [":address", 200] },
],
},
},
],
filters: [],
"list-layout": {
columns: [{ name: "store_id" }, { name: "orders_amount" }],
filters: [{ name: "订单数量" }],
},
},
};
}