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; } });