-
+
- Edit Filter - {{ (filter$ | async).filterName }} + Edit Filter - {{ (filter$ | async).name }}
@@ -17,7 +17,7 @@
-
- - - + + + Filter Name is required @@ -134,12 +134,12 @@
-
diff --git a/ui/src/app/metadata-filter/container/edit-filter.component.ts b/ui/src/app/metadata-filter/container/edit-filter.component.ts index baa26979d..b1581c8a4 100644 --- a/ui/src/app/metadata-filter/container/edit-filter.component.ts +++ b/ui/src/app/metadata-filter/container/edit-filter.component.ts @@ -1,26 +1,24 @@ import { Component, OnInit, OnDestroy, SimpleChanges, ViewChild, ElementRef } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Store } from '@ngrx/store'; -import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { Observable, Subject } from 'rxjs'; -import { withLatestFrom, distinctUntilChanged, takeUntil, startWith } from 'rxjs/operators'; +import { withLatestFrom, distinctUntilChanged, takeUntil, startWith, filter } from 'rxjs/operators'; import * as fromRoot from '../../app.reducer'; import * as fromFilter from '../reducer'; import * as fromCollection from '../../domain/reducer'; -import { ProviderStatusEmitter, ProviderValueEmitter } from '../../domain/service/provider-change-emitter.service'; +import { ProviderValueEmitter } from '../../domain/service/provider-change-emitter.service'; import { CancelCreateFilter, SelectId, UpdateFilterChanges } from '../action/filter.action'; -import { AddFilterRequest, UpdateFilterRequest } from '../../domain/action/filter-collection.action'; +import { UpdateFilterRequest } from '../../domain/action/filter-collection.action'; import { MetadataFilter } from '../../domain/model/metadata-filter'; -import { Filter } from '../../domain/entity/filter'; import { EntityValidators } from '../../domain/service/entity-validators.service'; -import { SearchDialogComponent } from '../component/search-dialog.component'; import { QueryEntityIds, ViewMoreIds, ClearSearch } from '../action/search.action'; import { AutoCompleteComponent } from '../../shared/autocomplete/autocomplete.component'; import { MDUI } from '../../domain/model/mdui'; import { PreviewEntity } from '../../domain/action/entity.action'; import { MetadataEntity } from '../../domain/domain.type'; +import { EntityAttributesFilter } from '../../domain/entity/entity-attributes.filter'; @Component({ selector: 'edit-filter-page', @@ -52,12 +50,12 @@ export class EditFilterComponent implements OnInit, OnDestroy { '', [Validators.required] ], - filterName: ['', [Validators.required]], + name: ['', [Validators.required]], filterEnabled: [false] }); filter: MetadataFilter; - filterEntity: Filter; + filterEntity: EntityAttributesFilter; isValid = false; @@ -67,7 +65,11 @@ export class EditFilterComponent implements OnInit, OnDestroy { private fb: FormBuilder ) { this.changes$ = this.store.select(fromFilter.getFilter); - this.changes$.subscribe(c => this.changes = new Filter(c)); + this.changes$ + .pipe( + distinctUntilChanged() + ) + .subscribe(c => this.changes = new EntityAttributesFilter(c)); this.showMore$ = this.store.select(fromFilter.getViewingMore); this.selected$ = this.store.select(fromFilter.getSelected); @@ -80,20 +82,23 @@ export class EditFilterComponent implements OnInit, OnDestroy { this.entityIds$.subscribe(ids => this.ids = ids); - this.filter$.pipe( - withLatestFrom(this.isSaving$) - ).subscribe(([filter, saving]) => { - let { entityId, filterName, filterEnabled } = new Filter(filter); - this.form.reset({ - entityId, - filterName, - filterEnabled + this.filter$ + .pipe( + filter(f => !!f) + ) + .subscribe(filter => { + this.filterEntity = new EntityAttributesFilter(filter); + let { entityId, name, filterEnabled } = this.filterEntity; + this.form.patchValue({ + entityId, + name, + filterEnabled + }); + this.filter = filter; + this.store.dispatch(new SelectId(entityId)); + + this.form.get('entityId').disable(); }); - this.filter = filter; - this.filterEntity = new Filter(filter); - - this.store.dispatch(new SelectId(entityId)); - }); } ngOnInit(): void { @@ -105,13 +110,12 @@ export class EditFilterComponent implements OnInit, OnDestroy { takeUntil(this.ngUnsubscribe), startWith(this.form.value) ).subscribe(changes => this.store.dispatch(new UpdateFilterChanges(changes))); + this.valueEmitter.changeEmitted$.pipe( takeUntil(this.ngUnsubscribe), startWith(this.form.value) ).subscribe(changes => this.store.dispatch(new UpdateFilterChanges(changes))); - this.form.get('entityId').disable(); - id.valueChanges .pipe(distinctUntilChanged()) .subscribe(entityId => id.valid ? this.store.dispatch(new SelectId(entityId)) : null); @@ -168,6 +172,6 @@ export class EditFilterComponent implements OnInit, OnDestroy { } preview(entity: MetadataEntity): void { - this.store.dispatch(new PreviewEntity(new Filter(entity))); + this.store.dispatch(new PreviewEntity(new EntityAttributesFilter(entity))); } } diff --git a/ui/src/app/metadata-filter/container/filter.component.ts b/ui/src/app/metadata-filter/container/filter.component.ts index 876a9a050..b7d139423 100644 --- a/ui/src/app/metadata-filter/container/filter.component.ts +++ b/ui/src/app/metadata-filter/container/filter.component.ts @@ -1,5 +1,4 @@ -import { Component, Output, Input, EventEmitter, OnDestroy, ChangeDetectionStrategy } from '@angular/core'; -import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms'; +import { Component, OnDestroy } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Observable, Subscription } from 'rxjs'; import { distinctUntilChanged, map } from 'rxjs/operators'; @@ -26,9 +25,11 @@ export class FilterComponent implements OnDestroy { private store: Store, private route: ActivatedRoute ) { - this.actionsSubscription = route.params.pipe( + this.actionsSubscription = this.route.params.pipe( distinctUntilChanged(), - map(params => new SelectFilter(params.id)) + map(params => { + return new SelectFilter(params.id); + }) ).subscribe(store); this.filter$ = this.store.select(fromCollection.getSelectedFilter); diff --git a/ui/src/app/metadata-filter/container/new-filter.component.html b/ui/src/app/metadata-filter/container/new-filter.component.html index d325fb7f6..55889cee7 100644 --- a/ui/src/app/metadata-filter/container/new-filter.component.html +++ b/ui/src/app/metadata-filter/container/new-filter.component.html @@ -5,7 +5,7 @@
- New Filter + new EntityAttributesFilter
@@ -17,7 +17,7 @@
-
- - - + + + Filter Name is required @@ -100,12 +100,12 @@
-
diff --git a/ui/src/app/metadata-filter/container/new-filter.component.ts b/ui/src/app/metadata-filter/container/new-filter.component.ts index ac8cb93c9..f56245dd7 100644 --- a/ui/src/app/metadata-filter/container/new-filter.component.ts +++ b/ui/src/app/metadata-filter/container/new-filter.component.ts @@ -1,20 +1,18 @@ -import { Component, OnInit, OnDestroy, SimpleChanges } from '@angular/core'; +import { Component, OnInit, OnDestroy } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Store } from '@ngrx/store'; -import { Observable, Subject, Subscription } from 'rxjs'; +import { Observable, Subject } from 'rxjs'; import { withLatestFrom, distinctUntilChanged, startWith, takeUntil } from 'rxjs/operators'; import * as fromFilter from '../reducer'; -import { ProviderStatusEmitter, ProviderValueEmitter } from '../../domain/service/provider-change-emitter.service'; -import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; +import { ProviderValueEmitter } from '../../domain/service/provider-change-emitter.service'; import { CancelCreateFilter, SelectId, UpdateFilterChanges } from '../action/filter.action'; import { AddFilterRequest } from '../../domain/action/filter-collection.action'; import { MetadataFilter } from '../../domain/model/metadata-filter'; -import { Filter } from '../../domain/entity/filter'; import { EntityValidators } from '../../domain/service/entity-validators.service'; -import { SearchDialogComponent } from '../component/search-dialog.component'; import { QueryEntityIds, ViewMoreIds, ClearSearch } from '../action/search.action'; import { MDUI } from '../../domain/model/mdui'; +import { EntityAttributesFilter } from '../../domain/entity/entity-attributes.filter'; @Component({ selector: 'new-filter-page', @@ -26,9 +24,9 @@ export class NewFilterComponent implements OnInit, OnDestroy { changes$: Observable; changes: MetadataFilter; - filter: MetadataFilter = new Filter({ + filter: EntityAttributesFilter = new EntityAttributesFilter({ entityId: '', - filterName: '', + name: '', relyingPartyOverrides: { signAssertion: false, dontSignResponse: false, @@ -56,7 +54,7 @@ export class NewFilterComponent implements OnInit, OnDestroy { entityId: ['', [Validators.required], [ EntityValidators.existsInCollection(this.store.select(fromFilter.getEntityCollection)) ]], - filterName: ['', [Validators.required]], + name: ['', [Validators.required]], filterEnabled: [false] }); @@ -69,7 +67,7 @@ export class NewFilterComponent implements OnInit, OnDestroy { ) { this.store.dispatch(new ClearSearch()); this.changes$ = this.store.select(fromFilter.getFilter); - this.changes$.subscribe(c => this.changes = new Filter(c)); + this.changes$.subscribe(c => this.changes = new EntityAttributesFilter(c)); this.showMore$ = this.store.select(fromFilter.getViewingMore); this.selected$ = this.store.select(fromFilter.getSelected); diff --git a/ui/src/app/metadata-filter/effect/filter.effect.ts b/ui/src/app/metadata-filter/effect/filter.effect.ts index 20150087f..c74bd3893 100644 --- a/ui/src/app/metadata-filter/effect/filter.effect.ts +++ b/ui/src/app/metadata-filter/effect/filter.effect.ts @@ -1,28 +1,20 @@ import { Injectable } from '@angular/core'; import { Effect, Actions, ofType } from '@ngrx/effects'; import { Store } from '@ngrx/store'; -import { Observable, of } from 'rxjs'; +import { of } from 'rxjs'; import { map, switchMap, catchError, withLatestFrom, tap } from 'rxjs/operators'; import { Router } from '@angular/router'; -import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import * as filterActions from '../action/filter.action'; -import * as fromFilter from '../reducer'; import * as fromCollection from '../../domain/reducer'; import * as fromRoot from '../../app.reducer'; import * as collection from '../../domain/action/filter-collection.action'; import { FilterCollectionActionTypes } from '../../domain/action/filter-collection.action'; - -import { SearchDialogComponent } from '../component/search-dialog.component'; import { EntityIdService } from '../../domain/service/entity-id.service'; import { MetadataResolverService } from '../../domain/service/metadata-resolver.service'; import { ShowContentionAction } from '../../contention/action/contention.action'; - -import { Contention } from '../../contention/model/contention'; import { MetadataFilter } from '../../domain/domain.type'; -import { CancelChanges } from '../../edit-provider/action/editor.action'; -import { Update } from '@ngrx/entity'; import { ContentionService } from '../../contention/service/contention.service'; @Injectable() diff --git a/ui/src/app/metadata-filter/effect/search.effect.ts b/ui/src/app/metadata-filter/effect/search.effect.ts index ba9e74dcb..ef03c30d9 100644 --- a/ui/src/app/metadata-filter/effect/search.effect.ts +++ b/ui/src/app/metadata-filter/effect/search.effect.ts @@ -1,23 +1,16 @@ import { Injectable } from '@angular/core'; import { Effect, Actions, ofType } from '@ngrx/effects'; -import { Store } from '@ngrx/store'; -import { Observable, of } from 'rxjs'; +import { of } from 'rxjs'; import { catchError, map, debounceTime, switchMap } from 'rxjs/operators'; - -import { Router } from '@angular/router'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import * as search from '../action/search.action'; -import * as filter from '../action/filter.action'; -import * as fromFilter from '../reducer'; -import * as collection from '../../domain/action/filter-collection.action'; import { SearchDialogComponent } from '../component/search-dialog.component'; import { EntityIdService } from '../../domain/service/entity-id.service'; -import { MetadataProvider } from '../../domain/model/metadata-provider'; -import { MetadataResolverService } from '../../domain/service/metadata-resolver.service'; import { fromPromise } from 'rxjs/internal-compatibility'; +import { SelectId } from '../action/filter.action'; @Injectable() @@ -46,7 +39,7 @@ export class SearchIdEffects { const res = modal.result; modal.componentInstance.term = q; return fromPromise(res).pipe( - map(id => new filter.SelectId(id)), + map(id => new SelectId(id)), catchError(() => of(new search.CancelViewMore())) ); }) diff --git a/ui/src/app/metadata-filter/reducer/filter.reducer.spec.ts b/ui/src/app/metadata-filter/reducer/filter.reducer.spec.ts index a61f8e0f8..8dd49f54f 100644 --- a/ui/src/app/metadata-filter/reducer/filter.reducer.spec.ts +++ b/ui/src/app/metadata-filter/reducer/filter.reducer.spec.ts @@ -2,19 +2,13 @@ import { reducer } from './filter.reducer'; import * as fromFilter from './filter.reducer'; import * as actions from '../action/filter.action'; import * as searchActions from '../action/search.action'; -import { - SelectId, - LoadEntityPreviewSuccess, - UpdateFilterChanges, - CancelCreateFilter -} from '../action/filter.action'; +import { CancelCreateFilter } from '../action/filter.action'; import { ClearSearch } from '../action/search.action'; import { - FilterCollectionActionsUnion, FilterCollectionActionTypes, AddFilterRequest, UpdateFilterRequest, @@ -23,7 +17,7 @@ import { } from '../../domain/action/filter-collection.action'; import { MDUI } from '../../domain/model/mdui'; import { MetadataFilter } from '../../domain/domain.type'; -import { Filter } from '../../domain/entity/filter'; +import { EntityAttributesFilter } from '../../domain/entity/entity-attributes.filter'; const snapshot: fromFilter.FilterState = { selected: null, @@ -78,26 +72,26 @@ describe('Filter Reducer', () => { describe(`${FilterCollectionActionTypes.ADD_FILTER} action`, () => { it('should set saving to true', () => { - const result = reducer(snapshot, new AddFilterRequest(new Filter())); + const result = reducer(snapshot, new AddFilterRequest(new EntityAttributesFilter())); expect(result.saving).toBe(true); }); }); describe(`${FilterCollectionActionTypes.UPDATE_FILTER_REQUEST} action`, () => { it('should set saving to true', () => { - const result = reducer(snapshot, new UpdateFilterRequest(new Filter())); + const result = reducer(snapshot, new UpdateFilterRequest(new EntityAttributesFilter())); expect(result.saving).toBe(true); }); }); describe(`${FilterCollectionActionTypes.ADD_FILTER_SUCCESS} action`, () => { it('should set saving to true', () => { - const result = reducer(snapshot, new AddFilterSuccess(new Filter())); + const result = reducer(snapshot, new AddFilterSuccess(new EntityAttributesFilter())); expect(result).toEqual(fromFilter.initialState); }); }); describe(`${FilterCollectionActionTypes.UPDATE_FILTER_SUCCESS} action`, () => { it('should set saving to true', () => { - const update = {id: 'foo', changes: new Filter({id: 'foo'})}; + const update = {id: 'foo', changes: new EntityAttributesFilter({id: 'foo'})}; const result = reducer(snapshot, new UpdateFilterSuccess(update)); expect(result).toEqual(fromFilter.initialState); }); diff --git a/ui/src/app/metadata-filter/reducer/filter.reducer.ts b/ui/src/app/metadata-filter/reducer/filter.reducer.ts index 88661fb57..1b7d54c01 100644 --- a/ui/src/app/metadata-filter/reducer/filter.reducer.ts +++ b/ui/src/app/metadata-filter/reducer/filter.reducer.ts @@ -1,11 +1,7 @@ -import { createSelector, createFeatureSelector } from '@ngrx/store'; import * as filter from '../action/filter.action'; import * as search from '../action/search.action'; -import * as collection from '../../domain/action/filter-collection.action'; import { FilterCollectionActionTypes, FilterCollectionActionsUnion } from '../../domain/action/filter-collection.action'; -import * as fromRoot from '../../core/reducer'; import { MetadataFilter, MDUI } from '../../domain/domain.type'; -import { SearchAction } from '../../dashboard/action/search.action'; export interface FilterState { selected: string | null; diff --git a/ui/src/app/metadata-filter/reducer/search.reducer.ts b/ui/src/app/metadata-filter/reducer/search.reducer.ts index 42537d185..47d5948bc 100644 --- a/ui/src/app/metadata-filter/reducer/search.reducer.ts +++ b/ui/src/app/metadata-filter/reducer/search.reducer.ts @@ -1,8 +1,5 @@ -import { createSelector, createFeatureSelector } from '@ngrx/store'; import * as search from '../action/search.action'; import * as filter from '../action/filter.action'; -import * as fromRoot from '../../core/reducer'; -import { MetadataFilter } from '../../domain/domain.type'; import { FilterCollectionActionTypes, FilterCollectionActionsUnion } from '../../domain/action/filter-collection.action'; export interface SearchState { From 23f1180bb5cec0c39439792359135d4f592b20e1 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Mon, 11 Jun 2018 14:29:38 -0700 Subject: [PATCH 37/46] SHIBUI-522 Updated dashboard --- .../dashboard/component/entity-item.component.html | 10 +++++----- .../dashboard/component/entity-item.component.ts | 4 ++-- .../app/dashboard/container/dashboard.component.ts | 10 +++++----- ui/src/app/dashboard/effect/search.effects.ts | 14 ++++++-------- ui/src/app/dashboard/reducer/search.reducer.ts | 10 +++++----- ui/src/locale/en.xlf | 12 ++++++------ 6 files changed, 29 insertions(+), 31 deletions(-) diff --git a/ui/src/app/dashboard/component/entity-item.component.html b/ui/src/app/dashboard/component/entity-item.component.html index ed3a6223a..4b48336ca 100644 --- a/ui/src/app/dashboard/component/entity-item.component.html +++ b/ui/src/app/dashboard/component/entity-item.component.html @@ -5,7 +5,7 @@
  - + @@ -37,7 +37,7 @@
- {entity.type, select, filter {Filter} provider {Service Provider} other {other}} Name: + {entity.kind, select, filter {Filter} provider {Service Provider} other {other}} Name:
{{ entity.name }}
Created Date:
@@ -46,11 +46,11 @@
- {entity.type, select, filter {Filter} provider {Service Provider} other {other}} Entity ID: + {entity.kind, select, filter {Filter} provider {Service Provider} other {other}} Entity ID:
{{ entity.entityId }}
- {entity.type, select, filter {Filter} provider {Service Provider} other {other}} Status: + {entity.kind, select, filter {Filter} provider {Service Provider} other {other}} Status:
-