Add collaboration feature
[sdc.git] / openecomp-ui / src / sdc-app / onboarding / versionsPage / VersionsPage.js
1 /*!
2  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13  * or implied. See the License for the specific language governing
14  * permissions and limitations under the License.
15  */
16
17 import {connect} from 'react-redux';
18 import VersionsPageActionHelper from './VersionsPageActionHelper.js';
19 import VersionsPageCreationActionHelper from './creation/VersionsPageCreationActionHelper.js';
20 import PermissionsActionHelper from '../permissions/PermissionsActionHelper.js';
21 import {onboardingMethod as onboardingMethodType} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
22 import VersionsPageView from './VersionsPage.jsx';
23
24 export const mapStateToProps = ({
25         users: {userInfo},
26         versionsPage: {permissions, versionsList},
27         currentScreen: {itemPermission: {isCollaborator}, props: {itemId}},
28         softwareProductList = []
29 }) => {
30
31         let {versions, selectedVersion} = versionsList;
32         let {owner, contributors, viewers} = permissions;
33
34         // sorting the version list
35         versions.sort((a,b) => {
36                 let statusCompare = b.status.localeCompare(a.status);
37                 if (statusCompare === 0) {
38                         return b.modificationTime - a.modificationTime;
39                 } else {
40                         return statusCompare;
41                 }
42
43         });
44
45         const curentSoftwareProduct = softwareProductList.find(item => item.id === itemId);
46         return {
47                 versions,
48                 contributors,
49                 viewers,
50                 owner,
51                 currentUser: userInfo,
52                 selectedVersion,
53                 isCollaborator,
54                 isManual: curentSoftwareProduct && curentSoftwareProduct.onboardingMethod === onboardingMethodType.MANUAL
55         };
56
57 };
58
59 export const mapActionsToProps = (dispatch, {itemType, itemId, additionalProps}) => {
60         return {
61                 onNavigateToVersion({version}) {
62                         VersionsPageActionHelper.onNavigateToVersion(dispatch, {version, itemId, itemType, additionalProps});
63                 },
64
65                 onSelectVersion({version}) {
66                         VersionsPageActionHelper.selectVersion(dispatch, {version});
67                 },
68
69                 onCreateVersion({version}) {
70                         VersionsPageCreationActionHelper.open(dispatch, {baseVersion: version, itemId, itemType, additionalProps});
71                 },
72
73                 onManagePermissions() {
74                         PermissionsActionHelper.openPermissonsManager(dispatch, {itemId, askForRights: false});
75                 },
76
77                 onTreeFullScreen(treeProps) {
78                         VersionsPageActionHelper.openTree(dispatch, treeProps);
79                 },
80
81                 onModalNodeClick({version}) {
82                         VersionsPageActionHelper.selectVersionFromModal(dispatch, {version});
83                 }
84         };
85 };
86
87 export default connect(mapStateToProps, mapActionsToProps)(VersionsPageView);