summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js')
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js147
1 files changed, 147 insertions, 0 deletions
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js
new file mode 100644
index 0000000000..ad91a0da65
--- /dev/null
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js
@@ -0,0 +1,147 @@
+/*-
+ * ============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);