import * as _ from "lodash"; import { DocumentIsogd, DocumentSpecific } from "isogd-document-rest"; class DocumentSpecificEditController { private document: DocumentIsogd; private specifics: any[]; private _addNewSpecific(): void { let newSpecific: DocumentSpecific = new DocumentSpecific(); newSpecific.specificCode = this.specifics[0].code; newSpecific.specificName = this.specifics[0].name; newSpecific.specificValue = ""; if (!this.document.specific) { this.document.specific = []; } this.document.specific.push(newSpecific); } private _deleteSpecific(idx): void { this.document.specific.splice(idx, 1); } private _hasEmptySpecific(): boolean { return this.document.specific.some((specific) => { return specific.specificValue === ""; }); } public onSpecificTypeChanged(idx: number) { let specific = _.find(this.specifics, specific => { return specific.specificCode == this.document.specific[idx].specificCode; }); this.document.specific[idx].specificName = specific.specificName; } public onSpecificValueChange(idx, value): void { if (!this._hasEmptySpecific()) { this._addNewSpecific(); } if (value === "") { this._deleteSpecific(idx); } } } export const DocumentSpecificEditComponent: angular.IComponentOptions = { controller: DocumentSpecificEditController, template: require('./documentSpecificEdit.html'), bindings: { document: "<", specifics: "<" } };