a3c1a8af6c49f29fa5cc5242f242d92951a77ba2
[sdc.git] / openecomp-ui / src / sdc-app / onboarding / versionsPage / VersionsPage.js
1 /*!
2  * Copyright © 2016-2018 European Support Limited
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: {
28         itemPermission: { isCollaborator, isArchived },
29         props: { itemId }
30     },
31     softwareProductList = []
32 }) => {
33     let { versions = [], selectedVersion } = versionsList;
34     let { owner, contributors, viewers } = permissions;
35
36     versions.sort((a, b) => Number(a.name) > Number(b.name));
37     const curentSoftwareProduct = softwareProductList.find(
38         item => item.id === itemId
39     );
40     return {
41         versions,
42         contributors,
43         viewers,
44         owner,
45         currentUser: userInfo,
46         selectedVersion,
47         isCollaborator,
48         isManual:
49             curentSoftwareProduct &&
50             curentSoftwareProduct.onboardingMethod ===
51                 onboardingMethodType.MANUAL,
52         isArchived
53     };
54 };
55
56 export const mapActionsToProps = (
57     dispatch,
58     { itemType, itemId, additionalProps }
59 ) => {
60     return {
61         onNavigateToVersion({ version }) {
62             VersionsPageActionHelper.onNavigateToVersion(dispatch, {
63                 version,
64                 itemId,
65                 itemType,
66                 additionalProps
67             });
68         },
69
70         onSelectVersion({ version }) {
71             VersionsPageActionHelper.selectVersion(dispatch, { version });
72         },
73
74         onCreateVersion({ version }) {
75             VersionsPageCreationActionHelper.open(dispatch, {
76                 baseVersion: version,
77                 itemId,
78                 itemType,
79                 additionalProps
80             });
81         },
82
83         onManagePermissions() {
84             PermissionsActionHelper.openPermissonsManager(dispatch, {
85                 itemId,
86                 askForRights: false
87             });
88         },
89
90         onTreeFullScreen(treeProps) {
91             VersionsPageActionHelper.openTree(dispatch, treeProps);
92         },
93
94         onModalNodeClick({ version }) {
95             VersionsPageActionHelper.selectVersionFromModal(dispatch, {
96                 version
97             });
98         },
99         onArchive: () => VersionsPageActionHelper.archiveItem(dispatch, itemId),
100         onRestore: () =>
101             VersionsPageActionHelper.restoreItemFromArchive(dispatch, itemId)
102     };
103 };
104
105 export default connect(mapStateToProps, mapActionsToProps)(VersionsPageView);