| /* |
| ****************************************************************************** |
| * Copyright © 2018 PTA GmbH. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| ****************************************************************************** |
| */ |
| import { |
| Component, OnInit, Input, AfterViewChecked, ViewChild, Output, |
| EventEmitter, OnChanges, SimpleChanges, ElementRef, AfterViewInit |
| } from '@angular/core'; |
| import { GridMeasure } from '../../model/grid-measure'; |
| import { FormGroup } from '@angular/forms'; |
| import { Status } from '../../model/status'; |
| import { SessionContext } from '../../common/session-context'; |
| import { Branch } from '../../model/branch'; |
| import { BranchLevel } from '../../model/branch-level'; |
| import { BaseDataService } from '../../services/base-data.service'; |
| import { GridMeasureService } from '../../services/grid-measure.service'; |
| |
| @Component({ |
| selector: 'app-grid-measure-detail-header', |
| templateUrl: './grid-measure-detail-header.component.html', |
| styleUrls: ['./grid-measure-detail-header.component.css', '../grid-measure-detail/grid-measure-detail.component.css'] |
| }) |
| export class GridMeasureDetailHeaderComponent implements OnInit, AfterViewChecked, OnChanges, AfterViewInit { |
| |
| @Input() showSpinnerGrid: boolean; |
| @Input() gridMeasureDetail: GridMeasure = new GridMeasure(); |
| @Input() isReadOnlyForm: boolean; |
| @Output() isValidForSave: EventEmitter<boolean> = new EventEmitter<boolean>(); |
| @Output() titleChange: EventEmitter<string> = new EventEmitter<string>(); |
| @ViewChild('gridMeasureDetailHeaderForm') gridMeasureDetailHeaderForm: FormGroup; |
| @ViewChild('gridMeasureDetailHeaderContainer') gridMeasureDetailHeaderContainer: ElementRef; |
| |
| statusList: Status[]; |
| inactiveFields: Array<string> = []; |
| readOnlyForm: boolean; |
| brancheList: Branch[]; |
| branchLevelList: Array<BranchLevel> = []; |
| areaOfSwitchingList: string[]; |
| departmentList: string[]; |
| costCenters: any; |
| isBranchLevelActive: boolean; |
| constructor(public sessionContext: SessionContext, |
| private baseDataService: BaseDataService, |
| private gridMeasuresService: GridMeasureService) { } |
| |
| ngOnInit() { |
| this.getBranchLevelsByBranch(this.gridMeasureDetail.branchId); |
| |
| this.inactiveFields = this.sessionContext.getInactiveFields(); |
| this.statusList = this.sessionContext.getStatuses(); |
| this.brancheList = this.sessionContext.getBranches(); |
| this.areaOfSwitchingList = this.sessionContext.getTerritories().map(ter => ter.name); |
| this.gridMeasuresService.getUserDepartmentsCreated() |
| .subscribe(departments => this.departmentList = departments, |
| error => { |
| console.log(error); |
| }); |
| this.costCenters = this.sessionContext.getCostCenters(); |
| |
| } |
| |
| ngAfterViewInit() { |
| this.initInactiveFields(); |
| } |
| |
| ngAfterViewChecked() { |
| |
| if (this.gridMeasureDetailHeaderForm) { |
| this.gridMeasureDetail._isHeaderValide = this.gridMeasureDetailHeaderForm.valid; |
| } |
| |
| } |
| |
| onGridMeasureHeaderFormValidation(valid: boolean) { |
| this.gridMeasureDetail._isHeaderValide = valid; |
| } |
| |
| onGridMeasureTitleChange(value) { |
| if (value) { |
| this.isValidForSave.emit(true); |
| } else { |
| this.isValidForSave.emit(false); |
| } |
| } |
| |
| onGridMeasureTitleBlur(value) { |
| this.titleChange.emit(value); |
| } |
| |
| ngOnChanges(changes: SimpleChanges): void { |
| |
| if (changes['isReadOnlyForm']) { |
| this.readOnlyForm = changes['isReadOnlyForm'].currentValue; |
| this.initInactiveFields(); |
| } |
| |
| } |
| |
| public initInactiveFields() { |
| const el: HTMLElement = this.gridMeasureDetailHeaderContainer.nativeElement as HTMLElement; |
| const fields = el.querySelectorAll('*[id]'); |
| for (let index = 0; index < fields.length; index++) { |
| const field = fields[index]; |
| if (this.readOnlyForm || this.isFieldInactive(field['id'])) { |
| field.setAttribute('disabled', 'disabled'); |
| } else { |
| field.removeAttribute('disabled'); |
| } |
| } |
| } |
| |
| private isFieldInactive(fieldName: string): boolean { |
| return this.inactiveFields.filter(field => field === fieldName).length > 0; |
| } |
| |
| public getBranchLevelsByBranch(branchId: number) { |
| if (branchId) { |
| this.baseDataService.getBranchLevels(branchId) |
| .subscribe(branchLevels => { |
| this.branchLevelList = branchLevels, |
| this.isBranchLevelActive = (!branchId || branchLevels.length === 0) ? false : true; |
| }, |
| error => { |
| console.log(error); |
| }); |
| } else { |
| this.gridMeasureDetail.branchId = null; |
| this.gridMeasureDetail.branchLevelId = null; |
| this.branchLevelList = null; |
| this.isBranchLevelActive = false; |
| } |
| |
| } |
| } |