diff --git a/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx b/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx
index 0f74b05fcf..8275d16cac 100644
--- a/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx
+++ b/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx
@@ -168,7 +168,10 @@ function ToolbarDeleteButton({
deleteMessages.push(warningMessage);
}
if (deleteMessage) {
- if (itemsToDelete[0]?.type !== 'inventory') {
+ if (
+ itemsToDelete[0]?.type !== 'inventory' &&
+ (itemsToDelete.length > 1 || deleteDetails)
+ ) {
deleteMessages.push(deleteMessage);
} else if (deleteDetails || itemsToDelete.length > 1) {
deleteMessages.push(deleteMessage);
@@ -206,6 +209,10 @@ function ToolbarDeleteButton({
);
}
+ const shouldShowDeleteWarning =
+ warningMessage ||
+ (itemsToDelete.length === 1 && deleteDetails) ||
+ (itemsToDelete.length > 1 && deleteMessage);
return (
<>
@@ -270,7 +277,7 @@ function ToolbarDeleteButton({
))}
- {(deleteDetails || deleteMessage || warningMessage) && (
+ {shouldShowDeleteWarning && (
', () => {
});
expect(
wrapper.find('DeleteButton').prop('deleteDetailsRequests')
- ).toHaveLength(2);
+ ).toHaveLength(4);
});
});
diff --git a/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnviromentList.test.jsx b/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnviromentList.test.jsx
index 3a4fa01824..d18863e426 100644
--- a/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnviromentList.test.jsx
+++ b/awx/ui_next/src/screens/ExecutionEnvironment/ExecutionEnvironmentList/ExecutionEnviromentList.test.jsx
@@ -195,6 +195,6 @@ describe('', () => {
});
expect(
wrapper.find('ToolbarDeleteButton').prop('deleteDetailsRequests')
- ).toHaveLength(2);
+ ).toHaveLength(4);
});
});
diff --git a/awx/ui_next/src/screens/Inventory/InventorySources/InventorySourceList.jsx b/awx/ui_next/src/screens/Inventory/InventorySources/InventorySourceList.jsx
index 35221d6b79..33be5b14b2 100644
--- a/awx/ui_next/src/screens/Inventory/InventorySources/InventorySourceList.jsx
+++ b/awx/ui_next/src/screens/Inventory/InventorySources/InventorySourceList.jsx
@@ -182,7 +182,7 @@ function InventorySourceList({ i18n }) {
pluralizedItemName={i18n._(t`Inventory Sources`)}
deleteDetailsRequests={deleteDetailsRequests}
deleteMessage={i18n._(
- '{numItemsToDelete, plural, one {This inventory source is currently being used workflow job template nodes. Are you sure you want to delete it?} other {Deleting these inventory sources could impact some workflow job template nodes that rely on them. Are you sure you want to delete anyway?}}',
+ '{numItemsToDelete, plural, one {This inventory source is currently being used by workflow job template nodes. Are you sure you want to delete it?} other {Deleting these inventory sources could impact workflow job template nodes that rely on them. Are you sure you want to delete anyway?}}',
{ numItemsToDelete: selected.length }
)}
/>,
diff --git a/awx/ui_next/src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx b/awx/ui_next/src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx
index 62ea8d3f74..d91b38c85d 100644
--- a/awx/ui_next/src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx
+++ b/awx/ui_next/src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx
@@ -77,7 +77,7 @@ describe('', () => {
expect(
component.find('DeleteButton').prop('deleteDetailsRequests')
- ).toHaveLength(4);
+ ).toHaveLength(7);
});
test('should render the expected instance group', async () => {
diff --git a/awx/ui_next/src/screens/Organization/OrganizationList/OrganizationList.test.jsx b/awx/ui_next/src/screens/Organization/OrganizationList/OrganizationList.test.jsx
index 6e3d2003cc..02c6c65b0e 100644
--- a/awx/ui_next/src/screens/Organization/OrganizationList/OrganizationList.test.jsx
+++ b/awx/ui_next/src/screens/Organization/OrganizationList/OrganizationList.test.jsx
@@ -102,7 +102,7 @@ describe('', () => {
);
expect(
wrapper.find('ToolbarDeleteButton').prop('deleteDetailsRequests')
- ).toHaveLength(4);
+ ).toHaveLength(7);
});
test('Items are rendered after loading', async () => {
diff --git a/awx/ui_next/src/util/getRelatedResourceDeleteDetails.js b/awx/ui_next/src/util/getRelatedResourceDeleteDetails.js
index 76af4be6ee..f218050bd4 100644
--- a/awx/ui_next/src/util/getRelatedResourceDeleteDetails.js
+++ b/awx/ui_next/src/util/getRelatedResourceDeleteDetails.js
@@ -117,14 +117,26 @@ export const relatedResourceDeleteRequests = {
request: async () => {
try {
const { data } = await InventoriesAPI.updateSources(inventoryId);
- return WorkflowJobTemplateNodesAPI.read({
- unified_job_template: data[0].inventory_source,
- });
+ let total = 0;
+ await Promise.all(
+ data.map(async datum => {
+ const {
+ data: { count },
+ } = await WorkflowJobTemplateNodesAPI.read({
+ unified_job_template: datum.inventory_source,
+ });
+ if (count > 0) {
+ total += count;
+ }
+ })
+ );
+ console.log(total, 'total');
+ return { data: { count: total } };
} catch (err) {
throw new Error(err);
}
},
- label: i18n._(t`Workflow Job Template Node`),
+ label: i18n._(t`Workflow Job Template Nodes`),
},
],
@@ -231,26 +243,37 @@ export const relatedResourceDeleteRequests = {
{
request: async () =>
OrganizationsAPI.read({
- execution_environment: selected.id,
+ default_environment: selected.id,
}),
label: [i18n._(t`Organizations`)],
},
{
request: async () => {
try {
- const { data } = await WorkflowJobTemplateNodesAPI.read({
+ const {
+ data: { results },
+ } = await InventorySourcesAPI.read({
execution_environment: selected.id,
});
- if (
- data.summary_fields.unified_job_template.unified_job_type ===
- 'inventory_update'
- ) {
- await InventorySourcesAPI.read();
- }
- } catch {}
+ let total = 0;
+ await Promise.all(
+ results.map(async result => {
+ const {
+ data: { count },
+ } = await WorkflowJobTemplateNodesAPI.read({
+ unified_job_template: result.id,
+ });
+ if (count > 0) {
+ total += count;
+ }
+ })
+ );
+ return { data: { count: total } };
+ } catch (err) {
+ throw new Error(err);
+ }
},
-
- label: [i18n._(t`Organizations`)],
+ label: [i18n._(t`Workflow Job Template Nodes`)],
},
],
};