Address PR feedback and format.

This commit is contained in:
Kia Lam
2019-07-02 09:54:07 -04:00
parent d3ed6ac73a
commit 74e4c17b63
4 changed files with 32 additions and 25 deletions

View File

@@ -40,7 +40,7 @@ class PaginatedDataList extends React.Component {
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
const { itemCount: prevItemCount } = prevProps; const { itemCount: prevItemCount } = prevProps;
const { itemCount } = this.props const { itemCount } = this.props;
if (prevItemCount !== itemCount) { if (prevItemCount !== itemCount) {
this.getCurrPage(itemCount); this.getCurrPage(itemCount);
} }
@@ -60,11 +60,13 @@ class PaginatedDataList extends React.Component {
return; return;
} }
const { qsConfig, location } = this.props; const { qsConfig, location } = this.props;
const queryParams = parseNamespacedQueryString(qsConfig, location.search); const { page_size, page: currPage } = parseNamespacedQueryString(
const maxPages = Math.ceil(itemCount / queryParams.page_size); qsConfig,
const currPage = queryParams.page; location.search
if (currPage > maxPages) { );
this.pushHistoryState({ page: (currPage + (maxPages - currPage)) || 1 }) const lastPage = Math.ceil(itemCount / page_size);
if (currPage > lastPage) {
this.pushHistoryState({ page: lastPage || 1 });
} }
} }

View File

@@ -132,7 +132,7 @@ describe('<PaginatedDataList />', () => {
integerFields: [], integerFields: [],
}; };
const testParams = [5, 25, 0, -1]; // number of items const testParams = [5, 25, 0, -1]; // number of items
const expected = [5, 5, 1, 1] // expected current page const expected = [5, 5, 1, 1]; // expected current page
const history = createMemoryHistory({ const history = createMemoryHistory({
initialEntries: ['/organizations/1/teams'], initialEntries: ['/organizations/1/teams'],
}); });
@@ -146,13 +146,16 @@ describe('<PaginatedDataList />', () => {
order_by: 'name', order_by: 'name',
}} }}
qsConfig={customQSConfig} qsConfig={customQSConfig}
/>, { context: { router: { history } } } />,
{ context: { router: { history } } }
); );
testParams.forEach((param, i) => { testParams.forEach((param, i) => {
wrapper.setProps({ itemCount: param }); wrapper.setProps({ itemCount: param });
expect(history.location.search).toEqual(`?${customQSConfig.namespace}.page=${expected[i]}`) expect(history.location.search).toEqual(
`?${customQSConfig.namespace}.page=${expected[i]}`
);
wrapper.update(); wrapper.update();
}) });
wrapper.unmount(); wrapper.unmount();
}); });
}); });

View File

@@ -80,7 +80,7 @@ class OrganizationsList extends Component {
this.setState({ hasContentLoading: true }); this.setState({ hasContentLoading: true });
try { try {
await Promise.all(selected.map((org) => OrganizationsAPI.destroy(org.id))); await Promise.all(selected.map(org => OrganizationsAPI.destroy(org.id)));
this.setState({ itemCount: itemCount - selected.length }); this.setState({ itemCount: itemCount - selected.length });
} catch (err) { } catch (err) {
this.setState({ deletionError: err }); this.setState({ deletionError: err });

View File

@@ -82,7 +82,8 @@ class TemplatesList extends Component {
this.setState({ hasContentLoading: true }); this.setState({ hasContentLoading: true });
try { try {
await Promise.all(selected.map(({ type, id }) => { await Promise.all(
selected.map(({ type, id }) => {
let deletePromise; let deletePromise;
if (type === 'job_template') { if (type === 'job_template') {
deletePromise = JobTemplatesAPI.destroy(id); deletePromise = JobTemplatesAPI.destroy(id);
@@ -90,7 +91,8 @@ class TemplatesList extends Component {
deletePromise = WorkflowJobTemplatesAPI.destroy(id); deletePromise = WorkflowJobTemplatesAPI.destroy(id);
} }
return deletePromise; return deletePromise;
})); })
);
this.setState({ itemCount: itemCount - selected.length }); this.setState({ itemCount: itemCount - selected.length });
} catch (err) { } catch (err) {
this.setState({ deletionError: err }); this.setState({ deletionError: err });