kdesign-ui
Version:
kd is from company of klx, it provide quickly genarator company inner business front structure
65 lines (63 loc) • 1.44 kB
text/typescript
interface resultType {
[key: string]: any
}
interface dataType {
must: number,
type: number,
name: string,
data: Array<any>
}
export const fieldType: resultType = {
0: 'String',
1: 'Number',
5: 'Number',
2: 'Boolean',
4: 'Object',
6: 'Array',
7: 'Array',
8: 'Array',
9: 'Array',
10: 'Date',
11: 'File'
}
export const fieldMapType: resultType = {
0: 'String',
1: 'Number',
2: 'Boolean',
3: 'Array',
4: 'Object',
5: 'Number',
6: 'Array',
7: 'Array',
8: 'Array',
9: 'Array',
10: 'Date',
11: 'String'
}
export class GenParams {
private typeMap = fieldMapType
public result: resultType = {}
public gen(data: Array<any>, prefix = '', isArray = false) {
this.result = {}
genHandler.call(this, data, prefix, isArray)
function genHandler(this: typeof GenParams.prototype, data: Array<any>, prefix = '', isArray = false) {
data.forEach((d: dataType) => {
let fullKey = `${isArray ? prefix + (d.name || '') + '[0]' : prefix + (d.name || '')}`
this.result[fullKey] = this.getRes(d)
if (d.data && d.data.length) {
genHandler.call(this, d.data, isArray ? `${fullKey}.` : fullKey, this.typeMap[d.type] === 'Array')
}
})
}
return this.result
}
public getRes(d: dataType) {
if (d.must) {
return {
type: this.typeMap[d.type],
required: true
}
}
return this.typeMap[d.type]
}
}