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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Oakrey.Applications.Dashboards.Abstractions" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Oakrey.Applications.Dashboards.Abstractions" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Oakrey.Applications.Dashboards.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Oakrey.Applications.Dashboards.Abstractions --version 1.0.0
                    
#r "nuget: Oakrey.Applications.Dashboards.Abstractions, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Oakrey.Applications.Dashboards.Abstractions@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Oakrey.Applications.Dashboards.Abstractions&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Oakrey.Applications.Dashboards.Abstractions&version=1.0.0
                    
Install as a Cake Tool

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 IJsonService implementation for configuration persistence
  • An IAppConfigPath implementation 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 Compatible and additional computed target framework versions.
.NET net10.0-windows10.0.17763 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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