Skip to content

Commit

Permalink
Fixed issues in Enable Metadata Source tab
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Jan 25, 2019
1 parent 67c33c1 commit 9fe2077
Show file tree
Hide file tree
Showing 30 changed files with 564 additions and 109 deletions.
4 changes: 4 additions & 0 deletions backend/src/main/resources/i18n/messages_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,10 @@ label.role=Role
label.delete=Delete?
label.delete-request=Delete Request

label.enable=Enable
label.disable=Disable
label.enable-metadata-sources=Enable Metadata Sources

message.delete-user-title=Delete User?
message.delete-user-body=You are requesting to delete a user. If you complete this process the user will be removed. This cannot be undone. Do you wish to continue?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export enum AdminCollectionActionTypes {
UPDATE_ADMIN_SUCCESS = '[Admin Collection] Update Admin Success',
UPDATE_ADMIN_FAIL = '[Admin Collection] Update Admin Fail',

LOAD_NEW_USERS_REQUEST = '[Admin Collection] Load New Users Request',
LOAD_ADMIN_REQUEST = '[Admin Collection] Load Admin Request',
LOAD_ADMIN_SUCCESS = '[Admin Collection] Load Admin Success',
LOAD_ADMIN_ERROR = '[Admin Collection] Load Admin Error',
Expand Down Expand Up @@ -52,12 +51,6 @@ export class LoadAdminRequest implements Action {
constructor() { }
}

export class LoadNewUsersRequest implements Action {
readonly type = AdminCollectionActionTypes.LOAD_NEW_USERS_REQUEST;

constructor() { }
}

export class LoadAdminSuccess implements Action {
readonly type = AdminCollectionActionTypes.LOAD_ADMIN_SUCCESS;

Expand Down Expand Up @@ -133,7 +126,6 @@ export type AdminCollectionActionsUnion =
| LoadAdminRequest
| LoadAdminSuccess
| LoadAdminError
| LoadNewUsersRequest
| AddAdminRequest
| AddAdminSuccess
| AddAdminFail
Expand Down
90 changes: 90 additions & 0 deletions ui/src/app/admin/action/metadata-collection.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import { Action } from '@ngrx/store';
import { MetadataResolver } from '../../metadata/domain/model';
import { Update } from '@ngrx/entity';

export enum MetadataCollectionActionTypes {
UPDATE_METADATA_REQUEST = '[Admin Metadata Collection] Update Request',
UPDATE_METADATA_SUCCESS = '[Admin Metadata Collection] Update Success',
UPDATE_METADATA_FAIL = '[Admin Metadata Collection] Update Fail',
UPDATE_METADATA_CONFLICT = '[Admin Metadata Collection] Update Conflict',

LOAD_METADATA_REQUEST = '[Admin Metadata Collection] Load Metadata REQUEST',
LOAD_METADATA_SUCCESS = '[Admin Metadata Collection] Load Metadata SUCCESS',
LOAD_METADATA_ERROR = '[Admin Metadata Collection] Load Metadata ERROR',

REMOVE_METADATA = '[Admin Metadata Collection] Remove Metadata',
REMOVE_METADATA_SUCCESS = '[Admin Metadata Collection] Remove Metadata Success',
REMOVE_METADATA_FAIL = '[Admin Metadata Collection] Remove Metadata Fail',
}

export class LoadMetadataRequest implements Action {
readonly type = MetadataCollectionActionTypes.LOAD_METADATA_REQUEST;

constructor() { }
}

export class LoadMetadataSuccess implements Action {
readonly type = MetadataCollectionActionTypes.LOAD_METADATA_SUCCESS;

constructor(public payload: MetadataResolver[]) { }
}

export class LoadMetadataError implements Action {
readonly type = MetadataCollectionActionTypes.LOAD_METADATA_ERROR;

constructor(public payload: any) { }
}

export class UpdateMetadataRequest implements Action {
readonly type = MetadataCollectionActionTypes.UPDATE_METADATA_REQUEST;

constructor(public payload: MetadataResolver) { }
}

export class UpdateMetadataSuccess implements Action {
readonly type = MetadataCollectionActionTypes.UPDATE_METADATA_SUCCESS;

constructor(public payload: Update<MetadataResolver>) { }
}

export class UpdateMetadataFail implements Action {
readonly type = MetadataCollectionActionTypes.UPDATE_METADATA_FAIL;

constructor(public payload: any) { }
}

export class UpdateMetadataConflict implements Action {
readonly type = MetadataCollectionActionTypes.UPDATE_METADATA_CONFLICT;

constructor(public payload: MetadataResolver) { }
}

export class RemoveMetadataRequest implements Action {
readonly type = MetadataCollectionActionTypes.REMOVE_METADATA;

constructor(public payload: MetadataResolver) { }
}

export class RemoveMetadataSuccess implements Action {
readonly type = MetadataCollectionActionTypes.REMOVE_METADATA_SUCCESS;

constructor(public payload: MetadataResolver) { }
}

export class RemoveMetadataFail implements Action {
readonly type = MetadataCollectionActionTypes.REMOVE_METADATA_FAIL;

constructor(public payload: MetadataResolver) { }
}

export type MetadataCollectionActionsUnion =
| LoadMetadataRequest
| LoadMetadataSuccess
| LoadMetadataError
| RemoveMetadataRequest
| RemoveMetadataSuccess
| RemoveMetadataFail
| UpdateMetadataRequest
| UpdateMetadataSuccess
| UpdateMetadataFail
| UpdateMetadataConflict;
12 changes: 11 additions & 1 deletion ui/src/app/admin/admin.component.spec.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { AdminComponent } from './admin.component';
import { RouterTestingModule } from '@angular/router/testing';
import { StoreModule, combineReducers, Store } from '@ngrx/store';
import * as fromAdmin from './reducer';

describe('Admin Root Component', () => {
let fixture: ComponentFixture<AdminComponent>;
let instance: AdminComponent;
let store: Store<fromAdmin.State>;

beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule
RouterTestingModule,
StoreModule.forRoot({
admin: combineReducers(fromAdmin.reducers)
})
],
declarations: [
AdminComponent
],
});

store = TestBed.get(Store);
spyOn(store, 'dispatch');

fixture = TestBed.createComponent(AdminComponent);
instance = fixture.componentInstance;
});
Expand All @@ -24,5 +33,6 @@ describe('Admin Root Component', () => {
fixture.detectChanges();

expect(fixture).toBeDefined();
expect(store.dispatch).toHaveBeenCalled();
});
});
12 changes: 10 additions & 2 deletions ui/src/app/admin/admin.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import { Component, OnInit } from '@angular/core';
import { Component } from '@angular/core';

import * as fromRoot from '../app.reducer';
import { Store } from '@ngrx/store';
import { LoadAdminRequest } from './action/admin-collection.action';

@Component({
selector: 'admin-page',
templateUrl: './admin.component.html',
styleUrls: []
})
export class AdminComponent {
constructor() { }
constructor(
private store: Store<fromRoot.State>
) {
this.store.dispatch(new LoadAdminRequest());
}
}
5 changes: 3 additions & 2 deletions ui/src/app/admin/admin.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { AdminManagementPageComponent } from './container/admin-management.compo
import { AdminComponent } from './admin.component';
import { reducers } from './reducer';
import { AdminService } from './service/admin.service';
import { AdminCollectionEffects } from './effect/user-collection.effect';
import { AdminCollectionEffects } from './effect/admin-collection.effect';
import { EffectsModule } from '@ngrx/effects';
import { DeleteUserDialogComponent } from './component/delete-user-dialog.component';
import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
Expand All @@ -20,6 +20,7 @@ import { AccessRequestComponent } from './component/access-request.component';
import { UserManagementComponent } from './component/user-management.component';
import { EnableMetadataComponent } from './component/enable-metadata.component';
import { ManagerModule } from '../metadata/manager/manager.module';
import { MetadataCollectionEffects } from './effect/metadata-collection.effect';

@NgModule({
declarations: [
Expand All @@ -38,7 +39,7 @@ import { ManagerModule } from '../metadata/manager/manager.module';
CommonModule,
I18nModule,
StoreModule.forFeature('admin', reducers),
EffectsModule.forFeature([AdminCollectionEffects]),
EffectsModule.forFeature([AdminCollectionEffects, MetadataCollectionEffects]),
FormsModule,
RouterModule,
HttpClientModule,
Expand Down
5 changes: 4 additions & 1 deletion ui/src/app/admin/component/enable-metadata.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
(select)="edit(resolver)"
(toggle)="toggleEntity(resolver)"
(preview)="openPreviewDialog(resolver)"
(delete)="deleteResolver(resolver)">
(delete)="deleteResolver(resolver)"
(toggleEnabled)="toggleResolverEnabled(resolver, !resolver.enabled)"
[showAdminFunctions]="true"
[allowDelete]="true">
</resolver-item>
</li>
</ul>
31 changes: 20 additions & 11 deletions ui/src/app/admin/component/enable-metadata.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ import { map } from 'rxjs/operators';

import { MetadataEntity, MetadataResolver } from '../../metadata/domain/model';
import * as fromDashboard from '../../metadata/manager/reducer';
import * as fromResolver from '../../metadata/resolver/reducer';
import * as fromMetadata from '../reducer';
import { ToggleEntityDisplay } from '../../metadata/manager/action/manager.action';
import { DeleteDialogComponent } from '../../metadata/manager/component/delete-dialog.component';
import { PreviewEntity } from '../../metadata/domain/action/entity.action';
import { RemoveDraftRequest } from '../../metadata/resolver/action/draft.action';
import { LoadAdminResolverRequest } from '../../metadata/resolver/action/collection.action';
import { FileBackedHttpMetadataResolver } from '../../metadata/domain/entity';
import { RemoveMetadataRequest, UpdateMetadataRequest, LoadMetadataRequest } from '../action/metadata-collection.action';

@Component({
selector: 'enable-metadata',
templateUrl: './enable-metadata.component.html'
})

export class EnableMetadataComponent implements OnInit {
resolvers$: Observable<MetadataEntity[]>;
resolvers$: Observable<FileBackedHttpMetadataResolver[]>;
loading$: Observable<boolean>;

total$: Observable<number>;
Expand All @@ -34,16 +34,20 @@ export class EnableMetadataComponent implements OnInit {
private router: Router,
private modalService: NgbModal
) {
this.resolvers$ = store.select(fromResolver.getAllResolvers);
this.loading$ = store.select(fromDashboard.getSearchLoading);
this.entitiesOpen$ = store.select(fromDashboard.getOpenProviders);
this.store.dispatch(new LoadMetadataRequest());

this.resolvers$ = this.store
.select(fromMetadata.getMetadataCollection)
.pipe(
map(resolvers => resolvers.map(r => new FileBackedHttpMetadataResolver(r)))
);
this.loading$ = this.store.select(fromDashboard.getSearchLoading);
this.entitiesOpen$ = this.store.select(fromDashboard.getOpenProviders);

this.total$ = this.resolvers$.pipe(map(list => list.length));
}

ngOnInit(): void {
this.store.dispatch(new LoadAdminResolverRequest());
}
ngOnInit(): void {}

edit(entity: MetadataEntity): void {
this.router.navigate(['metadata', 'resolver', entity.getId(), 'edit']);
Expand All @@ -57,13 +61,18 @@ export class EnableMetadataComponent implements OnInit {
this.store.dispatch(new PreviewEntity({ id: entity.getId(), entity }));
}

toggleResolverEnabled(entity: MetadataResolver, enabled: boolean): void {
let update = { ...entity, serviceEnabled: enabled };
this.store.dispatch(new UpdateMetadataRequest(update));
}

deleteResolver(entity: MetadataResolver): void {
this.modalService
.open(DeleteDialogComponent)
.result
.then(
success => {
this.store.dispatch(new RemoveDraftRequest(entity));
this.store.dispatch(new RemoveMetadataRequest(entity));
},
err => {
console.log('Cancelled');
Expand Down
4 changes: 2 additions & 2 deletions ui/src/app/admin/component/user-management.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import * as fromRoot from '../../app.reducer';
import * as fromCore from '../../core/reducer';
import * as fromAdmin from '../reducer';

import { UpdateAdminRequest, RemoveAdminRequest } from '../action/user-collection.action';
import { UpdateAdminRequest, RemoveAdminRequest } from '../action/admin-collection.action';
import { Admin } from '../model/admin';
import { DeleteUserDialogComponent } from '../component/delete-user-dialog.component';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
Expand All @@ -33,7 +33,7 @@ export class UserManagementComponent implements OnInit {
}

ngOnInit(): void {
this.users$ = this.store.select(fromAdmin.getAllConfiguredUsers);
this.users$ = this.store.select(fromAdmin.getAllConfiguredAdmins);
this.hasUsers$ = this.users$.pipe(map(userList => userList.length > 0));
}

Expand Down
5 changes: 1 addition & 4 deletions ui/src/app/admin/container/action-required.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { Component, ChangeDetectionStrategy } from '@angular/core';
import { Store } from '@ngrx/store';

import * as fromRoot from '../../app.reducer';
import { LoadNewUsersRequest } from '../action/user-collection.action';

@Component({
selector: 'action-required-page',
Expand All @@ -14,7 +13,5 @@ export class ActionRequiredPageComponent {

constructor(
private store: Store<fromRoot.State>
) {
this.store.dispatch(new LoadNewUsersRequest());
}
) {}
}
6 changes: 2 additions & 4 deletions ui/src/app/admin/container/admin-management.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Component, ChangeDetectionStrategy } from '@angular/core';
import { Store } from '@ngrx/store';

import * as fromRoot from '../../app.reducer';
import { LoadAdminRequest } from '../action/user-collection.action';
import { LoadAdminRequest } from '../action/admin-collection.action';

@Component({
selector: 'admin-management-page',
Expand All @@ -14,7 +14,5 @@ export class AdminManagementPageComponent {

constructor(
private store: Store<fromRoot.State>
) {
this.store.dispatch(new LoadAdminRequest());
}
) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ import {
UpdateAdminRequest,
UpdateAdminSuccess,
RemoveAdminRequest,
RemoveAdminSuccess,
LoadNewUsersRequest
} from '../action/user-collection.action';
RemoveAdminSuccess
} from '../action/admin-collection.action';
import { AdminService } from '../service/admin.service';
import { AddNotification } from '../../notification/action/notification.action';
import { Notification, NotificationType } from '../../notification/model/notification';
Expand All @@ -31,14 +30,6 @@ export class AdminCollectionEffects {
))
);

@Effect()
loadNewUsersRequest$ = this.actions$.pipe(
ofType<LoadNewUsersRequest>(AdminCollectionActionTypes.LOAD_NEW_USERS_REQUEST),
switchMap(() => this.adminService.queryByRole('ROLE_NONE').pipe(
map(users => new LoadAdminSuccess(users))
))
);

@Effect()
updateAdminRequest$ = this.actions$.pipe(
ofType<UpdateAdminRequest>(AdminCollectionActionTypes.UPDATE_ADMIN_REQUEST),
Expand Down
Loading

0 comments on commit 9fe2077

Please sign in to comment.