mirror of https://github.com/doccano/doccano.git
pythondatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learningannotation-tool
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.0 KiB
79 lines
2.0 KiB
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[]
|
|
}
|
|
|
|
export class ConfigItem {
|
|
constructor(
|
|
public id: number,
|
|
public modelName: string,
|
|
public modelAttrs: object,
|
|
public template: string,
|
|
public labelMapping: object
|
|
) {}
|
|
|
|
static valueOf(
|
|
{ id, model_name, model_attrs, template, label_mapping }:
|
|
{ id: number, model_name: string, model_attrs: object, template: string, label_mapping: object }
|
|
): ConfigItem {
|
|
return new ConfigItem(id, model_name, model_attrs, template, label_mapping)
|
|
}
|
|
|
|
static parseFromUI(
|
|
{ modelName, modelAttrs, template, labelMapping }: 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)
|
|
}
|
|
|
|
toObject(): object {
|
|
return {
|
|
id: this.id,
|
|
modelName: this.modelName,
|
|
modelAttrs: this.modelAttrs,
|
|
template: this.template,
|
|
labelMapping: this.labelMapping
|
|
}
|
|
}
|
|
|
|
toAPI(): object {
|
|
return {
|
|
id: this.id,
|
|
model_name: this.modelName,
|
|
model_attrs: this.modelAttrs,
|
|
template: this.template,
|
|
label_mapping: this.labelMapping
|
|
}
|
|
}
|
|
}
|