import {Entity} from './entity'; import {ExampleEntityData} from "./example-entity-data"; import {DsProjectRoomBlock, DsProjectRoomBlockField, DsProjectRoomData} from "../dynamic-labeling-room/entities"; export class TitleSimilarity implements Entity { private _title = ''; private _similar_titles: SimilarTitle[] = []; private _exampleEntityData: ExampleEntityData = new ExampleEntityData('title-similarity'); constructor(obj?) { if (obj) { if (obj.title) { this._title = obj.title; } if (obj.similar_titles) { for (const i in obj.similar_titles) { if (typeof obj.similar_titles[i] === 'string') { this._similar_titles.push(new SimilarTitle({title: obj.similar_titles[i]})); } else { this._similar_titles.push(new SimilarTitle(obj.similar_titles[i])); } } } } } get title(): string { return this._title; } set title(value: string) { this._title = value; } get similar_titles(): SimilarTitle[] { return this._similar_titles; } set similar_titles(value: SimilarTitle[]) { this._similar_titles = value; } public toJSON() { return { title: this.title, similar_titles: this.similar_titles }; } public toNerEntities(type = 1) { return { relationOptions: [], entities: { similar_titles: '' } }; } public getSimilarTitlesAsListOfStrings(): any { return { title: this.title, similar_titles: this.similar_titles.map((o) => o.title) }; } nerEntityTypeOptions(): any[] { return []; } public fromDsProjectRoom(obj: DsProjectRoomBlock[], data: DsProjectRoomData) { const titleSimilarity = { title: data.text, similar_titles: [] }; let block: DsProjectRoomBlock; for (block of obj) { titleSimilarity.similar_titles = []; let field: DsProjectRoomBlockField; for (field of block.fields) { if (field.value) { titleSimilarity.similar_titles.push(field.label); } } } return new TitleSimilarity(titleSimilarity); } public toDsProjectRoom() { const data: DsProjectRoomData = new DsProjectRoomData({ text: this._exampleEntityData.getExampleData(), url: '', showInIframe: false }); const blocks = [ { blockName: '', blockDesc: '', numColumns: 4, fields: [] }]; const final = []; for (const similarTitle of this._exampleEntityData.getExampleLinkedData()) { const objTitle = {label: similarTitle, inputType: 'checkbox'}; blocks[0].fields.push(objTitle); } for (const i in blocks) { final.push(new DsProjectRoomBlock(blocks[i])); } return {blocks: final, data: data}; } } export class SimilarTitle { title = ''; score = -1; constructor(obj?) { if (obj) { if (obj.title) { this.title = obj.title; } if (obj.score > -1) { this.score = obj.score; } } } }