blob: d4358909d5d17eee3d142d4166414bf3d37bdbac [file] [log] [blame]
/*
* Copyright © 2016-2017 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 Onboard from './onboard/Onboard.js';
import VersionsPage from './versionsPage/VersionsPage.js';
import LicenseModel from './licenseModel/LicenseModel.js';
import LicenseModelOverview from './licenseModel/overview/LicenseModelOverview.js';
import ActivityLog from 'sdc-app/common/activity-log/ActivityLog.js';
import LicenseAgreementListEditor from './licenseModel/licenseAgreement/LicenseAgreementListEditor.js';
import FeatureGroupListEditor from './licenseModel/featureGroups/FeatureGroupListEditor.js';
import LicenseKeyGroupsListEditor from './licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js';
import EntitlementPoolsListEditor from './licenseModel/entitlementPools/EntitlementPoolsListEditor.js';
import SoftwareProduct from './softwareProduct/SoftwareProduct.js';
import SoftwareProductLandingPage from './softwareProduct/landingPage/SoftwareProductLandingPage.js';
import SoftwareProductDetails from './softwareProduct/details/SoftwareProductDetails.js';
import SoftwareProductAttachments from './softwareProduct/attachments/SoftwareProductAttachments.js';
import SoftwareProductProcesses from './softwareProduct/processes/SoftwareProductProcesses.js';
import SoftwareProductDeployment from './softwareProduct/deployment/SoftwareProductDeployment.js';
import SoftwareProductNetworks from './softwareProduct/networks/SoftwareProductNetworks.js';
import SoftwareProductValidation from './softwareProduct/validation/SoftwareProductValidation.js';
import SoftwareProductValidationResults from './softwareProduct/validationResults/SoftwareProductValidationResults.js';
import SoftwareProductDependencies from './softwareProduct/dependencies/SoftwareProductDependencies.js';
import SoftwareProductComponentsList from './softwareProduct/components/SoftwareProductComponents.js';
import SoftwareProductComponentProcessesList from './softwareProduct/components/processes/SoftwareProductComponentProcessesList.js';
import SoftwareProductComponentStorage from './softwareProduct/components/storage/SoftwareProductComponentStorage.js';
import SoftwareProductComponentsNetworkList from './softwareProduct/components/network/SoftwareProductComponentsNetworkList.js';
import SoftwareProductComponentsGeneral from './softwareProduct/components/general/SoftwareProductComponentsGeneral.js';
import SoftwareProductComponentsCompute from './softwareProduct/components/compute/SoftwareProductComponentCompute.js';
import SoftwareProductComponentLoadBalancing from './softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js';
import SoftwareProductComponentsImageList from './softwareProduct/components/images/SoftwareProductComponentsImageList.js';
import SoftwareProductComponentsMonitoring from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js';
import objectValues from 'lodash/values.js';
import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';
import { enums } from './OnboardingConstants.js';
export default class OnboardingView extends React.Component {
static propTypes = {
currentScreen: PropTypes.shape({
screen: PropTypes.oneOf(objectValues(enums.SCREEN)).isRequired,
props: PropTypes.object.isRequired,
itemPermission: PropTypes.object
}).isRequired
};
componentDidMount() {
let element = ReactDOM.findDOMNode(this);
element.addEventListener('click', event => {
if (event.target.tagName === 'A') {
event.preventDefault();
}
});
['wheel', 'mousewheel', 'DOMMouseScroll'].forEach(eventType =>
element.addEventListener(eventType, event =>
event.stopPropagation()
)
);
}
render() {
let { currentScreen, isLoading } = this.props;
let { screen, props } = currentScreen;
const preventClicks = isLoading ? 'no-pointer-events' : '';
return (
<div
className={`dox-ui dox-ui-punch-out dox-ui-punch-out-full-page ${preventClicks}`}>
{(() => {
switch (screen) {
case enums.SCREEN.ONBOARDING_CATALOG:
return <Onboard {...props} />;
case enums.SCREEN.VERSIONS_PAGE:
return <VersionsPage {...props} />;
case enums.SCREEN.LICENSE_AGREEMENTS:
case enums.SCREEN.FEATURE_GROUPS:
case enums.SCREEN.ENTITLEMENT_POOLS:
case enums.SCREEN.LICENSE_KEY_GROUPS:
case enums.SCREEN.LICENSE_MODEL_OVERVIEW:
case enums.SCREEN.ACTIVITY_LOG:
return (
<LicenseModel currentScreen={currentScreen}>
{(() => {
switch (screen) {
case enums.SCREEN
.LICENSE_MODEL_OVERVIEW:
return (
<LicenseModelOverview
{...props}
/>
);
case enums.SCREEN
.LICENSE_AGREEMENTS:
return (
<LicenseAgreementListEditor
{...props}
/>
);
case enums.SCREEN.FEATURE_GROUPS:
return (
<FeatureGroupListEditor
{...props}
/>
);
case enums.SCREEN.ENTITLEMENT_POOLS:
return (
<EntitlementPoolsListEditor
{...props}
/>
);
case enums.SCREEN
.LICENSE_KEY_GROUPS:
return (
<LicenseKeyGroupsListEditor
{...props}
/>
);
case enums.SCREEN.ACTIVITY_LOG:
return (
<ActivityLog {...props} />
);
}
})()}
</LicenseModel>
);
case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE:
case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS:
case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS:
case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES:
case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT:
case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS:
case enums.SCREEN.SOFTWARE_PRODUCT_VALIDATION:
case enums.SCREEN.SOFTWARE_PRODUCT_VALIDATION_RESULTS:
case enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE:
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES:
case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING:
case enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG:
return (
<SoftwareProduct currentScreen={currentScreen}>
{(() => {
switch (screen) {
case enums.SCREEN
.SOFTWARE_PRODUCT_LANDING_PAGE:
return (
<SoftwareProductLandingPage
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_DETAILS:
return (
<SoftwareProductDetails
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_ATTACHMENTS:
return (
<SoftwareProductAttachments
className="no-padding-content-area"
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_PROCESSES:
return (
<SoftwareProductProcesses
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_DEPLOYMENT:
return (
<SoftwareProductDeployment
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_NETWORKS:
return (
<SoftwareProductNetworks
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_VALIDATION:
return (
<SoftwareProductValidation
className="no-padding-content-area"
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_VALIDATION_RESULTS:
return (
<SoftwareProductValidationResults
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_DEPENDENCIES:
return (
<SoftwareProductDependencies
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENTS:
return (
<SoftwareProductComponentsList
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_PROCESSES:
return (
<SoftwareProductComponentProcessesList
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_STORAGE:
return (
<SoftwareProductComponentStorage
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_NETWORK:
return (
<SoftwareProductComponentsNetworkList
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_GENERAL:
return (
<SoftwareProductComponentsGeneral
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_COMPUTE:
return (
<SoftwareProductComponentsCompute
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING:
return (
<SoftwareProductComponentLoadBalancing
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_IMAGES:
return (
<SoftwareProductComponentsImageList
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_COMPONENT_MONITORING:
return (
<SoftwareProductComponentsMonitoring
{...props}
/>
);
case enums.SCREEN
.SOFTWARE_PRODUCT_ACTIVITY_LOG:
return (
<ActivityLog {...props} />
);
}
})()}
</SoftwareProduct>
);
}
})()}
</div>
);
}
}