summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsView.jsx
blob: d6ef604a221de85f2453663796ed4ccc800262c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*!
 * 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;