1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-30 13:41:57 +02:00
onion/js/components/ascribe_detail/history_iterator.js

60 lines
1.9 KiB
JavaScript
Raw Normal View History

2015-08-20 15:50:30 +02:00
'use strict';
import React from 'react';
import Form from '../ascribe_forms/form';
import Property from '../ascribe_forms/property';
2015-11-16 11:45:56 +01:00
import { replaceSubstringAtIndex } from '../../utils/general_utils';
2015-08-20 15:50:30 +02:00
let HistoryIterator = React.createClass({
propTypes: {
history: React.PropTypes.array
},
2015-11-16 11:45:56 +01:00
composeHistoryDescription(historicalEvent) {
if(historicalEvent.length === 3) {
// We want to get the capturing group without the quotes,
// which is why we access the match list at index 1 and not 0
const contractName = historicalEvent[1].match(/\"(.*)\"/)[1];
const historicalEventDescription = replaceSubstringAtIndex(historicalEvent[1], `"${contractName}"`, '');
return (
<span>
{historicalEventDescription}
<a className="anchor-no-expand-print"
target="_blank"
href={historicalEvent[2]}>
{contractName}
</a>
2015-11-16 11:45:56 +01:00
</span>
);
} else if(historicalEvent.length === 2) {
return historicalEvent[1];
} else {
throw new Error('Expected an historical event list with either 3 or 2 items. Got less or more.');
}
},
2015-08-20 15:50:30 +02:00
render() {
return (
<Form>
{this.props.history.map((historicalEvent, i) => {
return (
<Property
name={i}
key={i}
label={ historicalEvent[0] }
editable={false}>
2015-11-16 11:45:56 +01:00
<pre className="ascribe-pre">{this.composeHistoryDescription(historicalEvent)}</pre>
2015-08-20 15:50:30 +02:00
</Property>
);
})}
<hr />
</Form>
);
}
});
export default HistoryIterator;