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;
199Parameters = { ["Resource"] = _resource, ["FormatName"] = new Func<ResourceViewModel, string>(FormatName) }
218["OnExecuteCommandAsync"] = (Func<ResourceViewModel, CommandViewModel, Task>)ExecuteResourceCommandAsync,
308private async Task ExecuteResourceCommandAsync(ResourceViewModel resource, CommandViewModel command)
329foreach (var match in matches)
331items.Add(ResourceDetailRelationshipViewModel.Create(match, ResourceViewModel.GetResourceName(match, ResourceByName), resourceRelationships));
351foreach (var otherResource in otherResources)
357items.Add(ResourceDetailRelationshipViewModel.Create(otherResource, ResourceViewModel.GetResourceName(otherResource, ResourceByName), resourceRelationships));
370private void AddStateDescriptionProperty(ResourceViewModel resource)
444private string FormatName(ResourceViewModel resource)
446return ResourceViewModel.GetResourceName(resource, ResourceByName);
Components\Pages\ConsoleLogs.razor.cs (21)
42public ResourceViewModel Resource { get; }
49public ConsoleLogsSubscription(ResourceViewModel resource, ILogger logger)
144private readonly ConcurrentDictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
247foreach (var resource in snapshot)
258if (ResourceViewModel.TryGetResourceByName(ResourceName, _resourceByName, out var selectedResource))
329void SetSelectedResourceOption(ResourceViewModel resource)
440var selectedResource = selectedResourceName is not null
484private bool WereConsoleLogsLoaded(bool isAllSelected, ResourceViewModel? selectedResource)
511var selectedResource = GetSelectedResource();
594private ResourceViewModel? GetSelectedResource()
601_resourceByName.TryGetValue(name, out var resource);
628var selectedResource = GetSelectedResource();
685foreach (var resource in availableResources)
693private Task SubscribeToSingleResourceAsync(ResourceViewModel resource)
764private string GetResourceName(ResourceViewModel resource) => ResourceViewModel.GetResourceName(resource, _resourceByName);
767ConcurrentDictionary<string, ResourceViewModel> resourcesByName,
842var resourcePrefix = ResourceViewModel.GetResourceName(subscription.Resource, _resourceByName);
905private async Task OnResourceChanged(ResourceViewModelChangeType changeType, ResourceViewModel resource)
1086ResourceViewModel? TryGetSingleResource()
Components\Pages\Resources.razor.cs (27)
113private readonly ConcurrentDictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
139private bool Filter(ResourceViewModel resource) => PageViewModel.Filter(resource);
264foreach (var resource in snapshot)
324private bool UpdateFromResource(ResourceViewModel resource)
337private bool UpdateFromResource(ResourceViewModel resource, Func<string, bool> resourceTypeVisible, Func<string, bool> stateVisible, Func<string, bool> healthStatusVisible)
483if (resources._resourceByName.TryGetValue(id, out var resource))
496if (resources._resourceByName.TryGetValue(id, out var resource))
506internal IEnumerable<ResourceViewModel> GetFilteredResources()
618foreach (var resource in GetFilteredResources())
656if (_resourceByName.TryGetValue(ResourceName, out var selectedResource))
692private async Task ShowContextMenuAsync(ResourceViewModel resource, int clientX, int clientY, string? focusElementId)
706Text = ResourceViewModel.GetResourceName(resource, _resourceByName),
727private async Task ShowResourceDetailsAsync(ResourceViewModel resource, string? focusElementId)
742var current = resource;
796private string GetResourceName(ResourceViewModel resource) => ResourceViewModel.GetResourceName(resource, _resourceByName);
798private bool HasMultipleReplicas(ResourceViewModel resource)
821private string GetRowClass(ResourceViewModel resource)
830private async Task ExecuteResourceCommandAsync(ResourceViewModel resource, CommandViewModel command)
835private static (string? Value, bool IsSensitive, bool IsUnresolved) GetParameterValue(ResourceViewModel resource)
877foreach (var resource in resourcesWithChildren)
884foreach (var resource in resourcesWithChildren)
903private static List<DisplayedUrl> GetDisplayedUrls(ResourceViewModel resource)
954internal static ResourceViewKind GetVisibleViewKindForSelectedResource(ResourceViewKind selectedViewKind, ResourceViewModel resource)
964internal static ResourceViewKind GetVisibleViewKindForViewChange(ResourceViewKind requestedViewKind, ResourceViewModel? selectedResource)
979public ResourceViewModel? SelectedResource { get; set; }
986public bool Filter(ResourceViewModel resource)
Model\ResourceMenuBuilder.cs (20)
68ResourceViewModel resource,
69IDictionary<string, ResourceViewModel> resourceByName,
72Func<ResourceViewModel, CommandViewModel, bool> isCommandExecuting,
149internal MenuButtonItem CreateViewOutputMenuItem(ResourceViewModel resource, IDictionary<string, ResourceViewModel> resourceByName)
156private bool CanViewTerminal(ResourceViewModel resource)
161private MenuButtonItem CreateTerminalMenuItem(ResourceViewModel resource, IDictionary<string, ResourceViewModel> resourceByName)
169_navigationManager.NavigateTo(DashboardUrls.TerminalsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
175private MenuButtonItem CreateConsoleLogsMenuItem(ResourceViewModel resource, IDictionary<string, ResourceViewModel> resourceByName)
183_navigationManager.NavigateTo(DashboardUrls.ConsoleLogsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
189private void AddUrlMenuItems(List<MenuButtonItem> menuItems, ResourceViewModel resource)
233private void AddTelemetryMenuItems(List<MenuButtonItem> menuItems, ResourceViewModel resource, IDictionary<string, ResourceViewModel> resourceByName)
250_navigationManager.NavigateTo(DashboardUrls.StructuredLogsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
263_navigationManager.NavigateTo(DashboardUrls.TracesUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
277_navigationManager.NavigateTo(DashboardUrls.MetricsUrl(resource: ResourceViewModel.GetResourceName(resource, resourceByName)));
285private 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)
17public static IReadOnlyDictionary<string, string?> GetPropertiesAsDictionary(this ResourceViewModel resource)
32public static bool IsContainer(this ResourceViewModel resource)
37public static bool IsProject(this ResourceViewModel resource)
42public static bool IsTool(this ResourceViewModel resource)
47public static bool IsExecutable(this ResourceViewModel resource, bool allowSubtypes)
62public static bool TryGetExitCode(this ResourceViewModel resource, out int exitCode)
67public static bool TryGetContainerImage(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? containerImage)
72public static bool TryGetProjectPath(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? projectPath)
77public static bool TryGetToolPackage(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? projectPath)
82public static bool TryGetExecutablePath(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? executablePath)
87public static bool TryGetExecutableArguments(this ResourceViewModel resource, out ImmutableArray<string> arguments)
92public static bool TryGetAppArgs(this ResourceViewModel resource, out ImmutableArray<string> arguments)
97public static bool TryGetAppArgsSensitivity(this ResourceViewModel resource, out ImmutableArray<bool> argParams)
105public static bool HasTerminal(this ResourceViewModel resource)
110public static bool ShouldAutoFitTerminal(this ResourceViewModel resource)
123public static bool TryGetTerminalConsumerUdsPath(this ResourceViewModel resource, [NotNullWhen(returnValue: true)] out string? consumerUdsPath)
128public static bool TryGetWaitingForDependencies(this ResourceViewModel resource, out ImmutableArray<string> dependencies)
134this ResourceViewModel resource,
135IEnumerable<ResourceViewModel> allResources,
150var matchingResource = FindResourceByName(dependency, allResources);
158resolvedDependency = ResourceViewModel.GetResourceName(matchingResource, allResources);
171private static ResourceViewModel? FindResourceByName(string name, IEnumerable<ResourceViewModel> allResources)
173foreach (var resource in allResources)
184private static ResourceViewModel? FindSingleResourceByDisplayName(string displayName, IEnumerable<ResourceViewModel> allResources)
186ResourceViewModel? matchingResource = null;
189foreach (var resource in allResources)
208private static bool TryGetCustomDataString(this ResourceViewModel resource, string key, [NotNullWhen(returnValue: true)] out string? s)
220private static bool TryGetCustomDataStringArray(this ResourceViewModel resource, string key, out ImmutableArray<string> strings)
245private static bool TryGetCustomDataBoolArray(this ResourceViewModel resource, string key, out ImmutableArray<bool> bools)
270private static bool TryGetCustomDataInt(this ResourceViewModel resource, string key, out int i)
ServiceClient\DashboardClient.cs (10)
54private readonly Dictionary<string, ResourceViewModel> _resourceByName = new(StringComparers.ResourceName);
643var viewModel = resource.ToViewModel(CalculateReplicaIndex(resource.DisplayName), _knownPropertyLookup, _logger);
663var viewModel = change.Upsert.ToViewModel(CalculateReplicaIndex(change.Upsert.DisplayName), _knownPropertyLookup, _logger);
664if (_resourceByName.TryGetValue(change.Upsert.Name, out var existingResource))
674if (_resourceByName.Remove(change.Delete.ResourceName, out var removed))
699.Select(r => ResourceViewModel.GetResourceName(r, _resourceByName));
882public ResourceViewModel? GetResource(string resourceName)
887if (_resourceByName.TryGetValue(resourceName, out var resource))
895public IReadOnlyList<ResourceViewModel> GetResources()
1069if (_resourceByName.TryGetValue(resourceName, out var resource))
ServiceClient\SqliteResourceRepository.cs (17)
52public ResourceViewModel? GetResource(string resourceName)
61public IReadOnlyList<ResourceViewModel> GetResources()
79ImmutableArray<ResourceViewModel> initialState;
187Dictionary<string, ResourceViewModel> currentResources;
193var replacementResources = new Dictionary<string, ResourceViewModel>(StringComparers.ResourceName);
210var viewModel = CreateViewModel(resource, replacementResources);
251Dictionary<string, ResourceViewModel> updatedResources;
262var viewModel = CreateViewModel(resource, updatedResources);
267else if (change.KindCase == WatchResourcesChange.KindOneofCase.Delete && updatedResources.Remove(change.Delete.ResourceName, out var removed))
426private ResourceViewModel CreateViewModel(Resource resource, IReadOnlyDictionary<string, ResourceViewModel> resources)
428if (resources.TryGetValue(resource.Name, out var existingResource))
430var viewModel = resource.ToViewModel(existingResource.ReplicaIndex, _knownPropertyLookup, _logger);
444var viewModel = storedResource.Resource.ToViewModel(storedResource.ReplicaIndex, _knownPropertyLookup, _logger);
455private void UpdateResourceStates(IReadOnlyDictionary<string, ResourceViewModel> resources)
559private sealed class ResourceState(ResourceViewModel resource)
561public ResourceViewModel Resource { get; set; } = resource;