Components\Controls\ResourceDetails.razor.cs (14)
26public required ResourceViewModel Resource { get; set; }
29public required ConcurrentDictionary<string, ResourceViewModel> ResourceByName { get; set; }
41public required Func<ResourceViewModel, CommandViewModel, bool> IsCommandExecuting { get; set; }
73private ResourceViewModel? _resource;
206Parameters = { ["Resource"] = _resource, ["FormatName"] = new Func<ResourceViewModel, string>(FormatName) }
225["OnExecuteCommandAsync"] = (Func<ResourceViewModel, CommandViewModel, Task>)ExecuteResourceCommandAsync,
314private async Task ExecuteResourceCommandAsync(ResourceViewModel resource, CommandViewModel command)
335foreach (var match in matches)
337items.Add(ResourceDetailRelationshipViewModel.Create(match, ResourceViewModel.GetResourceName(match, ResourceByName), resourceRelationships));
357foreach (var otherResource in otherResources)
363items.Add(ResourceDetailRelationshipViewModel.Create(otherResource, ResourceViewModel.GetResourceName(otherResource, ResourceByName), resourceRelationships));
376private void AddStateDescriptionProperty(ResourceViewModel resource)
450private string FormatName(ResourceViewModel resource)
452return ResourceViewModel.GetResourceName(resource, ResourceByName);
Components\Pages\ConsoleLogs.razor.cs (26)
41public ResourceViewModel Resource { get; }
48public ConsoleLogsSubscription(ResourceViewModel resource, ILogger logger)
140private readonly ConcurrentDictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
275foreach (var resource in snapshot)
286if (ResourceViewModel.TryGetResourceByName(ResourceName, _resourceByName, out var selectedResource))
357void SetSelectedResourceOption(ResourceViewModel resource)
524var selectedResource = selectedResourceName is not null
605private bool WereConsoleLogsLoaded(bool isAllSelected, ResourceViewModel? selectedResource)
632var selectedResource = GetSelectedResource();
804private ResourceViewModel? GetSelectedResource()
811_resourceByName.TryGetValue(name, out var resource);
838var selectedResource = GetSelectedResource();
895foreach (var resource in availableResources)
903private Task SubscribeToSingleResourceAsync(ResourceViewModel resource)
974private string GetResourceName(ResourceViewModel resource) => ResourceViewModel.GetResourceName(resource, _resourceByName);
977ConcurrentDictionary<string, ResourceViewModel> resourcesByName,
1007foreach (var resource in grouping.Select(g => g.Value).OrderBy(r => r, ResourceViewModelNameComparer.Instance))
1028SelectViewModel<ResourceTypeDetails> ToOption(ResourceViewModel resource, bool isReplica, string resourceName)
1042var resourceName = ResourceViewModel.GetResourceName(resource, resourcesByName);
1107var resourcePrefix = ResourceViewModel.GetResourceName(subscription.Resource, _resourceByName);
1169private async Task OnResourceChanged(ResourceViewModelChangeType changeType, ResourceViewModel resource)
1349ResourceViewModel? TryGetSingleResource()
1461internal ResourceViewModel? GetResourceSnapshotForTest(string resourceName) =>
1462_resourceByName.TryGetValue(resourceName, out var resource) ? resource : null;
Components\Pages\Resources.razor.cs (27)
111private readonly ConcurrentDictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
136private bool Filter(ResourceViewModel resource) => PageViewModel.Filter(resource);
261foreach (var resource in snapshot)
321private bool UpdateFromResource(ResourceViewModel resource)
334private bool UpdateFromResource(ResourceViewModel resource, Func<string, bool> resourceTypeVisible, Func<string, bool> stateVisible, Func<string, bool> healthStatusVisible)
426if (resources._resourceByName.TryGetValue(id, out var resource))
439if (resources._resourceByName.TryGetValue(id, out var resource))
449internal IEnumerable<ResourceViewModel> GetFilteredResources()
561foreach (var resource in GetFilteredResources())
599if (_resourceByName.TryGetValue(ResourceName, out var selectedResource))
635private async Task ShowContextMenuAsync(ResourceViewModel resource, int clientX, int clientY, string? focusElementId)
649Text = ResourceViewModel.GetResourceName(resource, _resourceByName),
669private async Task ShowResourceDetailsAsync(ResourceViewModel resource, string? focusElementId)
684var current = resource;
738private string GetResourceName(ResourceViewModel resource) => ResourceViewModel.GetResourceName(resource, _resourceByName);
740private bool HasMultipleReplicas(ResourceViewModel resource)
763private string GetRowClass(ResourceViewModel resource)
766private async Task ExecuteResourceCommandAsync(ResourceViewModel resource, CommandViewModel command)
771private static (string? Value, bool IsSensitive, bool IsUnresolved) GetParameterValue(ResourceViewModel resource)
813foreach (var resource in resourcesWithChildren)
820foreach (var resource in resourcesWithChildren)
839private static List<DisplayedUrl> GetDisplayedUrls(ResourceViewModel resource)
897internal static ResourceViewKind GetVisibleViewKindForSelectedResource(ResourceViewKind selectedViewKind, ResourceViewModel resource)
907internal static ResourceViewKind GetVisibleViewKindForViewChange(ResourceViewKind requestedViewKind, ResourceViewModel? selectedResource)
925public ResourceViewModel? SelectedResource { get; set; }
932public bool Filter(ResourceViewModel resource)
Model\ResourceMenuBuilder.cs (12)
64ResourceViewModel resource,
65IDictionary<string, ResourceViewModel> resourceByName,
68Func<ResourceViewModel, CommandViewModel, bool> isCommandExecuting,
91_navigationManager.NavigateTo(DashboardUrls.ConsoleLogsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
148private void AddUrlMenuItems(List<MenuButtonItem> menuItems, ResourceViewModel resource)
205private void AddTelemetryMenuItems(List<MenuButtonItem> menuItems, ResourceViewModel resource, IDictionary<string, ResourceViewModel> resourceByName)
222_navigationManager.NavigateTo(DashboardUrls.StructuredLogsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
235_navigationManager.NavigateTo(DashboardUrls.TracesUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
249_navigationManager.NavigateTo(DashboardUrls.MetricsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
257private void AddCommandMenuItems(List<MenuButtonItem> menuItems, ResourceViewModel resource, EventCallback<CommandViewModel> commandSelected, Func<ResourceViewModel, CommandViewModel, bool> isCommandExecuting)
Model\ResourceOutgoingPeerResolver.cs (21)
26private readonly ConcurrentDictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
64foreach (var resource in snapshot)
83if (!_resourceByName.TryGetValue(resource.Name, out var existingResource) ||
107private static bool ArePeerRelevantPropertiesEquivalent(ResourceViewModel resource1, ResourceViewModel resource2)
157private static bool ArePropertyValuesEquivalent(ResourceViewModel resource1, ResourceViewModel resource2, string propertyName)
178public bool TryResolvePeer(KeyValuePair<string, string>[] attributes, out string? name, out ResourceViewModel? matchedResource)
183internal static bool TryResolvePeerCore(IDictionary<string, ResourceViewModel> resources, KeyValuePair<string, string>[] attributes, [NotNullWhen(true)] out string? name, [NotNullWhen(true)] out ResourceViewModel? resourceMatch)
196name = ResourceViewModel.GetResourceName(resourceMatch, resources);
206name = ResourceViewModel.GetResourceName(resourceMatch, resources);
214name = ResourceViewModel.GetResourceName(resourceMatch, resources);
229private static bool TryMatchAgainstResources(string peerAddress, PeerMatchContext context, [NotNullWhen(true)] out ResourceViewModel? resourceMatch)
400private sealed class PeerMatchContext(IDictionary<string, ResourceViewModel> resources, string? databaseName)
402public IDictionary<string, ResourceViewModel> Resources { get; } = resources;
404public ResourceViewModel? FirstAddressMatch { get; set; }
405public ResourceViewModel? FirstServerMatch { get; set; }
406public ResourceViewModel? FirstDatabaseMatch { get; set; }
407public ResourceViewModel? CaseInsensitiveDatabaseMatch { get; set; }
408public ResourceViewModel? FallbackMatch => CaseInsensitiveDatabaseMatch ?? FirstServerMatch ?? FirstDatabaseMatch ?? FirstAddressMatch;
Model\ResourceViewModelExtensions.cs (32)
18public static IReadOnlyDictionary<string, string?> GetPropertiesAsDictionary(this ResourceViewModel resource)
33public static bool IsContainer(this ResourceViewModel resource)
38public static bool IsProject(this ResourceViewModel resource)
43public static bool IsTool(this ResourceViewModel resource)
48public static bool IsExecutable(this ResourceViewModel resource, bool allowSubtypes)
63public static bool TryGetExitCode(this ResourceViewModel resource, out int exitCode)
68public static bool TryGetContainerImage(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? containerImage)
73public static bool TryGetProjectPath(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? projectPath)
78public static bool TryGetToolPackage(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? projectPath)
83public static bool TryGetExecutablePath(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? executablePath)
88public static bool TryGetExecutableArguments(this ResourceViewModel resource, out ImmutableArray<string> arguments)
93public static bool TryGetAppArgs(this ResourceViewModel resource, out ImmutableArray<string> arguments)
98public static bool TryGetAppArgsSensitivity(this ResourceViewModel resource, out ImmutableArray<bool> argParams)
106public static bool HasTerminal(this ResourceViewModel resource)
120public static bool TryGetTerminalReplicaInfo(this ResourceViewModel resource, out int replicaIndex, out int replicaCount)
147public static bool TryGetTerminalConsumerUdsPath(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? consumerUdsPath)
152public static bool TryGetWaitingForDependencies(this ResourceViewModel resource, out ImmutableArray<string> dependencies)
158this ResourceViewModel resource,
159IEnumerable<ResourceViewModel> allResources,
174var matchingResource = FindResourceByName(dependency, allResources);
182resolvedDependency = ResourceViewModel.GetResourceName(matchingResource, allResources);
195private static ResourceViewModel? FindResourceByName(string name, IEnumerable<ResourceViewModel> allResources)
197foreach (var resource in allResources)
208private static ResourceViewModel? FindSingleResourceByDisplayName(string displayName, IEnumerable<ResourceViewModel> allResources)
210ResourceViewModel? matchingResource = null;
213foreach (var resource in allResources)
232private static bool TryGetCustomDataString(this ResourceViewModel resource, string key, [NotNullWhen(returnValue: true)] out string? s)
244private static bool TryGetCustomDataStringArray(this ResourceViewModel resource, string key, out ImmutableArray<string> strings)
269private static bool TryGetCustomDataBoolArray(this ResourceViewModel resource, string key, out ImmutableArray<bool> bools)
294private static bool TryGetCustomDataInt(this ResourceViewModel resource, string key, out int i)
ServiceClient\DashboardClient.cs (10)
54private readonly Dictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
601var viewModel = resource.ToViewModel(CalculateReplicaIndex(resource.DisplayName), _knownPropertyLookup, _logger);
622var viewModel = change.Upsert.ToViewModel(CalculateReplicaIndex(change.Upsert.DisplayName), _knownPropertyLookup, _logger);
623if (_resourceByName.TryGetValue(change.Upsert.Name, out var existingResource))
633if (_resourceByName.Remove(change.Delete.ResourceName, out var removed))
658.Select(r => ResourceViewModel.GetResourceName(r, _resourceByName));
825public ResourceViewModel? GetResource(string resourceName)
830if (_resourceByName.TryGetValue(resourceName, out var resource))
838public IReadOnlyList<ResourceViewModel> GetResources()
1012if (_resourceByName.TryGetValue(resourceName, out var resource))
ServiceClient\SqliteResourceRepository.cs (17)
46public ResourceViewModel? GetResource(string resourceName)
55public IReadOnlyList<ResourceViewModel> GetResources()
73ImmutableArray<ResourceViewModel> initialState;
181Dictionary<string, ResourceViewModel> currentResources;
187var replacementResources = new Dictionary<string, ResourceViewModel>(StringComparers.ResourceName);
204var viewModel = CreateViewModel(resource, replacementResources);
245Dictionary<string, ResourceViewModel> updatedResources;
256var viewModel = CreateViewModel(resource, updatedResources);
261else if (change.KindCase == WatchResourcesChange.KindOneofCase.Delete && updatedResources.Remove(change.Delete.ResourceName, out var removed))
419private ResourceViewModel CreateViewModel(Resource resource, IReadOnlyDictionary<string, ResourceViewModel> resources)
421if (resources.TryGetValue(resource.Name, out var existingResource))
423var viewModel = resource.ToViewModel(existingResource.ReplicaIndex, _knownPropertyLookup, _logger);
437var viewModel = storedResource.Resource.ToViewModel(storedResource.ReplicaIndex, _knownPropertyLookup, _logger);
448private void UpdateResourceStates(IReadOnlyDictionary<string, ResourceViewModel> resources)
552private sealed class ResourceState(ResourceViewModel resource)
554public ResourceViewModel Resource { get; set; } = resource;