Script-free table
Script-free tables from the same view definition, with inline styles that survive mail clients, print and Word.
8 demos
- From
- File share report
- Subject
- Weekly changes on three shares
Here is this week's outline. The interactive report is attached.
| Name | Size | Modified | Owner | State |
|---|---|---|---|---|
| \\files\share-a3 changed (+54) | 1.7 GB | |||
| Finance | 383.2 MB | |||
| Budget | 150.9 MB | |||
| Łódź office 1.xlsx (+11) | 30.7 MB | 2026-09-14 17:55 UTC | dana.levi | OK |
| Contracts 2.docx | 43.8 MB | 2026-07-27 10:15 UTC | anna.kowalska | Large |
| Roadmap 3.pdf | 40.1 MB | 2026-09-04 13:43 UTC | erik.lund | Large |
| Budget 4.pptx | 34.1 MB | 2026-08-29 11:19 UTC | chen.wei | OK |
| Straße survey 5.csv | 2.2 MB | 2026-08-12 12:12 UTC | chen.wei | OK |
| Roadmap | 114.2 MB | |||
| Quarterly review 1.xlsx (+11) | 28.9 MB | 2026-08-10 22:37 UTC | erik.lund | OK |
| Αθήνα partners 2.docx | 8.4 MB | 2026-07-26 22:32 UTC | erik.lund | OK |
| Hiring 3.pdf | 8.3 MB | 2026-08-06 09:23 UTC | ben.okafor | OK |
| Москва office 4.pptx | 14.5 MB | 2026-08-17 11:52 UTC | anna.kowalska | OK |
| Roadmap 5.csv | 38.7 MB | 2026-08-01 15:21 UTC | dana.levi | Large |
| Campaign 6.txt | 15.5 MB | 2026-08-04 15:35 UTC | ben.okafor | OK |
| Contracts | 118.0 MB | |||
| Hiring 1.xlsx (+5) | 41.0 MB | 2026-08-03 21:52 UTC | chen.wei | Large |
| Москва office 2.docx | 52.1 KB | 2026-09-06 17:54 UTC | anna.kowalska | OK |
| Budget 3.pdf | 38.5 MB | 2026-08-08 16:05 UTC | dana.levi | Large |
| Hiring 4.pptx | 38.4 MB | 2026-07-05 07:58 UTC | chen.wei | Large |
| Engineering1 changed | 403.8 MB | |||
| Roadmap | 114.7 MB | |||
| Roadmap 1.xlsx (+11) | 13.7 MB | 2026-09-17 06:41 UTC | chen.wei | OK |
| Contracts 2.docx | 27.0 MB | 2026-08-06 21:39 UTC | erik.lund | OK |
| Roadmap 3.pdf | 16.3 MB | 2026-09-06 01:46 UTC | erik.lund | OK |
| Москва office 4.pptx | 23.6 MB | 2026-08-12 19:32 UTC | not collected | OK |
| Budget 5.csv | 34.2 MB | 2026-07-27 13:56 UTC | not collected | OK |
| Contracts | 73.6 MB | |||
| Αθήνα partners 1.xlsx (+7) | 6.0 MB | 2026-07-09 00:33 UTC | ben.okafor | Stale |
| Łódź office 2.docx | 31.9 MB | 2026-07-03 17:53 UTC | erik.lund | Stale |
| Straße survey 3.pdf | 35.7 MB | 2026-08-03 16:25 UTC | fatima.zahra | OK |
| Campaign1 changed | 215.5 MB | |||
| Campaign 1.xlsx (+9) | 21.1 MB | 2026-09-18 18:52 UTC | dana.levi | OK |
| İstanbul launch 2.docx | 29.3 MB | 2026-07-09 14:41 UTC | erik.lund | OK |
| Audit 3.pdf | 44.9 MB | 2026-07-12 03:59 UTC | ben.okafor | Large |
| Campaign 4.pptxchanged | 39.0 MB | 2026-09-23 22:25 UTC | ben.okafor | Large |
| Αθήνα partners 5.csv | 46.3 MB | 2026-08-24 15:49 UTC | anna.kowalska | Large |
| İstanbul launch 6.txt | 34.8 MB | 2026-09-01 08:28 UTC | erik.lund | OK |
| Legal1 changed (+35) | 498.4 MB | |||
| Contracts1 changed (+13) | 199.7 MB | |||
| Showing 40 of 540 rows. | ||||
Script-free tables from the same view definition, with inline styles that survive mail clients, print and Word.
The conditional formatting rules of the server grid, as a script-free table.
A services matrix with tone cells and grouped servers, then the same data as a list.
Page totals and all-matching totals in footer rows, without script.
The change list and its flags as a table a mail client keeps.
The migration board as a script-free table, one section per lane.
Regions by month with totals, as a table a mail client keeps.
Added, removed and changed records with before and after values, without script.
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.Rendering;
var shares = new CanopyTreeView("shares", "File shares over quota");
shares.Columns.Add(new CanopyColumn("name", "Share"));
shares.Columns.Add(new CanopyColumn("used", "Used") {
Kind = CanopyColumnKind.Number
});
shares.Columns.Add(new CanopyColumn("owner", "Owner"));
foreach (var (server, items) in new[] {
("fs01", new[] {
("finance", 412, "anna.kowalska"),
("people", 388, "dana.levi")
}),
("fs02", new[] {
("projects", 951, "ben.okafor"),
("archive", 1_204, "chen.wei")
})
}) {
var node = new CanopyNode(server, @"\\" + server) { Expanded = true };
foreach (var (name, gb, owner) in items) {
var share = new CanopyNode(server + "-" + name, name);
share.Cells["used"] = new CanopyCell(gb) {
Text = $"{gb} GB",
Tone = gb > 1_000 ? CanopyTone.Danger : CanopyTone.Warning
};
share.Cells["owner"] = owner;
node.Children.Add(share);
}
shares.Roots.Add(node);
}
string html = CanopyStaticHtml.Render(shares, new CanopyStaticHtmlOptions {
MaxRows = 20,
FullReportUrl = "https://canopyx.dev/live/files/index.html"
});Run this snippet (script-free table, C#)Its output, generated with the site.
Try this in the demo
- No script
Switch the site theme in the header.
The outline follows it through the page's --cx-* properties. In a mail client its literal colours apply.
- Row limits
Look for the counts after a cut branch.
MaxRows and MaxDepth cut the outline, and each cut branch shows how many rows it hides.
- Print
Print this page or save it as PDF.
The table is plain HTML with inline styles, so it prints and pastes into Word as it looks here.