+ {/* Busy experience */}
+ {this.state.isBusy && (
+
+
+ )}
+
{/* Empty experience */}
- {this.props.rows.length === 0 && !!this.props.emptyMessage && (
+ {this.props.rows.length === 0 && !!this.props.emptyMessage && !this.state.isBusy && (
{this.props.emptyMessage}
)}
{this.props.rows.map((row, i) => {
@@ -293,7 +305,8 @@ export default class CustomTable extends React.Component
+ return (
{
+ public async reload(loadRequest?: ListRequest): Promise {
// Override the current state with incoming request
const request: ListRequest = Object.assign({
orderAscending: this.state.sortOrder === 'asc',
@@ -373,17 +386,24 @@ export default class CustomTable extends React.Component, cb?: () => void): void {
diff --git a/frontend/src/components/__snapshots__/CustomTable.test.tsx.snap b/frontend/src/components/__snapshots__/CustomTable.test.tsx.snap
index 97df21859f0..fc8980cfe01 100644
--- a/frontend/src/components/__snapshots__/CustomTable.test.tsx.snap
+++ b/frontend/src/components/__snapshots__/CustomTable.test.tsx.snap
@@ -64,9 +64,14 @@ exports[`CustomTable displays warning icon with tooltip if row has error 1`] = `
@@ -287,9 +292,14 @@ exports[`CustomTable renders a collapsed row 1`] = `
@@ -457,9 +467,14 @@ exports[`CustomTable renders a collapsed row when selection is disabled 1`] = `
@@ -611,9 +626,14 @@ exports[`CustomTable renders a table with sorting disabled 1`] = `
@@ -823,9 +843,14 @@ exports[`CustomTable renders an expanded row 1`] = `
@@ -997,9 +1022,14 @@ exports[`CustomTable renders an expanded row with expanded component below it 1`
@@ -1180,6 +1210,11 @@ exports[`CustomTable renders columns with specified widths 1`] = `
@@ -1263,6 +1298,11 @@ exports[`CustomTable renders empty message on no rows 1`] = `
@@ -1396,9 +1436,14 @@ exports[`CustomTable renders new rows after clicking next page, and enables prev
@@ -1906,6 +1961,11 @@ exports[`CustomTable renders some columns with equal widths without rows 1`] = `
@@ -2033,9 +2093,14 @@ exports[`CustomTable renders some rows 1`] = `
@@ -2245,9 +2310,14 @@ exports[`CustomTable renders some rows using a custom renderer 1`] = `
@@ -2417,6 +2487,11 @@ exports[`CustomTable renders without rows or columns 1`] = `
@@ -2534,9 +2609,14 @@ exports[`CustomTable renders without the checkboxes if disableSelection is true
diff --git a/frontend/src/pages/RunList.test.tsx b/frontend/src/pages/RunList.test.tsx
index 5da07425c36..824c1142e65 100644
--- a/frontend/src/pages/RunList.test.tsx
+++ b/frontend/src/pages/RunList.test.tsx
@@ -89,6 +89,7 @@ describe('RunList', () => {
const props = generateProps();
const tree = TestUtils.mountWithRouter();
await (tree.instance() as RunList).refresh();
+ tree.update();
expect(Apis.runServiceApi.listRuns).toHaveBeenCalledTimes(2);
expect(Apis.runServiceApi.listRuns).toHaveBeenLastCalledWith('', 10, RunSortKeys.CREATED_AT + ' desc', undefined, undefined);
expect(props.onError).not.toHaveBeenCalled();
diff --git a/frontend/src/pages/__snapshots__/RecurringRunsManager.test.tsx.snap b/frontend/src/pages/__snapshots__/RecurringRunsManager.test.tsx.snap
index 0ced353e598..a9c6eb117f6 100644
--- a/frontend/src/pages/__snapshots__/RecurringRunsManager.test.tsx.snap
+++ b/frontend/src/pages/__snapshots__/RecurringRunsManager.test.tsx.snap
@@ -74,32 +74,32 @@ exports[`RecurringRunsManager reloads the list of runs after enable/disabling 1`
className="root"
classes={
Object {
- "colorInherit": "MuiButton-colorInherit-104",
- "contained": "MuiButton-contained-94",
- "containedPrimary": "MuiButton-containedPrimary-95",
- "containedSecondary": "MuiButton-containedSecondary-96",
- "disabled": "MuiButton-disabled-103",
- "extendedFab": "MuiButton-extendedFab-101",
- "fab": "MuiButton-fab-100",
- "flat": "MuiButton-flat-88",
- "flatPrimary": "MuiButton-flatPrimary-89",
- "flatSecondary": "MuiButton-flatSecondary-90",
- "focusVisible": "MuiButton-focusVisible-102",
- "fullWidth": "MuiButton-fullWidth-108",
- "label": "MuiButton-label-84",
- "mini": "MuiButton-mini-105",
- "outlined": "MuiButton-outlined-91",
- "outlinedPrimary": "MuiButton-outlinedPrimary-92",
- "outlinedSecondary": "MuiButton-outlinedSecondary-93",
- "raised": "MuiButton-raised-97",
- "raisedPrimary": "MuiButton-raisedPrimary-98",
- "raisedSecondary": "MuiButton-raisedSecondary-99",
- "root": "MuiButton-root-83",
- "sizeLarge": "MuiButton-sizeLarge-107",
- "sizeSmall": "MuiButton-sizeSmall-106",
- "text": "MuiButton-text-85",
- "textPrimary": "MuiButton-textPrimary-86",
- "textSecondary": "MuiButton-textSecondary-87",
+ "colorInherit": "MuiButton-colorInherit-113",
+ "contained": "MuiButton-contained-103",
+ "containedPrimary": "MuiButton-containedPrimary-104",
+ "containedSecondary": "MuiButton-containedSecondary-105",
+ "disabled": "MuiButton-disabled-112",
+ "extendedFab": "MuiButton-extendedFab-110",
+ "fab": "MuiButton-fab-109",
+ "flat": "MuiButton-flat-97",
+ "flatPrimary": "MuiButton-flatPrimary-98",
+ "flatSecondary": "MuiButton-flatSecondary-99",
+ "focusVisible": "MuiButton-focusVisible-111",
+ "fullWidth": "MuiButton-fullWidth-117",
+ "label": "MuiButton-label-93",
+ "mini": "MuiButton-mini-114",
+ "outlined": "MuiButton-outlined-100",
+ "outlinedPrimary": "MuiButton-outlinedPrimary-101",
+ "outlinedSecondary": "MuiButton-outlinedSecondary-102",
+ "raised": "MuiButton-raised-106",
+ "raisedPrimary": "MuiButton-raisedPrimary-107",
+ "raisedSecondary": "MuiButton-raisedSecondary-108",
+ "root": "MuiButton-root-92",
+ "sizeLarge": "MuiButton-sizeLarge-116",
+ "sizeSmall": "MuiButton-sizeSmall-115",
+ "text": "MuiButton-text-94",
+ "textPrimary": "MuiButton-textPrimary-95",
+ "textSecondary": "MuiButton-textSecondary-96",
}
}
color="primary"
@@ -114,17 +114,17 @@ exports[`RecurringRunsManager reloads the list of runs after enable/disabling 1`
variant="text"
>