/*!
* 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 PropTypes from 'prop-types';
import i18n from 'nfvo-utils/i18n/i18n.js';
import { actionsEnum } from './VersionControllerConstants.js';
import ActionButtons from './components/ActionButtons.jsx';
import NotificationsView from 'sdc-app/onboarding/userNotifications/NotificationsView.jsx';
class VersionController extends React.Component {
static propTypes = {
version: PropTypes.object,
viewableVersions: PropTypes.array,
onVersionSwitching: PropTypes.func,
callVCAction: PropTypes.func,
onSave: PropTypes.func,
onClose: PropTypes.func,
isFormDataValid: PropTypes.bool,
onOpenCommentCommitModal: PropTypes.func,
isReadOnlyMode: PropTypes.bool
};
state = {
showPermissions: false,
showRevisions: false
};
render() {
let {
version = {},
viewableVersions = [],
onVersionSwitching,
onMoreVersionsClick,
callVCAction,
onSave,
isReadOnlyMode,
itemPermission,
isFormDataValid,
onClose,
onManagePermissions,
permissions = {},
userInfo,
usersList,
itemName,
onOpenCommentCommitModal,
onOpenRevisionsModal,
isManual,
candidateInProcess,
isArchived
} = this.props;
return (
onMoreVersionsClick({
itemName,
users: usersList
})
}
/>
{isArchived && (
{i18n('Archived')}
)}
this.submit(callVCAction, version)
: undefined
}
onRevert={
callVCAction
? () => this.revert(callVCAction, version)
: undefined
}
onOpenRevisionsModal={onOpenRevisionsModal}
onSave={onSave ? () => onSave() : undefined}
permissions={permissions}
userInfo={userInfo}
onManagePermissions={onManagePermissions}
showPermissions={this.state.showPermissions}
onClosePermissions={() =>
this.setState({ showPermissions: false })
}
onClickPermissions={() => this.onClickPermissions()}
onSync={
callVCAction
? () => this.sync(callVCAction, version)
: undefined
}
onOpenCommentCommitModal={onOpenCommentCommitModal}
onCommit={
callVCAction
? comment =>
this.commit(
callVCAction,
version,
comment
)
: undefined
}
isFormDataValid={isFormDataValid}
itemPermissions={itemPermission}
isArchived={isArchived}
isReadOnlyMode={
isReadOnlyMode || candidateInProcess
}
isManual={isManual}
/>
{onClose && (
onClose()}
data-test-id="vc-cancel-btn">
{' '}
X
)}
);
}
onClickPermissions() {
let { onOpenPermissions, usersList } = this.props;
let { showPermissions } = this.state;
let promise = showPermissions
? Promise.resolve()
: onOpenPermissions({ users: usersList });
promise.then(() =>
this.setState({ showPermissions: !showPermissions })
);
}
submit(callVCAction, version) {
const action = actionsEnum.SUBMIT;
callVCAction(action, version);
}
revert(callVCAction, version) {
const action = actionsEnum.REVERT;
callVCAction(action, version);
}
sync(callVCAction, version) {
const action = actionsEnum.SYNC;
callVCAction(action, version);
}
commit(callVCAction, version, comment) {
const action = actionsEnum.COMMIT;
callVCAction(action, version, comment);
}
permissions() {}
}
function VersionSelector(props) {
let {
version = {},
onMoreVersionsClick,
viewableVersions = [],
onVersionSwitching
} = props;
const includedVersions = viewableVersions.filter(ver => {
return ver.id === version.id;
});
return (
{i18n('Versions Page')}
);
}
export default VersionController;