blob: 74ef733c554681bbece20bc7dfff14b3fcfee863 [file] [log] [blame]
/*
* 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 'onap-ui-react';
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;