mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-07-24 17:31:52 +00:00
shared library (#1080)
* shared project scaffold * rules package * move evaluators to shared lib * add rxjs peer dependency * use dedicated material namespaces * create store package, move actions * move selectors to shared library * move generic effects to shared lib * move routing extensions * minor code reorg * fix unit tests * move content-api service * move permission service * update tests * update plint config * move page layout * css variables * use dedicated css property * move generic error component to shared lib * fix test
This commit is contained in:
3
projects/aca-shared/store/package.json
Normal file
3
projects/aca-shared/store/package.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"ngPackage": {}
|
||||
}
|
107
projects/aca-shared/store/src/actions/app.actions.ts
Normal file
107
projects/aca-shared/store/src/actions/app.actions.ts
Normal file
@@ -0,0 +1,107 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
import { Node, Person, Group, RepositoryInfo } from '@alfresco/js-api';
|
||||
import { AppState } from '../states/app.state';
|
||||
|
||||
export enum AppActionTypes {
|
||||
SetInitialState = 'SET_INITIAL_STATE',
|
||||
SetLanguagePicker = 'SET_LANGUAGE_PICKER',
|
||||
SetCurrentFolder = 'SET_CURRENT_FOLDER',
|
||||
SetCurrentUrl = 'SET_CURRENT_URL',
|
||||
SetUserProfile = 'SET_USER_PROFILE',
|
||||
SetRepositoryInfo = 'SET_REPOSITORY_INFO',
|
||||
ToggleInfoDrawer = 'TOGGLE_INFO_DRAWER',
|
||||
ToggleDocumentDisplayMode = 'TOGGLE_DOCUMENT_DISPLAY_MODE',
|
||||
Logout = 'LOGOUT',
|
||||
ReloadDocumentList = 'RELOAD_DOCUMENT_LIST',
|
||||
SetInfoDrawerState = 'SET_INFO_DRAWER_STATE',
|
||||
CloseModalDialogs = 'CLOSE_MODAL_DIALOGS'
|
||||
}
|
||||
|
||||
export class SetInitialStateAction implements Action {
|
||||
readonly type = AppActionTypes.SetInitialState;
|
||||
|
||||
constructor(public payload: AppState) {}
|
||||
}
|
||||
|
||||
export class SetLanguagePickerAction implements Action {
|
||||
readonly type = AppActionTypes.SetLanguagePicker;
|
||||
|
||||
constructor(public payload: boolean) {}
|
||||
}
|
||||
|
||||
export class SetCurrentFolderAction implements Action {
|
||||
readonly type = AppActionTypes.SetCurrentFolder;
|
||||
|
||||
constructor(public payload: Node) {}
|
||||
}
|
||||
|
||||
export class SetCurrentUrlAction implements Action {
|
||||
readonly type = AppActionTypes.SetCurrentUrl;
|
||||
|
||||
constructor(public payload: string) {}
|
||||
}
|
||||
|
||||
export class SetUserProfileAction implements Action {
|
||||
readonly type = AppActionTypes.SetUserProfile;
|
||||
|
||||
constructor(public payload: { person: Person; groups: Group[] }) {}
|
||||
}
|
||||
|
||||
export class ToggleInfoDrawerAction implements Action {
|
||||
readonly type = AppActionTypes.ToggleInfoDrawer;
|
||||
}
|
||||
|
||||
export class ToggleDocumentDisplayMode implements Action {
|
||||
readonly type = AppActionTypes.ToggleDocumentDisplayMode;
|
||||
}
|
||||
|
||||
export class LogoutAction implements Action {
|
||||
readonly type = AppActionTypes.Logout;
|
||||
}
|
||||
|
||||
export class ReloadDocumentListAction implements Action {
|
||||
readonly type = AppActionTypes.ReloadDocumentList;
|
||||
|
||||
constructor(public payload?: any) {}
|
||||
}
|
||||
|
||||
export class SetInfoDrawerStateAction implements Action {
|
||||
readonly type = AppActionTypes.SetInfoDrawerState;
|
||||
|
||||
constructor(public payload: boolean) {}
|
||||
}
|
||||
|
||||
export class CloseModalDialogsAction implements Action {
|
||||
readonly type = AppActionTypes.CloseModalDialogs;
|
||||
}
|
||||
|
||||
export class SetRepositoryInfoAction implements Action {
|
||||
readonly type = AppActionTypes.SetRepositoryInfo;
|
||||
|
||||
constructor(public payload: RepositoryInfo) {}
|
||||
}
|
63
projects/aca-shared/store/src/actions/library.actions.ts
Normal file
63
projects/aca-shared/store/src/actions/library.actions.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
import { SiteBody } from '@alfresco/js-api';
|
||||
|
||||
export enum LibraryActionTypes {
|
||||
Delete = 'DELETE_LIBRARY',
|
||||
Create = 'CREATE_LIBRARY',
|
||||
Navigate = 'NAVIGATE_LIBRARY',
|
||||
Update = 'UPDATE_LIBRARY',
|
||||
Leave = 'LEAVE_LIBRARY'
|
||||
}
|
||||
|
||||
export class DeleteLibraryAction implements Action {
|
||||
readonly type = LibraryActionTypes.Delete;
|
||||
|
||||
constructor(public payload?: string) {}
|
||||
}
|
||||
|
||||
export class CreateLibraryAction implements Action {
|
||||
readonly type = LibraryActionTypes.Create;
|
||||
}
|
||||
|
||||
export class NavigateLibraryAction implements Action {
|
||||
readonly type = LibraryActionTypes.Navigate;
|
||||
|
||||
constructor(public payload?: string) {}
|
||||
}
|
||||
|
||||
export class UpdateLibraryAction implements Action {
|
||||
readonly type = LibraryActionTypes.Update;
|
||||
|
||||
constructor(public payload?: SiteBody) {}
|
||||
}
|
||||
|
||||
export class LeaveLibraryAction implements Action {
|
||||
readonly type = LibraryActionTypes.Leave;
|
||||
|
||||
constructor(public payload?: string) {}
|
||||
}
|
163
projects/aca-shared/store/src/actions/node.actions.ts
Normal file
163
projects/aca-shared/store/src/actions/node.actions.ts
Normal file
@@ -0,0 +1,163 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||
|
||||
export enum NodeActionTypes {
|
||||
SetSelection = 'SET_SELECTED_NODES',
|
||||
Delete = 'DELETE_NODES',
|
||||
UndoDelete = 'UNDO_DELETE_NODES',
|
||||
RestoreDeleted = 'RESTORE_DELETED_NODES',
|
||||
PurgeDeleted = 'PURGE_DELETED_NODES',
|
||||
Download = 'DOWNLOAD_NODES',
|
||||
CreateFolder = 'CREATE_FOLDER',
|
||||
EditFolder = 'EDIT_FOLDER',
|
||||
Share = 'SHARE_NODE',
|
||||
Unshare = 'UNSHARE_NODES',
|
||||
Copy = 'COPY_NODES',
|
||||
Move = 'MOVE_NODES',
|
||||
ManagePermissions = 'MANAGE_PERMISSIONS',
|
||||
PrintFile = 'PRINT_FILE',
|
||||
ManageVersions = 'MANAGE_VERSIONS',
|
||||
EditOffline = 'EDIT_OFFLINE',
|
||||
UnlockForWriting = 'UNLOCK_WRITE_LOCK',
|
||||
AddFavorite = 'ADD_FAVORITE',
|
||||
RemoveFavorite = 'REMOVE_FAVORITE'
|
||||
}
|
||||
|
||||
export class SetSelectedNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.SetSelection;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity[] = []) {}
|
||||
}
|
||||
|
||||
export class DeleteNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.Delete;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity[] = []) {}
|
||||
}
|
||||
|
||||
export class UndoDeleteNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.UndoDelete;
|
||||
|
||||
constructor(public payload: any[] = []) {}
|
||||
}
|
||||
|
||||
export class RestoreDeletedNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.RestoreDeleted;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
||||
|
||||
export class PurgeDeletedNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.PurgeDeleted;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
||||
|
||||
export class DownloadNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.Download;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity[] = []) {}
|
||||
}
|
||||
|
||||
export class CreateFolderAction implements Action {
|
||||
readonly type = NodeActionTypes.CreateFolder;
|
||||
|
||||
constructor(public payload: string) {}
|
||||
}
|
||||
|
||||
export class EditFolderAction implements Action {
|
||||
readonly type = NodeActionTypes.EditFolder;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
||||
|
||||
export class ShareNodeAction implements Action {
|
||||
readonly type = NodeActionTypes.Share;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
||||
|
||||
export class UnshareNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.Unshare;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
||||
|
||||
export class CopyNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.Copy;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
||||
|
||||
export class MoveNodesAction implements Action {
|
||||
readonly type = NodeActionTypes.Move;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
||||
|
||||
export class ManagePermissionsAction implements Action {
|
||||
readonly type = NodeActionTypes.ManagePermissions;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
||||
|
||||
export class PrintFileAction implements Action {
|
||||
readonly type = NodeActionTypes.PrintFile;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
||||
|
||||
export class ManageVersionsAction implements Action {
|
||||
readonly type = NodeActionTypes.ManageVersions;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
||||
|
||||
export class EditOfflineAction implements Action {
|
||||
readonly type = NodeActionTypes.EditOffline;
|
||||
|
||||
constructor(public payload: any) {}
|
||||
}
|
||||
|
||||
export class UnlockWriteAction implements Action {
|
||||
readonly type = NodeActionTypes.UnlockForWriting;
|
||||
|
||||
constructor(public payload: any) {}
|
||||
}
|
||||
|
||||
export class AddFavoriteAction implements Action {
|
||||
readonly type = NodeActionTypes.AddFavorite;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
||||
|
||||
export class RemoveFavoriteAction implements Action {
|
||||
readonly type = NodeActionTypes.RemoveFavorite;
|
||||
|
||||
constructor(public payload: Array<MinimalNodeEntity>) {}
|
||||
}
|
58
projects/aca-shared/store/src/actions/router.actions.ts
Normal file
58
projects/aca-shared/store/src/actions/router.actions.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||
|
||||
export enum RouterActionTypes {
|
||||
NavigateUrl = 'NAVIGATE_URL',
|
||||
NavigateRoute = 'NAVIGATE_ROUTE',
|
||||
NavigateFolder = 'NAVIGATE_FOLDER',
|
||||
NavigateParentFolder = 'NAVIGATE_PARENT_FOLDER'
|
||||
}
|
||||
|
||||
export class NavigateUrlAction implements Action {
|
||||
readonly type = RouterActionTypes.NavigateUrl;
|
||||
|
||||
constructor(public payload: string) {}
|
||||
}
|
||||
|
||||
export class NavigateRouteAction implements Action {
|
||||
readonly type = RouterActionTypes.NavigateRoute;
|
||||
|
||||
constructor(public payload: any[]) {}
|
||||
}
|
||||
|
||||
export class NavigateToFolder implements Action {
|
||||
readonly type = RouterActionTypes.NavigateFolder;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
||||
|
||||
export class NavigateToParentFolder implements Action {
|
||||
readonly type = RouterActionTypes.NavigateParentFolder;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
54
projects/aca-shared/store/src/actions/search.actions.ts
Normal file
54
projects/aca-shared/store/src/actions/search.actions.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
import { SearchOptionModel } from '../models/search-option.model';
|
||||
|
||||
export enum SearchActionTypes {
|
||||
SearchByTerm = 'SEARCH_BY_TERM',
|
||||
ToggleFilter = 'TOGGLE_SEARCH_FILTER',
|
||||
ShowFilter = 'SHOW_SEARCH_FILTER',
|
||||
HideFilter = 'HIDE_SEARCH_FILTER'
|
||||
}
|
||||
|
||||
export class SearchByTermAction implements Action {
|
||||
readonly type = SearchActionTypes.SearchByTerm;
|
||||
constructor(
|
||||
public payload: string,
|
||||
public searchOptions?: SearchOptionModel[]
|
||||
) {}
|
||||
}
|
||||
|
||||
export class ToggleSearchFilterAction implements Action {
|
||||
readonly type = SearchActionTypes.ToggleFilter;
|
||||
}
|
||||
|
||||
export class ShowSearchFilterAction implements Action {
|
||||
readonly type = SearchActionTypes.ShowFilter;
|
||||
}
|
||||
|
||||
export class HideSearchFilterAction implements Action {
|
||||
readonly type = SearchActionTypes.HideFilter;
|
||||
}
|
70
projects/aca-shared/store/src/actions/snackbar.actions.ts
Normal file
70
projects/aca-shared/store/src/actions/snackbar.actions.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
|
||||
export enum SnackbarActionTypes {
|
||||
Info = 'SNACKBAR_INFO',
|
||||
Warning = 'SNACKBAR_WARNING',
|
||||
Error = 'SNACKBAR_ERROR'
|
||||
}
|
||||
|
||||
export interface SnackbarAction extends Action {
|
||||
payload: string;
|
||||
params?: Object;
|
||||
userAction?: SnackbarUserAction;
|
||||
duration: number;
|
||||
}
|
||||
|
||||
export class SnackbarUserAction {
|
||||
constructor(public title: string, public action: Action) {}
|
||||
}
|
||||
|
||||
export class SnackbarInfoAction implements SnackbarAction {
|
||||
readonly type = SnackbarActionTypes.Info;
|
||||
|
||||
userAction?: SnackbarUserAction;
|
||||
duration = 4000;
|
||||
|
||||
constructor(public payload: string, public params?: Object) {}
|
||||
}
|
||||
|
||||
export class SnackbarWarningAction implements SnackbarAction {
|
||||
readonly type = SnackbarActionTypes.Warning;
|
||||
|
||||
userAction?: SnackbarUserAction;
|
||||
duration = 4000;
|
||||
|
||||
constructor(public payload: string, public params?: Object) {}
|
||||
}
|
||||
|
||||
export class SnackbarErrorAction implements SnackbarAction {
|
||||
readonly type = SnackbarActionTypes.Error;
|
||||
|
||||
userAction?: SnackbarUserAction;
|
||||
duration = 4000;
|
||||
|
||||
constructor(public payload: string, public params?: Object) {}
|
||||
}
|
48
projects/aca-shared/store/src/actions/upload.actions.ts
Normal file
48
projects/aca-shared/store/src/actions/upload.actions.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
|
||||
export enum UploadActionTypes {
|
||||
UploadFiles = 'UPLOAD_FILES',
|
||||
UploadFolder = 'UPLOAD_FOLDER',
|
||||
UploadFileVersion = 'UPLOAD_FILE_VERSION'
|
||||
}
|
||||
|
||||
export class UploadFilesAction implements Action {
|
||||
readonly type = UploadActionTypes.UploadFiles;
|
||||
|
||||
constructor(public payload: any) {}
|
||||
}
|
||||
|
||||
export class UploadFolderAction implements Action {
|
||||
readonly type = UploadActionTypes.UploadFolder;
|
||||
|
||||
constructor(public payload: any) {}
|
||||
}
|
||||
|
||||
export class UploadFileVersionAction implements Action {
|
||||
readonly type = UploadActionTypes.UploadFileVersion;
|
||||
}
|
51
projects/aca-shared/store/src/actions/viewer.actions.ts
Normal file
51
projects/aca-shared/store/src/actions/viewer.actions.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Action } from '@ngrx/store';
|
||||
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||
|
||||
export enum ViewerActionTypes {
|
||||
ViewFile = 'VIEW_FILE',
|
||||
ViewNode = 'VIEW_NODE',
|
||||
FullScreen = 'FULLSCREEN_VIEWER'
|
||||
}
|
||||
|
||||
export class ViewFileAction implements Action {
|
||||
readonly type = ViewerActionTypes.ViewFile;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity, public parentId?: string) {}
|
||||
}
|
||||
|
||||
export class ViewNodeAction implements Action {
|
||||
readonly type = ViewerActionTypes.ViewNode;
|
||||
|
||||
constructor(public nodeId: string, public location?: string) {}
|
||||
}
|
||||
|
||||
export class FullscreenViewerAction implements Action {
|
||||
readonly type = ViewerActionTypes.FullScreen;
|
||||
|
||||
constructor(public payload: MinimalNodeEntity) {}
|
||||
}
|
44
projects/aca-shared/store/src/effects/dialog.effects.ts
Normal file
44
projects/aca-shared/store/src/effects/dialog.effects.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Effect, Actions, ofType } from '@ngrx/effects';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import {
|
||||
CloseModalDialogsAction,
|
||||
AppActionTypes
|
||||
} from '../actions/app.actions';
|
||||
|
||||
@Injectable()
|
||||
export class DialogEffects {
|
||||
constructor(private actions$: Actions, private matDialog: MatDialog) {}
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
closeAll$ = this.actions$.pipe(
|
||||
ofType<CloseModalDialogsAction>(AppActionTypes.CloseModalDialogs),
|
||||
map(() => this.matDialog.closeAll())
|
||||
);
|
||||
}
|
151
projects/aca-shared/store/src/effects/router.effects.ts
Normal file
151
projects/aca-shared/store/src/effects/router.effects.ts
Normal file
@@ -0,0 +1,151 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { Actions, Effect, ofType } from '@ngrx/effects';
|
||||
import { MinimalNodeEntryEntity, PathInfoEntity } from '@alfresco/js-api';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { AppStore } from '../states/app.state';
|
||||
import {
|
||||
NavigateUrlAction,
|
||||
RouterActionTypes,
|
||||
NavigateRouteAction,
|
||||
NavigateToFolder,
|
||||
NavigateToParentFolder
|
||||
} from '../actions/router.actions';
|
||||
import { SnackbarErrorAction } from '../actions/snackbar.actions';
|
||||
|
||||
@Injectable()
|
||||
export class RouterEffects {
|
||||
constructor(
|
||||
private store: Store<AppStore>,
|
||||
private actions$: Actions,
|
||||
private router: Router
|
||||
) {}
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
navigateUrl$ = this.actions$.pipe(
|
||||
ofType<NavigateUrlAction>(RouterActionTypes.NavigateUrl),
|
||||
map(action => {
|
||||
if (action.payload) {
|
||||
this.router.navigateByUrl(action.payload);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
navigateRoute$ = this.actions$.pipe(
|
||||
ofType<NavigateRouteAction>(RouterActionTypes.NavigateRoute),
|
||||
map(action => {
|
||||
this.router.navigate(action.payload);
|
||||
})
|
||||
);
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
navigateToFolder$ = this.actions$.pipe(
|
||||
ofType<NavigateToFolder>(RouterActionTypes.NavigateFolder),
|
||||
map(action => {
|
||||
if (action.payload && action.payload.entry) {
|
||||
this.navigateToFolder(action.payload.entry);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
navigateToParentFolder$ = this.actions$.pipe(
|
||||
ofType<NavigateToParentFolder>(RouterActionTypes.NavigateParentFolder),
|
||||
map(action => {
|
||||
if (action.payload && action.payload.entry) {
|
||||
this.navigateToParentFolder(action.payload.entry);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
private navigateToFolder(node: MinimalNodeEntryEntity) {
|
||||
let link: any[] = null;
|
||||
const { path, id } = node;
|
||||
|
||||
if (path && path.name && path.elements) {
|
||||
const isLibraryPath = this.isLibraryContent(<PathInfoEntity>path);
|
||||
|
||||
const parent = path.elements[path.elements.length - 1];
|
||||
const area = isLibraryPath ? '/libraries' : '/personal-files';
|
||||
|
||||
if (!isLibraryPath) {
|
||||
link = [area, id];
|
||||
} else {
|
||||
// parent.id could be 'Site' folder or child as 'documentLibrary'
|
||||
link = [area, parent.name === 'Sites' ? {} : id];
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
this.router.navigate(link);
|
||||
}, 10);
|
||||
} else {
|
||||
this.router.navigate(['/personal-files', node.id]);
|
||||
}
|
||||
}
|
||||
|
||||
private navigateToParentFolder(node: MinimalNodeEntryEntity) {
|
||||
let link: any[] = null;
|
||||
const { path } = node;
|
||||
|
||||
if (path && path.name && path.elements) {
|
||||
const isLibraryPath = this.isLibraryContent(<PathInfoEntity>path);
|
||||
|
||||
const parent = path.elements[path.elements.length - 1];
|
||||
const area = isLibraryPath ? '/libraries' : '/personal-files';
|
||||
|
||||
if (!isLibraryPath) {
|
||||
link = [area, parent.id];
|
||||
} else {
|
||||
// parent.id could be 'Site' folder or child as 'documentLibrary'
|
||||
link = [area, parent.name === 'Sites' ? {} : parent.id];
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
this.router.navigate(link);
|
||||
}, 10);
|
||||
} else {
|
||||
this.store.dispatch(
|
||||
new SnackbarErrorAction('APP.MESSAGES.ERRORS.CANNOT_NAVIGATE_LOCATION')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private isLibraryContent(path: PathInfoEntity): boolean {
|
||||
if (
|
||||
path &&
|
||||
path.elements.length >= 2 &&
|
||||
path.elements[1].name === 'Sites'
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
97
projects/aca-shared/store/src/effects/snackbar.effects.ts
Normal file
97
projects/aca-shared/store/src/effects/snackbar.effects.ts
Normal file
@@ -0,0 +1,97 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { TranslationService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||
import { Actions, Effect, ofType } from '@ngrx/effects';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { AppStore } from '../states/app.state';
|
||||
import {
|
||||
SnackbarInfoAction,
|
||||
SnackbarActionTypes,
|
||||
SnackbarWarningAction,
|
||||
SnackbarErrorAction,
|
||||
SnackbarAction
|
||||
} from '../actions/snackbar.actions';
|
||||
|
||||
@Injectable()
|
||||
export class SnackbarEffects {
|
||||
constructor(
|
||||
private store: Store<AppStore>,
|
||||
private actions$: Actions,
|
||||
private snackBar: MatSnackBar,
|
||||
private translationService: TranslationService
|
||||
) {}
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
infoEffect = this.actions$.pipe(
|
||||
ofType<SnackbarInfoAction>(SnackbarActionTypes.Info),
|
||||
map((action: SnackbarInfoAction) => {
|
||||
this.showSnackBar(action, 'info-snackbar');
|
||||
})
|
||||
);
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
warningEffect = this.actions$.pipe(
|
||||
ofType<SnackbarWarningAction>(SnackbarActionTypes.Warning),
|
||||
map((action: SnackbarWarningAction) => {
|
||||
this.showSnackBar(action, 'warning-snackbar');
|
||||
})
|
||||
);
|
||||
|
||||
@Effect({ dispatch: false })
|
||||
errorEffect = this.actions$.pipe(
|
||||
ofType<SnackbarErrorAction>(SnackbarActionTypes.Error),
|
||||
map((action: SnackbarErrorAction) => {
|
||||
this.showSnackBar(action, 'error-snackbar');
|
||||
})
|
||||
);
|
||||
|
||||
private showSnackBar(action: SnackbarAction, panelClass: string) {
|
||||
const message = this.translate(action.payload, action.params);
|
||||
|
||||
let actionName: string = null;
|
||||
if (action.userAction) {
|
||||
actionName = this.translate(action.userAction.title);
|
||||
}
|
||||
|
||||
const snackBarRef = this.snackBar.open(message, actionName, {
|
||||
duration: action.duration || 4000,
|
||||
panelClass: panelClass
|
||||
});
|
||||
|
||||
if (action.userAction) {
|
||||
snackBarRef.onAction().subscribe(() => {
|
||||
this.store.dispatch(action.userAction.action);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private translate(message: string, params?: Object): string {
|
||||
return this.translationService.instant(message, params);
|
||||
}
|
||||
}
|
36
projects/aca-shared/store/src/models/delete-status.model.ts
Normal file
36
projects/aca-shared/store/src/models/delete-status.model.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export interface DeleteStatus {
|
||||
success: any[];
|
||||
fail: any[];
|
||||
someFailed: boolean;
|
||||
someSucceeded: boolean;
|
||||
oneFailed: boolean;
|
||||
oneSucceeded: boolean;
|
||||
allSucceeded: boolean;
|
||||
allFailed: boolean;
|
||||
reset(): void;
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export interface DeletedNodeInfo {
|
||||
id: string;
|
||||
name: string;
|
||||
status: number;
|
||||
}
|
32
projects/aca-shared/store/src/models/node-info.model.ts
Normal file
32
projects/aca-shared/store/src/models/node-info.model.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export interface NodeInfo {
|
||||
parentId?: string;
|
||||
id: string;
|
||||
name: string;
|
||||
isFile?: boolean;
|
||||
isFolder?: boolean;
|
||||
}
|
37
projects/aca-shared/store/src/models/search-option.model.ts
Normal file
37
projects/aca-shared/store/src/models/search-option.model.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export enum SearchOptionIds {
|
||||
Files = 'content',
|
||||
Folders = 'folder',
|
||||
Libraries = 'libraries'
|
||||
}
|
||||
|
||||
export interface SearchOptionModel {
|
||||
id: SearchOptionIds;
|
||||
key: string;
|
||||
value: boolean;
|
||||
shouldDisable(): boolean;
|
||||
}
|
48
projects/aca-shared/store/src/public_api.ts
Normal file
48
projects/aca-shared/store/src/public_api.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export * from './actions/app.actions';
|
||||
export * from './actions/library.actions';
|
||||
export * from './actions/node.actions';
|
||||
export * from './actions/router.actions';
|
||||
export * from './actions/search.actions';
|
||||
export * from './actions/snackbar.actions';
|
||||
export * from './actions/upload.actions';
|
||||
export * from './actions/viewer.actions';
|
||||
|
||||
export * from './effects/dialog.effects';
|
||||
export * from './effects/router.effects';
|
||||
export * from './effects/snackbar.effects';
|
||||
|
||||
export * from './models/delete-status.model';
|
||||
export * from './models/deleted-node-info.model';
|
||||
export * from './models/node-info.model';
|
||||
export * from './models/search-option.model';
|
||||
|
||||
export * from './selectors/app.selectors';
|
||||
|
||||
export * from './states/app.state';
|
||||
|
||||
export * from './store.module';
|
130
projects/aca-shared/store/src/selectors/app.selectors.ts
Normal file
130
projects/aca-shared/store/src/selectors/app.selectors.ts
Normal file
@@ -0,0 +1,130 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { AppStore } from '../states/app.state';
|
||||
import { createSelector } from '@ngrx/store';
|
||||
|
||||
export const selectApp = (state: AppStore) => state.app;
|
||||
|
||||
export const getHeaderColor = createSelector(
|
||||
selectApp,
|
||||
state => state.headerColor
|
||||
);
|
||||
|
||||
export const getAppName = createSelector(
|
||||
selectApp,
|
||||
state => state.appName
|
||||
);
|
||||
|
||||
export const getLogoPath = createSelector(
|
||||
selectApp,
|
||||
state => state.logoPath
|
||||
);
|
||||
|
||||
export const getLanguagePickerState = createSelector(
|
||||
selectApp,
|
||||
state => state.languagePicker
|
||||
);
|
||||
|
||||
export const getUserProfile = createSelector(
|
||||
selectApp,
|
||||
state => state.user
|
||||
);
|
||||
|
||||
export const getCurrentFolder = createSelector(
|
||||
selectApp,
|
||||
state => state.navigation.currentFolder
|
||||
);
|
||||
|
||||
export const getAppSelection = createSelector(
|
||||
selectApp,
|
||||
state => state.selection
|
||||
);
|
||||
|
||||
export const getSharedUrl = createSelector(
|
||||
selectApp,
|
||||
state => state.sharedUrl
|
||||
);
|
||||
|
||||
export const getNavigationState = createSelector(
|
||||
selectApp,
|
||||
state => state.navigation
|
||||
);
|
||||
|
||||
export const isInfoDrawerOpened = createSelector(
|
||||
selectApp,
|
||||
state => state.infoDrawerOpened
|
||||
);
|
||||
|
||||
export const showFacetFilter = createSelector(
|
||||
selectApp,
|
||||
state => state.showFacetFilter
|
||||
);
|
||||
|
||||
export const getDocumentDisplayMode = createSelector(
|
||||
selectApp,
|
||||
state => state.documentDisplayMode
|
||||
);
|
||||
|
||||
export const getRepositoryStatus = createSelector(
|
||||
selectApp,
|
||||
state => state.repository
|
||||
);
|
||||
|
||||
export const isQuickShareEnabled = createSelector(
|
||||
getRepositoryStatus,
|
||||
info => info.status.isQuickShareEnabled
|
||||
);
|
||||
|
||||
export const isAdmin = createSelector(
|
||||
selectApp,
|
||||
state => state.user.isAdmin
|
||||
);
|
||||
|
||||
export const getSideNavState = createSelector(
|
||||
getAppSelection,
|
||||
getNavigationState,
|
||||
(selection, navigation) => {
|
||||
return {
|
||||
selection,
|
||||
navigation
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
export const getRuleContext = createSelector(
|
||||
getAppSelection,
|
||||
getNavigationState,
|
||||
getUserProfile,
|
||||
getRepositoryStatus,
|
||||
(selection, navigation, profile, repository) => {
|
||||
return {
|
||||
selection,
|
||||
navigation,
|
||||
profile,
|
||||
repository
|
||||
};
|
||||
}
|
||||
);
|
50
projects/aca-shared/store/src/states/app.state.ts
Normal file
50
projects/aca-shared/store/src/states/app.state.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {
|
||||
SelectionState,
|
||||
ProfileState,
|
||||
NavigationState
|
||||
} from '@alfresco/adf-extensions';
|
||||
import { RepositoryInfo } from '@alfresco/js-api';
|
||||
|
||||
export interface AppState {
|
||||
appName: string;
|
||||
headerColor: string;
|
||||
logoPath: string;
|
||||
languagePicker: boolean;
|
||||
sharedUrl: string;
|
||||
selection: SelectionState;
|
||||
user: ProfileState;
|
||||
navigation: NavigationState;
|
||||
infoDrawerOpened: boolean;
|
||||
showFacetFilter: boolean;
|
||||
documentDisplayMode: string;
|
||||
repository: RepositoryInfo;
|
||||
}
|
||||
|
||||
export interface AppStore {
|
||||
app: AppState;
|
||||
}
|
37
projects/aca-shared/store/src/store.module.ts
Normal file
37
projects/aca-shared/store/src/store.module.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/*!
|
||||
* @license
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { EffectsModule } from '@ngrx/effects';
|
||||
import { SnackbarEffects } from './effects/snackbar.effects';
|
||||
import { DialogEffects } from './effects/dialog.effects';
|
||||
import { RouterEffects } from './effects/router.effects';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
EffectsModule.forFeature([SnackbarEffects, DialogEffects, RouterEffects])
|
||||
]
|
||||
})
|
||||
export class SharedStoreModule {}
|
Reference in New Issue
Block a user