var React = require('react'); var objectAssign = require('object-assign'); var Base = require('components/Base.react'); var cx = require('classnames'); var u = require('utils/HelperUtil'); var RequestStore = require('stores/ComplaintPage/RequestStore'); var RequestEmailResourceUtil = require('utils/RequestEmailResourceUtil.js'); var RequestDocumentErrorPresenter = require('presenters/RequestDocumentErrorPresenter'); var InterfaceText = require('components/Shared/InterfaceText.react'); var TickIcon = require('components/Shared/TickIcon'); var RequestModalContent = React.createClass(objectAssign(Base(RequestStore), { propTypes: { document: React.PropTypes.object }, contextTypes: { modalName: React.PropTypes.string, action: React.PropTypes.func }, getInitialState: function () { return { requested: false, submitFailed: false, errors: {}, email: ''
var _ = require('lodash'); var React = require('react'); var Base = require('components/Base.react'); var ComplaintListAPI = require('utils/ComplaintListAPI'); var ComplaintSectionStore = require('stores/OfficerPage/ComplaintSectionStore'); var Counter = require('components/DataToolPage/Counter.react'); var InvestigationList = require('components/InvestigatorPage/InvestigationList.react'); var OutcomeFilter = require('components/DataToolPage/ComplaintList/OutcomeFilter.react'); var RequestModal = require('components/DataToolPage/Complaint/RequestModal.react'); var InvestigationsSection = React.createClass(_.assign(Base(ComplaintSectionStore), { componentDidMount: function () { var investigator = this.props.investigator.id || ''; ComplaintSectionStore.addChangeListener(this._onChange); ComplaintListAPI.getAllForInvestigator(investigator); }, componentWillUnmount: function () { ComplaintSectionStore.removeChangeListener(this._onChange); }, componentWillReceiveProps: function (newProps) { var investigator = newProps.investigator.id || ''; ComplaintListAPI.getAllForInvestigator(investigator); }, render: function () { return (
var _ = require('lodash'); var React = require('react'); var classnames = require('classnames'); var PropTypes = React.PropTypes; var Base = require('components/Base.react'); var Allegation = require('components/DataToolPage/Allegation.react'); var ComplaintListActions = require('actions/ComplaintList/ComplaintListActions'); var ComplaintListStore = require('stores/ComplaintListStore'); var SessionAPI = require('utils/SessionAPI'); var AllegationPresenterFactory = require('presenters/AllegationPresenterFactory'); var InvestigationListRow = React.createClass(_.assign(Base(ComplaintListStore), { propTypes: { complaint: PropTypes.object.isRequired }, componentDidUpdate: function (e) { var id = this.props.complaint.allegation.id; var kindOfUserInteraction = this.state.show ? 'open' : 'close'; ga('send', 'event', 'allegation', kindOfUserInteraction, id); }, detailRendered: function () { return this.state.hasShown || this.detailIsCurrentlyShown(); }, detailIsCurrentlyShown: function () { return this.state.activeComplaints.indexOf(this.props.complaint['officer_allegation']['id']) > -1;
var React = require('react'); var objectAssign = require('object-assign'); var Base = require('components/Base.react'); var FailedSearch = require('components/Shared/SearchablePage/SearchResults/FailedSearch.react'); var SuccessfulSearch = require('components/Shared/SearchablePage/SearchResults/SuccessfulSearch.react'); var Wrapper = require('components/Shared/Wrapper.react'); var SearchResultsStore = require('stores/MainPage/SearchResultsStore'); var LoadingPage = require('components/Shared/LoadingPage.react'); var SearchResults = React.createClass(objectAssign(Base(SearchResultsStore), { getInitialState: function () { return { 'searching': 0, 'success': false, 'term': '', 'suggestions': [] }; }, render: function () { if (this.state.searching) { return ( <LoadingPage /> ); } if (!this.state.success) { return (
var _ = require('lodash'); var React = require('react'); var cookie = require('react-cookie'); var Base = require('components/Base.react'); var DisclaimerStore = require('stores/DisclaimerStore'); var DisclaimerActions = require('actions/DisclaimerActions'); var Disclaimer = React.createClass(_.assign(Base(DisclaimerStore), { componentDidUpdate: function () { if (this.state.show) { jQuery('#disclaimer').modal('show'); } }, hiddenModal: function () { DisclaimerActions.hidden(); }, componentDidMount: function () { DisclaimerStore.addChangeListener(this._onChange); if (!cookie.load('disclaimered') && SHOW_DISCLAIMER) { DisclaimerActions.show(); } jQuery('#disclaimer').on('hidden.bs.modal', this.hiddenModal); }, render: function () { return ( <div className='modal fade' role='dialog' id='disclaimer'> <div className='modal-dialog' role='document'>
var _ = require('lodash'); var React = require('react'); var Base = require('components/Base.react'); var InvestigationsSection = require('components/InvestigatorPage/InvestigationsSection.react'); var InvestigatorDetail = require('components/InvestigatorPage/InvestigatorDetail.react'); var InvestigatorPageStore = require('stores/InvestigatorPageStore'); var InvestigatorPageAPI = require('utils/InvestigatorPageAPI'); var InvestigatorPage = React.createClass(_.assign(Base(InvestigatorPageStore), { initAPIRequest: function (investigatorId) { InvestigatorPageAPI.getInvestigatorData(investigatorId); }, componentDidMount: function () { var investigatorId = this.props.params.id || ''; InvestigatorPageStore.addChangeListener(this._onChange); this.initAPIRequest(investigatorId); }, componentWillReceiveProps: function (newProps) { var investigatorId = newProps.params.id || ''; this.initAPIRequest(investigatorId); }, componentDidUpdate: function () { var investigatorName = _.get(this.state.data, 'investigator.name', ''); document.title = investigatorName;
var Base = require('components/Base.react'); var AppConstants = require('../constants/AppConstants'); var Document = require('components/DocumentSection/Document.react'); var DocumentList = require('components/DocumentSection/DocumentList.react'); var Tabs = require('./DocumentSection/Tabs.react'); var DocumentSectionStore = require('stores/DocumentSectionStore'); var DocumentRequestAPI = require('utils/DocumentRequestAPI'); var AddDocumentLinkModal = require('components/DocumentSection/AddDocumentLinkModal.react'); var AddDocumentLinkModalActions = require('actions/DocumentSection/AddDocumentLinkModalActions'); var UploadDocumentModal = require('components/DocumentSection/UploadDocumentModal.react'); var DocumentCrawlStats = require('./DocumentSection/DocumentCrawlStats.react'); var DocumentSection = React.createClass(_.assign(Base(DocumentSectionStore), { isShowingSingleDocument: function () { return !!this.props.params.id; }, content: function () { if (this.isShowingSingleDocument()) { return ( <div id='documents' className='col-md-12'> <Document documentId={ this.props.params.id } /> </div> ); } return ( <div id='documents' className='col-md-12'> <Tabs />
var cx = require('classnames'); var objectAssign = require('object-assign'); var React = require('react'); var Base = require('components/Base.react'); var SearchBar = require('components/Shared/SearchablePage/SearchBar.react'); var SearchablePageStore = require('stores/Shared/SearchablePageStore'); var SearchResults = require('components/Shared/SearchablePage/SearchResults.react'); var SearchablePage = React.createClass(objectAssign(Base(SearchablePageStore, 'SearchablePage'), { getInitialState: function () { return { 'focus': 0 }; }, render: function () { var focus = this.state.focus; var childrenClassName = cx('child-content', {'invisible': focus}); var searchResultClassName = cx('result-content', {'invisible': !focus}); return ( <div className='searchable-page'> <SearchBar /> <div className={ searchResultClassName }> <SearchResults /> </div> <div className={ childrenClassName }> { this.props.children }
var _ = require('lodash'); var React = require('react'); var classnames = require('classnames'); var DisclaimerActions = require('actions/DisclaimerActions'); var EmbedAction = require('actions/EmbedActions'); var Base = require('components/Base.react'); var Download = require('components/DataToolPage/Download.react'); var EmbedStore = require('stores/EmbedStore'); var jQuery = require('utils/jQuery'); var Footer = React.createClass(_.assign(Base(EmbedStore), { componentDidUpdate: function () { if (this.state.embedMode) { jQuery('body').addClass('embedding'); } else { jQuery('body').removeClass('embedding'); } }, toggleEmbedMode: function (e) { var currentScrollTop = jQuery(window).scrollTop(); var currentBodyHeight = jQuery(document).height(); e.preventDefault(); if (this.state.embedMode) { EmbedAction.leaveEmbedMode(); } else { EmbedAction.enterEmbedMode();
var React = require('react'); var cx = require('classnames'); var objectAssign = require('object-assign'); var Base = require('components/Base.react'); var SuggestionAPI = require('utils/SuggestionAPI'); var SearchBarActions = require('actions/MainPage/SearchBarActions'); var SearchBarStore = require('stores/MainPage/SearchBarStore'); var SearchBar = React.createClass(objectAssign(Base(SearchBarStore), { getInitialState: function () { return { 'status': 'blank', 'term': '' }; }, _onInputChange: function (event) { var term = event.currentTarget.value; SearchBarActions.changed(term); SuggestionAPI.get(term); }, _onFocus: function () { SearchBarActions.focus(); }, _onBlur: function () { if (!this.state.term) {
var _ = require('lodash'); var React = require('react'); var classnames = require('classnames'); var Base = require('components/Base.react'); var FilterTagsActions = require('actions/FilterTagsActions'); var FilterTagStore = require('stores/FilterTagStore'); var FilterTags = React.createClass(_.assign(Base(FilterTagStore), { removeTag: function (category, item) { FilterTagsActions.removeTag(category, item.value, true); FilterTagsActions.removedTag(category, item); }, pinTag: function (category, value) { FilterTagsActions.pinTag(category, value); }, renderTags: function () { var that = this; return _.map(this.state.filters, function (items, category) { return items.map(function (item, key) { var tagClassName = classnames('tag label label-info-autocomplete fadeIn', { 'pinned': item.pinned }); return ( <span className={ tagClassName } key={ key }> <a href='javascript:void(0);' className='action remove' onClick={ that.removeTag.bind(that, category, item) }>