| /*! |
| * 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'; |
| 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} |
| 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; |