/* * 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 i18n from 'nfvo-utils/i18n/i18n.js'; import TabulatedEditor from 'src/nfvo-components/editor/TabulatedEditor.jsx'; import ScreensHelper from 'sdc-app/common/helpers/ScreensHelper.js'; import { enums, screenTypes } from 'sdc-app/onboarding/OnboardingConstants.js'; import PermissionsActionHelper from './../permissions/PermissionsActionHelper.js'; import RevisionsActionHelper from './../revisions/RevisionsActionHelper.js'; import LicenseModelActionHelper from './LicenseModelActionHelper.js'; import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js'; import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js'; import { CommitModalType } from 'nfvo-components/panel/versionController/components/CommitCommentModal.jsx'; const buildNavigationBarProps = (licenseModel, screen) => { const { id, vendorName, version } = licenseModel; const meta = { version }; const groups = [ { id, name: vendorName, items: [ { id: enums.SCREEN.LICENSE_MODEL_OVERVIEW, name: i18n('Overview'), meta }, { id: enums.SCREEN.LICENSE_AGREEMENTS, name: i18n('License Agreements'), meta }, { id: enums.SCREEN.FEATURE_GROUPS, name: i18n('Feature Groups'), meta }, { id: enums.SCREEN.ENTITLEMENT_POOLS, name: i18n('Entitlement Pools'), meta }, { id: enums.SCREEN.LICENSE_KEY_GROUPS, name: i18n('License Key Groups'), meta }, { id: enums.SCREEN.ACTIVITY_LOG, name: i18n('Activity Log'), meta } ] } ]; return { activeItemId: screen, groups }; }; const buildVersionControllerProps = ({ licenseModelEditor = { data: {} }, versions, currentVersion, userInfo, usersList, permissions, isArchived, itemPermission, isReadOnlyMode }) => { const { isValidityData = true } = licenseModelEditor; return { version: currentVersion, viewableVersions: versions, isFormDataValid: isValidityData, permissions, userInfo, usersList, isArchived, itemName: licenseModelEditor.data.vendorName, itemPermission, isReadOnlyMode }; }; const mapStateToProps = ( { users: { userInfo, usersList }, licenseModel: { licenseModelEditor }, versionsPage: { permissions, versionsList: { versions } } }, { currentScreen: { screen, itemPermission, props: { isReadOnlyMode, version: currentVersion } } } ) => { return { versionControllerProps: buildVersionControllerProps({ licenseModelEditor, versions, currentVersion, userInfo, permissions, usersList, isArchived: itemPermission.isArchived, itemPermission, isReadOnlyMode }), navigationBarProps: buildNavigationBarProps( licenseModelEditor.data, screen ) }; }; const mapActionsToProps = ( dispatch, { currentScreen: { screen, props: { licenseModelId, version } } } ) => { return { onVersionControllerAction: (action, version, comment) => LicenseModelActionHelper.performVCAction(dispatch, { licenseModelId, action, version, comment }).then(updatedVersion => { ScreensHelper.loadScreen(dispatch, { screen, screenType: screenTypes.LICENSE_MODEL, props: { licenseModelId, version: updatedVersion } }); }), onOpenCommentCommitModal: ({ onCommit, title }) => dispatch({ type: modalActionTypes.GLOBAL_MODAL_SHOW, data: { modalComponentName: modalContentMapper.COMMIT_COMMENT, modalComponentProps: { onCommit, type: CommitModalType.COMMIT }, title } }), onVersionSwitching: version => { ScreensHelper.loadScreen(dispatch, { screen, screenType: screenTypes.LICENSE_MODEL, props: { licenseModelId, version } }); }, onManagePermissions() { PermissionsActionHelper.openPermissonsManager(dispatch, { itemId: licenseModelId, askForRights: false }); }, onMoreVersionsClick: ({ itemName, users }) => { ScreensHelper.loadScreen(dispatch, { screen: enums.SCREEN.VERSIONS_PAGE, screenType: screenTypes.LICENSE_MODEL, props: { licenseModelId, licenseModel: { name: itemName }, usersList: users } }); }, onOpenPermissions: ({ users }) => { return PermissionsActionHelper.fetchItemUsers(dispatch, { itemId: licenseModelId, allUsers: users }); }, onOpenRevisionsModal: () => { return RevisionsActionHelper.openRevisionsView(dispatch, { itemId: licenseModelId, version: version, itemType: screenTypes.LICENSE_MODEL }); }, onNavigate: ({ id }) => { ScreensHelper.loadScreen(dispatch, { screen: id, screenType: screenTypes.LICENSE_MODEL, props: { licenseModelId, version } }); } }; }; export default connect(mapStateToProps, mapActionsToProps)(TabulatedEditor);