|
47 | 47 |
|
48 | 48 | <SelectResourceTypes AllResourceTypes="_allResourceTypes"
|
49 | 49 | VisibleResourceTypes="_visibleResourceTypes"
|
50 |
| - OnAllResourceTypesCheckedChanged="@(b => AreAllTypesVisible = b)" |
| 50 | + OnAllResourceTypesCheckedChangedAsync="@OnAllResourceTypesCheckedChangedAsync" |
51 | 51 | AreAllTypesVisible="@(() => AreAllTypesVisible)"
|
52 | 52 | OnResourceTypeVisibilityChangedAsync="@OnResourceTypeVisibilityChangedAsync" />
|
53 | 53 | </div>
|
|
58 | 58 | <FluentPopover AnchorId="typeFilterButton" @bind-Open="_isTypeFilterVisible" AutoFocus="true" FixedPlacement="true">
|
59 | 59 | <Header>@Loc[nameof(Dashboard.Resources.Resources.ResourcesResourceTypesHeader)]</Header>
|
60 | 60 | <Body>
|
61 |
| - <SelectResourceTypes |
62 |
| - AllResourceTypes="_allResourceTypes" |
63 |
| - VisibleResourceTypes="_visibleResourceTypes" |
64 |
| - OnAllResourceTypesCheckedChanged="@(b => AreAllTypesVisible = b)" |
65 |
| - AreAllTypesVisible="@(() => AreAllTypesVisible)" |
66 |
| - OnResourceTypeVisibilityChangedAsync="@OnResourceTypeVisibilityChangedAsync" /> |
| 61 | + <SelectResourceTypes AllResourceTypes="_allResourceTypes" |
| 62 | + VisibleResourceTypes="_visibleResourceTypes" |
| 63 | + OnAllResourceTypesCheckedChangedAsync="@OnAllResourceTypesCheckedChangedAsync" |
| 64 | + AreAllTypesVisible="@(() => AreAllTypesVisible)" |
| 65 | + OnResourceTypeVisibilityChangedAsync="@OnResourceTypeVisibilityChangedAsync" /> |
67 | 66 | </Body>
|
68 | 67 | </FluentPopover>
|
69 | 68 |
|
|
75 | 74 | OnResize="@(r => _manager.SetWidthFraction(r.Orientation == Orientation.Horizontal ? r.Panel1Fraction : 1))">
|
76 | 75 | <Summary>
|
77 | 76 | <GridColumnManager @ref="_manager" Columns="@_gridColumns">
|
78 |
| - <FluentDataGrid ResizeLabel="@AspireFluentDataGridHeaderCell.GetResizeLabel(ControlsStringsLoc)" |
| 77 | + <FluentDataGrid @ref="_dataGrid" |
| 78 | + ResizeLabel="@AspireFluentDataGridHeaderCell.GetResizeLabel(ControlsStringsLoc)" |
79 | 79 | ResizeType="DataGridResizeType.Discrete"
|
80 | 80 | Virtualize="true"
|
81 | 81 | GenerateHeader="GenerateHeaderOption.Sticky"
|
82 | 82 | ItemSize="46"
|
83 |
| - Items="@FilteredResources" |
| 83 | + ItemsProvider="@GetData" |
84 | 84 | ResizableColumns="true"
|
85 | 85 | GridTemplateColumns="@_manager.GetGridTemplateColumns()"
|
86 |
| - RowClass="GetRowClass" |
| 86 | + RowClass="@(r => GetRowClass(r.Resource))" |
87 | 87 | Loading="_isLoading"
|
88 | 88 | ShowHover="true"
|
89 |
| - TGridItem="ResourceViewModel" |
90 |
| - ItemKey="@(r => r.Name)" |
91 |
| - OnRowClick="@(r => r.ExecuteOnDefault(d => ShowResourceDetailsAsync(d, buttonId: null)))" |
92 |
| - Class="enable-row-click"> |
| 89 | + TGridItem="ResourceGridViewModel" |
| 90 | + ItemKey="@(r => r.Resource.Name)" |
| 91 | + OnRowClick="@(r => r.ExecuteOnDefault(d => ShowResourceDetailsAsync(d.Resource, buttonId: null)))" |
| 92 | + Class="main-grid enable-row-click"> |
93 | 93 | <ChildContent>
|
94 |
| - <AspirePropertyColumn ColumnId="@TypeColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesTypeColumnHeader)]" Property="@(c => c.ResourceType)" Sortable="true" Tooltip="true" TooltipText="@(c => c.ResourceType)" /> |
95 |
| - <AspireTemplateColumn ColumnId="@NameColumn" ColumnManager="@_manager" Title="@ControlsStringsLoc[nameof(ControlsStrings.NameColumnHeader)]" Sortable="true" SortBy="@_nameSort" Tooltip="true" TooltipText="@(c => GetResourceName(c))"> |
96 |
| - <ResourceNameDisplay Resource="context" FilterText="@_filter" FormatName="GetResourceName" /> |
| 94 | + <AspireTemplateColumn ColumnId="@NameColumn" ColumnManager="@_manager" Title="@ControlsStringsLoc[nameof(ControlsStrings.NameColumnHeader)]" Sortable="true" SortBy="@_nameSort" Tooltip="true" TooltipText="@(c => GetResourceName(c.Resource))" Class="expand-col"> |
| 95 | + @{ |
| 96 | + var indent = context.Depth * 16; |
| 97 | + } |
| 98 | + <span class="resources-name-container" style="margin-left: @(indent)px;"> |
| 99 | + <span @onclick:stopPropagation="true" class="main-grid-expand-container @(context.IsCollapsed ? "main-grid-collapsed" : "main-grid-expanded")"> |
| 100 | + @if (context.Children.Count > 0) |
| 101 | + { |
| 102 | + <FluentButton Appearance="Appearance.Lightweight" Class="main-grid-expand-button" OnClick="@(() => OnToggleCollapse(context))"> |
| 103 | + <FluentIcon Icon="Icons.Regular.Size12.ChevronRight" Color="Color.Neutral" /> |
| 104 | + </FluentButton> |
| 105 | + } |
| 106 | + </span> |
| 107 | + <ResourceNameDisplay Resource="context.Resource" FilterText="@_filter" FormatName="GetResourceName" /> |
| 108 | + </span> |
97 | 109 | </AspireTemplateColumn>
|
98 |
| - <AspireTemplateColumn ColumnId="@StateColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesStateColumnHeader)]" Sortable="true" SortBy="@_stateSort" Tooltip="true" TooltipText="@(c => ResourceStateViewModel.GetResourceStateTooltip(c, ColumnsLoc))"> |
99 |
| - <StateColumnDisplay Resource="@context" UnviewedErrorCounts="@_applicationUnviewedErrorCounts" /> |
| 110 | + <AspireTemplateColumn ColumnId="@StateColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesStateColumnHeader)]" Sortable="true" SortBy="@_stateSort" Tooltip="true" TooltipText="@(c => ResourceStateViewModel.GetResourceStateTooltip(c.Resource, ColumnsLoc))"> |
| 111 | + <StateColumnDisplay Resource="@context.Resource" UnviewedErrorCounts="@_applicationUnviewedErrorCounts" /> |
100 | 112 | </AspireTemplateColumn>
|
101 |
| - <AspireTemplateColumn ColumnId="@StartTimeColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesStartTimeColumnHeader)]" Sortable="true" SortBy="@_startTimeSort" TooltipText="@(context => context.CreationTimeStamp != null ? FormatHelpers.FormatDateTime(TimeProvider, context.CreationTimeStamp.Value, MillisecondsDisplay.None, CultureInfo.CurrentCulture) : null)" Tooltip="true"> |
102 |
| - <StartTimeColumnDisplay Resource="@context" /> |
| 113 | + <AspireTemplateColumn ColumnId="@StartTimeColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesStartTimeColumnHeader)]" Sortable="true" SortBy="@_startTimeSort" TooltipText="@(context => context.Resource.CreationTimeStamp != null ? FormatHelpers.FormatDateTime(TimeProvider, context.Resource.CreationTimeStamp.Value, MillisecondsDisplay.None, CultureInfo.CurrentCulture) : null)" Tooltip="true"> |
| 114 | + <StartTimeColumnDisplay Resource="@context.Resource" /> |
103 | 115 | </AspireTemplateColumn>
|
104 |
| - <AspireTemplateColumn ColumnId="@SourceColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesSourceColumnHeader)]" Tooltip="true" TooltipText="@(ctx => GetSourceColumnValueAndTooltip(ctx)?.Tooltip)"> |
105 |
| - @if (GetSourceColumnValueAndTooltip(context) is { } columnDisplay) |
| 116 | + <AspirePropertyColumn ColumnId="@TypeColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesTypeColumnHeader)]" Property="@(c => c.Resource.ResourceType)" Sortable="true" SortBy="@_typeSort" IsDefaultSortColumn="true" Tooltip="true" TooltipText="@(c => c.Resource.ResourceType)" /> |
| 117 | + <AspireTemplateColumn ColumnId="@SourceColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesSourceColumnHeader)]" Tooltip="true" TooltipText="@(ctx => GetSourceColumnValueAndTooltip(ctx.Resource)?.Tooltip)"> |
| 118 | + @if (GetSourceColumnValueAndTooltip(context.Resource) is { } columnDisplay) |
106 | 119 | {
|
107 | 120 | <SourceColumnDisplay FilterText="@_filter" Value="@columnDisplay.Value" ContentAfterValue="@columnDisplay.ContentAfterValue" ValueToCopy="@columnDisplay.ValueToCopy" Tooltip="@columnDisplay.Tooltip" />
|
108 | 121 | }
|
|
111 | 124 | <span class="empty-data"></span>
|
112 | 125 | }
|
113 | 126 | </AspireTemplateColumn>
|
114 |
| - <AspireTemplateColumn ColumnId="@EndpointsColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesEndpointsColumnHeader)]" Tooltip="true" TooltipText="@(ctx => GetEndpointsTooltip(ctx))"> |
115 |
| - <EndpointsColumnDisplay Resource="context" |
116 |
| - HasMultipleReplicas="HasMultipleReplicas(context)" |
117 |
| - DisplayedEndpoints="GetDisplayedEndpoints(context)" /> |
| 127 | + <AspireTemplateColumn ColumnId="@EndpointsColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesEndpointsColumnHeader)]" Tooltip="true" TooltipText="@(ctx => GetEndpointsTooltip(ctx.Resource))"> |
| 128 | + <EndpointsColumnDisplay Resource="context.Resource" |
| 129 | + HasMultipleReplicas="HasMultipleReplicas(context.Resource)" |
| 130 | + DisplayedEndpoints="GetDisplayedEndpoints(context.Resource)" /> |
118 | 131 | </AspireTemplateColumn>
|
119 | 132 | <AspireTemplateColumn ColumnId="@ActionsColumn" ColumnManager="@_manager" Title="@Loc[nameof(Dashboard.Resources.Resources.ResourcesActionsColumnHeader)]" Class="no-ellipsis">
|
120 | 133 | <div class="grid-action-container" @onclick:stopPropagation="true">
|
121 |
| - <ResourceActions Commands="@context.Commands" |
122 |
| - CommandSelected="async (command) => await ExecuteResourceCommandAsync(context, command)" |
123 |
| - OnViewDetails="@((buttonId) => ShowResourceDetailsAsync(context, buttonId))" |
124 |
| - Resource="context" |
| 134 | + <ResourceActions Commands="@context.Resource.Commands" |
| 135 | + CommandSelected="async (command) => await ExecuteResourceCommandAsync(context.Resource, command)" |
| 136 | + OnViewDetails="@((buttonId) => ShowResourceDetailsAsync(context.Resource, buttonId))" |
| 137 | + Resource="context.Resource" |
125 | 138 | GetResourceName="GetResourceName"
|
126 | 139 | MaxHighlightedCount="_maxHighlightedCount" />
|
127 | 140 | </div>
|
|
0 commit comments