mirror of https://github.com/doccano/doccano.git
pythonannotation-tooldatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learning
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.
81 lines
2.0 KiB
81 lines
2.0 KiB
export class LabelItemList {
|
|
constructor(public labelItems: LabelItem[]) {}
|
|
|
|
static valueOf(items: LabelItem[]): LabelItemList {
|
|
return new LabelItemList(items)
|
|
}
|
|
|
|
add(item: LabelItem) {
|
|
this.labelItems.push(item)
|
|
}
|
|
|
|
update(item: LabelItem) {
|
|
const index = this.labelItems.findIndex(label => label.id === item.id)
|
|
this.labelItems.splice(index, 1, item)
|
|
}
|
|
|
|
delete(item: LabelItem) {
|
|
this.labelItems = this.labelItems.filter(label => label.id !== item.id)
|
|
}
|
|
|
|
bulkDelete(items: LabelItemList) {
|
|
const ids = items.ids()
|
|
this.labelItems = this.labelItems.filter(label => !ids.includes(label.id))
|
|
}
|
|
|
|
count(): Number {
|
|
return this.labelItems.length
|
|
}
|
|
|
|
ids(): Number[]{
|
|
return this.labelItems.map(item => item.id)
|
|
}
|
|
|
|
get nameList(): string[] {
|
|
return this.labelItems.map(item => item.name)
|
|
}
|
|
|
|
get usedKeys(): string[] {
|
|
const items = this.labelItems
|
|
.filter(item => item.suffixKey !== null)
|
|
.map(item => item.suffixKey) as string[]
|
|
return items
|
|
}
|
|
|
|
toArray(): Object[] {
|
|
return this.labelItems.map(item => item.toObject())
|
|
}
|
|
}
|
|
|
|
export class LabelItem {
|
|
constructor(
|
|
public id: number,
|
|
public text: string,
|
|
public prefixKey: string | null,
|
|
public suffixKey: string | null,
|
|
public backgroundColor: string,
|
|
public textColor: string = '#ffffff'
|
|
) {}
|
|
|
|
static valueOf(
|
|
{ id, text, prefix_key, suffix_key, background_color, text_color }:
|
|
{ id: number, text: string, prefix_key: string, suffix_key: string, background_color: string, text_color: string }
|
|
): LabelItem {
|
|
return new LabelItem(id, text, prefix_key, suffix_key, background_color, text_color)
|
|
}
|
|
|
|
get name(): string {
|
|
return this.text
|
|
}
|
|
|
|
toObject(): Object {
|
|
return {
|
|
id: this.id,
|
|
text: this.text,
|
|
prefix_key: this.prefixKey,
|
|
suffix_key: this.suffixKey,
|
|
background_color: this.backgroundColor,
|
|
text_color: this.textColor
|
|
}
|
|
}
|
|
}
|