[SI-371], [SI-370]: Alignment adapted, create expandables in Detail-View
Signed-off-by: Dennis Schmitt <dennis.schmitt@pta.de>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
index 7c36ff0..3d5ec86 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.html
@@ -33,501 +33,506 @@
</div>
<form [ngrxFormState]="gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async">
<div>
- <div class="section">
- <label class="heading">{{ 'GridFailure.SubTitle1' | translate }}</label>
+ <app-expandable [showBodyInitially]="true">
+ <label header>{{ 'GridFailure.SubTitle1' | translate }}</label>
+ <div class="expandable-content" body>
+ <!-- failureClassificationId (temporär) -->
+ <div class="form-group row">
+ <label for="failureClassificationId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.FailureClassificationId' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="failureClassificationId"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureClassificationId']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
- <!-- failureClassificationId (temporär) -->
- <div class="form-group row">
- <label for="failureClassificationId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.FailureClassificationId' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="failureClassificationId"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureClassificationId']"
- autocomplete="off"
- />
+ <!-- failureClassification -->
+ <div class="form-group row">
+ <label for="failureClassification" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureClassification' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="failureClassification"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureClassification']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- failureTypeId temporär -->
+ <div class="form-group row">
+ <label for="failureTypeId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.FailureTypeId' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="failureTypeId"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureTypeId']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- failureType -->
+ <div class="form-group row">
+ <label for="failureType" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureType' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="failureType"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureType']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- responsibility -->
+ <div class="form-group row">
+ <label for="responsibility" class="col-sm-2 col-form-label">{{ 'GridFailure.Responsibility' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="responsibility"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['responsibility']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- internExtern -->
+ <div class="form-group row">
+ <label for="internExtern" class="col-sm-2 col-form-label">{{ 'GridFailure.InternExtern' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="internExtern"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['internExtern']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- statusInternId (temporär) -->
+ <div class="form-group row">
+ <label for="statusInternId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.StatusInternId' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="statusInternId"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusInternId']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- statusIntern -->
+ <div class="form-group row">
+ <label for="statusIntern" class="col-sm-2 col-form-label">{{ 'GridFailure.StatusIntern' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="statusIntern"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusIntern']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- statusExternId (temporär) -->
+ <div class="form-group row">
+ <label for="statusExternId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.StatusExternId' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="statusExternId"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusExternId']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- statusExtern -->
+ <div class="form-group row">
+ <label for="statusExtern" class="col-sm-2 col-form-label">{{ 'GridFailure.StatusExtern' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="statusExtern"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusExtern']"
+ autocomplete="off"
+ />
+ </div>
</div>
</div>
+ </app-expandable>
- <!-- failureClassification -->
- <div class="form-group row">
- <label for="failureClassification" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureClassification' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="failureClassification"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureClassification']"
- autocomplete="off"
- />
+ <app-expandable [showBodyInitially]="true">
+ <label header>{{ 'GridFailure.SubTitle2' | translate }}</label>
+ <div class="expandable-content" body>
+ <!-- branchId temporär -->
+ <div class="form-group row">
+ <label for="branchId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.BranchId' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="branchId"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['branchId']"
+ autocomplete="off"
+ />
+ </div>
</div>
- </div>
- <!-- failureTypeId temporär -->
- <div class="form-group row">
- <label for="failureTypeId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.FailureTypeId' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="failureTypeId"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureTypeId']"
- autocomplete="off"
- />
+ <!-- branch -->
+ <div class="form-group row">
+ <label for="branch" class="col-sm-2 col-form-label">{{ 'GridFailure.Branch' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="branch"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['branch']"
+ autocomplete="off"
+ />
+ </div>
</div>
- </div>
- <!-- failureType -->
- <div class="form-group row">
- <label for="failureType" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureType' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="failureType"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureType']"
- autocomplete="off"
- />
+ <!-- voltageLevel -->
+ <div class="form-group row">
+ <label for="voltageLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.VoltageLevel' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="voltageLevel"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['voltageLevel']"
+ autocomplete="off"
+ />
+ </div>
</div>
- </div>
- <!-- responsibility -->
- <div class="form-group row">
- <label for="responsibility" class="col-sm-2 col-form-label">{{ 'GridFailure.Responsibility' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="responsibility"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['responsibility']"
- autocomplete="off"
- />
+ <!-- pressureLevel -->
+ <div class="form-group row">
+ <label for="pressureLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.PressureLevel' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="pressureLevel"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['pressureLevel']"
+ autocomplete="off"
+ />
+ </div>
</div>
- </div>
- <!-- internExtern -->
- <div class="form-group row">
- <label for="internExtern" class="col-sm-2 col-form-label">{{ 'GridFailure.InternExtern' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="internExtern"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['internExtern']"
- autocomplete="off"
- />
+ <div class="form-group row">
+ <label for="failureBegin" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureBegin' | translate }}</label>
+ <div class="input-group col-sm-4">
+ <div class="input-group-prepend">
+ <app-date-time-picker
+ (dateTimeEvent)="setGridFailureDateTime($event, 'failureBegin')"
+ [dateString]="failureBeginDateTime"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ ></app-date-time-picker>
+ </div>
+
+ <input
+ required
+ class="form-control editable"
+ type="text"
+ placeholder="{{ Globals.DATE_TIME_PLACEHOLDER_PATTERN }}"
+ id="failureBegin"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureBegin']"
+ [ngrxValueConverter]="gridFailureDetailsSandbox.dateTimeValueConverter"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ readonly
+ />
+ <div class="input-group-append">
+ <button
+ class="btn btn-outline-primary calendar"
+ (click)="resetGridFailureDateTime(gridFailureDetailsSandbox.datePickerResetEnum.FailureBegin)"
+ type="button"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ >
+ <em class="fa fa-times-circle" aria-hidden="true"></em>
+ </button>
+ </div>
+ </div>
</div>
- </div>
- <!-- statusInternId (temporär) -->
- <div class="form-group row">
- <label for="statusInternId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.StatusInternId' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="statusInternId"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusInternId']"
- autocomplete="off"
- />
+ <!-- failureEndPlanned -->
+ <div class="form-group row">
+ <label for="failureEndPlanned" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureEndPlanned' | translate }}</label>
+ <div class="input-group col-sm-4">
+ <div class="input-group-prepend">
+ <app-date-time-picker
+ (dateTimeEvent)="setGridFailureDateTime($event, 'failureEndPlanned')"
+ [dateString]="failureEndPlannedDateTime"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ ></app-date-time-picker>
+ </div>
+
+ <input
+ class="form-control editable"
+ type="text"
+ placeholder="{{ Globals.DATE_TIME_PLACEHOLDER_PATTERN }}"
+ id="failureEndPlanned"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureEndPlanned']"
+ [ngrxValueConverter]="gridFailureDetailsSandbox.dateTimeValueConverter"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ readonly
+ />
+ <div class="input-group-append">
+ <button
+ class="btn btn-outline-primary calendar"
+ (click)="resetGridFailureDateTime(gridFailureDetailsSandbox.datePickerResetEnum.FailureEndPlanned)"
+ type="button"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ >
+ <em class="fa fa-times-circle" aria-hidden="true"></em>
+ </button>
+ </div>
+ </div>
</div>
- </div>
- <!-- statusIntern -->
- <div class="form-group row">
- <label for="statusIntern" class="col-sm-2 col-form-label">{{ 'GridFailure.StatusIntern' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="statusIntern"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusIntern']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- statusExternId (temporär) -->
- <div class="form-group row">
- <label for="statusExternId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.StatusExternId' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="statusExternId"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusExternId']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- statusExtern -->
- <div class="form-group row">
- <label for="statusExtern" class="col-sm-2 col-form-label">{{ 'GridFailure.StatusExtern' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="statusExtern"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['statusExtern']"
- autocomplete="off"
- />
- </div>
- </div>
- </div>
-
- <div class="section">
- <label class="heading">{{ 'GridFailure.SubTitle2' | translate }}</label>
-
- <!-- branchId temporär -->
- <div class="form-group row">
- <label for="branchId" class="col-sm-2 col-form-label">{{ 'GridFailureTemp.BranchId' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="branchId"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['branchId']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- branch -->
- <div class="form-group row">
- <label for="branch" class="col-sm-2 col-form-label">{{ 'GridFailure.Branch' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="branch"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['branch']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- voltageLevel -->
- <div class="form-group row">
- <label for="voltageLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.VoltageLevel' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="voltageLevel"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['voltageLevel']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- pressureLevel -->
- <div class="form-group row">
- <label for="pressureLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.PressureLevel' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="pressureLevel"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['pressureLevel']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- failureBegin -->
- <div class="form-group row">
- <label for="failureBegin" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureBegin' | translate }}</label>
- <div class="input-group col-sm-4">
- <div class="input-group-prepend">
+ <!-- failureEndResupplied -->
+ <div class="form-group row">
+ <label for="failureEndResupplied" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureEndResupplied' | translate }}</label>
+ <div class="input-group col-sm-4">
<app-date-time-picker
- (dateTimeEvent)="setGridFailureDateTime($event, 'failureBegin')"
- [dateString]="failureBeginDateTime"
+ (dateTimeEvent)="setGridFailureDateTime($event, 'failureEndResupplied')"
+ [dateString]="failureEndResuppliedDateTime"
[disabled]="!gridFailureDetailsSandbox.saveEnabled"
[class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
></app-date-time-picker>
- </div>
-
- <input
- required
- class="form-control editable"
- type="text"
- placeholder="{{ Globals.DATE_TIME_PLACEHOLDER_PATTERN }}"
- id="failureBegin"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureBegin']"
- [ngrxValueConverter]="gridFailureDetailsSandbox.dateTimeValueConverter"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- readonly
- />
- <div class="input-group-append">
- <button
- class="btn btn-outline-primary calendar"
- (click)="resetGridFailureDateTime(gridFailureDetailsSandbox.datePickerResetEnum.FailureBegin)"
- type="button"
- [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ <input
+ class="form-control editable"
+ type="text"
+ placeholder="{{ Globals.DATE_TIME_PLACEHOLDER_PATTERN }}"
+ id="failureEndResupplied"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureEndResupplied']"
+ [ngrxValueConverter]="gridFailureDetailsSandbox.dateTimeValueConverter"
[class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- >
- <em class="fa fa-times-circle" aria-hidden="true"></em>
- </button>
+ readonly
+ />
+ <div class="input-group-append">
+ <button
+ class="btn btn-outline-primary calendar"
+ (click)="resetGridFailureDateTime(gridFailureDetailsSandbox.datePickerResetEnum.FailureEndResupplied)"
+ type="button"
+ [disabled]="!gridFailureDetailsSandbox.saveEnabled"
+ [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
+ >
+ <em class="fa fa-times-circle" aria-hidden="true"></em>
+ </button>
+ </div>
+ </div>
+ </div>
+
+ <!-- probableReason -->
+ <div class="form-group row">
+ <label for="probableReason" class="col-sm-2 col-form-label">{{ 'GridFailure.ProbableReason' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="probableReason"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['probableReason']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- internalRemark -->
+ <div class="form-group row">
+ <label for="internalRemark" class="col-sm-2 col-form-label">{{ 'GridFailure.InternalRemark' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="internalRemark"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['internalRemark']"
+ autocomplete="off"
+ />
</div>
</div>
</div>
+ </app-expandable>
- <!-- failureEndPlanned -->
- <div class="form-group row">
- <label for="failureEndPlanned" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureEndPlanned' | translate }}</label>
- <div class="input-group col-sm-4">
- <div class="input-group-prepend">
- <app-date-time-picker
- (dateTimeEvent)="setGridFailureDateTime($event, 'failureEndPlanned')"
- [dateString]="failureEndPlannedDateTime"
- [disabled]="!gridFailureDetailsSandbox.saveEnabled"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- ></app-date-time-picker>
+ <app-expandable [showBodyInitially]="true">
+ <label header>{{ 'GridFailure.SubTitle3' | translate }}</label>
+
+ <div class="expandable-content" body>
+ <!-- postcode -->
+ <div class="form-group row">
+ <label for="postcode" class="col-sm-2 col-form-label">{{ 'GridFailure.Postcode' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="postcode"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['postcode']"
+ autocomplete="off"
+ />
</div>
+ </div>
- <input
- class="form-control editable"
- type="text"
- placeholder="{{ Globals.DATE_TIME_PLACEHOLDER_PATTERN }}"
- id="failureEndPlanned"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureEndPlanned']"
- [ngrxValueConverter]="gridFailureDetailsSandbox.dateTimeValueConverter"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- readonly
- />
- <div class="input-group-append">
- <button
- class="btn btn-outline-primary calendar"
- (click)="resetGridFailureDateTime(gridFailureDetailsSandbox.datePickerResetEnum.FailureEndPlanned)"
- type="button"
- [disabled]="!gridFailureDetailsSandbox.saveEnabled"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- >
- <em class="fa fa-times-circle" aria-hidden="true"></em>
- </button>
+ <!-- city -->
+ <div class="form-group row">
+ <label for="city" class="col-sm-2 col-form-label">{{ 'GridFailure.City' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="city"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['city']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- district -->
+ <div class="form-group row">
+ <label for="district" class="col-sm-2 col-form-label">{{ 'GridFailure.District' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="district"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['district']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- street -->
+ <div class="form-group row">
+ <label for="street" class="col-sm-2 col-form-label">{{ 'GridFailure.Street' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="street"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['street']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- housenumber -->
+ <div class="form-group row">
+ <label for="housenumber" class="col-sm-2 col-form-label">{{ 'GridFailure.Housenumber' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="housenumber"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['housenumber']"
+ autocomplete="off"
+ />
</div>
</div>
</div>
+ </app-expandable>
- <!-- failureEndResupplied -->
- <div class="form-group row">
- <label for="failureEndResupplied" class="col-sm-2 col-form-label">{{ 'GridFailure.FailureEndResupplied' | translate }}</label>
- <div class="input-group col-sm-4">
- <app-date-time-picker
- (dateTimeEvent)="setGridFailureDateTime($event, 'failureEndResupplied')"
- [dateString]="failureEndResuppliedDateTime"
- [disabled]="!gridFailureDetailsSandbox.saveEnabled"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- ></app-date-time-picker>
- <input
- class="form-control editable"
- type="text"
- placeholder="{{ Globals.DATE_TIME_PLACEHOLDER_PATTERN }}"
- id="failureEndResupplied"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['failureEndResupplied']"
- [ngrxValueConverter]="gridFailureDetailsSandbox.dateTimeValueConverter"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- readonly
- />
- <div class="input-group-append">
- <button
- class="btn btn-outline-primary calendar"
- (click)="resetGridFailureDateTime(gridFailureDetailsSandbox.datePickerResetEnum.FailureEndResupplied)"
- type="button"
- [disabled]="!gridFailureDetailsSandbox.saveEnabled"
- [class.isDisabled]="!gridFailureDetailsSandbox.saveEnabled"
- >
- <em class="fa fa-times-circle" aria-hidden="true"></em>
- </button>
+ <app-expandable [showBodyInitially]="true">
+ <label header>{{ 'GridFailure.SubTitle4' | translate }}</label>
+ <div class="expandable-content" body>
+ <!-- stationDescription -->
+ <div class="form-group row">
+ <label for="stationDescription" class="col-sm-2 col-form-label">{{ 'GridFailure.StationDescription' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="stationDescription"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['stationDescription']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- stationCoords -->
+ <div class="form-group row">
+ <label for="stationCoords" class="col-sm-2 col-form-label">{{ 'GridFailure.StationCoords' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="stationCoords"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['stationCoords']"
+ autocomplete="off"
+ />
+ </div>
+ </div>
+
+ <!-- radius -->
+ <div class="form-group row">
+ <label for="radius" class="col-sm-2 col-form-label">{{ 'GridFailure.Radius' | translate }}</label>
+ <div class="col-sm-4">
+ <input
+ required
+ type="text"
+ maxlength="255"
+ class="form-control"
+ id="radius"
+ [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['radius']"
+ autocomplete="off"
+ />
</div>
</div>
</div>
-
- <!-- probableReason -->
- <div class="form-group row">
- <label for="probableReason" class="col-sm-2 col-form-label">{{ 'GridFailure.ProbableReason' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="probableReason"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['probableReason']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- internalRemark -->
- <div class="form-group row">
- <label for="internalRemark" class="col-sm-2 col-form-label">{{ 'GridFailure.InternalRemark' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="internalRemark"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['internalRemark']"
- autocomplete="off"
- />
- </div>
- </div>
- </div>
-
- <div class="section">
- <label class="heading">{{ 'GridFailure.SubTitle3' | translate }}</label>
- <!-- postcode -->
- <div class="form-group row">
- <label for="postcode" class="col-sm-2 col-form-label">{{ 'GridFailure.Postcode' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="postcode"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['postcode']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- city -->
- <div class="form-group row">
- <label for="city" class="col-sm-2 col-form-label">{{ 'GridFailure.City' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="city"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['city']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- district -->
- <div class="form-group row">
- <label for="district" class="col-sm-2 col-form-label">{{ 'GridFailure.District' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="district"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['district']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- street -->
- <div class="form-group row">
- <label for="street" class="col-sm-2 col-form-label">{{ 'GridFailure.Street' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="street"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['street']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- housenumber -->
- <div class="form-group row">
- <label for="housenumber" class="col-sm-2 col-form-label">{{ 'GridFailure.Housenumber' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="housenumber"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['housenumber']"
- autocomplete="off"
- />
- </div>
- </div>
- </div>
-
- <div class="section">
- <label class="heading">{{ 'GridFailure.SubTitle4' | translate }}</label>
-
- <!-- stationDescription -->
- <div class="form-group row">
- <label for="stationDescription" class="col-sm-2 col-form-label">{{ 'GridFailure.StationDescription' | translate }}</label>
- <div class="col-sm-4">
- <input
- type="text"
- maxlength="255"
- class="form-control"
- id="stationDescription"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['stationDescription']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- stationCoords -->
- <div class="form-group row">
- <label for="stationCoords" class="col-sm-2 col-form-label">{{ 'GridFailure.StationCoords' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="stationCoords"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['stationCoords']"
- autocomplete="off"
- />
- </div>
- </div>
-
- <!-- radius -->
- <div class="form-group row">
- <label for="radius" class="col-sm-2 col-form-label">{{ 'GridFailure.Radius' | translate }}</label>
- <div class="col-sm-4">
- <input
- required
- type="text"
- maxlength="255"
- class="form-control"
- id="radius"
- [ngrxFormControlState]="((gridFailureDetailsSandbox.gridFailureDetailsFormState$ | async)?.controls)['radius']"
- autocomplete="off"
- />
- </div>
- </div>
- </div>
+ </app-expandable>
<!-- buttons -->
<div class="row justify-content-between">
@@ -535,12 +540,12 @@
<button
*ngIf="gridFailureDetailsSandbox.saveEnabled"
type="button"
- class="btn btn-success person-buttons"
+ class="btn btn-success person-buttons div-button"
(click)="gridFailureDetailsSandbox.saveGridFailure()"
>
{{ 'SaveBtn' | translate }}
</button>
- <button type="button" class="btn btn-primary person-buttons cancel-button" (click)="gridFailureDetailsSandbox.cancel()">
+ <button type="button" class="btn btn-primary person-buttons div-button" (click)="gridFailureDetailsSandbox.cancel()">
{{ 'CancelBtn' | translate }}
</button>
</div>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.scss b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.scss
index 8840f19..bea6bf8 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.scss
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.component.scss
@@ -43,7 +43,7 @@
padding-left: 16px;
width: 247px;
}
-.cancel-button {
+.div-button {
margin-left: 15px;
}
.editable {
@@ -57,3 +57,7 @@
.isDisabled {
background-color: rgb(233, 236, 239);
}
+
+.expandable-content {
+ padding: 20px 0px 20px 35px;
+}
diff --git a/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.html b/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.html
index d952ee5..9e44f45 100644
--- a/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.html
+++ b/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.html
@@ -12,17 +12,17 @@
********************************************************************************/ -->
<div class="panel panel-default" style="width:100%;">
<div class="panel-heading">
- <h4 class="panel-title">
- <a data-toggle="collapse">
- <em *ngIf="isExpandedStatus" class="fa fa-chevron-up" aria-hidden="true"></em>
- <em *ngIf="!isExpandedStatus" class="fa fa-chevron-down" aria-hidden="true"></em>
- </a>
- <a data-toggle="collapse" href="#{{ collapseId }}" (click)="isExpandedStatus = !isExpandedStatus">
+ <a data-toggle="collapse" style="width: 100%;" href="#{{ collapseId }}" (click)="isExpandedStatus = !isExpandedStatus">
+ <h4 class="panel-title">
+ <span>
+ <em class="fa" [ngClass]="isExpandedStatus ? 'fa-chevron-up' : 'fa-chevron-down'"></em>
+ </span>
+
<ng-content select="[header]"></ng-content>
- </a>
- </h4>
+ </h4>
+ </a>
</div>
- <div *ngIf="isExpandedStatus" id="{{ collapseId }}" class="collapse5 panel-collapse collapse in" [ngClass]="{ in: !isStatusCollapsed }">
+ <div id="{{ collapseId }}" class="collapse5 {{ showBody }} panel-collapse collapse in">
<ng-content class="bodyContent" select="[body]"></ng-content>
</div>
</div>
diff --git a/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.ts b/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.ts
index 56dbe03..daefb8f 100644
--- a/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.ts
+++ b/projects/grid-failure-information-app/src/app/shared/components/expandable/expandable.component.ts
@@ -11,21 +11,32 @@
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
import { Component } from '@angular/core';
+import { OnInit, Input } from '@angular/core';
@Component({
selector: 'app-expandable',
templateUrl: './expandable.component.html',
styleUrls: ['./expandable.component.scss'],
})
-export class ExpandableComponent {
+export class ExpandableComponent implements OnInit {
+ @Input()
+ public showBodyInitially: boolean = false;
+
static count: number = 0;
- public isStatusCollapsed = true;
public isExpandedStatus = false;
public collapseId: string = null;
+ public showBody: string = null;
constructor() {
this.collapseId = 'collapse' + ExpandableComponent.count;
ExpandableComponent.count++;
}
+
+ ngOnInit() {
+ if (this.showBodyInitially) {
+ this.showBody = 'show';
+ this.isExpandedStatus = true;
+ }
+ }
}
diff --git a/proxy.conf-integration.json b/proxy.conf-integration.json
index 4539591..a45f017 100644
--- a/proxy.conf-integration.json
+++ b/proxy.conf-integration.json
@@ -1,6 +1,6 @@
{
"/api": {
- "target": "http://entdockergss:9166/",
+ "target": "http://entdockergss:9165/",
"secure": false,
"pathRewrite": {
"^/api": ""