/*! * Copyright © 2016-2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing * permissions and limitations under the License. */ import { connect } from 'react-redux'; import VersionsPageActionHelper from './VersionsPageActionHelper.js'; import VersionsPageCreationActionHelper from './creation/VersionsPageCreationActionHelper.js'; import PermissionsActionHelper from '../permissions/PermissionsActionHelper.js'; import { onboardingMethod as onboardingMethodType } from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; import VersionsPageView from './VersionsPage.jsx'; import { actionTypes as ModalActionTypes } from 'nfvo-components/modal/GlobalModalConstants'; import i18n from 'nfvo-utils/i18n/i18n'; import { itemTypes } from 'sdc-app/onboarding/versionsPage/VersionsPageConstants'; export const mapStateToProps = ({ users: { userInfo }, versionsPage: { permissions, versionsList }, currentScreen: { itemPermission: { isCollaborator, isArchived }, props: { itemId } }, softwareProductList = [] }) => { let { versions = [], selectedVersion } = versionsList; let { owner, contributors, viewers } = permissions; versions.sort((a, b) => Number(a.name) - Number(b.name)); const curentSoftwareProduct = softwareProductList.find( item => item.id === itemId ); return { versions, contributors, viewers, owner, currentUser: userInfo, selectedVersion, isCollaborator, isManual: curentSoftwareProduct && curentSoftwareProduct.onboardingMethod === onboardingMethodType.MANUAL, isArchived }; }; export const mapActionsToProps = ( dispatch, { itemType, itemId, additionalProps } ) => { return { onNavigateToVersion({ version }) { VersionsPageActionHelper.onNavigateToVersion(dispatch, { version, itemId, itemType, additionalProps }); }, onSelectVersion({ version }) { VersionsPageActionHelper.selectVersion(dispatch, { version }); }, onCreateVersion({ version }) { VersionsPageCreationActionHelper.open(dispatch, { baseVersion: version, itemId, itemType, additionalProps }); }, onManagePermissions() { PermissionsActionHelper.openPermissonsManager(dispatch, { itemId, askForRights: false }); }, onTreeFullScreen(treeProps) { VersionsPageActionHelper.openTree(dispatch, treeProps); }, onModalNodeClick({ version }) { VersionsPageActionHelper.selectVersionFromModal(dispatch, { version }); }, onArchive: () => VersionsPageActionHelper.archiveItem(dispatch, itemId), onRestore: () => VersionsPageActionHelper.restoreItemFromArchive(dispatch, itemId), onDelete: () => { let confirmMsgCode; if (itemType === itemTypes.LICENSE_MODEL) { confirmMsgCode = 'vlm.delete.archived.warning'; } else if (itemType === itemTypes.SOFTWARE_PRODUCT) { confirmMsgCode = 'vsp.delete.archived.warning'; } dispatch({ type: ModalActionTypes.GLOBAL_MODAL_WARNING, data: { msg: i18n(confirmMsgCode), confirmationButtonText: i18n('button.proceed.label'), title: i18n('WARNING'), onConfirmed: () => VersionsPageActionHelper.deleteArchivedItem( dispatch, itemId, itemType ) } }); } }; }; export default connect(mapStateToProps, mapActionsToProps)(VersionsPageView);