Browse Source

Add ConfigTemplateModel

pull/1206/head
Hironsan 3 years ago
parent
commit
78b18af3ff
1 changed files with 58 additions and 0 deletions
  1. 58
      frontend/models/config/config-template.ts

58
frontend/models/config/config-template.ts

@ -0,0 +1,58 @@
export interface Schema {
title: string,
type: string,
properties: object
}
export interface ConfigResponse {
name: string,
schema: Schema,
template: string
}
export class ConfigTemplateItem {
constructor(
private schema: Schema,
public template: string
) {}
static valueOf(
{ schema, template }:
{ schema: Schema, template: string }
): ConfigTemplateItem {
return new ConfigTemplateItem(schema, template)
}
get modelName(): string {
return this.schema.title
}
get fields() {
const response = []
for (const [key, value] of Object.entries(this.schema.properties)) {
if ('type' in value && value.type === 'string') {
response.push({name: key, type: 'textField', value: ''})
} else if ('anyOf' in value) {
response.push(
{
name: key,
type: 'selectField',
value: '',
items: value['anyOf'].map(
(item: {'const': string, 'type': string}) => item.const
)
}
)
}
}
return response
}
toObject(): Object {
return {
model_name: this.modelName,
template: this.template,
model_attrs: this.fields
}
}
}
Loading…
Cancel
Save