|
|
export class ConfigItemList { constructor(public configItems: ConfigItem[]) {}
static valueOf(items: ConfigItem[]): ConfigItemList { return new ConfigItemList(items) }
toArray(): Object[] { return this.configItems.map((item) => item.toObject()) } }
interface LabelMappingForUI { from: string to: string }
export interface ParametersForUI { name: string value: string | object[] type?: string items?: string[] }
export interface Fields { modelName: string modelAttrs: ParametersForUI[] template: string labelMapping: LabelMappingForUI[] taskType: string }
export class ConfigItem { constructor( public id: number, public modelName: string, public modelAttrs: object, public template: string, public labelMapping: object, public taskType: string ) {}
static valueOf({ id, model_name, model_attrs, template, label_mapping, task_type }: { id: number model_name: string model_attrs: object template: string label_mapping: object task_type: string }): ConfigItem { return new ConfigItem(id, model_name, model_attrs, template, label_mapping, task_type) }
static parseFromUI({ modelName, modelAttrs, template, labelMapping, taskType }: Fields): ConfigItem { const mapping = labelMapping.reduce((a, x) => ({ ...a, [x.from]: x.to }), {}) const attributes: { [key: string]: any } = modelAttrs.reduce( (a, x) => ({ ...a, [x.name]: x.value }), {} ) for (const [key, value] of Object.entries(attributes)) { if (Array.isArray(value)) { attributes[key] = value.reduce((a, x) => ({ ...a, [x.key]: x.value }), {}) } } return new ConfigItem(99999, modelName, attributes, template, mapping, taskType) }
toObject(): object { return { id: this.id, modelName: this.modelName, modelAttrs: this.modelAttrs, template: this.template, labelMapping: this.labelMapping, taskType: this.taskType } }
toAPI(): object { return { id: this.id, model_name: this.modelName, model_attrs: this.modelAttrs, template: this.template, label_mapping: this.labelMapping, task_type: this.taskType } } }
|