Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend into SI-92-config-tooltip
diff --git a/i18n/general.de.json b/i18n/general.de.json
index 28d9b57..60f6767 100644
--- a/i18n/general.de.json
+++ b/i18n/general.de.json
@@ -30,6 +30,7 @@
"Column": "Spalte",
"MandatoryFieldsNotFilled": "Es ist mindestens ein Pflichtfeld nicht gefüllt.",
"MandatoryMapFieldError": "Es muss ein Störungsort festgelegt werden.",
+ "MandatoryRadiusFieldError": "Es muss ein Radius festgelegt werden.",
"SelectOption": "Bitte auswählen",
"Search": "Suchen",
"PublicationRequiresAtLeastOneChannel": "Zur Veröffentlichung der Störungsmeldung muss mindestens ein Veröffentlichungskanal ausgewählt sein.",
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 c938513..504a3cb 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
@@ -258,7 +258,8 @@
formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.telecommunication &&
formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.gas &&
formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.districtHeating &&
- formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water
+ formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water &&
+ formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.noBranch
"
>
<label for="voltageLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.VoltageLevel' | translate }}</label>
@@ -285,7 +286,8 @@
formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.telecommunication &&
formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.power &&
formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.districtHeating &&
- formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water
+ formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.water &&
+ formState.value.branch !== Globals.BUSINESS_RULE_FIELDS.branch.noBranch
"
>
<label for="pressureLevel" class="col-sm-2 col-form-label">{{ 'GridFailure.PressureLevel' | translate }}</label>
@@ -662,7 +664,7 @@
</app-expandable>
<!-- publication: publication-channels and distribution-groups -->
- <div *ngIf="gridFailureDetailsSandbox.checkForMaxVersion()">
+ <div *ngIf="gridFailureDetailsSandbox.checkForMaxVersion() && gridFailureDetailsSandbox.showForStatus()">
<app-expandable [showBodyInitially]="true" *visibleByRight="[RolesEnum.PUBLISHER]">
<label header>{{ 'GridFailure.Publication' | translate }}</label>
<div class="expandable-content" body>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts
index 257d07c..5f9277e 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.spec.ts
@@ -828,4 +828,22 @@
service.setFormStatePristine();
expect(dispatchSpy).toHaveBeenCalledTimes(1);
});
+
+ it('should return true if status not completed or canceled', () => {
+ service.gridFailureDetailsFormState$ = of((INITIAL_STATE.value.statusIntern = StateEnum.CREATED) as any);
+ const res = service.showForStatus();
+ expect(res).toBeTruthy();
+ });
+
+ it('should return false if status completed', () => {
+ service.gridFailureDetailsFormState$ = of((INITIAL_STATE.value.statusIntern = StateEnum.COMPLETED) as any);
+ const res = service.showForStatus();
+ expect(res).toBeFalsy();
+ });
+
+ it('should return true if status canceled', () => {
+ service.gridFailureDetailsFormState$ = of((INITIAL_STATE.value.statusIntern = StateEnum.CANCELED) as any);
+ const res = service.showForStatus();
+ expect(res).toBeFalsy();
+ });
});
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
index 3000e15..09180f0 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-details/grid-failure-details.sandbox.ts
@@ -50,6 +50,7 @@
} from 'ngrx-forms';
import { combineLatest, Observable } from 'rxjs';
import { debounceTime, distinctUntilChanged, map, skipWhile, take, takeUntil, tap } from 'rxjs/operators';
+import { StateEnum } from '@grid-failure-information-app/shared/constants/enums';
@Injectable()
export class GridFailureDetailsSandbox extends BaseFormSandbox<models.GridFailure> {
@@ -383,10 +384,11 @@
!districtControl.isValid ||
!postcodeControl.isValid ||
!streetControl.isValid ||
- !housenumberControl.isValid ||
- !radiusControl.isValid)
+ !housenumberControl.isValid)
) {
this._utilService.displayNotification('MandatoryMapFieldError', 'alert');
+ } else if (allButGridFailureLocationAreValid && latControl.isValid && longControl.isValid && !radiusControl.isValid) {
+ this._utilService.displayNotification('MandatoryRadiusFieldError', 'alert');
} else {
this._utilService.displayNotification('MandatoryFieldError', 'alert');
}
@@ -768,6 +770,10 @@
return this.currentFormState.value.versionNumber === this.maxVersionNumber;
}
+ public showForStatus(): boolean {
+ return this.currentFormState.value.statusIntern !== StateEnum.COMPLETED && this.currentFormState.value.statusIntern !== StateEnum.CANCELED;
+ }
+
public createDistributionGroupAssignment(selectedDistributionGroup: models.DistributionGroup) {
if (selectedDistributionGroup) {
let testGroup: models.DistributionGroup = this._assignedDistributionGroups.find(group => group.id === selectedDistributionGroup.id);
diff --git a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts
index 5529e54..987fe74 100644
--- a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts
+++ b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.spec.ts
@@ -15,7 +15,7 @@
import { of } from 'rxjs/observable/of';
import { FormState } from 'ngrx-forms';
import { PermissionsModel } from '@grid-failure-information-app/shared/models/permissions.model';
-import { RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
+import { RolesEnum, StateEnum } from '@grid-failure-information-app/shared/constants/enums';
describe('FormDisableDirective', () => {
let directive: FormDisableDirective;
@@ -57,4 +57,31 @@
directive.ngrxFormState = state;
expect(dispatchSpy).toHaveBeenCalled();
});
+
+ it('should disable from if user is publisher and status is qualified', () => {
+ let permission: PermissionsModel = new PermissionsModel([RolesEnum.PUBLISHER]);
+ directive['_permissions$'] = of(permission);
+ let state: FormState<any> = { isDisabled: false, value: { statusIntern: StateEnum.QUALIFIED } } as any;
+ let dispatchSpy = spyOn(directive['_appState$'], 'dispatch');
+ directive.ngrxFormState = state;
+ expect(dispatchSpy).toHaveBeenCalled();
+ });
+
+ it('should disable from if status is completed', () => {
+ let permission: PermissionsModel = new PermissionsModel([RolesEnum.ADMIN]);
+ directive['_permissions$'] = of(permission);
+ let state: FormState<any> = { isDisabled: false, value: { statusIntern: StateEnum.COMPLETED } } as any;
+ let dispatchSpy = spyOn(directive['_appState$'], 'dispatch');
+ directive.ngrxFormState = state;
+ expect(dispatchSpy).toHaveBeenCalled();
+ });
+
+ it('should disable from if status is canceled', () => {
+ let permission: PermissionsModel = new PermissionsModel([RolesEnum.ADMIN]);
+ directive['_permissions$'] = of(permission);
+ let state: FormState<any> = { isDisabled: false, value: { statusIntern: StateEnum.CANCELED } } as any;
+ let dispatchSpy = spyOn(directive['_appState$'], 'dispatch');
+ directive.ngrxFormState = state;
+ expect(dispatchSpy).toHaveBeenCalled();
+ });
});
diff --git a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts
index 3025de3..410e112 100644
--- a/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts
+++ b/projects/grid-failure-information-app/src/app/shared/directives/forms/form-disable.directive.ts
@@ -39,7 +39,12 @@
return;
}
this._permissions$.pipe(take(1), takeUntil(this._endSubscriptions$)).subscribe(permissions => {
- if (!!permissions.reader || (!!permissions.publisher && formState.value.statusIntern === StateEnum.QUALIFIED)) {
+ if (
+ !!permissions.reader ||
+ (!!permissions.publisher && formState.value.statusIntern === StateEnum.QUALIFIED) ||
+ formState.value.statusIntern === StateEnum.COMPLETED ||
+ formState.value.statusIntern === StateEnum.CANCELED
+ ) {
this._appState$.dispatch(new DisableAction(formState.id));
}
});