/*! * 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 * revisions and limitations under the License. */ import React from 'react'; import Form from 'nfvo-components/input/validation/Form.jsx'; import i18n from 'nfvo-utils/i18n/i18n.js'; import ShowMore from 'react-show-more-text'; import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js'; import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; import ListEditorItemViewField from 'nfvo-components/listEditor/ListEditorItemViewField.jsx'; class RevisionsView extends React.Component { constructor(props) { super(props); this.state = { revertId: null }; } render() { let { onCancel, onRevert, revisions, users } = this.props; return ( <div className="manage-revisions-page"> <Form hasButtons={true} isValid={this.state.revertId} onSubmit={() => onRevert(this.state.revertId)} onReset={() => onCancel()} submitButtonText={i18n('Revert')} labledButtons={true}> <ListEditorView title={i18n('Select a Commit')} isReadOnlyMode={false}> {revisions.map(revision => { return ( <div key={revision.id} data-test-id="revision-list-item" className={`revision-list-item ${ this.state.revertId === revision.id ? 'selected' : '' }`}> <ListEditorItemView isReadOnlyMode={false} onSelect={() => this.setState({ revertId: revision.id }) }> <ListEditorItemViewField> <div className="revision-list-item-fields"> <div data-test-id="revision-user" className="revision-user"> <SVGIcon name="user" label={ users.find( userObject => userObject.userId === revision.user ).fullName } labelPosition="right" /> </div> <div className="revision-date" data-test-id="revision-date"> <span className="revision-date"> {i18n.dateNormal( revision.time, { year: 'numeric', month: 'numeric', day: 'numeric' } )} </span> <span className="revision-time"> {i18n.dateNormal( revision.time, { hour: 'numeric', minute: 'numeric', hour12: true } )} </span> </div> <div className="revision-message" data-test-id="revision-message"> {revision.message && ( <ShowMore anchorClass="more-less" lines={2} more={i18n('More')} less={i18n('Less')}> {revision.message} </ShowMore> )} </div> </div> </ListEditorItemViewField> </ListEditorItemView> </div> ); })} </ListEditorView> </Form> </div> ); } } export default RevisionsView;