Allow to define the default order of resources listed in the dashboard (or help identifying important resources)
- Dominant language
- C#
- Stars
- 6.3k
- Forks
- 991
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 196
Description
### Is there an existing issue for this?
- [x] I have searched the existing issues
### Is your feature request related to a problem? Please describe the problem.
When opening the dashboard, resources are automatically grouped and sorted by Type and Name. This is fine when working with 3-4 resources, however, when the list includes 10+ resources it would be great if the most important resources could be at the top or somehow easy to find, so one could easily find and click the endpoint URL to open the web sites.
For instance, I'm working with solutions that include two frontend apps, a backend, several agents, and a few storage services running locally via docker. The frontend apps are of type "Project", so even adding a prefix to hack the alphabetic order they are listed after the container apps.
Tangentially related: https://github.com/dotnet/aspire/issues/896
### Describe the solution you'd like
## Option 1
Allow to define the position of each resource, something like
```csharp
builder.AddProject("foo").WithDashboardPosition(0);
builder.AddContainer("bar", "image").WithDashboardPosition(5);
```
and a way to define how columns are sorted, with a new "Position" column (potentially hidden)
```csharp
builder.Configuration["DashboardDefaultSorting"] = "byPosition,byType,byName";
```
## Option 2
Allow to attach an icon to each resource, possibly a clickable icon. I could use this to add a "web" icon to the app to open, and could simply click the icon to open the associated endpoint.
```csharp
// not clickable
builder.AddContainer("bar", "image").WithDashboardIcon(icon: "some-icon.png", url: null);
// click defaults to endpoint URL
builder.AddContainer("bar", "image").WithDashboardIcon(icon: "some-icon.png");
// custom URL - the user can inject the endpoint manually as a query param if they need to
builder.AddProject("foo").WithDashboardIcon(icon: "some-icon.png", url: "https://go.here.first?thenTo=...");
```
Contributor guide
Assessment
This issue has not been assessed yet.