diff --git a/.changeset/cost-insights-gorgeous-dancers-hope.md b/.changeset/cost-insights-gorgeous-dancers-hope.md
new file mode 100644
index 0000000000..8e0abce57f
--- /dev/null
+++ b/.changeset/cost-insights-gorgeous-dancers-hope.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-cost-insights': patch
+---
+
+Support a `name` prop for Projects for display purposes
diff --git a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx
index 1bd57a9eed..1820b9e35a 100644
--- a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx
+++ b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx
@@ -23,7 +23,7 @@ import { renderInTestApp } from '@backstage/test-utils';
const mockProjects = [
{ id: 'project1' },
- { id: 'project2' },
+ { id: 'project2', name: 'Project 2' },
{ id: 'project3' },
];
@@ -56,7 +56,9 @@ describe('', () => {
await waitFor(() => rendered.getByTestId('option-all'));
mockProjects.forEach(project =>
- expect(rendered.getByText(project.id)).toBeInTheDocument(),
+ expect(
+ rendered.getByText(project.name ?? project.id),
+ ).toBeInTheDocument(),
);
});
});
diff --git a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.tsx b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.tsx
index bc34eb9c8d..25fdc0c171 100644
--- a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.tsx
+++ b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.tsx
@@ -33,7 +33,9 @@ export const ProjectSelect = ({
const projectOptions = projects
.filter(p => p.id)
- .sort((a, b) => (a.id as string).localeCompare(b.id as string));
+ .sort((a, b) =>
+ ((a.name ?? a.id) as string).localeCompare((b.name ?? b.id) as string),
+ );
const handleOnChange = (e: React.ChangeEvent<{ value: unknown }>) => {
onSelect(e.target.value as string);
@@ -41,9 +43,10 @@ export const ProjectSelect = ({
const renderValue = (value: unknown) => {
const proj = value as string;
+ const projectObj = projects.find(p => p.id === proj);
return (
- {proj === 'all' ? 'All Projects' : proj}
+ {proj === 'all' ? 'All Projects' : projectObj?.name ?? proj}
);
};
@@ -52,7 +55,7 @@ export const ProjectSelect = ({
diff --git a/plugins/cost-insights/src/types/Project.ts b/plugins/cost-insights/src/types/Project.ts
index 24259f6910..6ac61f1fb7 100644
--- a/plugins/cost-insights/src/types/Project.ts
+++ b/plugins/cost-insights/src/types/Project.ts
@@ -16,4 +16,5 @@
export interface Project {
id: string;
+ name?: string;
}