Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend into SI-296-platzhalter
diff --git a/i18n/distribution-group.de.json b/i18n/distribution-group.de.json
index 91752ca..66f4aef 100644
--- a/i18n/distribution-group.de.json
+++ b/i18n/distribution-group.de.json
@@ -7,7 +7,8 @@
"Title": "Verteilergruppe",
"Name": "Titel",
"Text": "Text",
- "FormTitle": "Anlegen / Editieren Verteilergruppe"
+ "FormTitle": "Anlegen / Editieren Verteilergruppe",
+ "TextPlaceholder": "Mögliche Platzhalter:"
},
"DistributionGroupMember": {
"Title": "Kontakte zur Verteilergruppe",
@@ -18,6 +19,9 @@
"EMail": "E-Mail",
"MobileNumber": "Mobil",
"AssignToGroupBtn": "Kontakt zuordnen",
- "ContactSearch": "Kontaktsuche"
+ "ContactSearch": "Kontaktsuche",
+ "SalutationType": "Anrede",
+ "PersonType": "Personentyp",
+ "Department": "Abteilung"
}
}
diff --git a/i18n/general.de.json b/i18n/general.de.json
index a1272b8..9cc6041 100644
--- a/i18n/general.de.json
+++ b/i18n/general.de.json
@@ -13,6 +13,7 @@
"EditBtn": "Bearbeiten",
"NewBtn": "Neu",
"CancelBtn": "Abbrechen",
+ "CloseBtn": "Schließen",
"BackBtn": "Zurück",
"QualifyBtn": "Qualifizieren",
"StornoBtn": "Stornieren",
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-api-client.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-api-client.ts
index 8ac17e0..8420d75 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-api-client.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-api-client.ts
@@ -14,7 +14,7 @@
import { HttpService, GET, Adapter, DefaultHeaders, Path, PUT, POST, Body, DELETE, Query } from '@grid-failure-information-app/shared/async-services/http';
import { Observable, of } from 'rxjs';
import { DistributionGroupService } from '@grid-failure-information-app/pages/distribution-group/distribution-group.service';
-import { DistributionGroup, DistributionGroupMember, Contact } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupMember, Contact, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
@Injectable()
@DefaultHeaders({
@@ -75,4 +75,10 @@
public getContacts(@Query('searchText') searchtext: string): Observable<Contact[]> {
return null;
}
+
+ @GET('/placeholders')
+ @Adapter(DistributionGroupService.placeholderAdapter)
+ public getDistributionGroupTextPlaceholders(): Observable<DistributionGroupTextPlaceholder> {
+ return null;
+ }
}
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.html b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.html
index 1834e27..d664434 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.html
@@ -13,11 +13,12 @@
<form *ngIf="sandbox.distributionGroupDetailsFormState$ | async as formState" [ngrxFormState]="formState">
<h6 class="formTitle">{{ 'DistributionGroup.FormTitle' | translate }}</h6>
<div>
- <!-- type -->
+ <!-- name (title) -->
<div class="form-group row">
<label for="distributionGroupName" class="col-sm-2 col-form-label">{{ 'DistributionGroup.Name' | translate }}</label>
<div class="col-sm-9">
<input
+ required
type="text"
maxlength="255"
class="form-control"
@@ -27,6 +28,23 @@
/>
</div>
</div>
+ <!-- text -->
+ <div class="form-group row">
+ <label for="distributionText" class="col-sm-2 col-form-label">{{ 'DistributionGroup.Text' | translate }}</label>
+ <div class="col-sm-9">
+ <textarea rows="15" class="form-control" id="distributionText" [ngrxFormControlState]="(formState?.controls)['distributionText']" autocomplete="off">
+ </textarea>
+ </div>
+ </div>
+ <!-- placeholder -->
+ <div class="row">
+ <label class="col-sm-12 placeholder-label">{{ 'DistributionGroup.TextPlaceholder' | translate }}</label>
+ </div>
+ <div class="form-group row container">
+ <div class="placeholder" *ngFor="let item of sandbox.distributionGroupTextPlaceholder | keyvalue">
+ {{ item.value }}
+ </div>
+ </div>
<!-- buttons -->
<div class="detail-buttons">
<button type="button" class="btn btn-primary btn-sm" (click)="sandbox.cancel()">
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.scss b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.scss
index c7b591b..be03043 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.scss
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-details/distribution-group-details.component.scss
@@ -18,3 +18,12 @@
.formTitle {
padding-bottom: 7%;
}
+.placeholder-label {
+ padding-left: -15px !important;
+}
+.container {
+ display: flex;
+}
+.placeholder {
+ flex: 50%;
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html
index 2fa11f9..00ffb9e 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.html
@@ -28,6 +28,7 @@
<ag-grid-angular
autoResizeColumns
class="ag-theme-balham"
+ [ngClass]="sandbox.displayDistributionGroupMember ? 'height-list-with-members' : 'height-list-without-members'"
[gridOptions]="gridOptions"
[columnDefs]="columnDefinition"
[rowSelection]="'single'"
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.scss b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.scss
index 22dc714..bf1db2a 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.scss
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-list/distribution-group-list.component.scss
@@ -16,13 +16,18 @@
height: 100%;
}
.distribution-group-list {
- height: 350px;
flex-grow: 1;
}
.distribution-group-form {
height: 756px;
- width: 461px;
+ width: 521px;
}
.distribution-group-member {
margin-top: 15px;
}
+.height-list-without-members {
+ height: 740px;
+}
+.height-list-with-members {
+ height: 280px;
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members-col-def.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members-col-def.ts
index 62da01f..a3c1374 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members-col-def.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members-col-def.ts
@@ -14,12 +14,30 @@
export const DISTRIBUTION_GROUP_MEMBER_COLDEF = [
{
+ field: 'salutationType',
+ headerName: 'DistributionGroupMember.SalutationType',
+ sortable: true,
+ filter: 'setFilterComponent',
+ },
+ {
field: 'name',
headerName: 'DistributionGroupMember.Name',
sortable: true,
filter: 'setFilterComponent',
},
{
+ field: 'personType',
+ headerName: 'DistributionGroupMember.PersonType',
+ sortable: true,
+ filter: 'setFilterComponent',
+ },
+ {
+ field: 'department',
+ headerName: 'DistributionGroupMember.Department',
+ sortable: true,
+ filter: 'setFilterComponent',
+ },
+ {
field: 'displayMainAddress',
headerName: 'DistributionGroupMember.MainAddress',
sortable: true,
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.html b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.html
index 8f362fe..0bcfce6 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.html
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.html
@@ -17,7 +17,7 @@
<div body>
<div class="group-member-search">
<button type="button" class="btn btn-primary btn-sm group-member-search-button" (click)="sandbox.cancelMembersDisplay()">
- {{ 'CancelBtn' | translate }}
+ {{ 'CloseBtn' | translate }}
</button>
<div class="group-member-search-input">
<input
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.scss b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.scss
index f9398a8..8b6fd34 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.scss
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group-members/distribution-group-members.component.scss
@@ -14,7 +14,7 @@
font-size: 80%;
}
.distribution-group-members {
- height: 350px;
+ height: 340px;
}
.group-member-search {
display: flex;
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.spec.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.spec.ts
index d60e10d..7b21f22 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.spec.ts
@@ -12,7 +12,7 @@
********************************************************************************/
import { DistributionGroupResolver } from '@grid-failure-information-app/pages/distribution-group/distribution-group.resolver';
-describe('GridFailuresResolver', () => {
+describe('DistributionGroupResolver', () => {
let component: DistributionGroupResolver;
let sandbox: any;
@@ -20,6 +20,7 @@
sandbox = {
clear() {},
loadDistributionGroups() {},
+ loadDistributionGroupTextPlaceholders() {},
} as any;
});
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.ts
index a8b7bbd..4e66ec7 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.resolver.ts
@@ -20,5 +20,6 @@
public resolve(): void {
this.sandbox.loadDistributionGroups();
+ this.sandbox.loadDistributionGroupTextPlaceholders();
}
}
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.spec.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.spec.ts
index fa74866..0604f80 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.spec.ts
@@ -19,7 +19,7 @@
import * as distributionGroupActions from '@grid-failure-information-app/shared/store/actions/distribution-groups.action';
import { Contact, DistributionGroupMember } from '@grid-failure-information-app/shared/models';
-describe('GridFailureSandbox', () => {
+describe('DistributionGroupSandbox', () => {
let service: DistributionGroupSandbox;
let appState: Store<store.State>;
let actionsSubject: ActionsSubject;
@@ -56,6 +56,11 @@
expect(appState.dispatch).toHaveBeenCalledWith(distributionGroupActions.loadDistributionGroupsDetail({ payload: 'x' }));
});
+ it('should dispatch loadDistributionGroupTextPlaceholders Action via loadDistributionGroupTextPlaceholders()', () => {
+ service.loadDistributionGroupTextPlaceholders();
+ expect(appState.dispatch).toHaveBeenCalledWith(distributionGroupActions.loadDistributionGroupTextPlaceholders());
+ });
+
it('should clear form state when current change is canceled and form state is pristine', () => {
const spy: any = spyOn(service as any, '_clear').and.callThrough();
service.currentFormState = { isPristine: true } as any;
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts
index f1dffd3..7c4998c 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.sandbox.ts
@@ -24,7 +24,7 @@
import { ofType } from '@ngrx/effects';
import { UtilService } from '@grid-failure-information-app/shared/utility/utility.service';
import { CellClickedEvent } from 'ag-grid-community';
-import { DistributionGroup, DistributionGroupMember, Contact } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupMember, Contact, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
@Injectable()
export class DistributionGroupSandbox extends BaseSandbox {
@@ -36,6 +36,7 @@
public distributionGroupMemberLoading$: Observable<boolean> = this.appState$.select(store.getDistributionGroupMembersLoading);
public displayForm: boolean = false;
public displayDistributionGroupMember: boolean = false;
+ public distributionGroupTextPlaceholder: DistributionGroupTextPlaceholder;
private _selectedDistributionGroup: DistributionGroup;
private _selectedContact: Contact;
private _distributionGroupMembers: Array<DistributionGroupMember>;
@@ -66,6 +67,10 @@
this.appState$.dispatch(distributionGroupActions.loadDistributionGroupsDetail({ payload: id }));
}
+ public loadDistributionGroupTextPlaceholders(): void {
+ this.appState$.dispatch(distributionGroupActions.loadDistributionGroupTextPlaceholders());
+ }
+
public cancel(): void {
if (!this.currentFormState.isPristine) {
const modalRef = this._modalService.open(SafetyQueryDialogComponent);
@@ -137,6 +142,15 @@
.subscribe((members: Array<DistributionGroupMember>) => {
this._distributionGroupMembers = members;
});
+ this._actionsSubject
+ .pipe(
+ ofType(distributionGroupActions.loadDistributionGroupTextPlaceholdersSuccess),
+ map(action => action.payload),
+ takeUntil(this._endSubscriptions$)
+ )
+ .subscribe((item: DistributionGroupTextPlaceholder) => {
+ this.distributionGroupTextPlaceholder = item;
+ });
}
public showMembersToSelectedGroup(selectedGroup: CellClickedEvent): void {
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.spec.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.spec.ts
index bbe0bf5..0841b3f 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.spec.ts
@@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
-import { DistributionGroup, DistributionGroupMember, Contact } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupMember, Contact, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
import { DistributionGroupService } from '@grid-failure-information-app/pages/distribution-group/distribution-group.service';
describe('DistributionGroupService', () => {
@@ -40,4 +40,10 @@
response.content[0].uuid = 'X';
expect(DistributionGroupService.contactsPageAdapter(response)[0].uuid).toBe('X');
});
+
+ it('should transform api response to DistributionGroupTextPlaceholder model', () => {
+ const response = new DistributionGroupTextPlaceholder();
+ response.branch = 'X';
+ expect(DistributionGroupService.placeholderAdapter(response).branch).toBe('X');
+ });
});
diff --git a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.ts b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.ts
index 260ff37..5042c1c 100644
--- a/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.ts
+++ b/projects/grid-failure-information-app/src/app/pages/distribution-group/distribution-group.service.ts
@@ -11,7 +11,7 @@
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
import { Injectable } from '@angular/core';
-import { DistributionGroup, DistributionGroupMember, Contact } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupMember, Contact, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
@Injectable()
export class DistributionGroupService {
@@ -30,4 +30,8 @@
static contactsPageAdapter(response: any): Array<Contact> {
return response.content.map(responseItem => new Contact(responseItem));
}
+
+ static placeholderAdapter(responseItem: any): DistributionGroupTextPlaceholder {
+ return new DistributionGroupTextPlaceholder(responseItem);
+ }
}
diff --git a/projects/grid-failure-information-app/src/app/shared/models/contact.model.ts b/projects/grid-failure-information-app/src/app/shared/models/contact.model.ts
index 5e2ca28..4b489c7 100644
--- a/projects/grid-failure-information-app/src/app/shared/models/contact.model.ts
+++ b/projects/grid-failure-information-app/src/app/shared/models/contact.model.ts
@@ -37,6 +37,16 @@
}
get contactSearchString(): string {
- return this.name + ' ' + this.mainAddress;
+ return (
+ (this.salutationType ? this.salutationType : '') +
+ ' ' +
+ this.name +
+ ' ' +
+ (this.personType ? this.personType : '') +
+ ' ' +
+ (this.department ? this.department : '') +
+ ' ' +
+ this.mainAddress
+ );
}
}
diff --git a/projects/grid-failure-information-app/src/app/shared/models/distribution-group-member.model.ts b/projects/grid-failure-information-app/src/app/shared/models/distribution-group-member.model.ts
index 7a17f06..46f06a1 100644
--- a/projects/grid-failure-information-app/src/app/shared/models/distribution-group-member.model.ts
+++ b/projects/grid-failure-information-app/src/app/shared/models/distribution-group-member.model.ts
@@ -12,6 +12,7 @@
********************************************************************************/
export class DistributionGroupMember {
public contactId: string = null;
+ public department: string = null;
public distributionGroup: string = null;
public distributionGroupUuid: string = null;
public email: string = null;
@@ -19,6 +20,8 @@
public id: string = null;
public name: string = null;
public mobileNumber: string = null;
+ public personType: string = null;
+ public salutationType: string = null;
public constructor(data: any = null) {
Object.keys(data || {})
diff --git a/projects/grid-failure-information-app/src/app/shared/models/distribution-group-text-placeholder.model.ts b/projects/grid-failure-information-app/src/app/shared/models/distribution-group-text-placeholder.model.ts
new file mode 100644
index 0000000..38f2710
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/shared/models/distribution-group-text-placeholder.model.ts
@@ -0,0 +1,42 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+export class DistributionGroupTextPlaceholder {
+ public failureClassification: string = null;
+ public failureType: string = null;
+ public responsibility: string = null;
+ public internExtern: string = null;
+ public statusIntern: string = null;
+ public statusExtern: string = null;
+ public publicationStatus: string = null;
+ public branch: string = null;
+ public voltageLevel: string = null;
+ public pressureLevel: string = null;
+ public failureBegin: string = null;
+ public failureEndPlanned: string = null;
+ public failureEndResupplied: string = null;
+ public expectedReason: string = null;
+ public internalRemark: string = null;
+ public city: string = null;
+ public district: string = null;
+ public housenumber: string = null;
+ public postcode: string = null;
+ public street: string = null;
+ public stationDescription: string = null;
+ public radius: number = null;
+
+ public constructor(data: any = null) {
+ Object.keys(data || {})
+ .filter(property => this.hasOwnProperty(property))
+ .forEach(property => (this[property] = data[property]));
+ }
+}
diff --git a/projects/grid-failure-information-app/src/app/shared/models/index.ts b/projects/grid-failure-information-app/src/app/shared/models/index.ts
index 5194783..47d81ae 100644
--- a/projects/grid-failure-information-app/src/app/shared/models/index.ts
+++ b/projects/grid-failure-information-app/src/app/shared/models/index.ts
@@ -26,3 +26,4 @@
export * from './distribution-group-member.model';
export * from './contact.model';
export * from './settings.model';
+export * from './distribution-group-text-placeholder.model';
diff --git a/projects/grid-failure-information-app/src/app/shared/store/actions/distribution-groups.action.ts b/projects/grid-failure-information-app/src/app/shared/store/actions/distribution-groups.action.ts
index 1750f4a..3c83cea 100644
--- a/projects/grid-failure-information-app/src/app/shared/store/actions/distribution-groups.action.ts
+++ b/projects/grid-failure-information-app/src/app/shared/store/actions/distribution-groups.action.ts
@@ -11,7 +11,7 @@
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
import { createAction, props } from '@ngrx/store';
-import { DistributionGroup, DistributionGroupMember } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupMember, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
import { Contact } from '@grid-failure-information-app/shared/models/contact.model';
export const loadDistributionGroups = createAction('[DistributionGroups] Load');
@@ -48,3 +48,10 @@
export const createDistributionGroupMember = createAction('[DistributionGroupMember] Create', props<{ groupId: string; newMember: DistributionGroupMember }>());
export const createDistributionGroupMemberSuccess = createAction('[DistributionGroupMember] Create Success', props<{ payload: DistributionGroupMember }>());
export const createDistributionGroupMemberFail = createAction('[DistributionGroupMember] Create Fail', props<{ payload: string }>());
+
+export const loadDistributionGroupTextPlaceholders = createAction('[DistributionGroupTextPlaceholder] Load');
+export const loadDistributionGroupTextPlaceholdersSuccess = createAction(
+ '[DistributionGroupTextPlaceholder] Load Success',
+ props<{ payload: DistributionGroupTextPlaceholder }>()
+);
+export const loadDistributionGroupTextPlaceholdersFail = createAction('[DistributionGroupTextPlaceholder] Load Fail', props<{ payload: string }>());
diff --git a/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.spec.ts b/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.spec.ts
index af4a8f0..2de036d 100644
--- a/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.spec.ts
+++ b/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.spec.ts
@@ -13,12 +13,12 @@
import { take } from 'rxjs/operators';
import { DistributionGroupsEffects } from '@grid-failure-information-app/shared/store/effects/distribution-groups.effect';
import { Subject, of, throwError } from 'rxjs';
-import { DistributionGroup, DistributionGroupMember, Contact } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupMember, Contact, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
import * as distributionGroupActions from '@grid-failure-information-app/shared/store/actions/distribution-groups.action';
import { DistributionGroupApiClient } from '@grid-failure-information-app/pages/distribution-group/distribution-group-api-client';
import { Store } from '@ngrx/store';
-describe('GridFailure Effects', () => {
+describe('DistributionGroups Effects', () => {
let effects: DistributionGroupsEffects;
let actions$: Subject<any>;
let apiClient: DistributionGroupApiClient;
@@ -36,6 +36,7 @@
deleteDistributionGroupMember() {},
getContacts() {},
postDistributionGroupMember() {},
+ getDistributionGroupTextPlaceholders() {},
} as any;
store = {
dispatch() {},
@@ -106,6 +107,15 @@
actions$.next(distributionGroupActions.saveDistributionGroup({ payload: new DistributionGroup() }));
});
+ it('should equal saveDistributionGroupFail after saveDistributionGroup Error', done => {
+ spyOn(apiClient, 'postDistributionGroup').and.returnValue(throwError('x'));
+ effects.saveDistributionGroup$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.saveDistributionGroupFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.saveDistributionGroup({ payload: new DistributionGroup() }));
+ });
+
it('should equal deleteDistributionGroupSuccess after deleteDistributionGroup', done => {
spyOn(apiClient, 'deleteDistributionGroup').and.returnValue(of(null));
effects.deleteDistributionGroup$.pipe(take(1)).subscribe(result => {
@@ -115,6 +125,15 @@
actions$.next(distributionGroupActions.deleteDistributionGroup({ payload: '1' }));
});
+ it('should equal deleteDistributionGroupFail after deleteDistributionGroup Error', done => {
+ spyOn(apiClient, 'deleteDistributionGroup').and.returnValue(throwError('x'));
+ effects.deleteDistributionGroup$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.deleteDistributionGroupFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.deleteDistributionGroup({ payload: '1' }));
+ });
+
it('should equal loadDistributionGroupMembersSuccess after getDistributionGroupMembers', done => {
apiResponse = [new DistributionGroupMember({ id: '1' })];
spyOn(apiClient, 'getDistributionGroupMembers').and.returnValue(of(apiResponse));
@@ -125,6 +144,15 @@
actions$.next(distributionGroupActions.loadDistributionGroupMembers({ payload: '1' }));
});
+ it('should equal loadDistributionGroupMembersFail after getDistributionGroupMembers Error', done => {
+ spyOn(apiClient, 'getDistributionGroupMembers').and.returnValue(throwError('x'));
+ effects.getDistributionGroupMembers$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.loadDistributionGroupMembersFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.loadDistributionGroupMembers({ payload: '1' }));
+ });
+
it('should equal deleteDistributionGroupMemberSuccess after deleteDistributionGroupMember$', done => {
spyOn(apiClient, 'deleteDistributionGroupMember').and.returnValue(of(null));
effects.deleteDistributionGroupMember$.pipe(take(1)).subscribe(result => {
@@ -134,6 +162,15 @@
actions$.next(distributionGroupActions.deleteDistributionGroupMember({ groupId: 'x', memberId: 'y' }));
});
+ it('should equal deleteDistributionGroupMemberFail after deleteDistributionGroupMember$ Error', done => {
+ spyOn(apiClient, 'deleteDistributionGroupMember').and.returnValue(throwError('x'));
+ effects.deleteDistributionGroupMember$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.deleteDistributionGroupMemberFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.deleteDistributionGroupMember({ groupId: 'x', memberId: 'y' }));
+ });
+
it('should equal loadContactsSuccess after getContacts', done => {
apiResponse = [new Contact({ id: '1' })];
spyOn(apiClient, 'getContacts').and.returnValue(of(apiResponse));
@@ -144,6 +181,15 @@
actions$.next(distributionGroupActions.loadContacts({ searchText: 'x' }));
});
+ it('should equal loadContactsFail after getContacts Error', done => {
+ spyOn(apiClient, 'getContacts').and.returnValue(throwError('x'));
+ effects.getContacts$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.loadContactsFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.loadContacts({ searchText: 'x' }));
+ });
+
it('should equal createDistributionGroupMemberSuccess after createDistributionGroupMember was called', done => {
apiResponse = [new DistributionGroupMember({ id: '1' })];
spyOn(apiClient, 'postDistributionGroupMember').and.returnValue(of(apiResponse));
@@ -153,4 +199,32 @@
done();
actions$.next(distributionGroupActions.createDistributionGroupMember({ groupId: 'x', newMember: new DistributionGroupMember({ id: '1' }) }));
});
+
+ it('should equal createDistributionGroupMemberFail after createDistributionGroupMember Error', done => {
+ spyOn(apiClient, 'postDistributionGroupMember').and.returnValue(throwError('x'));
+ effects.createDistributionGroupMember$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.createDistributionGroupMemberFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.createDistributionGroupMember({ groupId: 'x', newMember: new DistributionGroupMember({ id: '1' }) }));
+ });
+
+ it('should equal loadDistributionGroupTextPlaceholdersSuccess after getDistributionTextPlaceholders was called', done => {
+ apiResponse = new DistributionGroupTextPlaceholder();
+ spyOn(apiClient, 'getDistributionGroupTextPlaceholders').and.returnValue(of(apiResponse));
+ effects.getDistributionTextPlaceholders$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.loadDistributionGroupTextPlaceholdersSuccess({ payload: apiResponse }));
+ });
+ done();
+ actions$.next(distributionGroupActions.loadDistributionGroupTextPlaceholders());
+ });
+
+ it('should equal loadDistributionGroupTextPlaceholdersFail after getDistributionTextPlaceholders Error', done => {
+ spyOn(apiClient, 'getDistributionGroupTextPlaceholders').and.returnValue(throwError('x'));
+ effects.getDistributionTextPlaceholders$.pipe(take(1)).subscribe(result => {
+ expect(result).toEqual(distributionGroupActions.loadDistributionGroupTextPlaceholdersFail({ payload: 'x' }));
+ });
+ done();
+ actions$.next(distributionGroupActions.loadDistributionGroupTextPlaceholders());
+ });
});
diff --git a/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.ts b/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.ts
index bea4e51..ccf77da 100644
--- a/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.ts
+++ b/projects/grid-failure-information-app/src/app/shared/store/effects/distribution-groups.effect.ts
@@ -19,7 +19,7 @@
import * as distributionGroupActions from '@grid-failure-information-app/shared/store/actions/distribution-groups.action';
import { DistributionGroupApiClient } from '@grid-failure-information-app/pages/distribution-group/distribution-group-api-client';
import { catchError, map, switchMap } from 'rxjs/operators';
-import { DistributionGroup } from '@grid-failure-information-app/shared/models';
+import { DistributionGroup, DistributionGroupTextPlaceholder } from '@grid-failure-information-app/shared/models';
import { Store } from '@ngrx/store';
@Injectable()
@@ -58,7 +58,7 @@
this._store.dispatch(distributionGroupActions.loadDistributionGroups());
return distributionGroupActions.saveDistributionGroupSuccess({ payload: item });
}),
- catchError(error => of(distributionGroupActions.saveDistributionGroupSuccess({ payload: error })))
+ catchError(error => of(distributionGroupActions.saveDistributionGroupFail({ payload: error })))
);
})
)
@@ -135,5 +135,17 @@
)
);
+ getDistributionTextPlaceholders$: any = createEffect(() =>
+ this._actions$.pipe(
+ ofType(distributionGroupActions.loadDistributionGroupTextPlaceholders),
+ switchMap(() => {
+ return this._apiClient.getDistributionGroupTextPlaceholders().pipe(
+ map(item => distributionGroupActions.loadDistributionGroupTextPlaceholdersSuccess({ payload: item })),
+ catchError(error => of(distributionGroupActions.loadDistributionGroupTextPlaceholdersFail({ payload: error })))
+ );
+ })
+ )
+ );
+
constructor(private _actions$: Actions, private _apiClient: DistributionGroupApiClient, private _store: Store<any>) {}
}