From 979b54166bbb3060b3944d612f4bf66e332a6ebc Mon Sep 17 00:00:00 2001 From: David Jay Date: Fri, 16 Dec 2016 16:24:32 -0500 Subject: [PATCH] Updating search with delay. --- client/coral-admin/src/actions/assets.js | 4 +-- .../src/containers/Streams/Streams.js | 35 +++++++++++++------ .../coral-admin/src/services/talk-adapter.js | 4 +-- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/client/coral-admin/src/actions/assets.js b/client/coral-admin/src/actions/assets.js index b13454a21..df2e1bd60 100644 --- a/client/coral-admin/src/actions/assets.js +++ b/client/coral-admin/src/actions/assets.js @@ -8,6 +8,6 @@ export const updateAssetState = (id, closedAt) => (dispatch) => { dispatch({type: UPDATE_ASSET_STATE, id, closedAt}); }; -export const fetchAssets = (skip, limit, search, sort) => (dispatch) => { - dispatch({type: FETCH_ASSETS, skip, limit, search, sort}); +export const fetchAssets = (skip, limit, search, sort, filter) => (dispatch) => { + dispatch({type: FETCH_ASSETS, skip, limit, search, sort, filter}); }; diff --git a/client/coral-admin/src/containers/Streams/Streams.js b/client/coral-admin/src/containers/Streams/Streams.js index 5d8508f33..58c1c9b61 100644 --- a/client/coral-admin/src/containers/Streams/Streams.js +++ b/client/coral-admin/src/containers/Streams/Streams.js @@ -19,8 +19,9 @@ class Streams extends Component { state = { search: '', sort: 'desc', - statusFilter: 'all', - statusMenus: {} + filter: 'all', + statusMenus: {}, + timer: null } componentDidMount () { @@ -28,8 +29,22 @@ class Streams extends Component { } onSettingChange = (setting) => (e) => { + let options = this.state; this.setState({[setting]: e.target.value}); - this.props.fetchAssets(0, limit, this.state.search, this.state.sort); + options[setting] = e.target.value; + this.props.fetchAssets(0, limit, options.search, options.sort, options.filter); + } + + onSearchChange = (e) => { + this.setState({search: e.target.value}); + this.setState((prevState) => { + clearTimeout(prevState.timer); + const fetchAssets = this.props.fetchAssets; + prevState.timer = setTimeout(() => { + fetchAssets(0, limit, this.state.search, this.state.sort, this.state.filter); + }, 350); + return prevState; + }); } renderDate = (date) => { @@ -74,7 +89,7 @@ class Streams extends Component { } render () { - const {searchTerm, sortBy, statusFilter} = this.state; + const {search, sort, filter} = this.state; const {assets} = this.props; return
@@ -84,9 +99,9 @@ class Streams extends Component {
@@ -94,9 +109,9 @@ class Streams extends Component {
{lang.t('streams.stream-status')}
+ onChange={this.onSettingChange('filter')}> {lang.t('streams.all')} {lang.t('streams.open')} {lang.t('streams.closed')} @@ -104,9 +119,9 @@ class Streams extends Component {
{lang.t('streams.sort-by')}
+ onChange={this.onSettingChange('sort')}> {lang.t('streams.newest')} {lang.t('streams.oldest')} diff --git a/client/coral-admin/src/services/talk-adapter.js b/client/coral-admin/src/services/talk-adapter.js index 67835e30d..fcc334953 100644 --- a/client/coral-admin/src/services/talk-adapter.js +++ b/client/coral-admin/src/services/talk-adapter.js @@ -102,8 +102,8 @@ const userStatusUpdate = (store, status, userId, commentId) => { // Fetch a page of assets // Get comments to fill each of the three lists on the mod queue const fetchAssets = (store, action) => { - const {skip, limit, search} = action; - return coralApi(`/assets?skip=${skip}&limit=${limit}&search=${search}`) + const {skip, limit, sort, search, filter} = action; + return coralApi(`/assets?skip=${skip}&limit=${limit}&sort=${sort}&search=${search}&filter=${filter}`) .then(({result, count}) => /* Post comments and users to redux store. Actions will be posted when they are needed. */ store.dispatch({type: FETCH_ASSETS_SUCCESS,