aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2025-11-18 14:28:03 +0100
committerGitHub Enterprise <[email protected]>2025-11-18 14:28:03 +0100
commitc25b3cfd0d5d56cb6c2703350cb273c3322673a7 (patch)
treec4c93a04125aa3743bd2b95b904ecd10c36f4be6 /src
parent5.7.10 (diff)
downloadzen-c25b3cfd0d5d56cb6c2703350cb273c3322673a7.tar.xz
zen-c25b3cfd0d5d56cb6c2703350cb273c3322673a7.zip
Added actions to drop all projects or all z$ namespaces. (#655)
* Save references to the project and zcache tables * Add an attribute to table rows with the actionable project/namespace id * Drop-all option for projects and cache namespaces * Updated frontend .zip archive * Edited changelog
Diffstat (limited to 'src')
-rw-r--r--src/zenserver/frontend/html.zipbin161943 -> 163145 bytes
-rw-r--r--src/zenserver/frontend/html/pages/start.js51
-rw-r--r--src/zenserver/frontend/html/zen.css5
3 files changed, 54 insertions, 2 deletions
diff --git a/src/zenserver/frontend/html.zip b/src/zenserver/frontend/html.zip
index 38d3a73f2..f9fc8a8ef 100644
--- a/src/zenserver/frontend/html.zip
+++ b/src/zenserver/frontend/html.zip
Binary files differ
diff --git a/src/zenserver/frontend/html/pages/start.js b/src/zenserver/frontend/html/pages/start.js
index 28f4a20d9..4c8789431 100644
--- a/src/zenserver/frontend/html/pages/start.js
+++ b/src/zenserver/frontend/html/pages/start.js
@@ -15,17 +15,20 @@ export class Page extends ZenPage
{
// project list
var section = this.add_section("projects");
+
+ section.tag().classify("dropall").text("drop-all").on_click(() => this.drop_all("projects"));
+
var columns = [
"name",
"project_dir",
"engine_dir",
"actions",
];
- var table = section.add_widget(Table, columns);
+ var project_table = section.add_widget(Table, columns);
for (const project of await new Fetcher().resource("/prj/list").json())
{
- var row = table.add_row(
+ var row = project_table.add_row(
"",
project.ProjectRootDir,
project.EngineRootDir,
@@ -38,10 +41,15 @@ export class Page extends ZenPage
var action_tb = new Toolbar(cell, true);
action_tb.left().add("view").on_click((x) => this.view_project(x), project.Id);
action_tb.left().add("drop").on_click((x) => this.drop_project(x), project.Id);
+
+ row.attr("zs_name", project.Id);
}
// cache
var section = this.add_section("z$");
+
+ section.tag().classify("dropall").text("drop-all").on_click(() => this.drop_all("z$"));
+
columns = [
"namespace",
"dir",
@@ -72,6 +80,8 @@ export class Page extends ZenPage
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));
+
+ row.attr("zs_name", namespace);
});
}
@@ -112,6 +122,9 @@ export class Page extends ZenPage
var version = new Fetcher().resource("health", "version");
version.param("detailed", "true");
version.text().then((data) => ver_tag.text(data));
+
+ this._project_table = project_table;
+ this._cache_table = cache_table;
}
view_stat(provider)
@@ -156,4 +169,38 @@ export class Page extends ZenPage
.option("Yes", () => drop())
.option("No");
}
+
+ async drop_all_projects()
+ {
+ for (const row of this._project_table)
+ {
+ const project_id = row.attr("zs_name");
+ await new Fetcher().resource("prj", project_id).delete();
+ }
+ this.reload();
+ }
+
+ async drop_all_zcache()
+ {
+ for (const row of this._cache_table)
+ {
+ const namespace = row.attr("zs_name");
+ await new Fetcher().resource("z$", namespace).delete();
+ }
+ this.reload();
+ }
+
+ drop_all(what)
+ {
+ const drop = async () => {
+ if (what == "projects") return this.drop_all_projects();
+ if (what == "z$") return this.drop_all_zcache();
+ };
+
+ new Modal()
+ .title("Confirmation")
+ .message(`Drop every item from '${what}'?`)
+ .option("Yes", () => drop())
+ .option("No");
+ }
}
diff --git a/src/zenserver/frontend/html/zen.css b/src/zenserver/frontend/html/zen.css
index 0c4f324e4..c52609f52 100644
--- a/src/zenserver/frontend/html/zen.css
+++ b/src/zenserver/frontend/html/zen.css
@@ -411,6 +411,11 @@ a {
/* start -------------------------------------------------------------------- */
#start {
+ .dropall {
+ text-align: right;
+ font-size: 0.85em;
+ margin: -0.5em 0 0.5em 0;
+ }
#version {
color: var(--theme_g1);
text-align: center;