Add collaboration feature
[sdc.git] / openecomp-ui / src / sdc-app / onboarding / softwareProduct / deployment / editor / SoftwareProductDeploymentEditor.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 import {connect} from 'react-redux';
17 import SoftwareProductDeploymentEditorView from './SoftwareProductDeploymentEditorView.jsx';
18 import SoftwareProdcutDeploymentActionHelper from '../SoftwareProductDeploymentActionHelper.js';
19 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
20 import {DEPLOYMENT_FLAVORS_FORM_NAME} from '../SoftwareProductDeploymentConstants.js';
21
22 export function mapStateToProps({
23         licenseModel,
24         softwareProduct,
25         currentScreen: {props: {isReadOnlyMode}}
26 }) {
27         let {
28                 softwareProductEditor: {
29                         data: currentSoftwareProduct = {}
30                 },
31                 softwareProductComponents: {
32                         componentsList,
33                         computeFlavor: {
34                                 computesList
35                         }
36                 },
37                 softwareProductDeployment: {
38                         deploymentFlavors,
39                         deploymentFlavorEditor: {
40                                 data = {},
41                                 genericFieldInfo,
42                                 formReady
43                         }
44                 }
45         } = softwareProduct;
46
47         let {
48                         featureGroup: {
49                                 featureGroupsList
50                         }
51         } = licenseModel;
52
53         let isFormValid = ValidationHelper.checkFormValid(genericFieldInfo);
54         let selectedFeatureGroupsIds = currentSoftwareProduct.licensingData ? currentSoftwareProduct.licensingData.featureGroups || [] : [];
55         let selectedFeatureGroupsList = featureGroupsList
56                 .filter(featureGroup => selectedFeatureGroupsIds.includes(featureGroup.id))
57                 .map(featureGroup => ({value: featureGroup.id, label: featureGroup.name}));
58
59         let DFNames = {};
60
61         deploymentFlavors.map(deployment => {
62                 DFNames[deployment.model.toLowerCase()] = deployment.id;
63         });
64
65         return {
66                 data,
67                 selectedFeatureGroupsList,
68                 genericFieldInfo,
69                 DFNames,
70                 isFormValid,
71                 formReady,
72                 isReadOnlyMode,
73                 componentsList,
74                 computesList,
75                 isEdit: Boolean(data.id)
76         };
77 }
78
79 function mapActionsToProps(dispatch, {softwareProductId, version}) {
80         return {
81                 onDataChanged: (deltaData, customValidations) => ValidationHelper.dataChanged(dispatch, {deltaData, formName: DEPLOYMENT_FLAVORS_FORM_NAME, customValidations}),
82                 onClose: () => SoftwareProdcutDeploymentActionHelper.closeDeploymentFlavorEditor(dispatch),
83                 onCreate: data =>  SoftwareProdcutDeploymentActionHelper.createDeploymentFlavor(dispatch, {softwareProductId, data, version}),
84                 onEdit: data =>  SoftwareProdcutDeploymentActionHelper.editDeploymentFlavor(dispatch, {softwareProductId, deploymentFlavorId: data.id, data, version}),
85                 onValidateForm: () => ValidationHelper.validateForm(dispatch, DEPLOYMENT_FLAVORS_FORM_NAME)
86         };
87 }
88
89 export default connect(mapStateToProps, mapActionsToProps)(SoftwareProductDeploymentEditorView);