From dab3f670f052b347b59a50ba1ac7df068bf094de Mon Sep 17 00:00:00 2001 From: arditdomi <32884230+arditdomi@users.noreply.github.com> Date: Wed, 25 Mar 2020 14:06:02 +0000 Subject: [PATCH] [ACA-2948] Add process services extension in settings page (#1374) * [ACA-2948] Add toggle in settings page for process services extension * [ACA-2948] Remove console log * [ACA-2948] Fix import --- projects/aca-shared/rules/src/app.rules.ts | 10 +++++++++ .../store/src/actions/app.actions.ts | 9 +++++++- .../store/src/selectors/app.selectors.ts | 5 +++++ .../aca-shared/store/src/states/app.state.ts | 1 + src/app.config.json | 1 + src/app/app.component.ts | 1 + .../settings/settings.component.html | 21 +++++++++++++------ .../settings/settings.component.theme.scss | 5 +++++ .../components/settings/settings.component.ts | 13 +++++++++++- src/app/extensions/core.extensions.module.ts | 3 ++- src/app/extensions/extension.service.ts | 8 ++++++- src/app/store/initial-state.ts | 3 ++- src/app/store/reducers/app.reducer.ts | 17 ++++++++++++++- 13 files changed, 85 insertions(+), 12 deletions(-) diff --git a/projects/aca-shared/rules/src/app.rules.ts b/projects/aca-shared/rules/src/app.rules.ts index 11381309e..822275c36 100644 --- a/projects/aca-shared/rules/src/app.rules.ts +++ b/projects/aca-shared/rules/src/app.rules.ts @@ -30,6 +30,7 @@ import * as repository from './repository.rules'; export interface AcaRuleContext extends RuleContext { languagePicker: boolean; withCredentials: boolean; + processServices: boolean; } /** @@ -546,3 +547,12 @@ export function canShowLanguagePicker(context: AcaRuleContext): boolean { export function canShowLogout(context: AcaRuleContext): boolean { return !context.withCredentials; } + +/** + * Checks if application should render process services extension. + * JSON ref: `canShowProcessServices` + * @param context Rule execution context + */ +export function canShowProcessServices(context: AcaRuleContext): boolean { + return context.processServices; +} diff --git a/projects/aca-shared/store/src/actions/app.actions.ts b/projects/aca-shared/store/src/actions/app.actions.ts index 1fbed4459..62553ac57 100644 --- a/projects/aca-shared/store/src/actions/app.actions.ts +++ b/projects/aca-shared/store/src/actions/app.actions.ts @@ -41,7 +41,8 @@ export enum AppActionTypes { ResetSelection = 'RESET_SELECTION', SetInfoDrawerState = 'SET_INFO_DRAWER_STATE', SetInfoDrawerMetadataAspect = 'SET_INFO_DRAWER_METADATA_ASPECT', - CloseModalDialogs = 'CLOSE_MODAL_DIALOGS' + CloseModalDialogs = 'CLOSE_MODAL_DIALOGS', + ToggleProcessServices = 'TOGGLE_PROCESS_SERVICES' } export class SetInitialStateAction implements Action { @@ -113,3 +114,9 @@ export class SetRepositoryInfoAction implements Action { constructor(public payload: RepositoryInfo) {} } + +export class ToggleProcessServicesAction implements Action { + readonly type = AppActionTypes.ToggleProcessServices; + + constructor(public payload: boolean) {} +} diff --git a/projects/aca-shared/store/src/selectors/app.selectors.ts b/projects/aca-shared/store/src/selectors/app.selectors.ts index 4ded19b5a..46068b032 100644 --- a/projects/aca-shared/store/src/selectors/app.selectors.ts +++ b/projects/aca-shared/store/src/selectors/app.selectors.ts @@ -133,3 +133,8 @@ export const infoDrawerMetadataAspect = createSelector( selectApp, state => state.infoDrawerMetadataAspect ); + +export const getProcessServicesState = createSelector( + selectApp, + state => state.processServices +); diff --git a/projects/aca-shared/store/src/states/app.state.ts b/projects/aca-shared/store/src/states/app.state.ts index 0f1d5feaf..70e8b4885 100644 --- a/projects/aca-shared/store/src/states/app.state.ts +++ b/projects/aca-shared/store/src/states/app.state.ts @@ -44,6 +44,7 @@ export interface AppState { showFacetFilter: boolean; documentDisplayMode: string; repository: RepositoryInfo; + processServices: boolean; } export interface AppStore { diff --git a/src/app.config.json b/src/app.config.json index f6e6e7ccc..b1ef44eb1 100644 --- a/src/app.config.json +++ b/src/app.config.json @@ -27,6 +27,7 @@ "sharedLinkDateTimePickerType": "date", "headerColor": "#1565c0", "languagePicker": true, + "processServices": true, "pagination": { "size": 25, "supportedPageSizes": [25, 50, 100] diff --git a/src/app/app.component.ts b/src/app/app.component.ts index ba7612234..687d21318 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -179,6 +179,7 @@ export class AppComponent implements OnInit, OnDestroy { const state: AppState = { ...INITIAL_APP_STATE, languagePicker: this.config.get('languagePicker'), + processServices: this.config.get('processServices'), appName: this.config.get('application.name'), headerColor: this.config.get('headerColor'), logoPath: this.config.get('application.logo'), diff --git a/src/app/components/settings/settings.component.html b/src/app/components/settings/settings.component.html index bac89378d..c6c2f6070 100644 --- a/src/app/components/settings/settings.component.html +++ b/src/app/components/settings/settings.component.html @@ -87,11 +87,20 @@ Extensions - - Enable AI Extensions - +
+ + Enable AI Extensions + + + + Enable Process Services Extensions + +
diff --git a/src/app/components/settings/settings.component.theme.scss b/src/app/components/settings/settings.component.theme.scss index a96d55ab6..96644da0a 100644 --- a/src/app/components/settings/settings.component.theme.scss +++ b/src/app/components/settings/settings.component.theme.scss @@ -3,6 +3,11 @@ $app-menu-height: 64px; .aca-settings { + &-extensions-list { + display: flex; + flex-direction: column; + } + .settings-input { width: 50%; } diff --git a/src/app/components/settings/settings.component.ts b/src/app/components/settings/settings.component.ts index 1c98dd5f1..a47ea2910 100644 --- a/src/app/components/settings/settings.component.ts +++ b/src/app/components/settings/settings.component.ts @@ -39,7 +39,8 @@ import { getHeaderColor, getAppName, getUserProfile, - getLanguagePickerState + getLanguagePickerState, + ToggleProcessServicesAction } from '@alfresco/aca-shared/store'; import { ProfileState } from '@alfresco/adf-extensions'; @@ -65,6 +66,7 @@ export class SettingsComponent implements OnInit { headerColor$: Observable; languagePicker$: Observable; aiExtensions$: Observable; + psExtensions$: Observable; constructor( private store: Store, @@ -87,6 +89,10 @@ export class SettingsComponent implements OnInit { this.storage.getItem('ai') === 'true' ); + this.psExtensions$ = new BehaviorSubject( + this.storage.getItem('processServices') === 'true' + ); + this.form = this.fb.group({ ecmHost: [ '', @@ -141,4 +147,9 @@ export class SettingsComponent implements OnInit { onToggleAiExtensions(event: MatCheckboxChange) { this.storage.setItem('ai', event.checked.toString()); } + + onTogglePsExtensions(event: MatCheckboxChange) { + this.storage.setItem('processServices', event.checked.toString()); + this.store.dispatch(new ToggleProcessServicesAction(event.checked)); + } } diff --git a/src/app/extensions/core.extensions.module.ts b/src/app/extensions/core.extensions.module.ts index a29e51ecf..b5a426607 100644 --- a/src/app/extensions/core.extensions.module.ts +++ b/src/app/extensions/core.extensions.module.ts @@ -172,7 +172,8 @@ export class CoreExtensionsModule { 'repository.isQuickShareEnabled': rules.hasQuickShareEnabled, 'user.isAdmin': rules.isAdmin, 'app.canShowLanguagePicker': rules.canShowLanguagePicker, - 'app.canShowLogout': rules.canShowLogout + 'app.canShowLogout': rules.canShowLogout, + 'app.canShowProcessServices': rules.canShowProcessServices }); } } diff --git a/src/app/extensions/extension.service.ts b/src/app/extensions/extension.service.ts index 5847e2ef9..cb6b8da5b 100644 --- a/src/app/extensions/extension.service.ts +++ b/src/app/extensions/extension.service.ts @@ -31,7 +31,8 @@ import { DomSanitizer } from '@angular/platform-browser'; import { AppStore, getRuleContext, - getLanguagePickerState + getLanguagePickerState, + getProcessServicesState } from '@alfresco/aca-shared/store'; import { NodePermissionService } from '@alfresco/aca-shared'; import { @@ -110,6 +111,7 @@ export class AppExtensionService implements RuleContext { repository: RepositoryInfo; withCredentials: boolean; languagePicker: boolean; + processServices: boolean; references$: Observable; @@ -135,6 +137,10 @@ export class AppExtensionService implements RuleContext { this.store.select(getLanguagePickerState).subscribe(result => { this.languagePicker = result; }); + + this.store.select(getProcessServicesState).subscribe(result => { + this.processServices = result; + }); } async load() { diff --git a/src/app/store/initial-state.ts b/src/app/store/initial-state.ts index ec1bc2678..e620f4f89 100644 --- a/src/app/store/initial-state.ts +++ b/src/app/store/initial-state.ts @@ -54,7 +54,8 @@ export const INITIAL_APP_STATE: AppState = { status: { isQuickShareEnabled: true } - } + }, + processServices: false }; export const INITIAL_STATE: AppStore = { diff --git a/src/app/store/reducers/app.reducer.ts b/src/app/store/reducers/app.reducer.ts index d423b363c..7197764f4 100644 --- a/src/app/store/reducers/app.reducer.ts +++ b/src/app/store/reducers/app.reducer.ts @@ -37,7 +37,8 @@ import { SetSelectedNodesAction, SetRepositoryInfoAction, SetInfoDrawerStateAction, - SetInfoDrawerMetadataAspectAction + SetInfoDrawerMetadataAspectAction, + ToggleProcessServicesAction } from '@alfresco/aca-shared/store'; import { INITIAL_APP_STATE } from '../initial-state'; @@ -92,6 +93,11 @@ export function appReducer( case SearchActionTypes.HideFilter: newState = hideSearchFilter(state); break; + case AppActionTypes.ToggleProcessServices: + newState = updateProcessServices(state, ( + action + )); + break; default: newState = Object.assign({}, state); } @@ -268,3 +274,12 @@ function updateRepositoryStatus( newState.repository = action.payload; return newState; } + +function updateProcessServices( + state: AppState, + action: ToggleProcessServicesAction +) { + const newState = Object.assign({}, state); + newState.processServices = action.payload; + return newState; +}