From 87afe78b2f902062982d6302e0ec9ec52519aa11 Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Mon, 27 Aug 2018 14:21:27 -0400 Subject: [PATCH 01/11] Gets rid of organization undefined error --- src/containers/CampaignList.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index 4a16a72c0..ae529c317 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -117,7 +117,9 @@ class CampaignList extends React.Component { } render() { - const { campaigns } = this.props.data.organization + const organization = this.props.data.organization + const campaigns = organization.campaigns + return campaigns.length === 0 ? ( Date: Mon, 27 Aug 2018 14:21:48 -0400 Subject: [PATCH 02/11] Adds sorting by id - first to last created --- src/containers/CampaignList.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index ae529c317..c6388ad0f 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -127,7 +127,7 @@ class CampaignList extends React.Component { /> ) : ( - {campaigns.map((campaign) => this.renderRow(campaign))} + {campaigns.sort((a, b) => a.id - b.id).map((campaign) => this.renderRow(campaign))} ) } From 453c2d0890c4957ebeb1597223294c8d2e1d3010 Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Mon, 27 Aug 2018 16:33:58 -0400 Subject: [PATCH 03/11] WIP: get list size filter to server --- src/containers/AdminCampaignList.jsx | 29 +++++++++++++++++++++++++++- src/containers/CampaignList.jsx | 15 ++++++++++---- src/server/api/campaign.js | 9 +++++---- src/server/api/organization.js | 5 +++-- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index 487a4efdd..2283ba3cb 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -19,7 +19,14 @@ class AdminCampaignList extends React.Component { isCreating: false, campaignsFilter: { isArchived: false - } + }, + displaySize: 25 + } + + handleListSize = event => { + this.setState({ + listSize: size + }) } handleClickNewButton = async () => { @@ -53,6 +60,23 @@ class AdminCampaignList extends React.Component { }) } + handleListSizeChange = (event, index, value) => { + this.setState({ + displaySize: value + }) + } + + renderListOptions(){ + return ( + + + + + + + ) + } + renderFilters() { return ( @@ -63,14 +87,17 @@ class AdminCampaignList extends React.Component { } render() { const { adminPerms } = this.props.params + const filter = this.state.campaignsFilter.isArchived return (
{this.renderFilters()} + {this.renderListOptions()} {this.state.isCreating ? : ( )} diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index c6388ad0f..55cf0544c 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -40,8 +40,9 @@ const inlineStyles = { class CampaignList extends React.Component { renderRow(campaign) { - const { isStarted, isArchived, hasUnassignedContacts } = campaign + const { isStarted, isArchived, hasUnassignedContacts} = campaign const { adminPerms } = this.props + console.log('campaign:', campaign); let listItemStyle = {} let leftIcon = '' @@ -119,7 +120,8 @@ class CampaignList extends React.Component { render() { const organization = this.props.data.organization const campaigns = organization.campaigns - + const displaySize = this.props.displaySize + return campaigns.length === 0 ? ( ) : ( - {campaigns.sort((a, b) => a.id - b.id).map((campaign) => this.renderRow(campaign))} + {campaigns.sort((a, b) => { + if (a.title > b.title) return 1 + if (a.title < b.title) return -1 + return 0 + }).map((campaign) => this.renderRow(campaign))} ) } @@ -179,7 +185,8 @@ const mapQueriesToProps = ({ ownProps }) => ({ }`, variables: { organizationId: ownProps.organizationId, - campaignsFilter: ownProps.campaignsFilter + campaignsFilter: ownProps.campaignsFilter, + displaySize: ownProps.displaySize }, forceFetch: true } diff --git a/src/server/api/campaign.js b/src/server/api/campaign.js index 2cb9c0d5c..ab3e859d7 100644 --- a/src/server/api/campaign.js +++ b/src/server/api/campaign.js @@ -1,7 +1,7 @@ import { mapFieldsToModel } from './lib/utils' import { Campaign, JobRequest, r } from '../models' -export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true) { +export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true, displaySize = 25) { let query = queryParam if (addFromClause) { @@ -10,12 +10,13 @@ export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, query = query.where('organization_id', organizationId) - if (campaignsFilter) { + if (campaignsFilter && displaySize) { + const size = parseInt(displaySize) if ('isArchived' in campaignsFilter) { - query = query.where({ is_archived: campaignsFilter.isArchived }) + query = query.where({ is_archived: campaignsFilter.isArchived }).limit(size) } if ('campaignId' in campaignsFilter) { - query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)) + query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)).limit(size) } } diff --git a/src/server/api/organization.js b/src/server/api/organization.js index 59820a670..f3123f179 100644 --- a/src/server/api/organization.js +++ b/src/server/api/organization.js @@ -10,12 +10,13 @@ export const resolvers = { 'id', 'name' ], Organization), - campaigns: async (organization, { campaignsFilter }, { user }) => { + campaigns: async (organization, { campaignsFilter }, { user }, displaySize ) => { await accessRequired(user, organization.id, 'SUPERVOLUNTEER') let query = buildCampaignQuery( r.knex.select('*'), organization.id, - campaignsFilter + campaignsFilter, + displaySize ) query = query.orderBy('due_by', 'desc') return query From b4bd368f026dd37cecf30063b5e2a6d40b291ce1 Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Mon, 27 Aug 2018 18:05:21 -0400 Subject: [PATCH 04/11] WIP: attempting to update query to account for display size --- src/api/campaign.js | 1 + src/containers/AdminCampaignList.jsx | 14 ++++++++------ src/containers/CampaignList.jsx | 3 +-- src/server/api/campaign.js | 13 ++++++------- src/server/api/organization.js | 5 ++--- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/api/campaign.js b/src/api/campaign.js index b4a71fb94..0324005f0 100644 --- a/src/api/campaign.js +++ b/src/api/campaign.js @@ -2,6 +2,7 @@ export const schema = ` input CampaignsFilter { isArchived: Boolean campaignId: Int + displaySize: Int } type CampaignStats { diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index 2283ba3cb..16895fdd3 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -18,9 +18,9 @@ class AdminCampaignList extends React.Component { state = { isCreating: false, campaignsFilter: { - isArchived: false - }, - displaySize: 25 + isArchived: false, + displaySize: 25 + } } handleListSize = event => { @@ -62,14 +62,16 @@ class AdminCampaignList extends React.Component { handleListSizeChange = (event, index, value) => { this.setState({ - displaySize: value + campaignsFilter: { + displaySize: value + } }) } renderListOptions(){ return ( - - + + diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index 55cf0544c..01989252b 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -185,8 +185,7 @@ const mapQueriesToProps = ({ ownProps }) => ({ }`, variables: { organizationId: ownProps.organizationId, - campaignsFilter: ownProps.campaignsFilter, - displaySize: ownProps.displaySize + campaignsFilter: ownProps.campaignsFilter }, forceFetch: true } diff --git a/src/server/api/campaign.js b/src/server/api/campaign.js index ab3e859d7..4faa4b8bf 100644 --- a/src/server/api/campaign.js +++ b/src/server/api/campaign.js @@ -1,7 +1,7 @@ import { mapFieldsToModel } from './lib/utils' import { Campaign, JobRequest, r } from '../models' -export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true, displaySize = 25) { +export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true) { let query = queryParam if (addFromClause) { @@ -10,13 +10,12 @@ export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, query = query.where('organization_id', organizationId) - if (campaignsFilter && displaySize) { - const size = parseInt(displaySize) - if ('isArchived' in campaignsFilter) { - query = query.where({ is_archived: campaignsFilter.isArchived }).limit(size) + if (campaignsFilter) { + if ('isArchived' in campaignsFilter && 'displaySize' in campaignsFilter) { + query = query.where({ is_archived: campaignsFilter.isArchived }).limit(campaignsFilter.displaySize) } - if ('campaignId' in campaignsFilter) { - query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)).limit(size) + if ('campaignId' in campaignsFilter && 'displaySize' in campaignsFilter) { + query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)).limit(campaignsFilter.displaySize) } } diff --git a/src/server/api/organization.js b/src/server/api/organization.js index f3123f179..59820a670 100644 --- a/src/server/api/organization.js +++ b/src/server/api/organization.js @@ -10,13 +10,12 @@ export const resolvers = { 'id', 'name' ], Organization), - campaigns: async (organization, { campaignsFilter }, { user }, displaySize ) => { + campaigns: async (organization, { campaignsFilter }, { user }) => { await accessRequired(user, organization.id, 'SUPERVOLUNTEER') let query = buildCampaignQuery( r.knex.select('*'), organization.id, - campaignsFilter, - displaySize + campaignsFilter ) query = query.orderBy('due_by', 'desc') return query From cecc9b91663308937344ca14c8a62c4752ff0d3e Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Tue, 28 Aug 2018 09:48:12 -0400 Subject: [PATCH 05/11] Successfully changes limit size for results and backtracks on sorting list size --- src/containers/AdminCampaignList.jsx | 15 ++++++--------- src/containers/CampaignList.jsx | 6 +----- src/server/api/campaign.js | 21 +++++++++++++++++---- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index 16895fdd3..c6a26e91b 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -23,12 +23,6 @@ class AdminCampaignList extends React.Component { } } - handleListSize = event => { - this.setState({ - listSize: size - }) - } - handleClickNewButton = async () => { const { organizationId } = this.props.params this.setState({ isCreating: true }) @@ -55,7 +49,8 @@ class AdminCampaignList extends React.Component { handleFilterChange = (event, index, value) => { this.setState({ campaignsFilter: { - isArchived: value + isArchived: value, + displaySize: this.state.campaignsFilter.displaySize } }) } @@ -63,6 +58,7 @@ class AdminCampaignList extends React.Component { handleListSizeChange = (event, index, value) => { this.setState({ campaignsFilter: { + isArchived: this.state.campaignsFilter.isArchived, displaySize: value } }) @@ -71,10 +67,11 @@ class AdminCampaignList extends React.Component { renderListOptions(){ return ( - + + - + ) } diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index 01989252b..640acce7b 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -129,11 +129,7 @@ class CampaignList extends React.Component { /> ) : ( - {campaigns.sort((a, b) => { - if (a.title > b.title) return 1 - if (a.title < b.title) return -1 - return 0 - }).map((campaign) => this.renderRow(campaign))} + {campaigns.map((campaign) => this.renderRow(campaign))} ) } diff --git a/src/server/api/campaign.js b/src/server/api/campaign.js index 4faa4b8bf..299e6dadb 100644 --- a/src/server/api/campaign.js +++ b/src/server/api/campaign.js @@ -3,6 +3,7 @@ import { Campaign, JobRequest, r } from '../models' export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true) { let query = queryParam + let resultSize = ( campaignsFilter.displaySize && campaignsFilter.displaySize !== 'All' ? campaignsFilter.displaySize : 0 ) if (addFromClause) { query = query.from('campaign') @@ -11,11 +12,23 @@ export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, query = query.where('organization_id', organizationId) if (campaignsFilter) { - if ('isArchived' in campaignsFilter && 'displaySize' in campaignsFilter) { - query = query.where({ is_archived: campaignsFilter.isArchived }).limit(campaignsFilter.displaySize) + if ('isArchived' in campaignsFilter && resultSize) { + console.log('getting here:', resultSize); + query = query.where({ is_archived: campaignsFilter.isArchived }).limit(resultSize) } - if ('campaignId' in campaignsFilter && 'displaySize' in campaignsFilter) { - query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)).limit(campaignsFilter.displaySize) + if ('campaignId' in campaignsFilter && resultSize) { + console.log('getting here:', resultSize); + query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)).limit(resultSize) + } + + if ('isArchived' in campaignsFilter && !resultSize) { + console.log('getting here:', resultSize); + query = query.where({ is_archived: campaignsFilter.isArchived }) + } + + if ('campaignId' in campaignsFilter && !resultSize) { + console.log('getting here:', resultSize); + query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)) } } From d7484e280b36406f1e268331b0847670287d1516 Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Tue, 28 Aug 2018 10:04:48 -0400 Subject: [PATCH 06/11] Removes logging and unnecessary references --- src/containers/AdminCampaignList.jsx | 2 -- src/containers/CampaignList.jsx | 2 -- src/server/api/campaign.js | 8 ++------ 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index c6a26e91b..823cab8fc 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -86,7 +86,6 @@ class AdminCampaignList extends React.Component { } render() { const { adminPerms } = this.props.params - const filter = this.state.campaignsFilter.isArchived return (
{this.renderFilters()} @@ -96,7 +95,6 @@ class AdminCampaignList extends React.Component { campaignsFilter={this.state.campaignsFilter} organizationId={this.props.params.organizationId} adminPerms={adminPerms} - displaySize={this.state.displaySize} /> )} diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index 640acce7b..b826b1108 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -42,7 +42,6 @@ class CampaignList extends React.Component { renderRow(campaign) { const { isStarted, isArchived, hasUnassignedContacts} = campaign const { adminPerms } = this.props - console.log('campaign:', campaign); let listItemStyle = {} let leftIcon = '' @@ -120,7 +119,6 @@ class CampaignList extends React.Component { render() { const organization = this.props.data.organization const campaigns = organization.campaigns - const displaySize = this.props.displaySize return campaigns.length === 0 ? ( Date: Tue, 28 Aug 2018 10:26:43 -0400 Subject: [PATCH 07/11] Change naming convention to be consistently list size --- src/api/campaign.js | 2 +- src/containers/AdminCampaignList.jsx | 12 ++++++------ src/server/api/campaign.js | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/api/campaign.js b/src/api/campaign.js index 0324005f0..46862897d 100644 --- a/src/api/campaign.js +++ b/src/api/campaign.js @@ -2,7 +2,7 @@ export const schema = ` input CampaignsFilter { isArchived: Boolean campaignId: Int - displaySize: Int + listSize: Int } type CampaignStats { diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index 823cab8fc..7603e05f2 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -19,7 +19,7 @@ class AdminCampaignList extends React.Component { isCreating: false, campaignsFilter: { isArchived: false, - displaySize: 25 + listSize: 25 } } @@ -50,7 +50,7 @@ class AdminCampaignList extends React.Component { this.setState({ campaignsFilter: { isArchived: value, - displaySize: this.state.campaignsFilter.displaySize + listSize: this.state.campaignsFilter.listSize } }) } @@ -59,14 +59,14 @@ class AdminCampaignList extends React.Component { this.setState({ campaignsFilter: { isArchived: this.state.campaignsFilter.isArchived, - displaySize: value + listSize: value } }) } - renderListOptions(){ + renderListSizeOptions(){ return ( - + @@ -89,7 +89,7 @@ class AdminCampaignList extends React.Component { return (
{this.renderFilters()} - {this.renderListOptions()} + {this.renderListSizeOptions()} {this.state.isCreating ? : ( Date: Tue, 28 Aug 2018 10:27:43 -0400 Subject: [PATCH 08/11] Revert back to old campaign definition --- src/containers/CampaignList.jsx | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index b826b1108..ef1ed266f 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -116,22 +116,21 @@ class CampaignList extends React.Component { ) } - render() { - const organization = this.props.data.organization - const campaigns = organization.campaigns - - return campaigns.length === 0 ? ( - } - /> - ) : ( - - {campaigns.map((campaign) => this.renderRow(campaign))} - - ) + + render() { + const { campaigns } = this.props.data.organization + return campaigns.length === 0 ? ( + } + /> + ) : ( + + {campaigns.map((campaign) => this.renderRow(campaign))} + + ) + } } -} CampaignList.propTypes = { campaigns: PropTypes.arrayOf( From 085a594f87e4aa74d217710504931678753e5cf3 Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Tue, 28 Aug 2018 10:49:00 -0400 Subject: [PATCH 09/11] Passes integer into value vs string --- src/containers/AdminCampaignList.jsx | 12 ++++++------ src/containers/CampaignList.jsx | 29 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index 7603e05f2..fbea58522 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -66,12 +66,12 @@ class AdminCampaignList extends React.Component { renderListSizeOptions(){ return ( - - - - - - + + + + + + ) } diff --git a/src/containers/CampaignList.jsx b/src/containers/CampaignList.jsx index ef1ed266f..4a16a72c0 100644 --- a/src/containers/CampaignList.jsx +++ b/src/containers/CampaignList.jsx @@ -40,7 +40,7 @@ const inlineStyles = { class CampaignList extends React.Component { renderRow(campaign) { - const { isStarted, isArchived, hasUnassignedContacts} = campaign + const { isStarted, isArchived, hasUnassignedContacts } = campaign const { adminPerms } = this.props let listItemStyle = {} @@ -116,21 +116,20 @@ class CampaignList extends React.Component { ) } - - render() { - const { campaigns } = this.props.data.organization - return campaigns.length === 0 ? ( - } - /> - ) : ( - - {campaigns.map((campaign) => this.renderRow(campaign))} - - ) - } + render() { + const { campaigns } = this.props.data.organization + return campaigns.length === 0 ? ( + } + /> + ) : ( + + {campaigns.map((campaign) => this.renderRow(campaign))} + + ) } +} CampaignList.propTypes = { campaigns: PropTypes.arrayOf( From 1afd2b486e552207d5747f399373326c6e91d441 Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Wed, 29 Aug 2018 09:34:51 -0400 Subject: [PATCH 10/11] Ran linting --- src/containers/AdminCampaignList.jsx | 2 +- src/server/api/campaign.js | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index fbea58522..c1805cafb 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -64,7 +64,7 @@ class AdminCampaignList extends React.Component { }) } - renderListSizeOptions(){ + renderListSizeOptions() { return ( diff --git a/src/server/api/campaign.js b/src/server/api/campaign.js index 330fb5f62..e4e562203 100644 --- a/src/server/api/campaign.js +++ b/src/server/api/campaign.js @@ -3,7 +3,7 @@ import { Campaign, JobRequest, r } from '../models' export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true) { let query = queryParam - let resultSize = ( campaignsFilter.listSize ? campaignsFilter.listSize : 0 ) + let resultSize = (campaignsFilter.listSize ? campaignsFilter.listSize : 0) if (addFromClause) { query = query.from('campaign') @@ -12,22 +12,18 @@ export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, query = query.where('organization_id', organizationId) if (campaignsFilter) { - if ('isArchived' in campaignsFilter && resultSize) { - query = query.where({ is_archived: campaignsFilter.isArchived }).limit(resultSize) - } - if ('campaignId' in campaignsFilter && resultSize) { - query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)).limit(resultSize) - } - - if ('isArchived' in campaignsFilter && !resultSize) { + if ('isArchived' in campaignsFilter) { query = query.where({ is_archived: campaignsFilter.isArchived }) } - - if ('campaignId' in campaignsFilter && !resultSize) { + if ('campaignId' in campaignsFilter) { query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)) } } + if (resultSize) { + query = query.limit(resultSize) + } + return query } From f6dc92834f7f2b6ae92e6626e2b41d5c52601e1c Mon Sep 17 00:00:00 2001 From: Shaka Lee Date: Wed, 29 Aug 2018 10:25:25 -0400 Subject: [PATCH 11/11] Adds page size for future possible pagination implementation and moves if statements inside campaign filter check --- src/api/campaign.js | 1 + src/containers/AdminCampaignList.jsx | 1 - src/server/api/campaign.js | 13 ++++++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/api/campaign.js b/src/api/campaign.js index 46862897d..3a9c2fba4 100644 --- a/src/api/campaign.js +++ b/src/api/campaign.js @@ -3,6 +3,7 @@ export const schema = ` isArchived: Boolean campaignId: Int listSize: Int + pageSize: Int } type CampaignStats { diff --git a/src/containers/AdminCampaignList.jsx b/src/containers/AdminCampaignList.jsx index c1805cafb..a0c68a1a5 100644 --- a/src/containers/AdminCampaignList.jsx +++ b/src/containers/AdminCampaignList.jsx @@ -4,7 +4,6 @@ import CampaignList from './CampaignList' import FloatingActionButton from 'material-ui/FloatingActionButton' import ContentAdd from 'material-ui/svg-icons/content/add' import loadData from './hoc/load-data' -import { hasRole } from '../lib' import { withRouter } from 'react-router' import gql from 'graphql-tag' import theme from '../styles/theme' diff --git a/src/server/api/campaign.js b/src/server/api/campaign.js index e4e562203..b55cd171f 100644 --- a/src/server/api/campaign.js +++ b/src/server/api/campaign.js @@ -3,7 +3,8 @@ import { Campaign, JobRequest, r } from '../models' export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, addFromClause = true) { let query = queryParam - let resultSize = (campaignsFilter.listSize ? campaignsFilter.listSize : 0) + const resultSize = (campaignsFilter.listSize ? campaignsFilter.listSize : 0) + const pageSize = (campaignsFilter.pageSize ? campaignsFilter.pageSize : 0) if (addFromClause) { query = query.from('campaign') @@ -18,10 +19,12 @@ export function buildCampaignQuery(queryParam, organizationId, campaignsFilter, if ('campaignId' in campaignsFilter) { query = query.where('campaign.id', parseInt(campaignsFilter.campaignId, 10)) } - } - - if (resultSize) { - query = query.limit(resultSize) + if (resultSize && !pageSize) { + query = query.limit(resultSize) + } + if (resultSize && pageSize) { + query = query.limit(resultSize).offSet(pageSize) + } } return query