blob: ad91a0da65405d2a61b208e63097ee41800430f4 [file] [log] [blame]
/*-
* ============LICENSE_START=======================================================
* SDC
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* 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.
* ============LICENSE_END=========================================================
*/
import {connect} from 'react-redux';
import i18n from 'nfvo-utils/i18n/i18n.js';
import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js';
import TabulatedEditor from 'src/nfvo-components/editor/TabulatedEditor.jsx';
import {enums} from 'sdc-app/onboarding/OnboardingConstants.js';
import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js';
import {navigationItems} from './LicenseModelConstants.js';
import LicenseModelActionHelper from './LicenseModelActionHelper.js';
import LicenseAgreementActionHelper from './licenseAgreement/LicenseAgreementActionHelper.js';
import FeatureGroupsActionHelper from './featureGroups/FeatureGroupsActionHelper.js';
import EntitlementPoolsActionHelper from './entitlementPools/EntitlementPoolsActionHelper.js';
import LicenseKeyGroupsActionHelper from './licenseKeyGroups/LicenseKeyGroupsActionHelper.js';
const buildNavigationBarProps = (licenseModel, screen) => {
const {id, vendorName, version} = licenseModel;
const meta = {version};
const groups = [{
id,
name: vendorName,
items: [
{
id: navigationItems.LICENSE_AGREEMENTS,
name: i18n('License Agreements'),
meta
},
{
id: navigationItems.FEATURE_GROUPS,
name: i18n('Feature Groups'),
meta
},
{
id: navigationItems.ENTITLEMENT_POOLS,
name: i18n('Entitlement Pools'),
meta
},
{
id: navigationItems.LICENSE_KEY_GROUPS,
name: i18n('License Key Groups'),
meta
}
]
}];
const activeItemId = ({
[enums.SCREEN.LICENSE_AGREEMENTS]: navigationItems.LICENSE_AGREEMENTS,
[enums.SCREEN.FEATURE_GROUPS]: navigationItems.FEATURE_GROUPS,
[enums.SCREEN.ENTITLEMENT_POOLS]: navigationItems.ENTITLEMENT_POOLS,
[enums.SCREEN.LICENSE_KEY_GROUPS]: navigationItems.LICENSE_KEY_GROUPS
})[screen];
return {
activeItemId, groups
};
};
const buildVersionControllerProps = (licenseModel) => {
let {version, viewableVersions, status: currentStatus, lockingUser} = licenseModel;
let {status, isCheckedOut} = (currentStatus === versionStatusEnum.CHECK_OUT_STATUS) ?
VersionControllerUtils.getCheckOutStatusKindByUserID(currentStatus, lockingUser) :
{status: currentStatus, isCheckedOut: false};
return {
version,
viewableVersions,
status,
isCheckedOut
};
};
const mapStateToProps = ({licenseModel: {licenseModelEditor}}, {currentScreen: {screen}}) => {
return {
versionControllerProps: buildVersionControllerProps(licenseModelEditor.data),
navigationBarProps: buildNavigationBarProps(licenseModelEditor.data, screen)
};
};
const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {licenseModelId}}}) => {
return {
onVersionControllerAction: action =>
LicenseModelActionHelper.performVCAction(dispatch, {licenseModelId, action}).then(() => {
switch(screen) {
case enums.SCREEN.LICENSE_AGREEMENTS:
LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId});
break;
case enums.SCREEN.FEATURE_GROUPS:
FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId});
break;
case enums.SCREEN.ENTITLEMENT_POOLS:
EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {licenseModelId});
break;
case enums.SCREEN.LICENSE_KEY_GROUPS:
LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {licenseModelId});
break;
}
}),
onVersionSwitching: version => LicenseAgreementActionHelper.switchVersion(dispatch, {licenseModelId, version}),
onClose: () => OnboardingActionHelper.navigateToOnboardingCatalog(dispatch),
onNavigate: ({id, meta: {version}}) => {
switch(id) {
case navigationItems.LICENSE_AGREEMENTS:
OnboardingActionHelper.navigateToLicenseAgreements(dispatch, {licenseModelId, version});
break;
case navigationItems.FEATURE_GROUPS:
OnboardingActionHelper.navigateToFeatureGroups(dispatch, {licenseModelId, version});
break;
case navigationItems.ENTITLEMENT_POOLS:
OnboardingActionHelper.navigateToEntitlementPools(dispatch, {licenseModelId, version});
break;
case navigationItems.LICENSE_KEY_GROUPS:
OnboardingActionHelper.navigateToLicenseKeyGroups(dispatch, {licenseModelId, version});
break;
}
}
};
};
export default connect(mapStateToProps, mapActionsToProps)(TabulatedEditor);