| /*! |
| * 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 React from 'react'; |
| import VersionList from './components/VersionList.jsx'; |
| import PermissionsView from './components/PermissionsView.jsx'; |
| import Tree from 'nfvo-components/tree/Tree.jsx'; |
| import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js'; |
| import Button from 'sdc-ui/lib/react/Button.js'; |
| import i18n from 'nfvo-utils/i18n/i18n.js'; |
| import featureToggle from 'sdc-app/features/featureToggle.js'; |
| |
| const DepricateButton = ({ depricateAction, title }) => ( |
| <div className="depricate-btn-wrapper"> |
| <Button |
| data-test-id="depricate-action-btn" |
| className="depricate-btn" |
| onClick={depricateAction}> |
| {title} |
| </Button> |
| </div> |
| ); |
| |
| const FeatureDepricatedButton = featureToggle('ARCHIVE_ITEM')(DepricateButton); |
| |
| const VersionPageTitle = ({ |
| itemName, |
| depricatedTitle, |
| isArchived, |
| onRestore, |
| onArchive |
| }) => { |
| return ( |
| <div className="version-page-header"> |
| <div className="versions-page-title">{`${i18n( |
| 'Available Versions' |
| )} - ${itemName} ${depricatedTitle}`}</div> |
| <FeatureDepricatedButton |
| depricateAction={ |
| isArchived ? () => onRestore() : () => onArchive() |
| } |
| title={i18n(isArchived ? 'RESTORE' : 'ARCHIVE')} |
| /> |
| </div> |
| ); |
| }; |
| |
| class VersionsPage extends React.Component { |
| state = { |
| showExpanded: false |
| }; |
| render() { |
| let { |
| versions, |
| owner, |
| contributors, |
| currentUser, |
| isCollaborator, |
| itemName = '', |
| viewers, |
| onSelectVersion, |
| onNavigateToVersion, |
| onTreeFullScreen, |
| onManagePermissions, |
| onCreateVersion, |
| selectedVersion, |
| onModalNodeClick, |
| isManual, |
| isArchived, |
| onArchive, |
| onRestore |
| } = this.props; |
| const depricatedTitle = isArchived ? i18n('(Archived)') : ''; |
| return ( |
| <div className="versions-page-view"> |
| <VersionPageTitle |
| itemName={itemName} |
| depricatedTitle={depricatedTitle} |
| onArchive={onArchive} |
| isArchived={isArchived} |
| onRestore={onRestore} |
| /> |
| <PermissionsView |
| owner={owner} |
| contributors={contributors} |
| viewers={viewers} |
| currentUser={currentUser} |
| isManual={isManual} |
| onManagePermissions={onManagePermissions} |
| /> |
| <div className="versions-page-list-and-tree"> |
| <div className="version-tree-wrapper"> |
| <div className="version-tree-title-container"> |
| <div className="version-tree-title"> |
| {i18n('Version Tree')} |
| </div> |
| {this.state.showExpanded && ( |
| <SVGIcon |
| name="expand" |
| className="version-tree-full-screen" |
| onClick={() => |
| onTreeFullScreen({ |
| name: 'versions-tree-popup', |
| width: 798, |
| height: 500, |
| nodes: versions.map(version => ({ |
| id: version.id, |
| name: version.name, |
| parent: version.baseId || '' |
| })), |
| onNodeClick: version => |
| onModalNodeClick({ version }), |
| selectedNodeId: selectedVersion, |
| scrollable: true, |
| toWiden: true |
| }) |
| } |
| /> |
| )} |
| </div> |
| <Tree |
| name={'versions-tree'} |
| width={200} |
| allowScaleWidth={false} |
| nodes={versions.map(version => ({ |
| id: version.id, |
| name: version.name, |
| parent: version.baseId || '' |
| }))} |
| onNodeClick={version => |
| onSelectVersion({ version }) |
| } |
| onRenderedBeyondWidth={() => { |
| this.setState({ showExpanded: true }); |
| }} |
| selectedNodeId={selectedVersion} |
| /> |
| </div> |
| <VersionList |
| versions={versions} |
| onSelectVersion={onSelectVersion} |
| onNavigateToVersion={onNavigateToVersion} |
| onCreateVersion={isArchived ? false : onCreateVersion} |
| selectedVersion={selectedVersion} |
| isCollaborator={isCollaborator} |
| /> |
| </div> |
| </div> |
| ); |
| } |
| } |
| |
| export default VersionsPage; |