From c6641af888fbb486248505a9e630109c3b51ae28 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Fri, 15 Jun 2018 15:43:14 -0700 Subject: [PATCH] Fixing paths and names --- ui/src/app/app.component.ts | 6 - ui/src/app/app.module.ts | 19 +-- ui/src/app/app.routing.ts | 16 ++ .../contention/action/contention.action.ts | 2 - .../component/change-item.component.ts | 12 +- .../component/contention-dialog.component.ts | 8 +- ui/src/app/contention/contention.module.ts | 4 - .../contention/effect/contention.effect.ts | 3 - .../contention/reducer/contention.reducer.ts | 1 - .../metadata/domain/action/entity.action.ts | 2 +- .../forms/advanced-info-form.component.ts | 3 +- .../forms/assertion-form.component.ts | 4 +- .../forms/finish-form.component.scss | 2 +- .../component}/preview-dialog.component.html | 0 .../component/preview-dialog.component.ts | 25 +++ ui/src/app/metadata/domain/domain.module.ts | 27 ++-- ui/src/app/metadata/domain/domain.type.ts | 3 - ui/src/app/metadata/domain/domain.util.ts | 10 ++ .../domain/effect/entity.effect.spec.ts | 2 +- .../metadata/domain/effect/entity.effect.ts | 9 +- ....service.spec.ts => draft.service.spec.ts} | 11 +- ...tity-draft.service.ts => draft.service.ts} | 0 ...rvice.spec.ts => provider.service.spec.ts} | 23 ++- ...esolver.service.ts => provider.service.ts} | 3 +- ...rvice.spec.ts => resolver.service.spec.ts} | 30 ++-- ...criptor.service.ts => resolver.service.ts} | 3 +- .../filter/container/edit-filter.component.ts | 2 +- .../filter/effect/collection.effect.ts | 4 +- .../metadata/filter/effect/filter.effect.ts | 4 +- ui/src/app/metadata/filter/filter.module.ts | 11 +- .../filter/guard/filter-exists.guard.ts | 4 +- .../filter/reducer/collection.reducer.ts | 2 +- .../metadata/filter/reducer/filter.reducer.ts | 2 +- ui/src/app/metadata/filter/reducer/index.ts | 5 +- .../manager/action/manager.action.ts} | 0 .../manager}/action/search.action.ts | 0 .../component/delete-dialog.component.html | 0 .../component/delete-dialog.component.ts | 0 .../component/entity-item.component.html | 0 .../component/entity-item.component.scss | 0 .../component/entity-item.component.spec.ts | 0 .../component/entity-item.component.ts | 5 +- .../component/provider-search.component.html | 0 .../component/provider-search.component.ts | 0 .../manager/container/manager.component.html} | 0 .../manager/container/manager.component.scss} | 0 .../container/manager.component.spec.ts} | 20 +-- .../manager/container/manager.component.ts} | 40 +++-- .../manager}/effect/search.effects.ts | 28 +--- .../manager/manager.module.ts} | 10 +- .../manager}/reducer/index.ts | 16 +- .../manager/reducer/manager.reducer.spec.ts} | 6 +- .../manager/reducer/manager.reducer.ts} | 9 +- .../manager}/reducer/search.reducer.ts | 0 ...component.html => metadata.component.html} | 0 ui/src/app/metadata/metadata.component.ts | 24 +++ ui/src/app/metadata/metadata.module.ts | 23 +++ ui/src/app/metadata/metadata.reducer.ts | 11 -- .../resolver/action/collection.action.ts | 134 ++++++++-------- .../metadata/resolver/action/copy.action.ts | 46 +++--- ...ent.html => blank-resolver.component.html} | 6 +- ...ec.ts => blank-resolver.component.spec.ts} | 20 +-- ...mponent.ts => blank-resolver.component.ts} | 6 +- .../container/confirm-copy.component.html | 4 +- .../container/confirm-copy.component.ts | 17 +- .../container/copy-provider.component.spec.ts | 23 ++- ...nent.html => copy-resolver.component.html} | 6 +- .../container/copy-resolver.component.spec.ts | 77 +++++++++ ...omponent.ts => copy-resolver.component.ts} | 28 ++-- .../resolver/container/draft.component.ts | 14 +- .../resolver/container/editor.component.html | 22 +-- .../resolver/container/editor.component.ts | 46 +++--- .../container/new-provider.component.spec.ts | 66 -------- .../container/new-provider.component.ts | 11 -- ...onent.html => new-resolver.component.html} | 10 +- ...onent.scss => new-resolver.component.scss} | 2 +- .../container/new-resolver.component.spec.ts | 61 ++++++++ .../container/new-resolver.component.ts | 11 ++ .../resolver/container/provider.component.ts | 36 ----- .../container/resolver.component.html | 1 + ...component.scss => resolver.component.scss} | 0 ...ent.spec.ts => resolver.component.spec.ts} | 15 +- .../resolver/container/resolver.component.ts | 34 ++++ ...nt.html => upload-resolver.component.html} | 12 +- ...c.ts => upload-resolver.component.spec.ts} | 26 ++- ...ponent.ts => upload-resolver.component.ts} | 23 ++- .../resolver/container/wizard.component.html | 24 +-- .../resolver/container/wizard.component.ts | 32 ++-- .../resolver/editor-definition.const.ts | 20 +-- ...fect.spec.ts => collection.effect.spec.ts} | 18 +-- .../resolver/effect/collection.effects.ts | 148 ++++++++++++++++++ .../metadata/resolver/effect/copy.effect.ts | 27 ++-- .../effect/draft-collection.effect.spec.ts | 10 +- .../effect/draft-collection.effects.ts | 28 ++-- .../metadata/resolver/effect/editor.effect.ts | 31 ++-- .../effect/provider-collection.effects.ts | 148 ------------------ .../metadata/resolver/effect/search.effect.ts | 11 +- .../metadata/resolver/effect/wizard.effect.ts | 14 +- .../resolver/metadata-provider.module.ts | 102 ------------ .../reducer/collection.reducer.spec.ts | 16 +- .../resolver/reducer/collection.reducer.ts | 28 ++-- .../resolver/reducer/copy.reducer.spec.ts | 58 +++---- .../metadata/resolver/reducer/copy.reducer.ts | 18 +-- .../resolver/reducer/editor.reducer.spec.ts | 6 +- .../resolver/reducer/editor.reducer.ts | 10 +- ui/src/app/metadata/resolver/reducer/index.ts | 22 +-- .../resolver/reducer/search.reducer.spec.ts | 2 +- .../resolver/reducer/search.reducer.ts | 3 +- .../app/metadata/resolver/resolver.module.ts | 146 ++++++++++------- ui/src/app/routing.module.ts | 27 ---- .../preview/preview-dialog.component.ts | 30 ---- .../shared/preview/preview-dialog.module.ts | 19 --- 112 files changed, 1052 insertions(+), 1157 deletions(-) create mode 100644 ui/src/app/app.routing.ts rename ui/src/app/{shared/preview => metadata/domain/component}/preview-dialog.component.html (100%) create mode 100644 ui/src/app/metadata/domain/component/preview-dialog.component.ts create mode 100644 ui/src/app/metadata/domain/domain.util.ts rename ui/src/app/metadata/domain/service/{entity-draft.service.spec.ts => draft.service.spec.ts} (74%) rename ui/src/app/metadata/domain/service/{entity-draft.service.ts => draft.service.ts} (100%) rename ui/src/app/metadata/domain/service/{metadata-resolver.service.spec.ts => provider.service.spec.ts} (79%) rename ui/src/app/metadata/domain/service/{metadata-resolver.service.ts => provider.service.ts} (96%) rename ui/src/app/metadata/domain/service/{entity-descriptor.service.spec.ts => resolver.service.spec.ts} (68%) rename ui/src/app/metadata/domain/service/{entity-descriptor.service.ts => resolver.service.ts} (98%) rename ui/src/app/{dashboard/action/dashboard.action.ts => metadata/manager/action/manager.action.ts} (100%) rename ui/src/app/{dashboard => metadata/manager}/action/search.action.ts (100%) rename ui/src/app/{dashboard => metadata/manager}/component/delete-dialog.component.html (100%) rename ui/src/app/{dashboard => metadata/manager}/component/delete-dialog.component.ts (100%) rename ui/src/app/{dashboard => metadata/manager}/component/entity-item.component.html (100%) rename ui/src/app/{dashboard => metadata/manager}/component/entity-item.component.scss (100%) rename ui/src/app/{dashboard => metadata/manager}/component/entity-item.component.spec.ts (100%) rename ui/src/app/{dashboard => metadata/manager}/component/entity-item.component.ts (82%) rename ui/src/app/{dashboard => metadata/manager}/component/provider-search.component.html (100%) rename ui/src/app/{dashboard => metadata/manager}/component/provider-search.component.ts (100%) rename ui/src/app/{dashboard/container/dashboard.component.html => metadata/manager/container/manager.component.html} (100%) rename ui/src/app/{dashboard/container/dashboard.component.scss => metadata/manager/container/manager.component.scss} (100%) rename ui/src/app/{dashboard/container/dashboard.component.spec.ts => metadata/manager/container/manager.component.spec.ts} (89%) rename ui/src/app/{dashboard/container/dashboard.component.ts => metadata/manager/container/manager.component.ts} (71%) rename ui/src/app/{dashboard => metadata/manager}/effect/search.effects.ts (53%) rename ui/src/app/{dashboard/dashboard.module.ts => metadata/manager/manager.module.ts} (81%) rename ui/src/app/{dashboard => metadata/manager}/reducer/index.ts (74%) rename ui/src/app/{dashboard/reducer/dashboard.reducer.spec.ts => metadata/manager/reducer/manager.reducer.spec.ts} (82%) rename ui/src/app/{dashboard/reducer/dashboard.reducer.ts => metadata/manager/reducer/manager.reducer.ts} (60%) rename ui/src/app/{dashboard => metadata/manager}/reducer/search.reducer.ts (100%) rename ui/src/app/metadata/{resolver/container/provider.component.html => metadata.component.html} (100%) create mode 100644 ui/src/app/metadata/metadata.component.ts rename ui/src/app/metadata/resolver/container/{blank-provider.component.html => blank-resolver.component.html} (91%) rename ui/src/app/metadata/resolver/container/{blank-provider.component.spec.ts => blank-resolver.component.spec.ts} (60%) rename ui/src/app/metadata/resolver/container/{blank-provider.component.ts => blank-resolver.component.ts} (90%) rename ui/src/app/metadata/resolver/container/{copy-provider.component.html => copy-resolver.component.html} (97%) create mode 100644 ui/src/app/metadata/resolver/container/copy-resolver.component.spec.ts rename ui/src/app/metadata/resolver/container/{copy-provider.component.ts => copy-resolver.component.ts} (76%) delete mode 100644 ui/src/app/metadata/resolver/container/new-provider.component.spec.ts delete mode 100644 ui/src/app/metadata/resolver/container/new-provider.component.ts rename ui/src/app/metadata/resolver/container/{new-provider.component.html => new-resolver.component.html} (91%) rename ui/src/app/metadata/resolver/container/{new-provider.component.scss => new-resolver.component.scss} (57%) create mode 100644 ui/src/app/metadata/resolver/container/new-resolver.component.spec.ts create mode 100644 ui/src/app/metadata/resolver/container/new-resolver.component.ts delete mode 100644 ui/src/app/metadata/resolver/container/provider.component.ts create mode 100644 ui/src/app/metadata/resolver/container/resolver.component.html rename ui/src/app/metadata/resolver/container/{provider.component.scss => resolver.component.scss} (100%) rename ui/src/app/metadata/resolver/container/{provider.component.spec.ts => resolver.component.spec.ts} (76%) create mode 100644 ui/src/app/metadata/resolver/container/resolver.component.ts rename ui/src/app/metadata/resolver/container/{upload-provider.component.html => upload-resolver.component.html} (86%) rename ui/src/app/metadata/resolver/container/{upload-provider.component.spec.ts => upload-resolver.component.spec.ts} (84%) rename ui/src/app/metadata/resolver/container/{upload-provider.component.ts => upload-resolver.component.ts} (73%) rename ui/src/app/metadata/resolver/effect/{provider-collection.effect.spec.ts => collection.effect.spec.ts} (72%) create mode 100644 ui/src/app/metadata/resolver/effect/collection.effects.ts delete mode 100644 ui/src/app/metadata/resolver/effect/provider-collection.effects.ts delete mode 100644 ui/src/app/metadata/resolver/metadata-provider.module.ts delete mode 100644 ui/src/app/routing.module.ts delete mode 100644 ui/src/app/shared/preview/preview-dialog.component.ts delete mode 100644 ui/src/app/shared/preview/preview-dialog.module.ts diff --git a/ui/src/app/app.component.ts b/ui/src/app/app.component.ts index 6a2702749..f3e44f399 100644 --- a/ui/src/app/app.component.ts +++ b/ui/src/app/app.component.ts @@ -6,10 +6,7 @@ import { Store } from '@ngrx/store'; import * as fromRoot from './core/reducer'; import { VersionInfo } from './core/model/version'; -import { LoadProviderRequest } from './domain/action/provider-collection.action'; -import { LoadDraftRequest } from './domain/action/draft-collection.action'; import { VersionInfoLoadRequestAction } from './core/action/version.action'; -import { LoadFilterRequest } from './domain/action/filter-collection.action'; @Component({ selector: 'app-root', templateUrl: './app.component.html', @@ -30,9 +27,6 @@ export class AppComponent implements OnInit { } ngOnInit(): void { - this.store.dispatch(new LoadProviderRequest()); - this.store.dispatch(new LoadFilterRequest()); - this.store.dispatch(new LoadDraftRequest()); this.store.dispatch(new VersionInfoLoadRequestAction()); } } diff --git a/ui/src/app/app.module.ts b/ui/src/app/app.module.ts index 15c94ea59..9f067e5f5 100644 --- a/ui/src/app/app.module.ts +++ b/ui/src/app/app.module.ts @@ -7,23 +7,17 @@ import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; import { NgbDropdownModule, NgbModalModule, NgbPopoverModule, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap'; -import { AppRoutingModule } from './routing.module'; +import { AppRoutingModule } from './app.routing'; import { AppComponent } from './app.component'; import { CoreModule } from './core/core.module'; -import { DomainModule } from './domain/domain.module'; -import { MetadataProviderModule } from './metadata-provider/metadata-provider.module'; import { reducers, metaReducers } from './app.reducer'; import { CustomRouterStateSerializer } from './shared/util'; - -import { CachingInterceptor } from './core/service/cache.interceptor'; import { AuthorizedInterceptor } from './core/service/authorized.interceptor'; import { NotificationModule } from './notification/notification.module'; import { ErrorInterceptor } from './core/service/error.interceptor'; import { NavigatorService } from './core/service/navigator.service'; - -import { environment } from '../environments/environment'; import { ContentionModule } from './contention/contention.module'; @NgModule({ @@ -38,25 +32,18 @@ import { ContentionModule } from './contention/contention.module'; BrowserModule, AppRoutingModule, CoreModule.forRoot(), - MetadataProviderModule.forRoot(), - DomainModule.forRoot(), StoreRouterConnectingModule, NgbDropdownModule.forRoot(), NgbModalModule.forRoot(), NgbPopoverModule.forRoot(), NgbPaginationModule.forRoot(), NotificationModule, - ContentionModule, - HttpClientModule + HttpClientModule, + ContentionModule ], providers: [ NavigatorService, { provide: RouterStateSerializer, useClass: CustomRouterStateSerializer }, - /*{ - provide: HTTP_INTERCEPTORS, - useClass: CachingInterceptor, - multi: true - },*/ { provide: HTTP_INTERCEPTORS, useClass: AuthorizedInterceptor, diff --git a/ui/src/app/app.routing.ts b/ui/src/app/app.routing.ts new file mode 100644 index 000000000..d3a6ba525 --- /dev/null +++ b/ui/src/app/app.routing.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = [ + { path: '', redirectTo: '/metadata/manager', pathMatch: 'full' }, + { + path: 'metadata', + loadChildren: './metadata/metadata.module#MetadataModule' + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/ui/src/app/contention/action/contention.action.ts b/ui/src/app/contention/action/contention.action.ts index bcf216008..0976c9c2d 100644 --- a/ui/src/app/contention/action/contention.action.ts +++ b/ui/src/app/contention/action/contention.action.ts @@ -1,7 +1,5 @@ import { Action } from '@ngrx/store'; import { Contention, ContentionResolution } from '../model/contention'; -import { MetadataEntity } from '../../domain/domain.type'; - export enum ContentionActionTypes { SHOW_CONTENTION = '[Contention] Show Contention', diff --git a/ui/src/app/contention/component/change-item.component.ts b/ui/src/app/contention/component/change-item.component.ts index c2cf99a7f..31e565286 100644 --- a/ui/src/app/contention/component/change-item.component.ts +++ b/ui/src/app/contention/component/change-item.component.ts @@ -1,15 +1,5 @@ -import { Component, OnInit, Input, OnChanges } from '@angular/core'; -import { FormGroup, Validators, FormBuilder } from '@angular/forms'; -import { Observable, of } from 'rxjs'; -import { map, withLatestFrom } from 'rxjs/operators'; -import { Router } from '@angular/router'; -import { Store } from '@ngrx/store'; -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; - -import * as fromContention from '../reducer'; -import { ResolveContentionAction } from '../action/contention.action'; +import { Component, Input, OnChanges } from '@angular/core'; import { ChangeItem } from '../model/contention'; -import { DifferentialService } from '../../core/service/differential.service'; export enum ValueTypes { array = 'array', diff --git a/ui/src/app/contention/component/contention-dialog.component.ts b/ui/src/app/contention/component/contention-dialog.component.ts index f9108d64c..1f3070081 100644 --- a/ui/src/app/contention/component/contention-dialog.component.ts +++ b/ui/src/app/contention/component/contention-dialog.component.ts @@ -1,13 +1,9 @@ -import { Component, OnInit, Input, OnChanges } from '@angular/core'; -import { FormGroup, Validators, FormBuilder } from '@angular/forms'; -import { Observable, of } from 'rxjs'; -import { map, withLatestFrom } from 'rxjs/operators'; -import { Router } from '@angular/router'; +import { Component } from '@angular/core'; +import { Observable } from 'rxjs'; import { Store } from '@ngrx/store'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import * as fromContention from '../reducer'; -import { ResolveContentionAction } from '../action/contention.action'; import { Contention, ChangeItem } from '../model/contention'; @Component({ diff --git a/ui/src/app/contention/contention.module.ts b/ui/src/app/contention/contention.module.ts index 670c8eac8..078adbb6a 100644 --- a/ui/src/app/contention/contention.module.ts +++ b/ui/src/app/contention/contention.module.ts @@ -1,15 +1,12 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; import { StoreModule } from '@ngrx/store'; import { EffectsModule } from '@ngrx/effects'; -import { HttpClientModule } from '@angular/common/http'; import { reducers } from './reducer'; import { ContentionEffects } from './effect/contention.effect'; import { ContentionDialogComponent } from './component/contention-dialog.component'; import { ChangeItemComponent } from './component/change-item.component'; -import { DomainModule } from '../domain/domain.module'; import { ContentionService } from './service/contention.service'; export const COMPONENTS = [ @@ -20,7 +17,6 @@ export const COMPONENTS = [ @NgModule({ imports: [ CommonModule, - DomainModule, StoreModule.forFeature('contention', reducers), EffectsModule.forFeature([ContentionEffects]) ], diff --git a/ui/src/app/contention/effect/contention.effect.ts b/ui/src/app/contention/effect/contention.effect.ts index b034bb8d3..aa89ffbd1 100644 --- a/ui/src/app/contention/effect/contention.effect.ts +++ b/ui/src/app/contention/effect/contention.effect.ts @@ -1,7 +1,5 @@ import { Injectable } from '@angular/core'; import { Effect, Actions, ofType } from '@ngrx/effects'; -import { Location } from '@angular/common'; - import { of } from 'rxjs'; import { map, tap, catchError, switchMap } from 'rxjs/operators'; @@ -9,7 +7,6 @@ import { ShowContentionAction, ResolveContentionAction, ContentionActionTypes, - ContentionActionUnion, CancelContentionAction } from '../action/contention.action'; import { ModalService, DEFAULT_MODAL_OPTIONS } from '../../core/service/modal.service'; diff --git a/ui/src/app/contention/reducer/contention.reducer.ts b/ui/src/app/contention/reducer/contention.reducer.ts index 2b940a976..d5432a93d 100644 --- a/ui/src/app/contention/reducer/contention.reducer.ts +++ b/ui/src/app/contention/reducer/contention.reducer.ts @@ -1,6 +1,5 @@ import { ContentionActionTypes, ContentionActionUnion } from '../action/contention.action'; import { Contention } from '../model/contention'; -import { MetadataEntity } from '../../domain/domain.type'; export interface State { contention: Contention; diff --git a/ui/src/app/metadata/domain/action/entity.action.ts b/ui/src/app/metadata/domain/action/entity.action.ts index 61f3ad3e5..4bfe1380c 100644 --- a/ui/src/app/metadata/domain/action/entity.action.ts +++ b/ui/src/app/metadata/domain/action/entity.action.ts @@ -1,5 +1,5 @@ import { Action } from '@ngrx/store'; -import { MetadataEntity } from '../../domain/domain.type'; +import { MetadataEntity } from '../../domain/model'; export const PREVIEW_ENTITY = '[Domain] Preview Entity'; diff --git a/ui/src/app/metadata/domain/component/forms/advanced-info-form.component.ts b/ui/src/app/metadata/domain/component/forms/advanced-info-form.component.ts index 8e601508d..5b756ef42 100644 --- a/ui/src/app/metadata/domain/component/forms/advanced-info-form.component.ts +++ b/ui/src/app/metadata/domain/component/forms/advanced-info-form.component.ts @@ -5,7 +5,6 @@ import { takeUntil, combineLatest, switchMap, map, startWith } from 'rxjs/operat import { Store } from '@ngrx/store'; -import * as fromCollection from '../../../domain/reducer'; import { ProviderStatusEmitter, ProviderValueEmitter } from '../../../domain/service/provider-change-emitter.service'; import { MetadataResolver, Contact } from '../../../domain/model'; import { ProviderFormFragmentComponent } from './provider-form-fragment.component'; @@ -43,6 +42,7 @@ export class AdvancedInfoFormComponent extends ProviderFormFragmentComponent imp ) { super(fb, statusEmitter, valueEmitter); + /* this.ids$ = this.store .select(fromCollection.getAllEntityIds) .pipe( @@ -51,6 +51,7 @@ export class AdvancedInfoFormComponent extends ProviderFormFragmentComponent imp return ids.filter(id => provider.entityId !== id); }) ); + */ } createForm(): void { diff --git a/ui/src/app/metadata/domain/component/forms/assertion-form.component.ts b/ui/src/app/metadata/domain/component/forms/assertion-form.component.ts index ec031922f..a3ce408b8 100644 --- a/ui/src/app/metadata/domain/component/forms/assertion-form.component.ts +++ b/ui/src/app/metadata/domain/component/forms/assertion-form.component.ts @@ -1,5 +1,5 @@ -import { Component, Output, Input, EventEmitter, OnInit, OnChanges, OnDestroy, ChangeDetectionStrategy } from '@angular/core'; -import { FormBuilder, FormGroup, FormControl, FormArray, AbstractControl, Validators } from '@angular/forms'; +import { Component, Input, OnInit, OnChanges, OnDestroy, ChangeDetectionStrategy } from '@angular/core'; +import { FormBuilder, FormGroup, FormArray, AbstractControl } from '@angular/forms'; import { ProviderFormFragmentComponent } from './provider-form-fragment.component'; diff --git a/ui/src/app/metadata/domain/component/forms/finish-form.component.scss b/ui/src/app/metadata/domain/component/forms/finish-form.component.scss index 0f9488141..71ade4d37 100644 --- a/ui/src/app/metadata/domain/component/forms/finish-form.component.scss +++ b/ui/src/app/metadata/domain/component/forms/finish-form.component.scss @@ -1,4 +1,4 @@ -@import '../../../../theme/_palette'; +@import '../../../../../theme/_palette'; .value:empty { &::after { diff --git a/ui/src/app/shared/preview/preview-dialog.component.html b/ui/src/app/metadata/domain/component/preview-dialog.component.html similarity index 100% rename from ui/src/app/shared/preview/preview-dialog.component.html rename to ui/src/app/metadata/domain/component/preview-dialog.component.html diff --git a/ui/src/app/metadata/domain/component/preview-dialog.component.ts b/ui/src/app/metadata/domain/component/preview-dialog.component.ts new file mode 100644 index 000000000..824d5be90 --- /dev/null +++ b/ui/src/app/metadata/domain/component/preview-dialog.component.ts @@ -0,0 +1,25 @@ +import { Component, Input } from '@angular/core'; +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; +import * as FileSaver from 'file-saver'; +import { Subscription } from 'rxjs/Subscription'; +import { MetadataEntity } from '../../domain/model'; + +@Component({ + selector: 'preview-dialog', + templateUrl: './preview-dialog.component.html' +}) +export class PreviewDialogComponent { + @Input() entity: MetadataEntity; + @Input() xml: string; + + sub: Subscription; + + constructor( + public activeModal: NgbActiveModal + ) {} + + preview(xml): void { + const blob = new Blob([xml], { type: 'text/xml;charset=utf-8' }); + FileSaver.saveAs(blob, `${ this.entity.name }.xml`); + } +} /* istanbul ignore next */ diff --git a/ui/src/app/metadata/domain/domain.module.ts b/ui/src/app/metadata/domain/domain.module.ts index ac77546db..4666381c4 100644 --- a/ui/src/app/metadata/domain/domain.module.ts +++ b/ui/src/app/metadata/domain/domain.module.ts @@ -1,29 +1,25 @@ import { NgModule, ModuleWithProviders } from '@angular/core'; import { HttpModule } from '@angular/http'; -import { StoreModule } from '@ngrx/store'; import { EffectsModule } from '@ngrx/effects'; import { CommonModule } from '@angular/common'; -import { EntityDescriptorService } from './service/entity-descriptor.service'; +import { ResolverService } from './service/resolver.service'; import { ListValuesService } from './service/list-values.service'; import { ProviderStatusEmitter, ProviderValueEmitter } from './service/provider-change-emitter.service'; import { EntityIdService } from './service/entity-id.service'; -import { EntityDraftService } from './service/entity-draft.service'; +import { EntityDraftService } from './service/draft.service'; -import { reducers } from './reducer'; -import { DraftCollectionEffects } from './effect/draft-collection.effects'; -import { ProviderCollectionEffects } from './effect/provider-collection.effects'; -import { FilterCollectionEffects } from './effect/filter-collection.effect'; -import { MetadataResolverService } from './service/metadata-resolver.service'; +import { MetadataProviderService } from './service/provider.service'; import { EntityEffects } from './effect/entity.effect'; -import { PreviewDialogModule } from '../shared/preview/preview-dialog.module'; import { I18nTextComponent } from './component/i18n-text.component'; +import { PreviewDialogComponent } from './component/preview-dialog.component'; export const COMPONENTS = []; export const DECLARATIONS = [ ...COMPONENTS, - I18nTextComponent + I18nTextComponent, + PreviewDialogComponent ]; @NgModule({ @@ -31,8 +27,7 @@ export const DECLARATIONS = [ entryComponents: COMPONENTS, imports: [ HttpModule, - CommonModule, - PreviewDialogModule + CommonModule ], exports: DECLARATIONS, providers: [] @@ -42,13 +37,13 @@ export class DomainModule { return { ngModule: RootDomainModule, providers: [ - EntityDescriptorService, + ResolverService, EntityIdService, EntityDraftService, ListValuesService, ProviderStatusEmitter, ProviderValueEmitter, - MetadataResolverService + MetadataProviderService ] }; } @@ -57,11 +52,7 @@ export class DomainModule { @NgModule({ imports: [ DomainModule, - StoreModule.forFeature('collections', reducers), EffectsModule.forFeature([ - FilterCollectionEffects, - DraftCollectionEffects, - ProviderCollectionEffects, EntityEffects ]) ], diff --git a/ui/src/app/metadata/domain/domain.type.ts b/ui/src/app/metadata/domain/domain.type.ts index 6391a9be0..78def16d7 100644 --- a/ui/src/app/metadata/domain/domain.type.ts +++ b/ui/src/app/metadata/domain/domain.type.ts @@ -34,6 +34,3 @@ export enum MetadataTypes { PROVIDER = '[Type] Metadata Provider', RESOLVER = '[Type] Metadata Resolver' } - -export * from './model'; -export * from './entity'; diff --git a/ui/src/app/metadata/domain/domain.util.ts b/ui/src/app/metadata/domain/domain.util.ts new file mode 100644 index 000000000..599ce04b7 --- /dev/null +++ b/ui/src/app/metadata/domain/domain.util.ts @@ -0,0 +1,10 @@ +/* + * Utility functions +*/ + +export const combineAllFn = (d, p) => [...p, ...d]; +export const doesExistFn = (ids, selected) => ids.indexOf(selected) > -1; +export const getInCollectionFn = (entities, selectedId) => { + return selectedId && entities[selectedId]; +}; +export const getEntityIdsFn = list => list.map(entity => entity.entityId); diff --git a/ui/src/app/metadata/domain/effect/entity.effect.spec.ts b/ui/src/app/metadata/domain/effect/entity.effect.spec.ts index 9c259e826..141abe812 100644 --- a/ui/src/app/metadata/domain/effect/entity.effect.spec.ts +++ b/ui/src/app/metadata/domain/effect/entity.effect.spec.ts @@ -8,7 +8,7 @@ import { EntityIdService } from '../service/entity-id.service'; import { EntityDescriptorService } from '../service/entity-descriptor.service'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModalStub } from '../../../../testing/modal.stub'; -import { EntityAttributesFilter } from '../entity/filter/entity-attributes-filter'; +import { EntityAttributesFilter } from '../entity'; describe('Entity Effects', () => { let effects: EntityEffects; diff --git a/ui/src/app/metadata/domain/effect/entity.effect.ts b/ui/src/app/metadata/domain/effect/entity.effect.ts index ff3e6394f..4901b3828 100644 --- a/ui/src/app/metadata/domain/effect/entity.effect.ts +++ b/ui/src/app/metadata/domain/effect/entity.effect.ts @@ -5,9 +5,10 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { Observable } from 'rxjs'; import { map, tap } from 'rxjs/operators'; -import { EntityDescriptorService } from '../service/entity-descriptor.service'; -import { PreviewDialogComponent } from '../../../shared/preview/preview-dialog.component'; -import { MetadataEntity, MetadataTypes } from '../domain.type'; +import { ResolverService } from '../service/resolver.service'; +import { PreviewDialogComponent } from '../component/preview-dialog.component'; +import { MetadataEntity } from '../model'; +import { MetadataTypes } from '../domain.type'; import { EntityIdService } from '../service/entity-id.service'; import * as entityActions from '../action/entity.action'; @@ -25,7 +26,7 @@ export class EntityEffects { constructor( private actions$: Actions, private modalService: NgbModal, - private providerService: EntityDescriptorService, + private providerService: ResolverService, private entityService: EntityIdService ) { } diff --git a/ui/src/app/metadata/domain/service/entity-draft.service.spec.ts b/ui/src/app/metadata/domain/service/draft.service.spec.ts similarity index 74% rename from ui/src/app/metadata/domain/service/entity-draft.service.spec.ts rename to ui/src/app/metadata/domain/service/draft.service.spec.ts index dbe8a1109..bc88dc941 100644 --- a/ui/src/app/metadata/domain/service/entity-draft.service.spec.ts +++ b/ui/src/app/metadata/domain/service/draft.service.spec.ts @@ -1,9 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientModule, HttpRequest, HttpParams } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { EntityDraftService } from './entity-draft.service'; -import { Resolver } from '../entity/provider'; - +import { EntityDraftService } from './draft.service'; +import { FileBackedHttpMetadataResolver } from '../entity'; describe(`EntityDraftService`, () => { let service: EntityDraftService; @@ -20,7 +17,7 @@ describe(`EntityDraftService`, () => { describe('query', () => { it(`should return an observable of the list from the store`, (done: DoneFn) => { - let list = [new Resolver()]; + let list = [new FileBackedHttpMetadataResolver()]; spyOn(service.storage, 'query').and.returnValue(list); service.query().subscribe(l => { expect(l).toEqual(list); @@ -31,7 +28,7 @@ describe(`EntityDraftService`, () => { describe('find', () => { it(`should return an observable of the list from the store`, (done: DoneFn) => { let id = 'foo'; - let e = new Resolver({ entityId: id }); + let e = new FileBackedHttpMetadataResolver({ entityId: id }); let list = [e]; spyOn(service.storage, 'query').and.returnValue(list); service.find(id).subscribe(entity => { diff --git a/ui/src/app/metadata/domain/service/entity-draft.service.ts b/ui/src/app/metadata/domain/service/draft.service.ts similarity index 100% rename from ui/src/app/metadata/domain/service/entity-draft.service.ts rename to ui/src/app/metadata/domain/service/draft.service.ts diff --git a/ui/src/app/metadata/domain/service/metadata-resolver.service.spec.ts b/ui/src/app/metadata/domain/service/provider.service.spec.ts similarity index 79% rename from ui/src/app/metadata/domain/service/metadata-resolver.service.spec.ts rename to ui/src/app/metadata/domain/service/provider.service.spec.ts index 95c9840d5..1efcc4b29 100644 --- a/ui/src/app/metadata/domain/service/metadata-resolver.service.spec.ts +++ b/ui/src/app/metadata/domain/service/provider.service.spec.ts @@ -1,9 +1,8 @@ import { TestBed, async, inject } from '@angular/core/testing'; import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing'; import { HttpClientModule, HttpRequest } from '@angular/common/http'; -import { MetadataResolverService } from './metadata-resolver.service'; -import { EntityAttributesFilter } from '../entity/entity-attributes.filter'; - +import { MetadataProviderService } from './provider.service'; +import { EntityAttributesFilter } from '../entity'; describe(`Metadata Resolver Service`, () => { @@ -14,14 +13,14 @@ describe(`Metadata Resolver Service`, () => { HttpClientTestingModule ], providers: [ - MetadataResolverService + MetadataProviderService ] }); }); describe('query method', () => { - it(`should send an expected GET[] request`, async(inject([MetadataResolverService, HttpTestingController], - (service: MetadataResolverService, backend: HttpTestingController) => { + it(`should send an expected GET[] request`, async(inject([MetadataProviderService, HttpTestingController], + (service: MetadataProviderService, backend: HttpTestingController) => { service.query().subscribe(); backend.expectOne((req: HttpRequest) => { @@ -32,8 +31,8 @@ describe(`Metadata Resolver Service`, () => { ))); }); describe('find method', () => { - it(`should send an expected GET request`, async(inject([MetadataResolverService, HttpTestingController], - (service: MetadataResolverService, backend: HttpTestingController) => { + it(`should send an expected GET request`, async(inject([MetadataProviderService, HttpTestingController], + (service: MetadataProviderService, backend: HttpTestingController) => { const id = 'foo'; service.find(id).subscribe(); @@ -45,8 +44,8 @@ describe(`Metadata Resolver Service`, () => { ))); }); describe('update method', () => { - it(`should send an expected PUT request`, async(inject([MetadataResolverService, HttpTestingController], - (service: MetadataResolverService, backend: HttpTestingController) => { + it(`should send an expected PUT request`, async(inject([MetadataProviderService, HttpTestingController], + (service: MetadataProviderService, backend: HttpTestingController) => { const id = 'foo'; const filter = new EntityAttributesFilter({id}); service.update(filter).subscribe(); @@ -59,8 +58,8 @@ describe(`Metadata Resolver Service`, () => { ))); }); describe('save method', () => { - it(`should send an expected POST request`, async(inject([MetadataResolverService, HttpTestingController], - (service: MetadataResolverService, backend: HttpTestingController) => { + it(`should send an expected POST request`, async(inject([MetadataProviderService, HttpTestingController], + (service: MetadataProviderService, backend: HttpTestingController) => { const id = 'foo'; const filter = new EntityAttributesFilter({ id }); service.save(filter).subscribe(); diff --git a/ui/src/app/metadata/domain/service/metadata-resolver.service.ts b/ui/src/app/metadata/domain/service/provider.service.ts similarity index 96% rename from ui/src/app/metadata/domain/service/metadata-resolver.service.ts rename to ui/src/app/metadata/domain/service/provider.service.ts index db62a0a9d..2713dd498 100644 --- a/ui/src/app/metadata/domain/service/metadata-resolver.service.ts +++ b/ui/src/app/metadata/domain/service/provider.service.ts @@ -1,4 +1,3 @@ - import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; @@ -6,7 +5,7 @@ import { Observable } from 'rxjs'; import { MetadataFilter } from '../../domain/model/metadata-filter'; @Injectable() -export class MetadataResolverService { +export class MetadataProviderService { readonly endpoint = '/MetadataResolver/incommon/Filters'; readonly base = '/api'; diff --git a/ui/src/app/metadata/domain/service/entity-descriptor.service.spec.ts b/ui/src/app/metadata/domain/service/resolver.service.spec.ts similarity index 68% rename from ui/src/app/metadata/domain/service/entity-descriptor.service.spec.ts rename to ui/src/app/metadata/domain/service/resolver.service.spec.ts index 299733fb6..f42c6d705 100644 --- a/ui/src/app/metadata/domain/service/entity-descriptor.service.spec.ts +++ b/ui/src/app/metadata/domain/service/resolver.service.spec.ts @@ -1,7 +1,7 @@ import { TestBed, async, inject } from '@angular/core/testing'; -import { HttpClientModule, HttpRequest, HttpParams } from '@angular/common/http'; +import { HttpClientModule, HttpRequest } from '@angular/common/http'; import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { EntityDescriptorService } from './entity-descriptor.service'; +import { ResolverService } from './resolver.service'; describe(`EntityDescriptorService`, () => { @@ -13,7 +13,7 @@ describe(`EntityDescriptorService`, () => { HttpClientTestingModule ], providers: [ - EntityDescriptorService + ResolverService ] }); }); @@ -23,8 +23,8 @@ describe(`EntityDescriptorService`, () => { })); describe('query', () => { - it(`should send an expected query request`, async(inject([EntityDescriptorService, HttpTestingController], - (service: EntityDescriptorService, backend: HttpTestingController) => { + it(`should send an expected query request`, async(inject([ResolverService, HttpTestingController], + (service: ResolverService, backend: HttpTestingController) => { service.query().subscribe(); backend.expectOne((req: HttpRequest) => { @@ -34,8 +34,8 @@ describe(`EntityDescriptorService`, () => { } ))); - xit(`should emit an empty array if an error is thrown`, async(inject([EntityDescriptorService, HttpTestingController], - (service: EntityDescriptorService, backend: HttpTestingController) => { + xit(`should emit an empty array if an error is thrown`, async(inject([ResolverService, HttpTestingController], + (service: ResolverService, backend: HttpTestingController) => { service.query().subscribe((next) => { expect(next).toEqual([]); }); @@ -44,8 +44,8 @@ describe(`EntityDescriptorService`, () => { } ))); - it(`should emit 'true' for 200 Ok`, async(inject([EntityDescriptorService, HttpTestingController], - (service: EntityDescriptorService, backend: HttpTestingController) => { + it(`should emit 'true' for 200 Ok`, async(inject([ResolverService, HttpTestingController], + (service: ResolverService, backend: HttpTestingController) => { service.query().subscribe((next) => { expect(next).toBeTruthy(); }); @@ -58,8 +58,8 @@ describe(`EntityDescriptorService`, () => { describe('find', () => { let id = 'foo'; - it(`should send an expected GET request`, async(inject([EntityDescriptorService, HttpTestingController], - (service: EntityDescriptorService, backend: HttpTestingController) => { + it(`should send an expected GET request`, async(inject([ResolverService, HttpTestingController], + (service: ResolverService, backend: HttpTestingController) => { service.find(id).subscribe(); backend.expectOne((req: HttpRequest) => { @@ -69,8 +69,8 @@ describe(`EntityDescriptorService`, () => { } ))); - xit(`should emit an error is thrown`, async(inject([EntityDescriptorService, HttpTestingController], - (service: EntityDescriptorService, backend: HttpTestingController) => { + xit(`should emit an error is thrown`, async(inject([ResolverService, HttpTestingController], + (service: ResolverService, backend: HttpTestingController) => { service.find(id).subscribe((next) => { expect(next).toBeFalsy(); }); @@ -79,8 +79,8 @@ describe(`EntityDescriptorService`, () => { } ))); - xit(`should emit 'true' for 200 Ok`, async(inject([EntityDescriptorService, HttpTestingController], - (service: EntityDescriptorService, backend: HttpTestingController) => { + xit(`should emit 'true' for 200 Ok`, async(inject([ResolverService, HttpTestingController], + (service: ResolverService, backend: HttpTestingController) => { service.find(id).subscribe((next) => { expect(next).toBeTruthy(); }); diff --git a/ui/src/app/metadata/domain/service/entity-descriptor.service.ts b/ui/src/app/metadata/domain/service/resolver.service.ts similarity index 98% rename from ui/src/app/metadata/domain/service/entity-descriptor.service.ts rename to ui/src/app/metadata/domain/service/resolver.service.ts index 5cb853a60..c3486de76 100644 --- a/ui/src/app/metadata/domain/service/entity-descriptor.service.ts +++ b/ui/src/app/metadata/domain/service/resolver.service.ts @@ -4,9 +4,8 @@ import { Observable, throwError } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { MetadataResolver } from '../model'; - @Injectable() -export class EntityDescriptorService { +export class ResolverService { private endpoint = '/EntityDescriptor'; private base = '/api'; 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 9ab55c3b7..41d10a3e9 100644 --- a/ui/src/app/metadata/filter/container/edit-filter.component.ts +++ b/ui/src/app/metadata/filter/container/edit-filter.component.ts @@ -16,7 +16,7 @@ import { QueryEntityIds, ViewMoreIds, ClearSearch } from '../action/search.actio import { AutoCompleteComponent } from '../../../shared/autocomplete/autocomplete.component'; import { MDUI } from '../../domain/model'; import { PreviewEntity } from '../../domain/action/entity.action'; -import { MetadataEntity } from '../../domain/domain.type'; +import { MetadataEntity } from '../../domain/model'; import { EntityAttributesFilter } from '../../domain/entity/filter/entity-attributes-filter'; @Component({ diff --git a/ui/src/app/metadata/filter/effect/collection.effect.ts b/ui/src/app/metadata/filter/effect/collection.effect.ts index 8874aee39..da2a08a84 100644 --- a/ui/src/app/metadata/filter/effect/collection.effect.ts +++ b/ui/src/app/metadata/filter/effect/collection.effect.ts @@ -10,7 +10,7 @@ import * as actions from '../action/collection.action'; import { FilterCollectionActionTypes } from '../action/collection.action'; import * as fromFilter from '../reducer'; -import { MetadataResolverService } from '../../domain/service/metadata-resolver.service'; +import { MetadataProviderService } from '../../domain/service/provider.service'; import { MetadataFilter } from '../../domain/model'; import { removeNulls } from '../../../shared/util'; import { EntityAttributesFilter } from '../../domain/entity/filter/entity-attributes-filter'; @@ -113,7 +113,7 @@ export class FilterCollectionEffects { constructor( private actions$: Actions, private router: Router, - private resolverService: MetadataResolverService, + private resolverService: MetadataProviderService, private store: Store ) { } } diff --git a/ui/src/app/metadata/filter/effect/filter.effect.ts b/ui/src/app/metadata/filter/effect/filter.effect.ts index d137129e7..87b5a7f1c 100644 --- a/ui/src/app/metadata/filter/effect/filter.effect.ts +++ b/ui/src/app/metadata/filter/effect/filter.effect.ts @@ -23,7 +23,7 @@ import { CancelCreateFilter } from '../action/filter.action'; import { EntityIdService } from '../../domain/service/entity-id.service'; -import { MetadataResolverService } from '../../domain/service/metadata-resolver.service'; +import { MetadataProviderService } from '../../domain/service/provider.service'; import { ShowContentionAction } from '../../../contention/action/contention.action'; import { MetadataFilter } from '../../domain/model'; import { ContentionService } from '../../../contention/service/contention.service'; @@ -76,7 +76,7 @@ export class FilterEffects { private actions$: Actions, private router: Router, private idService: EntityIdService, - private resolverService: MetadataResolverService, + private resolverService: MetadataProviderService, private contentionService: ContentionService ) { } } diff --git a/ui/src/app/metadata/filter/filter.module.ts b/ui/src/app/metadata/filter/filter.module.ts index 61bf73a8a..a7afa9a4a 100644 --- a/ui/src/app/metadata/filter/filter.module.ts +++ b/ui/src/app/metadata/filter/filter.module.ts @@ -8,17 +8,16 @@ import { EffectsModule } from '@ngrx/effects'; import { NewFilterComponent } from './container/new-filter.component'; import { reducers } from './reducer'; -import { ProviderFormFragmentComponent } from '../metadata-provider/component/forms/provider-form-fragment.component'; -import { ProviderEditorFormModule } from '../metadata-provider/component'; +import { ProviderEditorFormModule } from '../domain/component'; import { FilterEffects } from './effect/filter.effect'; import { NgbPopoverModule, NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; import { SearchDialogComponent } from './component/search-dialog.component'; -import { SharedModule } from '../shared/shared.module'; +import { SharedModule } from '../../shared/shared.module'; import { EditFilterComponent } from './container/edit-filter.component'; import { FilterComponent } from './container/filter.component'; import { SearchIdEffects } from './effect/search.effect'; -import { FilterExistsGuard } from '../domain/guard/filter-exists.guard'; -import { PreviewDialogModule } from '../shared/preview/preview-dialog.module'; +import { FilterExistsGuard } from './guard/filter-exists.guard'; +import { DomainModule } from '../domain/domain.module'; export const routes: Routes = [ @@ -61,7 +60,7 @@ export const routes: Routes = [ NgbPopoverModule, NgbModalModule, SharedModule, - PreviewDialogModule, + DomainModule, HttpClientModule ], providers: [ diff --git a/ui/src/app/metadata/filter/guard/filter-exists.guard.ts b/ui/src/app/metadata/filter/guard/filter-exists.guard.ts index dec524432..048e5ae9f 100644 --- a/ui/src/app/metadata/filter/guard/filter-exists.guard.ts +++ b/ui/src/app/metadata/filter/guard/filter-exists.guard.ts @@ -5,7 +5,7 @@ import { Observable, of } from 'rxjs'; import { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators'; import * as fromCollection from '../reducer'; -import { MetadataResolverService } from '../../domain/service/metadata-resolver.service'; +import { MetadataProviderService } from '../../domain/service/provider.service'; /** * Guards are hooks into the route resolution process, providing an opportunity @@ -16,7 +16,7 @@ import { MetadataResolverService } from '../../domain/service/metadata-resolver. export class FilterExistsGuard implements CanActivate { constructor( private store: Store, - private mdResolverService: MetadataResolverService, + private mdResolverService: MetadataProviderService, private router: Router ) { } diff --git a/ui/src/app/metadata/filter/reducer/collection.reducer.ts b/ui/src/app/metadata/filter/reducer/collection.reducer.ts index 158bc0c7b..2eeff6ff1 100644 --- a/ui/src/app/metadata/filter/reducer/collection.reducer.ts +++ b/ui/src/app/metadata/filter/reducer/collection.reducer.ts @@ -1,6 +1,6 @@ import { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity'; import { FilterCollectionActionTypes, FilterCollectionActionsUnion } from '../action/collection.action'; -import { MetadataFilter } from '../../domain/domain.type'; +import { MetadataFilter } from '../../domain/model'; export interface CollectionState extends EntityState { selectedFilterId: string | null; diff --git a/ui/src/app/metadata/filter/reducer/filter.reducer.ts b/ui/src/app/metadata/filter/reducer/filter.reducer.ts index d10cba1fb..3bce96ae3 100644 --- a/ui/src/app/metadata/filter/reducer/filter.reducer.ts +++ b/ui/src/app/metadata/filter/reducer/filter.reducer.ts @@ -7,7 +7,7 @@ import { SearchActionsUnion } from '../action/search.action'; import { FilterCollectionActionTypes, FilterCollectionActionsUnion } from '../action/collection.action'; -import { MetadataFilter, MDUI } from '../../domain/domain.type'; +import { MetadataFilter, MDUI } from '../../domain/model'; export interface FilterState { selected: string | null; diff --git a/ui/src/app/metadata/filter/reducer/index.ts b/ui/src/app/metadata/filter/reducer/index.ts index 5e971027c..e0252e04a 100644 --- a/ui/src/app/metadata/filter/reducer/index.ts +++ b/ui/src/app/metadata/filter/reducer/index.ts @@ -3,8 +3,7 @@ import * as fromRoot from '../../../core/reducer'; import * as fromFilter from './filter.reducer'; import * as fromSearch from './search.reducer'; import * as fromCollection from './collection.reducer'; - -import * as fromDomain from '../../domain/reducer/index'; +import * as utils from '../../domain/domain.util'; export interface FilterState { filter: fromFilter.FilterState; @@ -48,6 +47,6 @@ export const getCollectionState = createSelector(getFilterState, getCollectionFr export const getAllFilters = createSelector(getCollectionState, fromCollection.selectAllFilters); export const getFilterEntities = createSelector(getCollectionState, fromCollection.selectFilterEntities); export const getSelectedFilterId = createSelector(getCollectionState, fromCollection.getSelectedFilterId); -export const getSelectedFilter = createSelector(getFilterEntities, getSelectedFilterId, fromDomain.getInCollectionFn); +export const getSelectedFilter = createSelector(getFilterEntities, getSelectedFilterId, utils.getInCollectionFn); export const getFilterIds = createSelector(getCollectionState, fromCollection.selectFilterIds); export const getFilterCollectionIsLoaded = createSelector(getCollectionState, fromCollection.getIsLoaded); diff --git a/ui/src/app/dashboard/action/dashboard.action.ts b/ui/src/app/metadata/manager/action/manager.action.ts similarity index 100% rename from ui/src/app/dashboard/action/dashboard.action.ts rename to ui/src/app/metadata/manager/action/manager.action.ts diff --git a/ui/src/app/dashboard/action/search.action.ts b/ui/src/app/metadata/manager/action/search.action.ts similarity index 100% rename from ui/src/app/dashboard/action/search.action.ts rename to ui/src/app/metadata/manager/action/search.action.ts diff --git a/ui/src/app/dashboard/component/delete-dialog.component.html b/ui/src/app/metadata/manager/component/delete-dialog.component.html similarity index 100% rename from ui/src/app/dashboard/component/delete-dialog.component.html rename to ui/src/app/metadata/manager/component/delete-dialog.component.html diff --git a/ui/src/app/dashboard/component/delete-dialog.component.ts b/ui/src/app/metadata/manager/component/delete-dialog.component.ts similarity index 100% rename from ui/src/app/dashboard/component/delete-dialog.component.ts rename to ui/src/app/metadata/manager/component/delete-dialog.component.ts diff --git a/ui/src/app/dashboard/component/entity-item.component.html b/ui/src/app/metadata/manager/component/entity-item.component.html similarity index 100% rename from ui/src/app/dashboard/component/entity-item.component.html rename to ui/src/app/metadata/manager/component/entity-item.component.html diff --git a/ui/src/app/dashboard/component/entity-item.component.scss b/ui/src/app/metadata/manager/component/entity-item.component.scss similarity index 100% rename from ui/src/app/dashboard/component/entity-item.component.scss rename to ui/src/app/metadata/manager/component/entity-item.component.scss diff --git a/ui/src/app/dashboard/component/entity-item.component.spec.ts b/ui/src/app/metadata/manager/component/entity-item.component.spec.ts similarity index 100% rename from ui/src/app/dashboard/component/entity-item.component.spec.ts rename to ui/src/app/metadata/manager/component/entity-item.component.spec.ts diff --git a/ui/src/app/dashboard/component/entity-item.component.ts b/ui/src/app/metadata/manager/component/entity-item.component.ts similarity index 82% rename from ui/src/app/dashboard/component/entity-item.component.ts rename to ui/src/app/metadata/manager/component/entity-item.component.ts index 83236f5b4..b5aed3756 100644 --- a/ui/src/app/dashboard/component/entity-item.component.ts +++ b/ui/src/app/metadata/manager/component/entity-item.component.ts @@ -1,6 +1,7 @@ import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core'; -import { MetadataEntity, DomainEntityKinds } from '../../domain/domain.type'; +import { MetadataEntity } from '../../domain/model'; +import { MetadataTypes } from '../../domain/domain.type'; @Component({ selector: 'entity-item', @@ -10,7 +11,7 @@ import { MetadataEntity, DomainEntityKinds } from '../../domain/domain.type'; }) export class EntityItemComponent { - types = DomainEntityKinds; + types = MetadataTypes; @Input() entity: MetadataEntity; @Input() isOpen: boolean; diff --git a/ui/src/app/dashboard/component/provider-search.component.html b/ui/src/app/metadata/manager/component/provider-search.component.html similarity index 100% rename from ui/src/app/dashboard/component/provider-search.component.html rename to ui/src/app/metadata/manager/component/provider-search.component.html diff --git a/ui/src/app/dashboard/component/provider-search.component.ts b/ui/src/app/metadata/manager/component/provider-search.component.ts similarity index 100% rename from ui/src/app/dashboard/component/provider-search.component.ts rename to ui/src/app/metadata/manager/component/provider-search.component.ts diff --git a/ui/src/app/dashboard/container/dashboard.component.html b/ui/src/app/metadata/manager/container/manager.component.html similarity index 100% rename from ui/src/app/dashboard/container/dashboard.component.html rename to ui/src/app/metadata/manager/container/manager.component.html diff --git a/ui/src/app/dashboard/container/dashboard.component.scss b/ui/src/app/metadata/manager/container/manager.component.scss similarity index 100% rename from ui/src/app/dashboard/container/dashboard.component.scss rename to ui/src/app/metadata/manager/container/manager.component.scss diff --git a/ui/src/app/dashboard/container/dashboard.component.spec.ts b/ui/src/app/metadata/manager/container/manager.component.spec.ts similarity index 89% rename from ui/src/app/dashboard/container/dashboard.component.spec.ts rename to ui/src/app/metadata/manager/container/manager.component.spec.ts index faa8342c9..4d1bc9020 100644 --- a/ui/src/app/dashboard/container/dashboard.component.spec.ts +++ b/ui/src/app/metadata/manager/container/manager.component.spec.ts @@ -5,30 +5,30 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { StoreModule, Store, combineReducers } from '@ngrx/store'; import { NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap/pagination/pagination.module'; import { NgbModal, NgbModalModule } from '@ng-bootstrap/ng-bootstrap/modal/modal.module'; -import { DashboardComponent } from './dashboard.component'; +import { DashboardComponent } from './manager.component'; import * as fromDashboard from '../reducer'; import { ProviderSearchComponent } from '../component/provider-search.component'; import { EntityItemComponent } from '../component/entity-item.component'; import { DeleteDialogComponent } from '../component/delete-dialog.component'; -import { RouterStub } from '../../../testing/router.stub'; -import { NgbModalStub } from '../../../testing/modal.stub'; -import { MetadataProvider } from '../../domain/model/metadata-provider'; -import { Resolver } from '../../domain/entity/provider'; +import { RouterStub } from '../../../../testing/router.stub'; +import { NgbModalStub } from '../../../../testing/modal.stub'; +import { FileBackedHttpMetadataResolver } from '../../domain/entity'; -describe('Dashboard Page', () => { +describe('Metadata Manager Page', () => { let fixture: ComponentFixture; let store: Store; let router: Router; let modal: NgbModal; let instance: DashboardComponent; - let draft = new Resolver({ + let draft = new FileBackedHttpMetadataResolver({ entityId: 'foo', serviceProviderName: 'bar' }), - provider = new Resolver({ - ...draft, + provider = new FileBackedHttpMetadataResolver({ + entityId: 'foo', + serviceProviderName: 'foo', id: '1' }); @@ -41,7 +41,7 @@ describe('Dashboard Page', () => { imports: [ NoopAnimationsModule, StoreModule.forRoot({ - dashboard: combineReducers(fromDashboard.reducers), + manager: combineReducers(fromDashboard.reducers), }), ReactiveFormsModule, NgbPaginationModule, diff --git a/ui/src/app/dashboard/container/dashboard.component.ts b/ui/src/app/metadata/manager/container/manager.component.ts similarity index 71% rename from ui/src/app/dashboard/container/dashboard.component.ts rename to ui/src/app/metadata/manager/container/manager.component.ts index aee61af43..de1cfdf77 100644 --- a/ui/src/app/dashboard/container/dashboard.component.ts +++ b/ui/src/app/metadata/manager/container/manager.component.ts @@ -2,26 +2,25 @@ import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { Store } from '@ngrx/store'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; - import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { MetadataTypes, Metadata } from '../../metadata/domain/domain.type'; + +import { MetadataEntity, MetadataResolver } from '../../domain/model'; +import { MetadataTypes, Metadata } from '../../domain/domain.type'; import * as searchActions from '../action/search.action'; -import * as draftActions from '../../domain/action/draft-collection.action'; import * as fromDashboard from '../reducer'; -import { ToggleEntityDisplay } from '../action/dashboard.action'; -import { PreviewEntity } from '../../domain/action/entity.action'; - +import { ToggleEntityDisplay } from '../action/manager.action'; import { DeleteDialogComponent } from '../component/delete-dialog.component'; -import { MetadataFactory } from '@angular/compiler/src/core'; +import { PreviewEntity } from '../../domain/action/entity.action'; +import { RemoveDraftRequest } from '../../resolver/action/draft.action'; @Component({ - selector: 'dashboard-page', + selector: 'manager-page', changeDetection: ChangeDetectionStrategy.OnPush, - templateUrl: './dashboard.component.html', - styleUrls: ['./dashboard.component.scss'] + templateUrl: './manager.component.html', + styleUrls: ['./manager.component.scss'] }) -export class DashboardComponent implements OnInit { +export class ManagerComponent implements OnInit { searchQuery$: Observable; providers$: Observable; loading$: Observable; @@ -61,12 +60,12 @@ export class DashboardComponent implements OnInit { this.changeFilter('all'); } - getPagedProviders(page: number, list$: Observable): Observable { + getPagedProviders(page: number, list$: Observable): Observable { return list$.pipe( - map((providers: MetadataEntity[]) => { + map((providers: Metadata[]) => { let maxIndex = (page * this.limit) - 1, minIndex = ((page - 1) * this.limit); - return providers.filter((provider: MetadataEntity, index: number) => (maxIndex >= index && index >= minIndex) ); + return providers.filter((provider: Metadata, index: number) => (maxIndex >= index && index >= minIndex) ); }) ); } @@ -86,31 +85,28 @@ export class DashboardComponent implements OnInit { } edit(entity: MetadataEntity): void { - let path = entity.id ? 'edit' : 'wizard', - id = entity.id ? entity.id : entity.entityId; - this.router.navigate([entity.kind, id, path]); + this.router.navigate(['resolver', entity.getId(), entity.getId() ? 'edit' : 'wizard']); } toggleProvider(entity: MetadataEntity): void { - let id = entity.id ? entity.id : entity.entityId; - this.store.dispatch(new ToggleEntityDisplay(id)); + this.store.dispatch(new ToggleEntityDisplay(entity.getId())); } openPreviewDialog(entity: MetadataEntity): void { this.store.dispatch(new PreviewEntity(entity)); } - deleteProvider(entity: MetadataProvider): void { + deleteProvider(entity: MetadataResolver): void { this.modalService .open(DeleteDialogComponent) .result .then( success => { - this.store.dispatch(new draftActions.RemoveDraftRequest(entity)); + this.store.dispatch(new RemoveDraftRequest(entity)); }, err => { console.log('Cancelled'); } ); } -} /* istanbul ignore next */ +} diff --git a/ui/src/app/dashboard/effect/search.effects.ts b/ui/src/app/metadata/manager/effect/search.effects.ts similarity index 53% rename from ui/src/app/dashboard/effect/search.effects.ts rename to ui/src/app/metadata/manager/effect/search.effects.ts index 78a9066e4..fa3386def 100644 --- a/ui/src/app/dashboard/effect/search.effects.ts +++ b/ui/src/app/metadata/manager/effect/search.effects.ts @@ -5,16 +5,10 @@ import { Observable, of } from 'rxjs'; import { switchMap, map, combineLatest } from 'rxjs/operators'; import * as entitySearch from '../action/search.action'; -import * as fromCollections from '../../domain/reducer'; -import * as fromDashboard from '../reducer'; +import * as fromManager from '../reducer'; +import * as fromResolver from '../../resolver/reducer'; import { MetadataProvider } from '../../domain/model/metadata-provider'; -import { EntityDescriptorService } from '../../domain/service/entity-descriptor.service'; -import { Resolver } from '../../domain/entity/provider'; -import { Filter } from '../../domain/entity/filter'; -import { MetadataEntity, DomainTypes, MetadataFilter } from '../../domain/domain.type'; -import { Provider } from '../../domain/entity/provider'; -import { MetadataEntity, MetadataFilter } from '../../domain/domain.type'; -import { EntityAttributesFilter } from '../../domain/entity/entity-attributes.filter'; +import { FileBackedHttpMetadataResolver } from '../../domain/entity'; @Injectable() @@ -36,27 +30,21 @@ export class SearchEffects { constructor( private actions$: Actions, - private store: Store + private store: Store ) { } private performSearch(): Observable { return of([]).pipe( combineLatest( - this.store.select(fromCollections.getAllProviders), - this.store.select(fromCollections.getAllFilters), - (o: any[], p: MetadataProvider[], f: MetadataFilter[]): Array => { + this.store.select(fromResolver.getAllResolvers), + (o: any[], p: MetadataProvider[]): Array => { return o.concat( - f.map(filter => new EntityAttributesFilter(filter)), - p.map(provider => new Provider(provider)) + p.map(provider => new FileBackedHttpMetadataResolver(provider)) ); } ), combineLatest( - this.store.select(fromDashboard.getFilterType), - (entities, kind) => kind !== 'all' ? entities.filter(e => e.kind === kind) : entities - ), - combineLatest( - this.store.select(fromDashboard.getSearchQuery), + this.store.select(fromManager.getSearchQuery), (entities, term) => entities.filter( e => this.matcher(e.name, term) || this.matcher(e.entityId, term) ) diff --git a/ui/src/app/dashboard/dashboard.module.ts b/ui/src/app/metadata/manager/manager.module.ts similarity index 81% rename from ui/src/app/dashboard/dashboard.module.ts rename to ui/src/app/metadata/manager/manager.module.ts index 06efbc2b0..49bde0aa7 100644 --- a/ui/src/app/dashboard/dashboard.module.ts +++ b/ui/src/app/metadata/manager/manager.module.ts @@ -7,7 +7,7 @@ import { NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap/pagination/pagin import { StoreModule } from '@ngrx/store'; import { EffectsModule } from '@ngrx/effects'; -import { DashboardComponent } from './container/dashboard.component'; +import { ManagerComponent } from './container/manager.component'; import { EntityItemComponent } from './component/entity-item.component'; import { ProviderSearchComponent } from './component/provider-search.component'; import { reducers } from './reducer'; @@ -15,11 +15,10 @@ import { SearchEffects } from './effect/search.effects'; import { DeleteDialogComponent } from './component/delete-dialog.component'; import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap/modal/modal.module'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; -import { PreviewDialogModule } from '../shared/preview/preview-dialog.module'; @NgModule({ declarations: [ - DashboardComponent, + ManagerComponent, EntityItemComponent, ProviderSearchComponent, DeleteDialogComponent @@ -29,16 +28,15 @@ import { PreviewDialogModule } from '../shared/preview/preview-dialog.module'; ], imports: [ RouterModule.forChild([ - { path: '', component: DashboardComponent } + { path: '', component: ManagerComponent } ]), - StoreModule.forFeature('dashboard', reducers), + StoreModule.forFeature('manager', reducers), EffectsModule.forFeature([SearchEffects]), CommonModule, ReactiveFormsModule, NgbPaginationModule, NgbModalModule, NgbDropdownModule, - PreviewDialogModule, HttpClientModule ], providers: [] diff --git a/ui/src/app/dashboard/reducer/index.ts b/ui/src/app/metadata/manager/reducer/index.ts similarity index 74% rename from ui/src/app/dashboard/reducer/index.ts rename to ui/src/app/metadata/manager/reducer/index.ts index 4fb55bf4e..ce597a06b 100644 --- a/ui/src/app/dashboard/reducer/index.ts +++ b/ui/src/app/metadata/manager/reducer/index.ts @@ -1,25 +1,25 @@ import { createSelector, createFeatureSelector } from '@ngrx/store'; -import * as fromRoot from '../../core/reducer'; -import * as fromDashboard from './dashboard.reducer'; +import * as fromRoot from '../../../core/reducer'; +import * as fromDashboard from './manager.reducer'; import * as fromSearch from './search.reducer'; export interface DashboardState { - dashboard: fromDashboard.State; + manager: fromDashboard.State; search: fromSearch.SearchState; } export interface State extends fromRoot.State { - 'dashboard': DashboardState; + 'manager': DashboardState; } export const reducers = { - dashboard: fromDashboard.reducer, + manager: fromDashboard.reducer, search: fromSearch.reducer }; -export const getFeatureState = createFeatureSelector('dashboard'); -export const getDashboardState = createSelector(getFeatureState, (state: DashboardState) => state.dashboard); -export const getOpenProviders = createSelector(getDashboardState, (dashboard: fromDashboard.State) => dashboard.providersOpen); +export const getFeatureState = createFeatureSelector('manager'); +export const getDashboardState = createSelector(getFeatureState, (state: DashboardState) => state.manager); +export const getOpenProviders = createSelector(getDashboardState, (manager: fromDashboard.State) => manager.providersOpen); export const getSearchState = createSelector(getFeatureState, (state: DashboardState) => state.search diff --git a/ui/src/app/dashboard/reducer/dashboard.reducer.spec.ts b/ui/src/app/metadata/manager/reducer/manager.reducer.spec.ts similarity index 82% rename from ui/src/app/dashboard/reducer/dashboard.reducer.spec.ts rename to ui/src/app/metadata/manager/reducer/manager.reducer.spec.ts index 969671c65..b31f3c4f7 100644 --- a/ui/src/app/dashboard/reducer/dashboard.reducer.spec.ts +++ b/ui/src/app/metadata/manager/reducer/manager.reducer.spec.ts @@ -1,6 +1,6 @@ -import { reducer } from './dashboard.reducer'; -import * as fromDashboard from './dashboard.reducer'; -import { ToggleEntityDisplay } from '../action/dashboard.action'; +import { reducer } from './manager.reducer'; +import * as fromDashboard from './manager.reducer'; +import { ToggleEntityDisplay } from '../action/manager.action'; describe('Dashboard Reducer', () => { const initialState: fromDashboard.State = { diff --git a/ui/src/app/dashboard/reducer/dashboard.reducer.ts b/ui/src/app/metadata/manager/reducer/manager.reducer.ts similarity index 60% rename from ui/src/app/dashboard/reducer/dashboard.reducer.ts rename to ui/src/app/metadata/manager/reducer/manager.reducer.ts index a71c8b812..2cd0e6926 100644 --- a/ui/src/app/dashboard/reducer/dashboard.reducer.ts +++ b/ui/src/app/metadata/manager/reducer/manager.reducer.ts @@ -1,7 +1,4 @@ -import { createSelector, createFeatureSelector } from '@ngrx/store'; -import { MetadataProvider } from '../../domain/model/metadata-provider'; -import * as dashboard from '../action/dashboard.action'; -import * as fromRoot from '../../core/reducer'; +import * as manager from '../action/manager.action'; export interface State { providersOpen: {[key: string]: boolean}; @@ -11,9 +8,9 @@ export const initialState: State = { providersOpen: {} }; -export function reducer(state = initialState, action: dashboard.Actions): State { +export function reducer(state = initialState, action: manager.Actions): State { switch (action.type) { - case dashboard.TOGGLE_ENTITY_DISPLAY: { + case manager.TOGGLE_ENTITY_DISPLAY: { return Object.assign({}, state, { providersOpen: { ...state.providersOpen, diff --git a/ui/src/app/dashboard/reducer/search.reducer.ts b/ui/src/app/metadata/manager/reducer/search.reducer.ts similarity index 100% rename from ui/src/app/dashboard/reducer/search.reducer.ts rename to ui/src/app/metadata/manager/reducer/search.reducer.ts diff --git a/ui/src/app/metadata/resolver/container/provider.component.html b/ui/src/app/metadata/metadata.component.html similarity index 100% rename from ui/src/app/metadata/resolver/container/provider.component.html rename to ui/src/app/metadata/metadata.component.html diff --git a/ui/src/app/metadata/metadata.component.ts b/ui/src/app/metadata/metadata.component.ts new file mode 100644 index 000000000..08c288dda --- /dev/null +++ b/ui/src/app/metadata/metadata.component.ts @@ -0,0 +1,24 @@ +import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { Store } from '@ngrx/store'; + +import * as fromMetadata from './metadata.reducer'; +import { LoadResolverRequest } from './resolver/action/collection.action'; +import { LoadFilterRequest } from './filter/action/collection.action'; +import { LoadDraftRequest } from './resolver/action/draft.action'; + +@Component({ + selector: 'metadata-page', + changeDetection: ChangeDetectionStrategy.OnPush, + templateUrl: './metadata.component.html', + styleUrls: [] +}) +export class MetadataPageComponent { + + constructor( + private store: Store + ) { + this.store.dispatch(new LoadResolverRequest()); + this.store.dispatch(new LoadFilterRequest()); + this.store.dispatch(new LoadDraftRequest()); + } +} diff --git a/ui/src/app/metadata/metadata.module.ts b/ui/src/app/metadata/metadata.module.ts index e69de29bb..58c75051e 100644 --- a/ui/src/app/metadata/metadata.module.ts +++ b/ui/src/app/metadata/metadata.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { ResolverModule } from './resolver/resolver.module'; +import { FilterModule } from './filter/filter.module'; +import { DomainModule } from './domain/domain.module'; +import { MetadataPageComponent } from './metadata.component'; + +@NgModule({ + imports: [ + ResolverModule, + FilterModule, + DomainModule, + RouterModule.forChild([ + { path: '', component: MetadataPageComponent } + ]) + ], + providers: [], + declarations: [ + MetadataPageComponent + ] +}) +export class MetadataModule { } diff --git a/ui/src/app/metadata/metadata.reducer.ts b/ui/src/app/metadata/metadata.reducer.ts index ecda6058c..f035ff707 100644 --- a/ui/src/app/metadata/metadata.reducer.ts +++ b/ui/src/app/metadata/metadata.reducer.ts @@ -19,14 +19,3 @@ export const reducers = { filter: filterReducers, resolver: resolverReducers }; - -/* - * Utility functions -*/ - -export const combineAllFn = (d, p) => [...p, ...d]; -export const doesExistFn = (ids, selected) => ids.indexOf(selected) > -1; -export const getInCollectionFn = (entities, selectedId) => { - return selectedId && entities[selectedId]; -}; -export const getEntityIdsFn = list => list.map(entity => entity.entityId); diff --git a/ui/src/app/metadata/resolver/action/collection.action.ts b/ui/src/app/metadata/resolver/action/collection.action.ts index 218f599b7..f0aebd69a 100644 --- a/ui/src/app/metadata/resolver/action/collection.action.ts +++ b/ui/src/app/metadata/resolver/action/collection.action.ts @@ -2,146 +2,146 @@ import { Action } from '@ngrx/store'; import { MetadataResolver } from '../../domain/model'; import { Update } from '@ngrx/entity'; -export enum ProviderCollectionActionTypes { +export enum ResolverCollectionActionTypes { FIND = '[Metadata Resolver] Find', SELECT = '[Metadata Resolver] Select', SELECT_SUCCESS = '[Metadata Resolver] Select Success', - UPDATE_PROVIDER_REQUEST = '[Metadata Resolver] Update Request', - UPDATE_PROVIDER_SUCCESS = '[Metadata Resolver] Update Success', - UPDATE_PROVIDER_FAIL = '[Metadata Resolver] Update Fail', + UPDATE_RESOLVER_REQUEST = '[Metadata Resolver] Update Request', + UPDATE_RESOLVER_SUCCESS = '[Metadata Resolver] Update Success', + UPDATE_RESOLVER_FAIL = '[Metadata Resolver] Update Fail', - LOAD_PROVIDER_REQUEST = '[Metadata Resolver Collection] Resolver REQUEST', - LOAD_PROVIDER_SUCCESS = '[Metadata Resolver Collection] Resolver SUCCESS', - LOAD_PROVIDER_ERROR = '[Metadata Resolver Collection] Resolver ERROR', - ADD_PROVIDER = '[Metadata Resolver Collection] Add Resolver', - ADD_PROVIDER_SUCCESS = '[Metadata Resolver Collection] Add Resolver Success', - ADD_PROVIDER_FAIL = '[Metadata Resolver Collection] Add Resolver Fail', - REMOVE_PROVIDER = '[Metadata Resolver Collection] Remove Resolver', - REMOVE_PROVIDER_SUCCESS = '[Metadata Resolver Collection] Remove Resolver Success', - REMOVE_PROVIDER_FAIL = '[Metadata Resolver Collection] Remove Resolver Fail', + LOAD_RESOLVER_REQUEST = '[Metadata Resolver Collection] Resolver REQUEST', + LOAD_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Resolver SUCCESS', + LOAD_RESOLVER_ERROR = '[Metadata Resolver Collection] Resolver ERROR', + ADD_RESOLVER = '[Metadata Resolver Collection] Add Resolver', + ADD_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Add Resolver Success', + ADD_RESOLVER_FAIL = '[Metadata Resolver Collection] Add Resolver Fail', + REMOVE_RESOLVER = '[Metadata Resolver Collection] Remove Resolver', + REMOVE_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Remove Resolver Success', + REMOVE_RESOLVER_FAIL = '[Metadata Resolver Collection] Remove Resolver Fail', - UPLOAD_PROVIDER_REQUEST = '[Metadata Resolver Collection] Upload Resolver Request', - CREATE_PROVIDER_FROM_URL_REQUEST = '[Metadata Resolver Collection] Create Resolver From URL Request', + UPLOAD_RESOLVER_REQUEST = '[Metadata Resolver Collection] Upload Resolver Request', + CREATE_RESOLVER_FROM_URL_REQUEST = '[Metadata Resolver Collection] Create Resolver From URL Request', } -export class FindProvider implements Action { - readonly type = ProviderCollectionActionTypes.FIND; +export class FindResolver implements Action { + readonly type = ResolverCollectionActionTypes.FIND; constructor(public payload: string) { } } -export class SelectProvider implements Action { - readonly type = ProviderCollectionActionTypes.SELECT; +export class SelectResolver implements Action { + readonly type = ResolverCollectionActionTypes.SELECT; constructor(public payload: string) { } } -export class SelectProviderSuccess implements Action { - readonly type = ProviderCollectionActionTypes.SELECT_SUCCESS; +export class SelectResolverSuccess implements Action { + readonly type = ResolverCollectionActionTypes.SELECT_SUCCESS; constructor(public payload: MetadataResolver) { } } -export class LoadProviderRequest implements Action { - readonly type = ProviderCollectionActionTypes.LOAD_PROVIDER_REQUEST; +export class LoadResolverRequest implements Action { + readonly type = ResolverCollectionActionTypes.LOAD_RESOLVER_REQUEST; constructor() { } } -export class LoadProviderSuccess implements Action { - readonly type = ProviderCollectionActionTypes.LOAD_PROVIDER_SUCCESS; +export class LoadResolverSuccess implements Action { + readonly type = ResolverCollectionActionTypes.LOAD_RESOLVER_SUCCESS; constructor(public payload: MetadataResolver[]) { } } -export class LoadProviderError implements Action { - readonly type = ProviderCollectionActionTypes.LOAD_PROVIDER_ERROR; +export class LoadResolverError implements Action { + readonly type = ResolverCollectionActionTypes.LOAD_RESOLVER_ERROR; constructor(public payload: any) { } } -export class UpdateProviderRequest implements Action { - readonly type = ProviderCollectionActionTypes.UPDATE_PROVIDER_REQUEST; +export class UpdateResolverRequest implements Action { + readonly type = ResolverCollectionActionTypes.UPDATE_RESOLVER_REQUEST; constructor(public payload: MetadataResolver) { } } -export class UpdateProviderSuccess implements Action { - readonly type = ProviderCollectionActionTypes.UPDATE_PROVIDER_SUCCESS; +export class UpdateResolverSuccess implements Action { + readonly type = ResolverCollectionActionTypes.UPDATE_RESOLVER_SUCCESS; constructor(public payload: Update) { } } -export class UpdateProviderFail implements Action { - readonly type = ProviderCollectionActionTypes.UPDATE_PROVIDER_FAIL; +export class UpdateResolverFail implements Action { + readonly type = ResolverCollectionActionTypes.UPDATE_RESOLVER_FAIL; constructor(public payload: MetadataResolver) { } } -export class AddProviderRequest implements Action { - readonly type = ProviderCollectionActionTypes.ADD_PROVIDER; +export class AddResolverRequest implements Action { + readonly type = ResolverCollectionActionTypes.ADD_RESOLVER; constructor(public payload: MetadataResolver) { } } -export class AddProviderSuccess implements Action { - readonly type = ProviderCollectionActionTypes.ADD_PROVIDER_SUCCESS; +export class AddResolverSuccess implements Action { + readonly type = ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS; constructor(public payload: MetadataResolver) { } } -export class AddProviderFail implements Action { - readonly type = ProviderCollectionActionTypes.ADD_PROVIDER_FAIL; +export class AddResolverFail implements Action { + readonly type = ResolverCollectionActionTypes.ADD_RESOLVER_FAIL; constructor(public payload: any) { } } -export class RemoveProviderRequest implements Action { - readonly type = ProviderCollectionActionTypes.REMOVE_PROVIDER; +export class RemoveResolverRequest implements Action { + readonly type = ResolverCollectionActionTypes.REMOVE_RESOLVER; constructor(public payload: MetadataResolver) { } } -export class RemoveProviderSuccess implements Action { - readonly type = ProviderCollectionActionTypes.REMOVE_PROVIDER_SUCCESS; +export class RemoveResolverSuccess implements Action { + readonly type = ResolverCollectionActionTypes.REMOVE_RESOLVER_SUCCESS; constructor(public payload: MetadataResolver) { } } -export class RemoveProviderFail implements Action { - readonly type = ProviderCollectionActionTypes.REMOVE_PROVIDER_FAIL; +export class RemoveResolverFail implements Action { + readonly type = ResolverCollectionActionTypes.REMOVE_RESOLVER_FAIL; constructor(public payload: MetadataResolver) { } } -export class UploadProviderRequest implements Action { - readonly type = ProviderCollectionActionTypes.UPLOAD_PROVIDER_REQUEST; +export class UploadResolverRequest implements Action { + readonly type = ResolverCollectionActionTypes.UPLOAD_RESOLVER_REQUEST; constructor(public payload: { name: string, body: string }) { } } -export class CreateProviderFromUrlRequest implements Action { - readonly type = ProviderCollectionActionTypes.CREATE_PROVIDER_FROM_URL_REQUEST; +export class CreateResolverFromUrlRequest implements Action { + readonly type = ResolverCollectionActionTypes.CREATE_RESOLVER_FROM_URL_REQUEST; constructor(public payload: { name: string, url: string }) { } } -export type ProviderCollectionActionsUnion = - | LoadProviderRequest - | LoadProviderSuccess - | LoadProviderError - | AddProviderRequest - | AddProviderSuccess - | AddProviderFail - | RemoveProviderRequest - | RemoveProviderSuccess - | RemoveProviderFail - | FindProvider - | SelectProvider - | SelectProviderSuccess - | UpdateProviderRequest - | UpdateProviderSuccess - | UpdateProviderFail - | UploadProviderRequest - | CreateProviderFromUrlRequest; +export type ResolverCollectionActionsUnion = + | LoadResolverRequest + | LoadResolverSuccess + | LoadResolverError + | AddResolverRequest + | AddResolverSuccess + | AddResolverFail + | RemoveResolverRequest + | RemoveResolverSuccess + | RemoveResolverFail + | FindResolver + | SelectResolver + | SelectResolverSuccess + | UpdateResolverRequest + | UpdateResolverSuccess + | UpdateResolverFail + | UploadResolverRequest + | CreateResolverFromUrlRequest; diff --git a/ui/src/app/metadata/resolver/action/copy.action.ts b/ui/src/app/metadata/resolver/action/copy.action.ts index 54c20c477..8d70af76c 100644 --- a/ui/src/app/metadata/resolver/action/copy.action.ts +++ b/ui/src/app/metadata/resolver/action/copy.action.ts @@ -2,52 +2,52 @@ import { Action } from '@ngrx/store'; import { MetadataResolver } from '../../domain/model'; export enum CopySourceActionTypes { - CREATE_PROVIDER_COPY_REQUEST = '[Copy Resolver] Create Resolver Copy Request', - CREATE_PROVIDER_COPY_SUCCESS = '[Copy Resolver] Create Resolver Copy Success', - CREATE_PROVIDER_COPY_ERROR = '[Copy Resolver] Create Resolver Copy Error', + CREATE_RESOLVER_COPY_REQUEST = '[Copy Resolver] Create Resolver Copy Request', + CREATE_RESOLVER_COPY_SUCCESS = '[Copy Resolver] Create Resolver Copy Success', + CREATE_RESOLVER_COPY_ERROR = '[Copy Resolver] Create Resolver Copy Error', - UPDATE_PROVIDER_COPY = '[Copy Resolver] Update Resolver Copy Request', + UPDATE_RESOLVER_COPY = '[Copy Resolver] Update Resolver Copy Request', - UPDATE_PROVIDER_COPY_SECTIONS = '[Copy Resolver] Update Resolver Sections', + UPDATE_RESOLVER_COPY_SECTIONS = '[Copy Resolver] Update Resolver Sections', - SAVE_PROVIDER_COPY_REQUEST = '[Copy Resolver] Save Resolver Copy Request', - SAVE_PROVIDER_COPY_SUCCESS = '[Copy Resolver] Save Resolver Copy Request', - SAVE_PROVIDER_COPY_ERROR = '[Copy Resolver] Save Resolver Copy Request', + SAVE_RESOLVER_COPY_REQUEST = '[Copy Resolver] Save Resolver Copy Request', + SAVE_RESOLVER_COPY_SUCCESS = '[Copy Resolver] Save Resolver Copy Request', + SAVE_RESOLVER_COPY_ERROR = '[Copy Resolver] Save Resolver Copy Request', } -export class CreateProviderCopyRequest implements Action { - readonly type = CopySourceActionTypes.CREATE_PROVIDER_COPY_REQUEST; +export class CreateResolverCopyRequest implements Action { + readonly type = CopySourceActionTypes.CREATE_RESOLVER_COPY_REQUEST; constructor(public payload: { entityId: string, serviceProviderName: string, target: string }) { } } -export class CreateProviderCopySuccess implements Action { - readonly type = CopySourceActionTypes.CREATE_PROVIDER_COPY_SUCCESS; +export class CreateResolverCopySuccess implements Action { + readonly type = CopySourceActionTypes.CREATE_RESOLVER_COPY_SUCCESS; constructor(public payload: MetadataResolver) { } } -export class CreateProviderCopyError implements Action { - readonly type = CopySourceActionTypes.CREATE_PROVIDER_COPY_ERROR; +export class CreateResolverCopyError implements Action { + readonly type = CopySourceActionTypes.CREATE_RESOLVER_COPY_ERROR; constructor(public payload: Error) { } } -export class UpdateProviderCopy implements Action { - readonly type = CopySourceActionTypes.UPDATE_PROVIDER_COPY; +export class UpdateResolverCopy implements Action { + readonly type = CopySourceActionTypes.UPDATE_RESOLVER_COPY; constructor(public payload: Partial) { } } -export class UpdateProviderCopySections implements Action { - readonly type = CopySourceActionTypes.UPDATE_PROVIDER_COPY_SECTIONS; +export class UpdateResolverCopySections implements Action { + readonly type = CopySourceActionTypes.UPDATE_RESOLVER_COPY_SECTIONS; constructor(public payload: string[]) { } } export type CopySourceActionUnion = - | CreateProviderCopyRequest - | CreateProviderCopySuccess - | CreateProviderCopyError - | UpdateProviderCopy - | UpdateProviderCopySections; + | CreateResolverCopyRequest + | CreateResolverCopySuccess + | CreateResolverCopyError + | UpdateResolverCopy + | UpdateResolverCopySections; diff --git a/ui/src/app/metadata/resolver/container/blank-provider.component.html b/ui/src/app/metadata/resolver/container/blank-resolver.component.html similarity index 91% rename from ui/src/app/metadata/resolver/container/blank-provider.component.html rename to ui/src/app/metadata/resolver/container/blank-resolver.component.html index 0f37f6b5b..923d35548 100644 --- a/ui/src/app/metadata/resolver/container/blank-provider.component.html +++ b/ui/src/app/metadata/resolver/container/blank-resolver.component.html @@ -24,19 +24,19 @@

- Service Provider Name is required + Service Resolver Name is required
diff --git a/ui/src/app/metadata/resolver/container/blank-provider.component.spec.ts b/ui/src/app/metadata/resolver/container/blank-resolver.component.spec.ts similarity index 60% rename from ui/src/app/metadata/resolver/container/blank-provider.component.spec.ts rename to ui/src/app/metadata/resolver/container/blank-resolver.component.spec.ts index 0faafb48a..30f6747ec 100644 --- a/ui/src/app/metadata/resolver/container/blank-provider.component.spec.ts +++ b/ui/src/app/metadata/resolver/container/blank-resolver.component.spec.ts @@ -2,31 +2,31 @@ import { TestBed, ComponentFixture } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { StoreModule, Store, combineReducers } from '@ngrx/store'; -import { NewProviderComponent } from './new-provider.component'; -import * as fromCollections from '../../domain/reducer'; -import { BlankProviderComponent } from './blank-provider.component'; -import { UploadProviderComponent } from './upload-provider.component'; +import { NewResolverComponent } from './new-resolver.component'; +import * as fromResolver from '../reducer'; +import { BlankResolverComponent } from './blank-resolver.component'; +import { UploadResolverComponent } from './upload-resolver.component'; describe('Blank Resolver Page', () => { - let fixture: ComponentFixture; - let store: Store; - let instance: BlankProviderComponent; + let fixture: ComponentFixture; + let store: Store; + let instance: BlankResolverComponent; beforeEach(() => { TestBed.configureTestingModule({ imports: [ NoopAnimationsModule, StoreModule.forRoot({ - collections: combineReducers(fromCollections.reducers), + collections: combineReducers(fromResolver.reducers), }), ReactiveFormsModule, ], declarations: [ - BlankProviderComponent + BlankResolverComponent ], }); - fixture = TestBed.createComponent(BlankProviderComponent); + fixture = TestBed.createComponent(BlankResolverComponent); instance = fixture.componentInstance; store = TestBed.get(Store); diff --git a/ui/src/app/metadata/resolver/container/blank-provider.component.ts b/ui/src/app/metadata/resolver/container/blank-resolver.component.ts similarity index 90% rename from ui/src/app/metadata/resolver/container/blank-provider.component.ts rename to ui/src/app/metadata/resolver/container/blank-resolver.component.ts index c29fdc934..b82c8c6fa 100644 --- a/ui/src/app/metadata/resolver/container/blank-provider.component.ts +++ b/ui/src/app/metadata/resolver/container/blank-resolver.component.ts @@ -14,10 +14,10 @@ import { EntityValidators } from '../../domain/service/entity-validators.service import { FileBackedHttpMetadataResolver } from '../../domain/entity/resolver/file-backed-http-metadata-resolver'; @Component({ - selector: 'blank-provider-form', - templateUrl: './blank-provider.component.html' + selector: 'blank-resolver-form', + templateUrl: './blank-resolver.component.html' }) -export class BlankProviderComponent implements OnInit { +export class BlankResolverComponent implements OnInit { @Output() save: EventEmitter = new EventEmitter(); providerForm: FormGroup; diff --git a/ui/src/app/metadata/resolver/container/confirm-copy.component.html b/ui/src/app/metadata/resolver/container/confirm-copy.component.html index eb0b7881e..3939bf935 100644 --- a/ui/src/app/metadata/resolver/container/confirm-copy.component.html +++ b/ui/src/app/metadata/resolver/container/confirm-copy.component.html @@ -27,7 +27,7 @@

- +
diff --git a/ui/src/app/metadata/resolver/container/confirm-copy.component.ts b/ui/src/app/metadata/resolver/container/confirm-copy.component.ts index 98162ad8b..42bbff14b 100644 --- a/ui/src/app/metadata/resolver/container/confirm-copy.component.ts +++ b/ui/src/app/metadata/resolver/container/confirm-copy.component.ts @@ -4,12 +4,11 @@ import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import * as fromProvider from '../reducer'; -import { MetadataResolver } from '../../domain/domain.type'; -import { FormGroup, FormBuilder } from '@angular/forms'; +import { MetadataResolver } from '../../domain/model'; import { ProviderValueEmitter } from '../../domain/service/provider-change-emitter.service'; -import { UpdateProviderCopy } from '../action/copy.action'; +import { UpdateResolverCopy } from '../action/copy.action'; import { map, take } from 'rxjs/operators'; -import { AddProviderRequest } from '../../domain/action/provider-collection.action'; +import { AddResolverRequest } from '../action/collection.action'; @Component({ selector: 'confirm-copy-page', @@ -22,7 +21,7 @@ export class ConfirmCopyComponent { values$: Observable; saving$: Observable; - provider: MetadataResolver; + resolver: MetadataResolver; constructor( private store: Store, @@ -32,12 +31,12 @@ export class ConfirmCopyComponent { this.saving$ = this.store.select(fromProvider.getSaving); this.values$ = this.copy$.pipe(take(1)); - this.valueEmitter.changeEmitted$.subscribe(changes => this.store.dispatch(new UpdateProviderCopy(changes))); + this.valueEmitter.changeEmitted$.subscribe(changes => this.store.dispatch(new UpdateResolverCopy(changes))); - this.copy$.subscribe(p => this.provider = p); + this.copy$.subscribe(p => this.resolver = p); } - onSave(provider: MetadataResolver): void { - this.store.dispatch(new AddProviderRequest(provider)); + onSave(resolver: MetadataResolver): void { + this.store.dispatch(new AddResolverRequest(resolver)); } } /* istanbul ignore next */ diff --git a/ui/src/app/metadata/resolver/container/copy-provider.component.spec.ts b/ui/src/app/metadata/resolver/container/copy-provider.component.spec.ts index 7f6a29d88..18d819a03 100644 --- a/ui/src/app/metadata/resolver/container/copy-provider.component.spec.ts +++ b/ui/src/app/metadata/resolver/container/copy-provider.component.spec.ts @@ -3,21 +3,20 @@ import { TestBed, ComponentFixture } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { StoreModule, Store, combineReducers } from '@ngrx/store'; -import { NewProviderComponent } from './new-provider.component'; -import * as fromCollections from '../../domain/reducer'; +import * as fromCollections from '../reducer'; import * as fromProvider from '../reducer'; -import { CopyProviderComponent } from './copy-provider.component'; -import { SharedModule } from '../../shared/shared.module'; -import { NavigatorService } from '../../core/service/navigator.service'; +import { CopyResolverComponent } from './copy-resolver.component'; +import { SharedModule } from '../../../shared/shared.module'; +import { NavigatorService } from '../../../core/service/navigator.service'; import { I18nTextComponent } from '../../domain/component/i18n-text.component'; @Component({ - template: `` + template: `` }) class TestHostComponent { - @ViewChild(CopyProviderComponent) - public formUnderTest: CopyProviderComponent; + @ViewChild(CopyResolverComponent) + public formUnderTest: CopyResolverComponent; onSave(event: any): void {} } @@ -25,7 +24,7 @@ class TestHostComponent { describe('Copy Resolver Page', () => { let fixture: ComponentFixture; let store: Store; - let instance: CopyProviderComponent; + let instance: CopyResolverComponent; beforeEach(() => { TestBed.configureTestingModule({ @@ -33,13 +32,13 @@ describe('Copy Resolver Page', () => { NoopAnimationsModule, StoreModule.forRoot({ collections: combineReducers(fromCollections.reducers), - provider: combineReducers(fromProvider.reducers) + resolver: combineReducers(fromProvider.reducers) }), ReactiveFormsModule, SharedModule ], declarations: [ - CopyProviderComponent, + CopyResolverComponent, I18nTextComponent, TestHostComponent ], diff --git a/ui/src/app/metadata/resolver/container/copy-provider.component.html b/ui/src/app/metadata/resolver/container/copy-resolver.component.html similarity index 97% rename from ui/src/app/metadata/resolver/container/copy-provider.component.html rename to ui/src/app/metadata/resolver/container/copy-resolver.component.html index 1fd0f0763..62f420492 100644 --- a/ui/src/app/metadata/resolver/container/copy-provider.component.html +++ b/ui/src/app/metadata/resolver/container/copy-resolver.component.html @@ -38,7 +38,7 @@

- + @@ -50,13 +50,13 @@

- Service Provider Name is required + Service Resolver Name is required
diff --git a/ui/src/app/metadata/resolver/container/copy-resolver.component.spec.ts b/ui/src/app/metadata/resolver/container/copy-resolver.component.spec.ts new file mode 100644 index 000000000..18d819a03 --- /dev/null +++ b/ui/src/app/metadata/resolver/container/copy-resolver.component.spec.ts @@ -0,0 +1,77 @@ +import { ViewChild, Component } from '@angular/core'; +import { TestBed, ComponentFixture } from '@angular/core/testing'; +import { ReactiveFormsModule } from '@angular/forms'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { StoreModule, Store, combineReducers } from '@ngrx/store'; +import * as fromCollections from '../reducer'; +import * as fromProvider from '../reducer'; +import { CopyResolverComponent } from './copy-resolver.component'; +import { SharedModule } from '../../../shared/shared.module'; +import { NavigatorService } from '../../../core/service/navigator.service'; +import { I18nTextComponent } from '../../domain/component/i18n-text.component'; + +@Component({ + template: `` +}) +class TestHostComponent { + @ViewChild(CopyResolverComponent) + public formUnderTest: CopyResolverComponent; + + onSave(event: any): void {} +} + +describe('Copy Resolver Page', () => { + let fixture: ComponentFixture; + let store: Store; + let instance: CopyResolverComponent; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + NoopAnimationsModule, + StoreModule.forRoot({ + collections: combineReducers(fromCollections.reducers), + resolver: combineReducers(fromProvider.reducers) + }), + ReactiveFormsModule, + SharedModule + ], + declarations: [ + CopyResolverComponent, + I18nTextComponent, + TestHostComponent + ], + providers: [ + NavigatorService + ] + }); + + fixture = TestBed.createComponent(TestHostComponent); + instance = fixture.componentInstance.formUnderTest; + store = TestBed.get(Store); + fixture.detectChanges(); + + spyOn(store, 'dispatch').and.callThrough(); + }); + + it('should compile', () => { + expect(fixture).toBeDefined(); + }); + + describe('next method', () => { + it('should dispatch an action to create a copy', () => { + instance.next(); + expect(store.dispatch).toHaveBeenCalled(); + }); + }); + + describe('onChange method', () => { + it('should dispatch an action to update the selected sections to copy', () => { + instance.onChange('relyingPartyOverrides'); + expect(store.dispatch).toHaveBeenCalled(); + instance.onChange('relyingPartyOverrides'); + expect(store.dispatch).toHaveBeenCalled(); + }); + }); +}); diff --git a/ui/src/app/metadata/resolver/container/copy-provider.component.ts b/ui/src/app/metadata/resolver/container/copy-resolver.component.ts similarity index 76% rename from ui/src/app/metadata/resolver/container/copy-provider.component.ts rename to ui/src/app/metadata/resolver/container/copy-resolver.component.ts index 8f83feae1..aec11cdb5 100644 --- a/ui/src/app/metadata/resolver/container/copy-provider.component.ts +++ b/ui/src/app/metadata/resolver/container/copy-resolver.component.ts @@ -10,21 +10,21 @@ import { Store } from '@ngrx/store'; import { startWith, take, last } from 'rxjs/operators'; -import { AddDraftRequest } from '../../domain/action/draft-collection.action'; -import { AddProviderRequest, UploadProviderRequest } from '../../domain/action/provider-collection.action'; -import * as fromCollections from '../../domain/reducer'; +import { AddDraftRequest } from '../action/draft.action'; +import { AddResolverRequest, UploadResolverRequest } from '../action/collection.action'; +import * as fromResolver from '../reducer'; import { EntityValidators } from '../../domain/service/entity-validators.service'; import { SearchIds } from '../action/search.action'; import * as fromProvider from '../reducer'; -import { Resolver } from '../../domain/entity/provider'; -import { CreateProviderCopyRequest, UpdateProviderCopySections} from '../action/copy.action'; +import { FileBackedHttpMetadataResolver } from '../../domain/entity'; +import { CreateResolverCopyRequest, UpdateResolverCopySections } from '../action/copy.action'; @Component({ - selector: 'copy-provider-form', - templateUrl: './copy-provider.component.html' + selector: 'copy-resolver-form', + templateUrl: './copy-resolver.component.html' }) -export class CopyProviderComponent implements OnInit { +export class CopyResolverComponent implements OnInit { @Output() save: EventEmitter = new EventEmitter(); providerForm: FormGroup; @@ -48,10 +48,10 @@ export class CopyProviderComponent implements OnInit { sections$ = of(this.sections); constructor( - private store: Store, + private store: Store, private fb: FormBuilder ) { - this.ids$ = this.store.select(fromCollections.getAllEntityIds); + this.ids$ = this.store.select(fromResolver.getAllEntityIds); this.searchResults$ = this.store.select(fromProvider.getSearchResults); this.selected$ = this.store.select(fromProvider.getSectionsToCopy); @@ -78,23 +78,23 @@ export class CopyProviderComponent implements OnInit { } next(): void { - this.store.dispatch(new CreateProviderCopyRequest({ + this.store.dispatch(new CreateResolverCopyRequest({ ...this.providerForm.value })); } onChange(attr: string): void { this.store.dispatch( - new UpdateProviderCopySections( + new UpdateResolverCopySections( this.selected.indexOf(attr) > -1 ? this.selected.filter(a => a !== attr) : [...this.selected, attr] ) ); } onCheckAll(): void { - this.store.dispatch(new UpdateProviderCopySections(this.sections.map(section => section.property))); + this.store.dispatch(new UpdateResolverCopySections(this.sections.map(section => section.property))); } onCheckNone(event: Event | null = null): void { - this.store.dispatch(new UpdateProviderCopySections([])); + this.store.dispatch(new UpdateResolverCopySections([])); } } diff --git a/ui/src/app/metadata/resolver/container/draft.component.ts b/ui/src/app/metadata/resolver/container/draft.component.ts index 13377a3ee..b1838f18e 100644 --- a/ui/src/app/metadata/resolver/container/draft.component.ts +++ b/ui/src/app/metadata/resolver/container/draft.component.ts @@ -6,22 +6,20 @@ import { distinctUntilChanged, map } from 'rxjs/operators'; import { Store } from '@ngrx/store'; import { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap'; - -import { MetadataResolver } from '../../domain/model/metadata-provider'; -import { SelectDraft } from '../../domain/action/draft-collection.action'; -import * as fromCollection from '../../domain/reducer'; +import { SelectDraft } from '../action/draft.action'; +import * as fromCollection from '../reducer'; @Component({ - selector: 'provider-page', - templateUrl: './provider.component.html', - styleUrls: ['./provider.component.scss'], + selector: 'resolver-page', + templateUrl: './resolver.component.html', + styleUrls: ['./resolver.component.scss'], providers: [NgbPopoverConfig] }) export class DraftComponent implements OnDestroy { actionsSubscription: Subscription; constructor( - store: Store, + store: Store, route: ActivatedRoute ) { this.actionsSubscription = route.params.pipe( diff --git a/ui/src/app/metadata/resolver/container/editor.component.html b/ui/src/app/metadata/resolver/container/editor.component.html index 5e387e595..3049b01b5 100644 --- a/ui/src/app/metadata/resolver/container/editor.component.html +++ b/ui/src/app/metadata/resolver/container/editor.component.html @@ -1,9 +1,9 @@ -
-
+
+
- Edit Metadata Source - {{ (provider$ | async).serviceProviderName }} + Edit Metadata Source - {{ (resolver$ | async).serviceProviderName }}
@@ -83,17 +83,17 @@
- - - - - - + + + + + +
- +
- +
diff --git a/ui/src/app/metadata/resolver/container/editor.component.ts b/ui/src/app/metadata/resolver/container/editor.component.ts index 22f7d112e..62f32058e 100644 --- a/ui/src/app/metadata/resolver/container/editor.component.ts +++ b/ui/src/app/metadata/resolver/container/editor.component.ts @@ -1,29 +1,23 @@ import { Component, - ViewChild, - AfterViewInit, OnInit, - OnDestroy, - EventEmitter + OnDestroy } from '@angular/core'; import { ActivatedRoute, Router, - CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; -import { FormBuilder, FormGroup, FormControl, Validators, NgModel } from '@angular/forms'; import { Observable, Subject, of } from 'rxjs'; import { combineLatest, map, takeUntil, withLatestFrom, debounceTime, skipWhile, distinctUntilChanged } from 'rxjs/operators'; import { Store } from '@ngrx/store'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap/modal/modal'; -import { MetadataResolver } from '../../domain/model/metadata-provider'; -import * as fromProviders from '../../domain/reducer'; -import { UpdateProviderRequest } from '../../domain/action/provider-collection.action'; -import * as fromEditor from '../reducer'; +import { MetadataResolver } from '../../domain/model/metadata-resolver'; +import * as fromResolver from '../reducer'; +import { UpdateResolverRequest } from '../action/collection.action'; import { ProviderStatusEmitter, ProviderValueEmitter } from '../../domain/service/provider-change-emitter.service'; import { UpdateStatus, UpdateChanges, CancelChanges } from '../action/editor.action'; @@ -49,9 +43,9 @@ export class EditorComponent implements OnInit, OnDestroy { latest: MetadataResolver; latest$: Observable; - provider$: Observable; + resolver$: Observable; providerName$: Observable; - provider: MetadataResolver; + resolver: MetadataResolver; editorIndex$: Observable; editor$: Observable; editor: EditorFlowDefinition[]; @@ -65,35 +59,35 @@ export class EditorComponent implements OnInit, OnDestroy { wizardIsInvalid$: Observable; constructor( - private store: Store, + private store: Store, private route: ActivatedRoute, private router: Router, private statusEmitter: ProviderStatusEmitter, private valueEmitter: ProviderValueEmitter, private modalService: NgbModal ) { - this.provider$ = this.store.select(fromProviders.getSelectedProvider); - this.changes$ = this.store.select(fromEditor.getEditorChanges); + this.resolver$ = this.store.select(fromResolver.getSelectedResolver); + this.changes$ = this.store.select(fromResolver.getEditorChanges); - this.latest$ = this.provider$.pipe( + this.latest$ = this.resolver$.pipe( combineLatest(this.changes$, (base, changes) => Object.assign({}, base, changes)) ); - this.providerName$ = this.provider$.pipe(map(p => p.serviceProviderName)); - this.changes$ = this.store.select(fromEditor.getEditorChanges); + this.providerName$ = this.resolver$.pipe(map(p => p.serviceProviderName)); + this.changes$ = this.store.select(fromResolver.getEditorChanges); this.editorIndex$ = this.route.params.pipe(map(params => Number(params.index))); this.currentPage$ = this.editorIndex$.pipe(map(index => EditorDef.find(r => r.index === index))); this.editor = EditorDef; - this.store.select(fromEditor.getEditorIsSaving).pipe( + this.store.select(fromResolver.getEditorIsSaving).pipe( takeUntil(this.ngUnsubscribe) ).subscribe(saving => this.saving = saving); - this.wizardIsValid$ = this.store.select(fromEditor.getEditorIsValid); + this.wizardIsValid$ = this.store.select(fromResolver.getEditorIsValid); this.wizardIsInvalid$ = this.wizardIsValid$.pipe(map(valid => !valid)); } save(): void { - this.store.dispatch(new UpdateProviderRequest({ + this.store.dispatch(new UpdateResolverRequest({ ...this.latest, ...this.changes, ...this.updates @@ -113,9 +107,9 @@ export class EditorComponent implements OnInit, OnDestroy { } ngOnInit(): void { - this.provider$.pipe( + this.resolver$.pipe( takeUntil(this.ngUnsubscribe) - ).subscribe(provider => this.provider = provider); + ).subscribe(resolver => this.resolver = resolver); this.changes$.pipe( takeUntil(this.ngUnsubscribe) ).subscribe(changes => this.changes = changes); @@ -143,7 +137,7 @@ export class EditorComponent implements OnInit, OnDestroy { skipWhile(() => this.saving) ).subscribe(latest => this.latest = latest); - this.invalidForms$ = this.store.select(fromEditor.getInvalidEditorForms); + this.invalidForms$ = this.store.select(fromResolver.getInvalidEditorForms); this.invalidForms$.pipe( distinctUntilChanged(), @@ -170,7 +164,7 @@ export class EditorComponent implements OnInit, OnDestroy { if (nextState.url.match('edit')) { return of(true); } if (Object.keys({ ...this.changes }).length > 0) { let modal = this.modalService.open(UnsavedDialogComponent); - modal.componentInstance.provider = this.latest; + modal.componentInstance.resolver = this.latest; modal.componentInstance.message = 'editor'; modal.componentInstance.action = new CancelChanges(); modal.result.then( @@ -178,6 +172,6 @@ export class EditorComponent implements OnInit, OnDestroy { () => console.warn('denied') ); } - return this.store.select(fromEditor.getEditorIsSaved); + return this.store.select(fromResolver.getEditorIsSaved); } } diff --git a/ui/src/app/metadata/resolver/container/new-provider.component.spec.ts b/ui/src/app/metadata/resolver/container/new-provider.component.spec.ts deleted file mode 100644 index 0626788e0..000000000 --- a/ui/src/app/metadata/resolver/container/new-provider.component.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { TestBed, ComponentFixture } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { RouterModule, Router, ActivatedRoute } from '@angular/router'; -import { APP_BASE_HREF } from '@angular/common'; - -import { StoreModule, Store, combineReducers } from '@ngrx/store'; -import { NewProviderComponent } from './new-provider.component'; - -import { BlankProviderComponent } from './blank-provider.component'; -import { UploadProviderComponent } from './upload-provider.component'; -import { CopyProviderComponent } from './copy-provider.component'; -import { SharedModule } from '../../shared/shared.module'; -import { NavigatorService } from '../../core/service/navigator.service'; -import * as fromProvider from '../reducer'; -import * as fromCollections from '../../domain/reducer'; -import { RouterStub } from '../../../testing/router.stub'; -import { ActivatedRouteStub } from '../../../testing/activated-route.stub'; -import { I18nTextComponent } from '../../domain/component/i18n-text.component'; - -describe('New Resolver Page', () => { - let fixture: ComponentFixture; - let store: Store; - let instance: NewProviderComponent; - let activatedRoute: ActivatedRouteStub = new ActivatedRouteStub(); - activatedRoute.testParamMap = { id: 'foo' }; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [ - NoopAnimationsModule, - StoreModule.forRoot({ - collections: combineReducers(fromCollections.reducers), - provider: combineReducers(fromProvider.reducers) - }), - ReactiveFormsModule, - SharedModule, - RouterModule.forRoot([]) - ], - declarations: [ - NewProviderComponent, - BlankProviderComponent, - UploadProviderComponent, - CopyProviderComponent, - I18nTextComponent - ], - providers: [ - NavigatorService, - { provide: ActivatedRoute, useValue: activatedRoute }, - { provide: APP_BASE_HREF, useValue: '/' } - ] - }); - - fixture = TestBed.createComponent(NewProviderComponent); - instance = fixture.componentInstance; - store = TestBed.get(Store); - - spyOn(store, 'dispatch').and.callThrough(); - }); - - it('should compile', () => { - fixture.detectChanges(); - - expect(fixture).toBeDefined(); - }); -}); diff --git a/ui/src/app/metadata/resolver/container/new-provider.component.ts b/ui/src/app/metadata/resolver/container/new-provider.component.ts deleted file mode 100644 index 4dee1bf02..000000000 --- a/ui/src/app/metadata/resolver/container/new-provider.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; - -@Component({ - selector: 'new-provider-page', - templateUrl: './new-provider.component.html', - styleUrls: ['./new-provider.component.scss'] -}) -export class NewProviderComponent { - constructor() {} -} /* istanbul ignore next */ diff --git a/ui/src/app/metadata/resolver/container/new-provider.component.html b/ui/src/app/metadata/resolver/container/new-resolver.component.html similarity index 91% rename from ui/src/app/metadata/resolver/container/new-provider.component.html rename to ui/src/app/metadata/resolver/container/new-resolver.component.html index 37d373546..48f0b847d 100644 --- a/ui/src/app/metadata/resolver/container/new-provider.component.html +++ b/ui/src/app/metadata/resolver/container/new-resolver.component.html @@ -3,7 +3,7 @@
- Add a new metadata source + Add a new metadata source
@@ -13,10 +13,10 @@

How are you addi
-
+