From f240dc6ccbf13aba8b264325789ca662da059108 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 27 Nov 2020 15:20:12 -0800 Subject: [PATCH] Resolve issue where unable to scroll further after updating record RPS-65. --- src/App/App.styles.scss | 5 ++ .../jobs-list-latest.organism.jsx | 53 ++++++--------- .../jobs-list-search.organism.jsx | 68 +++++++------------ src/graphql/jobs.queries.js | 1 + src/ipc/ipc-renderer-handler.js | 2 +- 5 files changed, 55 insertions(+), 74 deletions(-) diff --git a/src/App/App.styles.scss b/src/App/App.styles.scss index dc2299e..85a5aee 100644 --- a/src/App/App.styles.scss +++ b/src/App/App.styles.scss @@ -66,12 +66,17 @@ body { // } .jobs-list-container { height: 100%; + display: flex; + flex-direction: column; + // padding-bottom: 10px; } .jobs-list-infinite-container { overflow-y: auto; overflow-x: hidden; height: 100%; + flex: 1; + padding-bottom: 30px; } //Required for the tab with infinite loading diff --git a/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx b/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx index 6fce11f..9772d10 100644 --- a/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx +++ b/src/components/organisms/jobs-list-latest/jobs-list-latest.organism.jsx @@ -1,6 +1,5 @@ -import { SyncOutlined } from "@ant-design/icons"; import { useQuery } from "@apollo/client"; -import { Dropdown, List, Menu, Spin } from "antd"; +import { List } from "antd"; import React, { useState } from "react"; import InfiniteScroll from "react-infinite-scroller"; import { QUERY_ALL_JOBS_PAGINATED } from "../../../graphql/jobs.queries"; @@ -22,21 +21,14 @@ export default function JobsTableOrganism() { } ); - const menu = ( - - refetch()}> - - Reload - - - ); - - const handleInfiniteOnLoad = (page) => { - fetchMore && - fetchMore({ + const handleInfiniteOnLoad = async (page) => { + console.log("Fetching more records!", page, fetchMore); + if (fetchMore) { + await fetchMore({ variables: { offset: limit * page, }, + updateQuery: (prev, { fetchMoreResult }) => { if (!fetchMoreResult) { console.log("No more results. Fetch More was empty."); @@ -49,8 +41,8 @@ export default function JobsTableOrganism() { }); if ( - newCache.jobs.length >= data && - data.jobs_aggregate.aggregate.count + newCache.jobs.length >= + (data && data.jobs_aggregate.aggregate.count) ) { console.log("No more results."); setState({ ...state, hasMore: false }); @@ -59,6 +51,11 @@ export default function JobsTableOrganism() { return newCache; }, }); + // if (data.jobs.length >= data.jobs_aggregate.aggregate.count) { + // console.log("No more results."); + // setState({ ...state, hasMore: false }); + // } + } }; if (error) @@ -77,22 +74,16 @@ export default function JobsTableOrganism() { loadMore={handleInfiniteOnLoad} hasMore={!loading && state.hasMore} useWindow={false} + threshold={30} > - - ( - - )} - > - {loading && state.hasMore && ( -
- -
- )} -
-
+ ( + + )} + >
diff --git a/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx b/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx index 7731a5c..69a315a 100644 --- a/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx +++ b/src/components/organisms/jobs-list-search/jobs-list-search.organism.jsx @@ -1,6 +1,5 @@ -import { SyncOutlined } from "@ant-design/icons"; import { useLazyQuery } from "@apollo/client"; -import { Dropdown, List, Menu, Spin } from "antd"; +import { List, Spin } from "antd"; import React, { useState } from "react"; import InfiniteScroll from "react-infinite-scroller"; import { SEARCH_JOBS_PAGINATED } from "../../../graphql/jobs.queries"; @@ -8,37 +7,26 @@ import ErrorResultAtom from "../../atoms/error-result/error-result.atom"; import JobsListItemMolecule from "../../molecules/jobs-list-item/jobs-list-item.molecule"; import JobsSearchFieldsMolecule from "../../molecules/jobs-search-fields/jobs-search-fields.molecule"; - - const limit = 20; export default function JobsTableOrganism() { const [state, setState] = useState({ hasMore: true }); - const [ - callSearch, - { loading, error, data, refetch, fetchMore }, - ] = useLazyQuery(SEARCH_JOBS_PAGINATED, { - variables: { - offset: 0, - limit: limit, - }, - }); - - const menu = ( - - refetch()}> - - Reload - - + const [callSearch, { loading, error, data, fetchMore }] = useLazyQuery( + SEARCH_JOBS_PAGINATED, + { + variables: { + offset: 0, + limit: limit, + }, + } ); - const handleInfiniteOnLoad = (page) => { + const handleInfiniteOnLoad = async (page) => { if (fetchMore) { // ipcRenderer.send(ipcTypes.default.app.toMain.track, { // event: "FETCH_MORE_JOBS", // }); - fetchMore({ + await fetchMore({ variables: { offset: limit * page, }, @@ -50,12 +38,12 @@ export default function JobsTableOrganism() { } const newCache = Object.assign({}, prev, { - jobs: [...prev.search_jobs, ...fetchMoreResult.search_jobs], + search_jobs: [...prev.search_jobs, ...fetchMoreResult.search_jobs], }); if ( - newCache.jobs.length >= data && - data.search_jobs_aggregate.aggregate.count + newCache.search_jobs.length >= + (data && data.search_jobs_aggregate.aggregate.count) ) { console.log("No more results."); setState({ ...state, hasMore: false }); @@ -84,25 +72,21 @@ export default function JobsTableOrganism() { loadMore={handleInfiniteOnLoad} hasMore={!loading && state.hasMore} useWindow={false} + threshold={30} > - - } - > - {loading && state.hasMore && ( -
- -
- )} -
-
+ } + > + {loading && state.hasMore && ( +
+ +
+ )} +
- {`${data ? data.search_jobs.length : 0} jobs loaded. ${ - data ? data.search_jobs_aggregate.aggregate.count : 0 - } total jobs.`} ); } diff --git a/src/graphql/jobs.queries.js b/src/graphql/jobs.queries.js index ddc342b..6c35e10 100644 --- a/src/graphql/jobs.queries.js +++ b/src/graphql/jobs.queries.js @@ -66,6 +66,7 @@ export const SEARCH_JOBS_PAGINATED = gql` } search_jobs_aggregate( args: { enddate: $endDate, search: $search, startdate: $startDate } + where: { close_date: { _is_null: $closeDateIsNull } } ) { aggregate { count(distinct: true) diff --git a/src/ipc/ipc-renderer-handler.js b/src/ipc/ipc-renderer-handler.js index 1d47322..e2e6a81 100644 --- a/src/ipc/ipc-renderer-handler.js +++ b/src/ipc/ipc-renderer-handler.js @@ -53,7 +53,7 @@ ipcRenderer.on( ipcRenderer.on( ipcTypes.default.estimate.toRenderer.estimateDecodeSuccess, async (event, obj) => { - console.log("obj", obj); + await UpsertEstimate(obj); } );