import * as _ from 'lodash'; import { DocumentIsogd, DocumentTerritoryDocTerritory, DocumentTerritoryArea, DocumentTerritoryDistrict } from 'isogd-document-rest'; import { NsiRestService } from 'oasi-nsi-rest'; class DocumentTerritoryEditController { private document: DocumentIsogd; private areas: any[]; private docTerritories: DocumentTerritoryDocTerritory[]; private selectedAreas: any[]; private districts: any[]; private districtsByArea: any[]; private selectedDistricts: any[]; private selectedDocTerritory: DocumentTerritoryDocTerritory; private notFoundAreas: string[]; private notFoundDistricts: string[]; private workSheetNumbers: any[]; private selectedWorkSheetNumbers: any[]; static $inject = ['nsiRestService', 'toastr']; constructor(private nsiRestService: NsiRestService, private toastr: Toastr) { } public solicitorSearch(search: string, $select: any) { if (search && search.length > 2) { this.nsiRestService.getByStartwith("TabletNumbers", { nickAttr: "list", values: [search] }).then(response => { if (response && response.length > 0) { this.workSheetNumbers = _.map(response, (r: any) => { return r.list; }) } }).catch(error => { this.toastr.error("Ошибка при получении информации из справочника!"); }); } } public onWorkSheetNumbersChange() { this.document.territory.workSheetNumber =this.selectedWorkSheetNumbers; } public onCadastralNumberChange(idx, value): void { this.document.territory.cadastralNumber[idx] = value; if (!this._hasEmptyCadastralNumber()) { this._addNewCadastralNumber(); } if (value === "" && this.document.territory.cadastralNumber.length > 1) { this._deleteCadastralNumber(idx); } } private _addNewCadastralNumber(): void { this.document.territory.cadastralNumber.push(""); } private _hasEmptyCadastralNumber(): boolean { return this.document.territory.cadastralNumber.some((cadastralNumber) => { return cadastralNumber === ""; }); } private _deleteCadastralNumber(idx): void { this.document.territory.cadastralNumber.splice(idx, 1); } private onAreaChange() { let areas: DocumentTerritoryArea[] = []; this.selectedAreas.forEach(a => { let _area = new DocumentTerritoryArea(); _area.areaName = a.name, _area.areaCode = a.code areas.push(_area); }); this.document.territory.area = areas; if (this.selectedAreas.length > 0) { let _districts = []; this.districts.forEach(d => { this.selectedAreas.forEach(a => { if (d.perfectId && d.perfectId.length > 0) { d.perfectId.forEach(p => { if (p.code === a.code) { _districts.push(d); } }); } }); }); this.districtsByArea = _districts; } else { this.districtsByArea = this.districts; } let _selectedDistricts = []; this.selectedDistricts.forEach(d => { this.districtsByArea.forEach(da => { if (d.code === da.code) { _selectedDistricts.push(d); } }); }); this.selectedDistricts = _selectedDistricts; let _d: any[] = []; this.selectedDistricts.forEach(d => { _d.push({ districtName: d.name, districtCode: d.code }) }); this.document.territory.district = _d; } onDocTerritoryChange() { this.document.territory.docTerritory = this.selectedDocTerritory; } onDistrictChange() { let _d: any[] = []; this.selectedDistricts.forEach(d => { _d.push({ districtName: d.name, districtCode: d.code }) }); this.document.territory.district = _d; } } export const DocumentTerritoryEditComponent: angular.IComponentOptions = { controller: DocumentTerritoryEditController, template: require('./documentTerritoryEdit.html'), bindings: { document: "<", areas: "<", selectedAreas: "<", districts: "<", districtsByArea: "<", selectedDistricts: "<", docTerritories: "<", selectedDocTerritory: "<", notFoundAreas: "<", notFoundDistricts: "<", workSheetNumbers: "<", selectedWorkSheetNumbers: "<" } };