| /* |
| * 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 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-modal"> |
| <Form |
| hasButtons={true} |
| isValid={this.state.revertId} |
| onSubmit={() => onRevert(this.state.revertId)} |
| onReset={() => onCancel()} |
| submitButtonText={i18n('Revert')} |
| labledButtons={true} |
| btnClassName="sdc-modal__footer"> |
| <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; |