diff --git a/awx/ui_next/src/components/Schedule/ScheduleList/ScheduleListItem.jsx b/awx/ui_next/src/components/Schedule/ScheduleList/ScheduleListItem.jsx
index 3bfcf9fb55..6e71a64e18 100644
--- a/awx/ui_next/src/components/Schedule/ScheduleList/ScheduleListItem.jsx
+++ b/awx/ui_next/src/components/Schedule/ScheduleList/ScheduleListItem.jsx
@@ -55,7 +55,7 @@ function ScheduleListItem({ i18n, isSelected, onSelect, schedule, rowIndex }) {
onSelect,
disable: false,
}}
- dataLabel={i18n._(`Selected`)}
+ dataLabel={i18n._(t`Selected`)}
/>
diff --git a/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalList.jsx b/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalList.jsx
index bf78d30a8d..f042f301ea 100644
--- a/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalList.jsx
+++ b/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalList.jsx
@@ -4,9 +4,11 @@ import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import { Card, PageSection } from '@patternfly/react-core';
import { WorkflowApprovalsAPI } from '../../../api';
-import PaginatedDataList, {
- ToolbarDeleteButton,
-} from '../../../components/PaginatedDataList';
+import PaginatedTable, {
+ HeaderRow,
+ HeaderCell,
+} from '../../../components/PaginatedTable';
+import { ToolbarDeleteButton } from '../../../components/PaginatedDataList';
import AlertModal from '../../../components/AlertModal';
import ErrorDetail from '../../../components/ErrorDetail';
import DataListToolbar from '../../../components/DataListToolbar';
@@ -155,7 +157,7 @@ function WorkflowApprovalsList({ i18n }) {
<>
- (
)}
- renderItem={workflowApproval => (
+ headerRow={
+
+ {i18n._(t`Name`)}
+ {i18n._(t`Job`)}
+ {i18n._(t`Started`)}
+ {i18n._(t`Status`)}
+
+ }
+ renderRow={(workflowApproval, index) => (
handleSelect(workflowApproval)}
onSuccessfulAction={fetchWorkflowApprovals}
+ rowIndex={index}
/>
)}
/>
diff --git a/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.jsx b/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.jsx
index 085cc33ba2..95aab631ca 100644
--- a/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.jsx
+++ b/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.jsx
@@ -2,27 +2,14 @@ import React from 'react';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import { string, bool, func } from 'prop-types';
-import {
- DataListCheck,
- DataListItem,
- DataListItemCells,
- DataListItemRow,
- Label,
-} from '@patternfly/react-core';
+import { Label } from '@patternfly/react-core';
+import { Tr, Td } from '@patternfly/react-table';
import { Link } from 'react-router-dom';
import styled from 'styled-components';
-import DataListCell from '../../../components/DataListCell';
import { WorkflowApproval } from '../../../types';
import { formatDateString } from '../../../util/dates';
import WorkflowApprovalStatus from '../shared/WorkflowApprovalStatus';
-const StatusCell = styled(DataListCell)`
- @media screen and (min-width: 768px) {
- display: flex;
- justify-content: flex-end;
- }
-`;
-
const JobLabel = styled.b`
margin-right: 24px;
`;
@@ -32,6 +19,7 @@ function WorkflowApprovalListItem({
isSelected,
onSelect,
detailUrl,
+ rowIndex,
i18n,
}) {
const labelId = `check-action-${workflowApproval.id}`;
@@ -62,44 +50,39 @@ function WorkflowApprovalListItem({
};
return (
-
-
-
-
-
- {workflowApproval.name}
-
- ,
-
- <>
- {i18n._(t`Job`)}
- {workflowJob && workflowJob?.id ? (
-
- {`${workflowJob?.id} - ${workflowJob?.name}`}
-
- ) : (
- i18n._(t`Deleted`)
- )}
- >
- ,
-
- {getStatus()}
- ,
- ]}
- />
-
-
+
+ |
+
+
+ {workflowApproval.name}
+
+ |
+
+ <>
+ {i18n._(t`Job`)}
+ {workflowJob && workflowJob?.id ? (
+
+ {`${workflowJob?.id} - ${workflowJob?.name}`}
+
+ ) : (
+ i18n._(t`Deleted`)
+ )}
+ >
+ |
+
+ {formatDateString(workflowApproval.started)}
+ |
+
+ {getStatus()}
+ |
+
);
}
diff --git a/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.test.jsx b/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.test.jsx
index 2709ab2fa9..e64db9f3cc 100644
--- a/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.test.jsx
+++ b/awx/ui_next/src/screens/WorkflowApproval/WorkflowApprovalList/WorkflowApprovalListItem.test.jsx
@@ -12,91 +12,112 @@ describe('', () => {
afterEach(() => {
wrapper.unmount();
});
+
test('should display never expires status', () => {
wrapper = mountWithContexts(
- {}}
- workflowApproval={workflowApproval}
- />
+
+
+ {}}
+ workflowApproval={workflowApproval}
+ />
+
+
);
expect(wrapper.find('Label[children="Never expires"]').length).toBe(1);
});
test('should display timed out status', () => {
wrapper = mountWithContexts(
- {}}
- workflowApproval={{
- ...workflowApproval,
- status: 'failed',
- timed_out: true,
- }}
- />
+
+
+ {}}
+ workflowApproval={{
+ ...workflowApproval,
+ status: 'failed',
+ timed_out: true,
+ }}
+ />
+
+
);
expect(wrapper.find('Label[children="Timed out"]').length).toBe(1);
});
test('should display canceled status', () => {
wrapper = mountWithContexts(
- {}}
- workflowApproval={{
- ...workflowApproval,
- canceled_on: '2020-10-09T19:59:26.974046Z',
- status: 'canceled',
- }}
- />
+
+
+ {}}
+ workflowApproval={{
+ ...workflowApproval,
+ canceled_on: '2020-10-09T19:59:26.974046Z',
+ status: 'canceled',
+ }}
+ />
+
+
);
expect(wrapper.find('Label[children="Canceled"]').length).toBe(1);
});
test('should display approved status', () => {
wrapper = mountWithContexts(
- {}}
- workflowApproval={{
- ...workflowApproval,
- status: 'successful',
- summary_fields: {
- ...workflowApproval.summary_fields,
- approved_or_denied_by: {
- id: 1,
- username: 'admin',
- first_name: '',
- last_name: '',
- },
- },
- }}
- />
+
+
+ {}}
+ workflowApproval={{
+ ...workflowApproval,
+ status: 'successful',
+ summary_fields: {
+ ...workflowApproval.summary_fields,
+ approved_or_denied_by: {
+ id: 1,
+ username: 'admin',
+ first_name: '',
+ last_name: '',
+ },
+ },
+ }}
+ />
+
+
);
expect(wrapper.find('Label[children="Approved"]').length).toBe(1);
});
test('should display denied status', () => {
wrapper = mountWithContexts(
- {}}
- workflowApproval={{
- ...workflowApproval,
- failed: true,
- status: 'failed',
- summary_fields: {
- ...workflowApproval.summary_fields,
- approved_or_denied_by: {
- id: 1,
- username: 'admin',
- first_name: '',
- last_name: '',
- },
- },
- }}
- />
+
+
+ {}}
+ workflowApproval={{
+ ...workflowApproval,
+ failed: true,
+ status: 'failed',
+ summary_fields: {
+ ...workflowApproval.summary_fields,
+ approved_or_denied_by: {
+ id: 1,
+ username: 'admin',
+ first_name: '',
+ last_name: '',
+ },
+ },
+ }}
+ />
+
+
);
expect(wrapper.find('Label[children="Denied"]').length).toBe(1);
});
|