Skip to content

Commit

Permalink
SHIBUI-1408 added toggle button
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Sep 10, 2019
1 parent b9507b2 commit 0d0e9ed
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 8 deletions.
1 change: 1 addition & 0 deletions backend/src/main/resources/i18n/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 9 additions & 2 deletions ui/src/app/metadata/configuration/action/compare.action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;
}
Expand All @@ -44,4 +50,5 @@ export type CompareActionsUnion =
| CompareVersionSuccess
| CompareVersionError
| SetMetadataVersions
| ClearVersions;
| ClearVersions
| ViewChanged;
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,23 @@ <h2 class="mb-4" [ngSwitch]="type$ | async">
'container-fluid': (numVersions$ | async) > 2,
'container': (numVersions$ | async) <= 2
}">
<div class="px-3 my-3 d-flex justify-content-start">
<div class="px-3 my-3 d-flex justify-content-between">
<a class="btn btn-link" routerLink="../history">
<i class="fa fa-history sr-hidden"></i>&nbsp;
<translate-i18n key="action.version-history">Version History</translate-i18n>
</a>
<button class="btn btn-link" (click)="limiter.next('compare')">
<translate-i18n key="action.view-only-changes">Compare Changes</translate-i18n>&nbsp;
<i class="fa fa-lg sr-hidden"
[ngClass]="{
'fa-toggle-off': limited$ | async,
'fa-toggle-on': !(limited$ | async)
}"></i>
</button>
</div>
<metadata-configuration [configuration]="versions$ | async" [editable]="false"></metadata-configuration>
<metadata-configuration
[configuration]="versions$ | async"
[editable]="false"></metadata-configuration>
</div>
<div *ngIf="loading$ | async" class="d-flex justify-content-center">
<i class="fa fa-spinner fa-pulse fa-4x fa-fw"></i>
Expand Down
Original file line number Diff line number Diff line change
@@ -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';

Expand All @@ -16,10 +16,14 @@ import * as fromReducer from '../reducer';
})
export class MetadataComparisonComponent implements OnDestroy {

limiter: BehaviorSubject<boolean> = new BehaviorSubject(false);

versions$: Observable<MetadataConfiguration>;
numVersions$: Observable<number>;
type$: Observable<string>;
loading$: Observable<boolean> = this.store.select(fromReducer.getComparisonLoading);
limited$: Observable<boolean> = this.store.select(fromReducer.getViewChangedOnly);
sub: Subscription;

constructor(
private store: Store<ConfigurationState>,
Expand All @@ -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());
}
}
10 changes: 9 additions & 1 deletion ui/src/app/metadata/configuration/reducer/compare.reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;
2 changes: 2 additions & 0 deletions ui/src/app/metadata/configuration/reducer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 0d0e9ed

Please sign in to comment.