Oakrey.Applications.Dashboards.Abstractions
1.0.0
dotnet add package Oakrey.Applications.Dashboards.Abstractions --version 1.0.0
NuGet\Install-Package Oakrey.Applications.Dashboards.Abstractions -Version 1.0.0
<PackageReference Include="Oakrey.Applications.Dashboards.Abstractions" Version="1.0.0" />
<PackageVersion Include="Oakrey.Applications.Dashboards.Abstractions" Version="1.0.0" />
<PackageReference Include="Oakrey.Applications.Dashboards.Abstractions" />
paket add Oakrey.Applications.Dashboards.Abstractions --version 1.0.0
#r "nuget: Oakrey.Applications.Dashboards.Abstractions, 1.0.0"
#:package Oakrey.Applications.Dashboards.Abstractions@1.0.0
#addin nuget:?package=Oakrey.Applications.Dashboards.Abstractions&version=1.0.0
#tool nuget:?package=Oakrey.Applications.Dashboards.Abstractions&version=1.0.0
Oakrey.Applications.Dashboards
A .NET 10 Windows library containing the shared dashboard infrastructure used by Oakrey CAN and LIN applications. It provides generic dashboard items, persistent observable collections, service contracts, and a reusable WPF view-model base.
Main features
- Defines generic configuration and collection-management contracts through
IDashboardService<TItem>. - Provides
DashboardItemBase<TSignal>with signal identity validation, channel assignment, and property-change notifications. - Provides
DashboardItemCollectionBase<TItem, TSignal>with JSON persistence, duplicate prevention, reactive load notifications, and safe disposal. - Matches incoming signals to dashboard items by device, channel, parent identifier, and signal name.
- Provides
DashboardViewModelBase<TItem, TCollection>with WPF commands for loading, appending, saving, clearing, reordering, and removing items. - Marshals device and collection notifications to the captured UI synchronization context.
- Supports gauge, digital value, bulb, graph, and histogram dashboard views.
Architecture
flowchart LR
Signal[Protocol signal] --> Item[DashboardItemBase]
Channel[IChannel] --> Item
JSON[IJsonService] <--> Collection[DashboardItemCollectionBase]
Collection --> Service[IDashboardService]
Device[IDeviceService] --> ViewModel[DashboardViewModelBase]
Service --> ViewModel
Key types
| Type | Description |
|---|---|
DashboardItemBase<TSignal> |
Validated base model that stores signal identity, source device and channel, and selected view type. |
DashboardItemCollectionBase<TItem, TSignal> |
Observable dashboard collection with configuration persistence and indexed signal assignment. |
DashboardViewModelBase<TItem, TCollection> |
Reusable WPF view model and command implementation. |
IDashboardService<TItem> |
Combined configuration and collection-management contract. |
IDashboardServiceConfig<TItem> |
Contract for loading, appending, saving, and deleting dashboard configuration. |
IDashboardServiceManagement<TItem> |
Contract for collection notifications and item management. |
DashboardViewType |
Supported dashboard presentation types. |
Requirements
- .NET 10 for Windows 10, version 1809 or later
- WPF
- An
IJsonServiceimplementation for configuration persistence - An
IAppConfigPathimplementation for the default configuration location - Oakrey application, view-model, OHM, and logging abstractions
Installation
.NET CLI
dotnet add package Oakrey.Applications.Dashboards
Package Manager Console
Install-Package Oakrey.Applications.Dashboards
NuGet Package Manager
Search for Oakrey.Applications.Dashboards in Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
Extending the dashboard
Create a protocol-specific item by deriving from DashboardItemBase<TSignal> and supplying its stable identity:
public sealed class CustomDashboardItem : DashboardItemBase<CustomSignal>
{
public CustomDashboardItem()
{
}
public CustomDashboardItem(CustomSignal signal)
: base(signal, signal.Name, signal.ParentId)
{
}
protected override string GetSignalName(CustomSignal signal) => signal.Name;
protected override long GetSignalParentId(CustomSignal signal) => signal.ParentId;
}
Derive the corresponding collection from DashboardItemCollectionBase<TItem, TSignal> and call its protected AssignSignals method when decoded protocol data arrives. CAN and LIN implementations are available in the companion packages.
Configuration lifecycle
The collection can preload its default JSON file, replace the current dashboard, append unique items from another file, or save a snapshot. Missing default files are treated as an empty first-run configuration. Invalid files are reported through the preload exception observer and the log.
The collection owns its reactive subjects and saves the current default configuration when disposed. Keep it at application or workspace scope and dispose it during shutdown.
Project information
| Field | Value |
|---|---|
| Author | Oakrey |
| License | MIT |
| Target framework | net10.0-windows10.0.17763.0 |
| NuGet package | Oakrey.Applications.Dashboards |
| Repository | https://dev.azure.com/oakrey/OpenPackages/_git/ApplicationServices |
License
This project is licensed under the MIT License. See the repository's LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-windows10.0.17763 is compatible. |
-
net10.0-windows10.0.17763
- Oakrey.Applications.Abstractions (>= 7.0.0)
- Oakrey.Applications.Json.Abstractions (>= 7.0.0)
- Oakrey.Applications.Ohm.Abstractions (>= 2.0.0)
- Oakrey.Applications.Settings (>= 7.1.0)
- Oakrey.Applications.ViewModels (>= 7.0.0)
- Oakrey.Log.Abstractions (>= 3.0.0)
- System.Reactive (>= 7.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Oakrey.Applications.Dashboards.Abstractions:
| Package | Downloads |
|---|---|
|
Oakrey.Applications.Dashboards.LIN
Reactive WPF dashboard services and models for displaying signals decoded from LIN frames using LDF definitions. |
|
|
Oakrey.Applications.Dashboards.CAN
Reactive WPF dashboard services and models for displaying signals decoded from CAN and CAN FD frames using DBC definitions. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 50 | 9/4/2026 |