Model outputs

Root Cause Tree <smart-root-cause-tree>

RootCauseTree displays the ranked, nested explanation produced by a root-cause analysis model: the deviation at the root, the contributing conditions below it and their share of the contribution as a bar and a percentage, with the evidence for each node.

Getting Started with Root Cause Tree in Blazor

Smart.Blazor.Industrial targets .NET 6 and later, for Blazor Server and Blazor WebAssembly.

The Root Cause Tree component is part of the Smart.Blazor.Industrial NuGet package, which contains all 54 Industrial components as Razor components. The package includes the Smart.Industrial runtime in its wwwroot and does not depend on Smart.Blazor.

Quick start

  1. Install the package:

    dotnet add package Smart.Blazor.Industrial

  2. Add the styles and the runtime to the application page (App.razor, _Host.cshtml or index.html):

    <link rel="stylesheet" href="_content/Smart.Blazor.Industrial/css/smart.default.css" />
    <link rel="stylesheet" href="_content/Smart.Blazor.Industrial/css/smart.industrial-elements.css" />
    <link rel="stylesheet" href="_content/Smart.Blazor.Industrial/css/smart.industrial.css" />
    
    <script src="_content/Smart.Blazor.Industrial/js/smart.blazor.js"></script>
    <script src="_content/Smart.Blazor.Industrial/js/smart.industrial.js"></script>

  3. Register the services in Program.cs and add the namespace to _Imports.razor:

    using Smart.Blazor.Industrial;
    
    builder.Services.AddSmartIndustrial();
    @using Smart.Blazor.Industrial

  4. Use the component in a page. In a Blazor Web App (.NET 8 and later) the page needs an interactive render mode: @rendermode InteractiveServer as below, InteractiveWebAssembly or InteractiveAuto, or one render mode for the whole app on <Routes @rendermode="InteractiveServer" /> in App.razor. Without it the component renders as an empty box and its parameters and events do not arrive. On .NET 6 and 7 leave the @rendermode line out. The parameters are the component's properties in PascalCase; the events are EventCallbacks named On<EventName>. This is the first element of the demo:

    @page "/"
    @* .NET 8 and later: an interactive render mode, on the page or for the whole app *@
    @rendermode InteractiveServer
    
    <RootCauseTree
               Label="Deviation 17"
               MinContribution="0.05"
               OnNodeSelect="OnNodeSelect" />
    
    @code {
        void OnNodeSelect(Event ev)
        {
            // Event is a Dictionary<string, dynamic>; "Detail" is the typed detail of the event.
            RootCauseTreeNodeSelectEventDetail detail = ev["Detail"];
    
            // React to the change here.
        }
    }

  5. The component raises OnNodeSelect to report what the operator did. The typed detail class RootCauseTreeNodeSelectEventDetail carries the event data.

  6. Set the license key once, in Program.cs: Smart.Blazor.Industrial.License.Key = "YOUR-KEY";

Parameters

The most used parameters of <RootCauseTree>; the API page lists them all.

ParameterType
Rootobject
MinContributiondouble
MaxDepthint
Selectedstring
ExpandedIdsIEnumerable<object>
ShowEvidencebool
ShowTagsbool
SortByContributionbool
Labelstring
OnReadyAction<RootCauseTree>
ChildContentRenderFragment
OnNodeSelectEventCallback<Event>

Events

OnNodeSelect, OnExpand, OnCollapse, OnStructureWarning

The frameworks guide describes the parameter types, the naming rules and the request/confirm round trip in C#.