Address PR feedback and format.

This commit is contained in:
Kia Lam 2019-07-02 09:54:07 -04:00
parent d3ed6ac73a
commit 74e4c17b63
No known key found for this signature in database
GPG Key ID: 294F9BE53C241D03
4 changed files with 32 additions and 25 deletions

View File

@ -40,13 +40,13 @@ class PaginatedDataList extends React.Component {
componentDidUpdate(prevProps) {
const { itemCount: prevItemCount } = prevProps;
const { itemCount } = this.props
const { itemCount } = this.props;
if (prevItemCount !== itemCount) {
this.getCurrPage(itemCount);
}
}
getSortOrder () {
getSortOrder() {
const { qsConfig, location } = this.props;
const queryParams = parseNamespacedQueryString(qsConfig, location.search);
if (queryParams.order_by && queryParams.order_by.startsWith('-')) {
@ -55,20 +55,22 @@ class PaginatedDataList extends React.Component {
return [queryParams.order_by, 'ascending'];
}
getCurrPage (itemCount) {
getCurrPage(itemCount) {
if (itemCount < 0) {
return;
}
const { qsConfig, location } = this.props;
const queryParams = parseNamespacedQueryString(qsConfig, location.search);
const maxPages = Math.ceil(itemCount / queryParams.page_size);
const currPage = queryParams.page;
if (currPage > maxPages) {
this.pushHistoryState({ page: (currPage + (maxPages - currPage)) || 1 })
const { page_size, page: currPage } = parseNamespacedQueryString(
qsConfig,
location.search
);
const lastPage = Math.ceil(itemCount / page_size);
if (currPage > lastPage) {
this.pushHistoryState({ page: lastPage || 1 });
}
}
handleSetPage (event, pageNumber) {
handleSetPage(event, pageNumber) {
this.pushHistoryState({ page: pageNumber });
}

View File

@ -132,7 +132,7 @@ describe('<PaginatedDataList />', () => {
integerFields: [],
};
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({
initialEntries: ['/organizations/1/teams'],
});
@ -146,13 +146,16 @@ describe('<PaginatedDataList />', () => {
order_by: 'name',
}}
qsConfig={customQSConfig}
/>, { context: { router: { history } } }
/>,
{ context: { router: { history } } }
);
testParams.forEach((param, i) => {
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.unmount();
});
});

View File

@ -75,12 +75,12 @@ class OrganizationsList extends Component {
this.setState({ deletionError: null });
}
async handleOrgDelete () {
async handleOrgDelete() {
const { selected, itemCount } = this.state;
this.setState({ hasContentLoading: true });
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 });
} catch (err) {
this.setState({ deletionError: err });

View File

@ -77,20 +77,22 @@ class TemplatesList extends Component {
}
}
async handleTemplateDelete () {
async handleTemplateDelete() {
const { selected, itemCount } = this.state;
this.setState({ hasContentLoading: true });
try {
await Promise.all(selected.map(({ type, id }) => {
let deletePromise;
if (type === 'job_template') {
deletePromise = JobTemplatesAPI.destroy(id);
} else if (type === 'workflow_job_template') {
deletePromise = WorkflowJobTemplatesAPI.destroy(id);
}
return deletePromise;
}));
await Promise.all(
selected.map(({ type, id }) => {
let deletePromise;
if (type === 'job_template') {
deletePromise = JobTemplatesAPI.destroy(id);
} else if (type === 'workflow_job_template') {
deletePromise = WorkflowJobTemplatesAPI.destroy(id);
}
return deletePromise;
})
);
this.setState({ itemCount: itemCount - selected.length });
} catch (err) {
this.setState({ deletionError: err });