devfty
Version:
Devfty is a library for developer building low code factory
129 lines (116 loc) • 3.93 kB
text/typescript
import basic from './basic'
import advanced from './advanced'
import adapter from './adapter'
import page from './page'
const {
RefAdapter,
LabelAdapter, //
ModelAdapter,
BillAdapter,
LoadMetaAdapter,
PageModelAdapter,
ExtendjsAdapter,
BillListAdapter,
DataSourceAdapter,
DataSourceModelAdapter,
FilterAdapter,
} = adapter
// 装饰器
// function decorator(adapter: any, o, args) {
// if (args.beforeAdapter?.(o, o.adapterName) === false) {
// return false
// }
// o.component = typeof adapter === 'function' ? adapter(o.component) : o.component
// if (args.afterAdapter?.(o, o.adapterName) === false) {
// return false
// }
// return true
// }
export function basicAdapter(args: any) {
const openModel = args.openModel
const noRefs = ['Form', 'Row', 'Col']
const labelControls = ['Checkbox', 'CheckboxGroup', 'ColorPicker', 'DatePicker', 'RangePicker', 'Input', 'InputNumber', 'Radio', 'Select', 'Switch', 'TimePicker', 'TreeSelect', 'Upload', 'Tag']
const coms: any = {}
for (let name in basic) {
const component: any = basic[name]
const o = { name, component }
if (args.beforeAdapter?.(o) === false) {
continue
}
if (labelControls.includes(name)) {
o.component = LabelAdapter(o.component)
}
if (noRefs.includes(name)) {
coms[name] = o.component
continue
}
o.component = RefAdapter(o.component)
if (openModel) {
o.component = ModelAdapter(o.component)
}
if (args.afterAdapter?.(o) === false) {
continue
}
coms[name] = o.component
}
Object.assign(basic, coms)
}
export function advancedAdapter(args: any) {
const openModel = args.openModel
const dataSourceAdapters = ['Table']
const filterAdapters = ['Filter']
const coms: any = {}
for (let name in advanced) {
const component = (advanced as any)[name] as any
const o = { name, component }
if (args.beforeAdapter?.(o) === false) {
continue
}
if (dataSourceAdapters.includes(name)) {
o.component = DataSourceAdapter(o.component)
if (openModel) {
o.component = DataSourceModelAdapter(o.component)
}
} else if (openModel && filterAdapters.includes(name)) {
o.component = FilterAdapter(o.component)
}
if (args.afterAdapter?.(o) === false) {
continue
}
coms[name] = o.component
}
Object.assign(advanced, coms)
}
export function pageAdapter(args: any) {
const openModel = args.openModel
const openExtendjs = args.openExtendjs
const pageAdapters = ['Bill', 'BillList']
const coms: any = {}
for (let name in page) {
const component = (page as any)[name] as any
const o = { name, component }
if (args.beforeAdapter?.(o) === false) {
continue
}
if (pageAdapters.includes(name)) {
if (name === 'BillList' && openModel) {
o.component = BillListAdapter(o.component)
} else if (name === 'Bill' && openModel) {
o.component = BillAdapter(o.component)
}
if (openExtendjs) {
o.component = ExtendjsAdapter(o.component)
}
if (openModel) {
o.component = PageModelAdapter(o.component)
}
o.component = LoadMetaAdapter(o.component)
}
if (args.afterAdapter?.(o) === false) {
continue
}
coms[name] = o.component
}
Object.assign(page, coms)
}
export default { basic, advanced, adapter, page }