From 3223c21138fe165b19eca7248d344d7034bd071b Mon Sep 17 00:00:00 2001
From: nevisson <nevisson@gmail.com>
Date: Mon, 15 Jul 2019 19:01:11 -0300
Subject: [PATCH] Ajustes na tela de novas salas, desabilitando campos quando
 for Brasil.

---
 .../new-room-building.component.html          | 14 ++++++---
 .../new-room-building.component.ts            | 31 +++++++++++++++++--
 .../services/schools-staff.service.ts         |  2 +-
 3 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.html b/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.html
index 8f3fc221..36c75fc7 100644
--- a/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.html
+++ b/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.html
@@ -44,7 +44,11 @@
                   </tr>
                   <tr>
                     <th rowspan="2">Demanda por construção</th>
-                    <th *ngIf="!pqrMode" colspan="2">Quantidade</th>
+                    <th *ngIf="!pqrMode" colspan="2">
+                      <span [class.projection-title]="disabledData" [popover]="popoverText" placement="bottom"
+                        container="body" [triggers]="popoverTriggers" [isOpen]="disabledData"
+                        containerClass="popover-simcaq result">Quantidade</span>
+                    </th>
                     <th rowspan="2">Dimensão m2</th>
                     <th rowspan="2">Unidade de medida</th>
                     <th *ngIf="!pqrMode" rowspan="2">Preço por m2</th>
@@ -60,19 +64,19 @@
                     <ng-container *ngIf="!pqrMode">
                       <td *ngFor="let loc of room.numberDemandLocation">
                         <input type="text" class="form-control location" [(ngModel)]="loc.value"
-                          [disabled]="!pqrAdminMode && pqrMode" currencyMask
+                          [disabled]="disabledData" currencyMask
                           [options]="{ prefix: '', align: 'right', precision: 0, thousands: '.', decimal: ',' }">
                       </td>
                     </ng-container>
                     <td>
                       <input type="text" class="form-control dimension plan-value" [(ngModel)]="room.dimension"
-                        [disabled]="!pqrAdminMode && pqrMode" currencyMask
+                        [disabled]="processDisabledData(pqrAdminMode)" currencyMask
                         [options]="{ prefix: '', align: 'right', precision: 2, thousands: '.', decimal: ',' }">
                     </td>
                     <td class="unit-measurement-description">{{room.unitOfMeasurement.description}}</td>
                     <td *ngIf="!pqrMode">
                       <input type="text" class="form-control unit-price plan-value" [(ngModel)]="room.unitPrice"
-                        [disabled]="!pqrAdminMode && pqrMode" currencyMask
+                        [disabled]="disabledData" currencyMask
                         [options]="{ prefix: 'R$ ', align: 'right', precision: 2, thousands: '.', decimal: ',' }">
                     </td>
                     <td *ngIf="!pqrMode">{{room.referenceDate}}</td>
@@ -90,4 +94,4 @@
       </div>
     </div>
   </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.ts b/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.ts
index 0cfb6177..1e876b8b 100644
--- a/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.ts
+++ b/src/app/simulator/quality-conditions/new-room-building/new-room-building.component.ts
@@ -1,4 +1,4 @@
-import { Component, Injector, Type } from '@angular/core';
+import { Component, Injector, Type, OnInit } from '@angular/core';
 import { Observable } from 'rxjs';
 
 import { PqrComponentData } from '../../shared/entities/base/pqr-component-data';
@@ -18,7 +18,7 @@ import { SelectLocation } from '../../select-location/entities/select-location';
   templateUrl: './new-room-building.component.html',
   styleUrls: ['./new-room-building.component.scss']
 })
-export class NewRoomBuildingComponent extends BaseNavigableComponent<NewRoomsBuildings> implements PqrComponentData {
+export class NewRoomBuildingComponent extends BaseNavigableComponent<NewRoomsBuildings> implements PqrComponentData, OnInit {
 
   data: NewRoomsBuildings = new NewRoomsBuildings();
   functionality: FunctionalityInfo = Functionality.newRoomBuilding;
@@ -29,6 +29,10 @@ export class NewRoomBuildingComponent extends BaseNavigableComponent<NewRoomsBui
   pqrModalMode: boolean;
   locationUrban: number = LocationEnum.urban;
   locationRural: number = LocationEnum.rural;
+  disabledData: boolean = true;
+  popoverTriggers: string;
+  popoverText: string = 'Esses parâmetros só podem ser alterados para simulações em nível municipal ou estadual. ' +
+    'Para simulações em nível nacional, são apresentados resultados dos valores municipais agregados internamente pelo simulador.';
 
   componentType: Type<PqrComponentData> = NewRoomBuildingComponent;
   referenceDateMask: any = this.utilitiesService.getReferenceDateMask();
@@ -37,6 +41,15 @@ export class NewRoomBuildingComponent extends BaseNavigableComponent<NewRoomsBui
     super(injector);
   }
 
+  ngOnInit(): void {
+    super.ngOnInit();
+    this.disabledData = this.processDisabledData();
+
+    if (this.disabledData) {
+      this.popoverTriggers = 'mouseenter:mouseleave';
+    }
+  }
+
   processData(): Observable<NewRoomsBuildings> {
     return this.newRoomBuildingService.getData();
   }
@@ -124,4 +137,18 @@ export class NewRoomBuildingComponent extends BaseNavigableComponent<NewRoomsBui
       }));
     }
   }
+
+  processDisabledData(pqrAdminMode: boolean = false): boolean {
+
+    if (pqrAdminMode) {
+      return false;
+    } else {
+      if (!(!this.pqrAdminMode && this.pqrMode)) {
+        const selectLocationData: SelectLocation = this.sessionService.getItem<SelectLocation>(Functionality.selectLocation.key);
+        return this.disabledData = !selectLocationData || !(selectLocationData.selectedCity || selectLocationData.selectedState);
+      } else {
+        return !this.pqrAdminMode && this.pqrMode;
+      }
+    }
+  }
 }
diff --git a/src/app/simulator/quality-conditions/schools-staff/services/schools-staff.service.ts b/src/app/simulator/quality-conditions/schools-staff/services/schools-staff.service.ts
index a4f820c5..228bd95e 100644
--- a/src/app/simulator/quality-conditions/schools-staff/services/schools-staff.service.ts
+++ b/src/app/simulator/quality-conditions/schools-staff/services/schools-staff.service.ts
@@ -1,4 +1,3 @@
-import { Footnote } from './../../../../shared/components/footnote/entities/footnote';
 import { Injectable } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
@@ -10,6 +9,7 @@ import { SchoolStaff } from '../entities/school-staff';
 import { SchoolsStaff } from '../entities/schools-staff';
 import { NavigableComponentService } from '../../../shared/entities/base/navigable-component-service';
 import { CurrentYearService } from '../../../shared/services/current-year/current-year.service';
+import { Footnote } from './../../../../shared/components/footnote/entities/footnote';
 
 @Injectable({
   providedIn: 'root'
-- 
GitLab