var React = require('react');
import {map, isString} from 'lodash';
var ResourceLink = require('../generic/resource_link'),
RoleLink = require('../generic/role_link');
var FieldsMixin = require('./fields_mixin'),
Timestamp = require('./timestamp'),
humanizeEvent = require('./humanize_event');
export default React.createClass({
displayName: 'AuditEntry',
mixins: [FieldsMixin],
propTypes: {
compact: React.PropTypes.bool
},
getDefaultProps() {
return {
compact: false
};
},
render() {
var items = map(this.fields(), (field) => {
var item = this.transformField(field, this.props[field]);
return (
{item}
|
);
});
return (
{items}
);
},
transformField(key, value) {
var ret = [''];
switch (key) {
case 'entities':
ret = [
isString(this.props.resource) ?
: null,
isString(this.props.role) ?
: null
];
break;
case 'user':
if (isString(value)) {
ret = [];
}
break;
case 'acting_as':
if ((isString(value)) && (value !== this.props.user)) {
ret = [];
}
break;
case 'auditview_user': //virtual field
var actingUser = this.props.user;
var actingRole = this.props.acting_as;
ret = [];
if ((isString(actingRole)) && (actingRole !== actingUser)) {
ret.push([
' as ',
]);
}
break;
case 'timestamp':
if (isString(value)) {
ret = [];
}
break;
case 'auditview_action':
ret = humanizeEvent(this.props);
break;
default:
ret = [value];
}
return ret;
}
});