|
|
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 } } }
|