diff --git a/src/app/access/access.action.ts b/src/app/access/access.action.ts index 00476bdefeed59fc0023b7e8143c8803c7a36587..0c30311e8d5a37384d17d746a78832f5502d1515 100644 --- a/src/app/access/access.action.ts +++ b/src/app/access/access.action.ts @@ -1,4 +1,4 @@ -import {AipModel, DipModel} from '@app/generated-api'; +import {DipModel} from '@app/generated-api'; import {CollectionTypedModel} from '@app/model/collection-typed.model'; export class GetAllDip { diff --git a/src/app/access/access.state.ts b/src/app/access/access.state.ts index 8007718b210f166fe776178d9ee3b006b148a385..65fcb670349c876e6fbc88e08b6990ddf5d2f4e8 100644 --- a/src/app/access/access.state.ts +++ b/src/app/access/access.state.ts @@ -66,9 +66,9 @@ export class AccessState { tap((collectionDips: CollectionTypedModel<DipModel>) => { ctx.dispatch(new SearchDipSuccess(collectionDips)); }), - catchError(e => { + catchError(error => { ctx.dispatch(new SearchDipFail()); - throw e; + throw error; }), ); } diff --git a/src/app/access/views/access-view/access-view.component.html b/src/app/access/views/access-view/access-view.component.html index f84f67dd28f9aead09791a311e980aed12b37d47..45f7add369116776ea18b1d2e9c31b6dafd44f42 100644 --- a/src/app/access/views/access-view/access-view.component.html +++ b/src/app/access/views/access-view/access-view.component.html @@ -1,6 +1,4 @@ -<form class="search-form"> - <dlcm-search (value)="search($event)"></dlcm-search> -</form> +<dlcm-search (value)="search($event)"></dlcm-search> {{(dips$ | async) | json}} diff --git a/src/app/access/views/access-view/access-view.component.ts b/src/app/access/views/access-view/access-view.component.ts index d94b27fc035dccf3b47873506a8dcd5ef08db38d..8fceb828bc3abb176ef8ffbaf529ebc911458d65 100644 --- a/src/app/access/views/access-view/access-view.component.ts +++ b/src/app/access/views/access-view/access-view.component.ts @@ -1,5 +1,7 @@ import {Component, OnInit} from '@angular/core'; import {SearchDip} from '@app/access/access.action'; +import {AccessStateModel} from '@app/access/access.state'; +import {DipModel} from '@app/generated-api'; import {Select, Store} from '@ngxs/store'; import {Observable} from 'rxjs'; @@ -10,8 +12,8 @@ import {Observable} from 'rxjs'; styleUrls: ['./access-view.component.scss'], }) export class AccessViewComponent implements OnInit { - @Select((state) => state.access.isLoading) isLoading$: Observable<string>; - @Select((state) => state.access.dips) dips$: Observable<string>; + @Select((state) => ((state.access) as AccessStateModel).isLoading) isLoading$: Observable<boolean>; + @Select((state) => ((state.access) as AccessStateModel).dips) dips$: Observable<DipModel[]>; constructor(private store: Store) { } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index c190e9c5855e49424af037bded969ee7ff050e11..782bfcd61da90c11012b42e77a8465b8b6bc774f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -35,7 +35,7 @@ import {AppRoutingModule} from './module/app-routing.module'; BrowserAnimationsModule, AppRoutingModule, NgxsModule.forRoot([], { - developmentMode: !environment.production, // Allow to freeze store + developmentMode: !environment.production, // Allow to enable freeze store in dev env }), NgxsLoggerPluginModule.forRoot({ logger: console, diff --git a/src/app/deposit/deposit.action.ts b/src/app/deposit/deposit.action.ts index a6116ddbdfad76c993239303e421df2f17eb6538..2795b1f82c887a82eb2f3cb4f1a643d49db98f27 100644 --- a/src/app/deposit/deposit.action.ts +++ b/src/app/deposit/deposit.action.ts @@ -1,12 +1,22 @@ -export class AddDIP { - static readonly type = '[Deposit] Add DIP'; +import {DepositsModel} from '@app/generated-api'; +import {CollectionTypedModel} from '@app/model/collection-typed.model'; - constructor(public name: string) { +export class GetAll { + static readonly type = '[Deposit] Get All'; + + constructor() { } } -export class GetAll { - static readonly type = '[Deposit] Get All'; +export class GetAllSuccess { + static readonly type = '[Deposit] Get All Success'; + + constructor(public deposits: CollectionTypedModel<DepositsModel>) { + } +} + +export class GetAllFail { + static readonly type = '[Deposit] Get All Fail'; constructor() { } diff --git a/src/app/deposit/deposit.state.ts b/src/app/deposit/deposit.state.ts index 4c27c12f27fe3ee3967ffdfbdfa8b11d1a2d5a48..c5c95ef4198f81827675d6813bf452a171b6c0ad 100644 --- a/src/app/deposit/deposit.state.ts +++ b/src/app/deposit/deposit.state.ts @@ -1,66 +1,60 @@ import {AppStateModel} from '@app/app.state'; -import {AddDIP, GetAll} from '@app/deposit/deposit.action'; -import {DepositService} from '@app/deposit/services/deposit.service'; +import {GetAll, GetAllFail, GetAllSuccess} from '@app/deposit/deposit.action'; +import {DepositsModel, DipModel} from '@app/generated-api'; +import {CollectionTypedModel} from '@app/model/collection-typed.model'; +import {DlcmExtendedService} from '@app/service/dlcm.extended.service'; import {Action, State, StateContext} from '@ngxs/store'; -import {tap} from 'rxjs/internal/operators/tap'; +import {catchError} from 'rxjs/internal/operators/catchError'; +import {tap} from 'rxjs/operators'; export interface DepositStateModel extends AppStateModel { - feed: boolean; - dip: string; - dips: []; + totalDeposit: number; + deposits: DipModel[]; } @State<DepositStateModel>({ name: 'deposit', defaults: { - feed: false, - dip: 'test', - dips: [], + totalDeposit: 0, + deposits: [], isLoading: false, }, }) export class DepositState { - constructor(private depositService: DepositService) { + constructor(private dlcmService: DlcmExtendedService) { } - @Action(AddDIP) - addDIP(ctx: StateContext<DepositStateModel>, action: AddDIP) { - // const state = ctx.getState(); - // ctx.setState({ - // ...state, - // feed: !state.feed, - // dip: action.name, - // isLoading: true, - // }); - - // equals to - // ctx.setState((state) => ({...state, dip: action.name})); - - // equals to + @Action(GetAll, {cancelUncompleted: true}) + getAll(ctx: StateContext<DepositStateModel>, action: GetAll) { ctx.patchState({ - dip: action.name, + isLoading: true, }); - // return ctx.dispatch(new GetAll()); + return this.dlcmService.preingestDepositsGet() + .pipe( + tap((collectionDips: CollectionTypedModel<DepositsModel>) => { + ctx.dispatch(new GetAllSuccess(collectionDips)); + }), + catchError(error => { + ctx.dispatch(new GetAllFail()); + throw error; + }), + ); } - @Action(GetAll) - getAll(ctx: StateContext<DepositStateModel>, action: GetAll) { + @Action(GetAllSuccess) + getAllSuccess(ctx: StateContext<DepositStateModel>, action: GetAllSuccess) { ctx.patchState({ - isLoading: true, + deposits: action.deposits._data, + totalDeposit: action.deposits._page.totalItems, + isLoading: false, }); + } - return this.depositService.getAll().pipe( - tap((deposits: any) => { - console.log('test', deposits); - const state = ctx.getState(); - // ctx.patchState() - ctx.setState({ - ...state, - dips: deposits._data, - isLoading: false, - }); - }), - ); + @Action(GetAllFail) + getAllFail(ctx: StateContext<DepositStateModel>) { + ctx.patchState({ + isLoading: false, + }); } } diff --git a/src/app/deposit/views/deposit-view/deposit-view.component.html b/src/app/deposit/views/deposit-view/deposit-view.component.html index df17ae7894cd97049c361107ac7121d79b1d0987..eced351467c8ac1990d1e7be6e350e28b0414d0b 100644 --- a/src/app/deposit/views/deposit-view/deposit-view.component.html +++ b/src/app/deposit/views/deposit-view/deposit-view.component.html @@ -1,44 +1,8 @@ -<button mat-flat-button color="primary">New Deposit</button> +<button mat-flat-button color="primary" (click)="addDeposit()">New Deposit</button> +<button mat-flat-button color="secondary" (click)="getAll()">Refresh</button> -<button (click)="getAll()">Get All deposit</button> -<!--<button (click)="addDIP()">Add DIP</button>--> +{{(deposits$ | async) | json}} -<ul> - <li *ngFor="let dip of (deposit$ | async).dips"> - {{dip | json}} - </li> -</ul> +<mat-spinner *ngIf="(isLoading$ | async)"></mat-spinner> -<!--Deposits :--> - -<!--DIPS :--> -<!--<!–{{dips$ | async}}–>--> -<!--<br>--> -<!--DIP :--> -<!--{{(depositState$ | async).dip}}--> -<!--<br>--> -<!--DIP 2 :--> -<!--{{(deposit$ | async).dip}}--> -<!--<br>--> -<!--DIP 3 :--> -<!--{{dip3$ | async}}--> -<!--<br>--> -<!--DIP 4 :--> -<!--{{dip4$ | async}}--> -<!--<br>--> -<!--<!–Don't work–>--> -<!--DIP Panda :--> -<!--<!–{{dipPanda$ | async}}–>--> -<!--<br>--> -<!--All :--> -<!--<ul>--> -<!-- <li *ngFor="let dip of (deposit$ | async).dips">--> -<!-- {{dip | json}}--> -<!-- </li>--> -<!--</ul>--> - -<!--<fa-icon [icon]="faCoffee"></fa-icon>--> -<!--<fa-icon icon="coffee"></fa-icon>--> - -<!--<mat-spinner *ngIf="(deposit$ | async).isLoading"></mat-spinner>--> diff --git a/src/app/deposit/views/deposit-view/deposit-view.component.ts b/src/app/deposit/views/deposit-view/deposit-view.component.ts index 0715ad0eb9640d2640acd90b249b951a5080dd88..21a92ad350d420633cbbc9d72015b0156d251638 100644 --- a/src/app/deposit/views/deposit-view/deposit-view.component.ts +++ b/src/app/deposit/views/deposit-view/deposit-view.component.ts @@ -1,6 +1,7 @@ import {Component, OnInit} from '@angular/core'; -import {AddDIP, GetAll} from '@app/deposit/deposit.action'; -import {DepositState, DepositStateModel} from '@app/deposit/deposit.state'; +import {GetAll} from '@app/deposit/deposit.action'; +import {DepositStateModel} from '@app/deposit/deposit.state'; +import {DepositsModel} from '@app/generated-api'; import {faCoffee} from '@fortawesome/free-solid-svg-icons'; import {Select, Store} from '@ngxs/store'; import {Observable} from 'rxjs'; @@ -13,31 +14,21 @@ import {Observable} from 'rxjs'; export class DepositViewComponent implements OnInit { faCoffee = faCoffee; - // @Select((state: DepositStateModel) => state.dips) dips$: Observable<any>; - // @Select(DepositState.dip) dip$: Observable<string>; - @Select(DepositState) depositState$: Observable<DepositStateModel>; - - // Uses the pandas memoized selector to only return pandas - // @Select(DepositState.dip) dipPanda$: Observable<string>; - - @Select((state) => state.deposit.dip) dip3$: Observable<string>; - - @Select() deposit$: Observable<DepositStateModel>; - - dip4$: Observable<string>; + @Select((state) => ((state.deposit) as DepositStateModel).isLoading) isLoading$: Observable<boolean>; + @Select((state) => ((state.deposit) as DepositStateModel).deposits) deposits$: Observable<DepositsModel[]>; constructor(private store: Store) { - this.dip4$ = this.store.select(state => state.deposit.dip); } ngOnInit() { + this.getAll(); } getAll() { this.store.dispatch(new GetAll()); } - addDIP() { - this.store.dispatch(new AddDIP('My new dip')); + addDeposit() { + } }