diff options
| author | Martin Ridgers <[email protected]> | 2025-06-18 12:48:48 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-06-18 12:48:48 +0200 |
| commit | 675c4b4987fb18a3f96b340f24d9530aa59942c2 (patch) | |
| tree | 12ddddd52b8bdf01befac850c0308a1570a596f0 /src/zenserver/frontend/html/pages/start.js | |
| parent | `--output-path` option added to `zen version` command (#440) (diff) | |
| download | zen-675c4b4987fb18a3f96b340f24d9530aa59942c2.tar.xz zen-675c4b4987fb18a3f96b340f24d9530aa59942c2.zip | |
Surfaced basic z$ information to self-hosted dashboard (#441)
- Namespaces are listed on the start page.
- Namespaces can be dropped.
- New page to show details of a namespace and list its buckets.
- Buckets can be dropped.
Diffstat (limited to 'src/zenserver/frontend/html/pages/start.js')
| -rw-r--r-- | src/zenserver/frontend/html/pages/start.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/zenserver/frontend/html/pages/start.js b/src/zenserver/frontend/html/pages/start.js index 472bb27ae..d1c13ccc7 100644 --- a/src/zenserver/frontend/html/pages/start.js +++ b/src/zenserver/frontend/html/pages/start.js @@ -41,6 +41,41 @@ export class Page extends ZenPage action_tb.left().add("drop").on_click((x) => this.drop_project(x), project.Id); } + // cache + var section = this.add_section("z$"); + columns = [ + "namespace", + "dir", + "buckets", + "entries", + "size disk", + "size mem", + "actions", + ] + var zcache_info = new Fetcher().resource("/z$/").json(); + const cache_table = section.add_widget(Table, columns, Table.Flag_FitLeft|Table.Flag_PackRight); + for (const namespace of (await zcache_info)["Namespaces"]) + { + new Fetcher().resource(`/z$/${namespace}/`).json().then((data) => { + const row = cache_table.add_row( + "", + data["Configuration"]["RootDir"], + data["Buckets"].length, + data["EntryCount"], + Friendly.kib(data["StorageSize"].DiskSize), + Friendly.kib(data["StorageSize"].MemorySize) + ); + var cell = row.get_cell(0); + cell.tag().text(namespace).on_click(() => this.view_zcache(namespace)); + row.get_cell(1).tag().text(namespace); + + cell = row.get_cell(-1); + const action_tb = new Toolbar(cell, true); + action_tb.left().add("view").on_click(() => this.view_zcache(namespace)); + action_tb.left().add("drop").on_click(() => this.drop_zcache(namespace)); + }); + } + // stats section = this.add_section("stats"); columns = [ @@ -92,4 +127,23 @@ export class Page extends ZenPage .option("Yes", () => drop()) .option("No"); } + + view_zcache(namespace) + { + window.location = "?page=zcache&namespace=" + namespace; + } + + drop_zcache(namespace) + { + const drop = async () => { + await new Fetcher().resource("z$", namespace).delete(); + this.reload(); + }; + + new Modal() + .title("Confirmation") + .message(`Drop zcache '${namespace}'?`) + .option("Yes", () => drop()) + .option("No"); + } } |