Skip to content

Commit

Permalink
Merge branch 'master' into SHIBUI-754
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Aug 17, 2018
2 parents 1eeff24 + e6f8510 commit b0acb1b
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 12 deletions.
6 changes: 4 additions & 2 deletions ui/src/app/metadata/domain/service/filter.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ export class MetadataFilterService {
}

find(providerId: string, filterId: string): Observable<MetadataFilter> {
// console.log(id);
return this.http.get<MetadataFilter>(`${this.base}${this.endpoint}/${providerId}/Filters/${ filterId }`);
}

Expand All @@ -27,7 +26,10 @@ export class MetadataFilterService {
}

save(providerId: string, filter: MetadataFilter): Observable<MetadataFilter> {
console.log(providerId, filter);
return this.http.post<MetadataFilter>(`${this.base}${this.endpoint}/${providerId}/Filters`, filter);
}

remove(providerId: string, filterId: string): Observable<string> {
return this.http.delete<string>(`${this.base}${this.endpoint}/${providerId}/Filters/${ filterId }`);
}
}
6 changes: 3 additions & 3 deletions ui/src/app/metadata/filter/action/collection.action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,19 +99,19 @@ export class AddFilterFail implements Action {
export class RemoveFilterRequest implements Action {
readonly type = FilterCollectionActionTypes.REMOVE_FILTER_REQUEST;

constructor(public payload: MetadataFilter) { }
constructor(public payload: string) { }
}

export class RemoveFilterSuccess implements Action {
readonly type = FilterCollectionActionTypes.REMOVE_FILTER_SUCCESS;

constructor(public payload: MetadataFilter) { }
constructor(public payload: string) { }
}

export class RemoveFilterFail implements Action {
readonly type = FilterCollectionActionTypes.REMOVE_FILTER_FAIL;

constructor(public payload: MetadataFilter) { }
constructor(public error: Error) { }
}

export type FilterCollectionActionsUnion =
Expand Down
21 changes: 21 additions & 0 deletions ui/src/app/metadata/filter/effect/collection.effect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,27 @@ export class FilterCollectionEffects {
tap(([filter, provider]) => this.router.navigate(['/', 'metadata', 'provider', provider, 'filters']))
);

@Effect()
removeFilterRequest$ = this.actions$.pipe(
ofType<actions.RemoveFilterRequest>(FilterCollectionActionTypes.REMOVE_FILTER_REQUEST),
map(action => action.payload),
withLatestFrom(this.store.select(fromProvider.getSelectedProviderId).pipe(skipWhile(id => !id))),
switchMap(([filterId, providerId]) =>
this.filterService.remove(providerId, filterId).pipe(
map(removed => new actions.RemoveFilterSuccess(removed)),
catchError(err => of(new actions.RemoveFilterFail(err)))
)
)
);

@Effect()
removeFilterSuccess$ = this.actions$.pipe(
ofType<actions.RemoveFilterSuccess>(FilterCollectionActionTypes.REMOVE_FILTER_SUCCESS),
map(action => action.payload),
withLatestFrom(this.store.select(fromProvider.getSelectedProviderId).pipe(skipWhile(id => !id))),
map(([filter, providerId]) => new actions.LoadFilterRequest(providerId))
);

constructor(
private actions$: Actions,
private router: Router,
Expand Down
10 changes: 9 additions & 1 deletion ui/src/app/metadata/filter/reducer/collection.reducer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import {
UpdateFilterRequest,
AddFilterSuccess,
AddFilterFail,
UpdateFilterFail
UpdateFilterFail,
RemoveFilterFail
} from '../action/collection.action';
import { EntityAttributesFilterEntity } from '../../domain/entity/filter/entity-attributes-filter';

Expand Down Expand Up @@ -93,6 +94,13 @@ describe('Filter Reducer', () => {
});
});

describe(`${FilterCollectionActionTypes.REMOVE_FILTER_FAIL}`, () => {
it('should set saving to false', () => {
const action = new RemoveFilterFail(new Error('foo'));
expect(reducer(snapshot, action).saving).toBe(false);
});
});

describe(`${FilterCollectionActionTypes.UPDATE_FILTER_SUCCESS}`, () => {
it('should update the filter in the collection', () => {
spyOn(fromFilter.adapter, 'updateOne').and.callThrough();
Expand Down
15 changes: 15 additions & 0 deletions ui/src/app/metadata/filter/reducer/collection.reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,28 @@ export function reducer(state = initialState, action: FilterCollectionActionsUni

case FilterCollectionActionTypes.ADD_FILTER_SUCCESS:
case FilterCollectionActionTypes.ADD_FILTER_FAIL:
case FilterCollectionActionTypes.REMOVE_FILTER_FAIL:
case FilterCollectionActionTypes.UPDATE_FILTER_FAIL: {
return {
...state,
saving: false
};
}

case FilterCollectionActionTypes.REMOVE_FILTER_SUCCESS: {
return adapter.removeOne(action.payload, {
...state,
saving: false
});
}

case FilterCollectionActionTypes.REMOVE_FILTER_REQUEST: {
return {
...state,
saving: true
};
}

case FilterCollectionActionTypes.SELECT_FILTER_REQUEST: {
return {
...state,
Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/metadata/filter/reducer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export const getAllFilters = createSelector(getCollectionState, fromCollection.s
export const getCollectionSaving = createSelector(getCollectionState, fromCollection.getIsSaving);

export const notAddtlFilters = ['RequiredValidUntil', 'SignatureValidation', 'EntityRoleWhiteList'];
export const filterTypeFn = filters => filters.filter(f => notAddtlFilters.indexOf(f['@type']) === -1);
export const filterTypeFn = filters => [...filters.filter(f => notAddtlFilters.indexOf(f['@type']) === -1)];

export const getAdditionalFilters = createSelector(getAllFilters, filterTypeFn);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
<th>Filter Type</th>
<th>Enabled?</th>
<th>Edit</th>
<!--<th>Delete</th>-->
<th>Delete</th>
</tr>
</thead>
<tbody>
Expand Down Expand Up @@ -79,14 +79,12 @@
<span class="sr-only">Edit</span>
</a>
</td>
<!--
<td class="td-sm">
<button class="btn btn-link">
<button class="btn btn-link" (click)="remove(filter.resourceId)">
<i class="fa fa-trash fa-lg sr-hidden text-danger"></i>
<span class="sr-only">Delete</span>
</button>
</td>
-->
</tr>
</tbody>
</table>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,11 @@ describe('Provider Filter List Component', () => {
it('should instantiate the component', async(() => {
expect(app).toBeTruthy();
}));

describe('remove method', () => {
it('should dispatch an action to the store', () => {
app.remove('foo');
expect(store.dispatch).toHaveBeenCalled();
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as fromFilter from '../../filter/reducer';
import { MetadataFilter, MetadataProvider } from '../../domain/model';
import { NAV_FORMATS } from '../component/provider-editor-nav.component';
import { SetIndex } from '../../../wizard/action/wizard.action';
import { UpdateFilterRequest, LoadFilterRequest } from '../../filter/action/collection.action';
import { UpdateFilterRequest, LoadFilterRequest, RemoveFilterRequest } from '../../filter/action/collection.action';

@Component({
selector: 'provider-filter-list',
Expand Down Expand Up @@ -44,6 +44,10 @@ export class ProviderFilterListComponent implements OnDestroy {
this.store.dispatch(new UpdateFilterRequest({ ...filter, filterEnabled: !filter.filterEnabled }));
}

remove(id: string): void {
this.store.dispatch(new RemoveFilterRequest(id));
}

ngOnDestroy(): void {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
Expand Down

0 comments on commit b0acb1b

Please sign in to comment.