Skip to content
CanopyX

Layer stack

Layers in processing order with the one that wins, and which were enforced or filtered out, and why.

CanopyStack6 layers and the one that winsDocumentation for the layer stack

1 demo

Configuration layers Open this demo full screen

Layers in processing order with the one that wins, and which were enforced or filtered out, and why.

Build one like it

The smallest complete version, in each language CanopyX supports for this view. The demo above is the same API with more data.

using CanopyX;
using CanopyX.Html;

var layers = new CanopyDataGridView("settings", "Where the setting comes from") {
    Stack = new CanopyStack()
};
layers.Columns.Add(new CanopyColumn("title", "Layer") { RowHeader = true });
layers.Columns.Add(new CanopyColumn("value", "Value"));
foreach (var (id, title, value) in new[] {
    ("defaults", "Shared defaults", "Standard"),
    ("site", "Site policy", "Extended"),
    ("user", "User preference", "Compact")
}) {
    var row = new CanopyGridRow(id);
    row.Cells["title"] = title;
    row.Cells["value"] = value;
    layers.Rows.Add(row);
}

layers.Stack.Layers.Add(new CanopyStackLayer(
    "defaults", "defaults", "The starting value."));
layers.Stack.Layers.Add(new CanopyStackLayer(
    "site", "site", "Enforced by policy, but a user may narrow it.") {
    Enforced = true
});
layers.Stack.Layers.Add(new CanopyStackLayer(
    "user", "user", "The value this session uses.") {
    Winner = true
});
layers.SaveHtmlPage("stack.html");

Run this snippet (layer stack, C#)Its output, generated with the site.

Try this in the demo

  1. Winner

    Look at the panel at the top.

    The layer the host selected is named first, with the value it supplies.

  2. Order

    Read the layers from 1 down.

    Each one says what it contributes; enforced and filtered layers are marked and explained.

  3. Records

    Press Tab to reach a layer, then Enter.

    The record behind the layer opens in the record panel.