From 0d0e9ed82a06a50647e24153f570896cdf7f505c Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 10 Sep 2019 14:57:32 -0700 Subject: [PATCH] SHIBUI-1408 added toggle button --- .../src/main/resources/i18n/messages.properties | 1 + .../configuration/action/compare.action.ts | 11 +++++++++-- .../container/metadata-comparison.component.html | 14 ++++++++++++-- .../container/metadata-comparison.component.ts | 16 +++++++++++++--- .../configuration/reducer/compare.reducer.ts | 10 +++++++++- .../app/metadata/configuration/reducer/index.ts | 2 ++ 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/backend/src/main/resources/i18n/messages.properties b/backend/src/main/resources/i18n/messages.properties index 5640fd5de..ff6eb36d2 100644 --- a/backend/src/main/resources/i18n/messages.properties +++ b/backend/src/main/resources/i18n/messages.properties @@ -56,6 +56,7 @@ action.manage=Manage action.close=Close action.back-to-top=Back to Top action.restore=Restore +action.view-only-changes=View Only Changes value.enabled=Enabled value.disabled=Disabled diff --git a/ui/src/app/metadata/configuration/action/compare.action.ts b/ui/src/app/metadata/configuration/action/compare.action.ts index 410a8dcab..be687d142 100644 --- a/ui/src/app/metadata/configuration/action/compare.action.ts +++ b/ui/src/app/metadata/configuration/action/compare.action.ts @@ -8,7 +8,8 @@ export enum CompareActionTypes { COMPARE_METADATA_SUCCESS = '[Compare Version] Compare Version Success', COMPARE_METADATA_ERROR = '[Compare Version] Compare Version Error', SET_VERSIONS = '[Compare Version] Set Versions', - CLEAR_VERSIONS = '[Compare Version] Clear Versions' + CLEAR_VERSIONS = '[Compare Version] Clear Versions', + SET_VIEW_CHANGED = '[Compare Version] View Changed Only' } export class CompareVersionRequest implements Action { @@ -35,6 +36,11 @@ export class SetMetadataVersions implements Action { constructor(public payload: Metadata[]) { } } +export class ViewChanged implements Action { + readonly type = CompareActionTypes.SET_VIEW_CHANGED; + constructor(public payload: boolean) { } +} + export class ClearVersions implements Action { readonly type = CompareActionTypes.CLEAR_VERSIONS; } @@ -44,4 +50,5 @@ export type CompareActionsUnion = | CompareVersionSuccess | CompareVersionError | SetMetadataVersions - | ClearVersions; + | ClearVersions + | ViewChanged; diff --git a/ui/src/app/metadata/configuration/container/metadata-comparison.component.html b/ui/src/app/metadata/configuration/container/metadata-comparison.component.html index 8e652d1c2..5c93f5ec7 100644 --- a/ui/src/app/metadata/configuration/container/metadata-comparison.component.html +++ b/ui/src/app/metadata/configuration/container/metadata-comparison.component.html @@ -8,13 +8,23 @@

'container-fluid': (numVersions$ | async) > 2, 'container': (numVersions$ | async) <= 2 }"> -
+
  Version History +
- +
diff --git a/ui/src/app/metadata/configuration/container/metadata-comparison.component.ts b/ui/src/app/metadata/configuration/container/metadata-comparison.component.ts index 1b1834fa1..18ba345bb 100644 --- a/ui/src/app/metadata/configuration/container/metadata-comparison.component.ts +++ b/ui/src/app/metadata/configuration/container/metadata-comparison.component.ts @@ -1,10 +1,10 @@ import { Component, ChangeDetectionStrategy, OnDestroy } from '@angular/core'; -import { Observable } from 'rxjs'; +import { Observable, BehaviorSubject, Subscription } from 'rxjs'; import { Store } from '@ngrx/store'; import { ActivatedRoute } from '@angular/router'; -import { map } from 'rxjs/operators'; +import { map, withLatestFrom } from 'rxjs/operators'; import { ConfigurationState, getComparisonConfigurations, getComparisonConfigurationCount } from '../reducer'; -import { CompareVersionRequest, ClearVersions } from '../action/compare.action'; +import { CompareVersionRequest, ClearVersions, ViewChanged } from '../action/compare.action'; import { MetadataConfiguration } from '../model/metadata-configuration'; import * as fromReducer from '../reducer'; @@ -16,10 +16,14 @@ import * as fromReducer from '../reducer'; }) export class MetadataComparisonComponent implements OnDestroy { + limiter: BehaviorSubject = new BehaviorSubject(false); + versions$: Observable; numVersions$: Observable; type$: Observable; loading$: Observable = this.store.select(fromReducer.getComparisonLoading); + limited$: Observable = this.store.select(fromReducer.getViewChangedOnly); + sub: Subscription; constructor( private store: Store, @@ -34,9 +38,15 @@ export class MetadataComparisonComponent implements OnDestroy { this.versions$ = this.store.select(getComparisonConfigurations); this.numVersions$ = this.store.select(getComparisonConfigurationCount); this.type$ = this.store.select(fromReducer.getConfigurationModelType); + + this.sub = this.limiter.pipe( + withLatestFrom(this.limited$), + map(([compare, limit]) => new ViewChanged(!limit)) + ).subscribe(this.store); } ngOnDestroy(): void { + this.sub.unsubscribe(); this.store.dispatch(new ClearVersions()); } } diff --git a/ui/src/app/metadata/configuration/reducer/compare.reducer.ts b/ui/src/app/metadata/configuration/reducer/compare.reducer.ts index d2d346ca3..84eec1558 100644 --- a/ui/src/app/metadata/configuration/reducer/compare.reducer.ts +++ b/ui/src/app/metadata/configuration/reducer/compare.reducer.ts @@ -5,16 +5,23 @@ export interface State { models: Metadata[]; loaded: boolean; loading: boolean; + compareChangedOnly: boolean; } export const initialState: State = { models: [], loaded: false, - loading: false + loading: false, + compareChangedOnly: false }; export function reducer(state = initialState, action: CompareActionsUnion): State { switch (action.type) { + case CompareActionTypes.SET_VIEW_CHANGED: + return { + ...state, + compareChangedOnly: action.payload + }; case CompareActionTypes.COMPARE_METADATA_REQUEST: return { ...state, @@ -45,3 +52,4 @@ export function reducer(state = initialState, action: CompareActionsUnion): Stat export const getVersionModels = (state: State) => state.models; export const getVersionModelsLoaded = (state: State) => state.loaded; export const getComparisonLoading = (state: State) => state.loading; +export const getViewChangedOnly = (state: State) => state.compareChangedOnly; diff --git a/ui/src/app/metadata/configuration/reducer/index.ts b/ui/src/app/metadata/configuration/reducer/index.ts index c53dc7538..807c1ab17 100644 --- a/ui/src/app/metadata/configuration/reducer/index.ts +++ b/ui/src/app/metadata/configuration/reducer/index.ts @@ -162,6 +162,8 @@ export const getComparisonConfigurations = createSelector( export const getComparisonConfigurationCount = createSelector(getComparisonConfigurations, (config) => config ? config.dates.length : 0); +export const getViewChangedOnly = createSelector(getCompareState, fromCompare.getViewChangedOnly); + // Version Restoration export const getRestoreState = createSelector(getState, getRestoreStateFn);