diff --git a/app/server.py b/app/server.py index b3aa452..30354eb 100644 --- a/app/server.py +++ b/app/server.py @@ -346,6 +346,7 @@ class Handler(BaseHTTPRequestHandler): "/templates/delete": self.delete_template, "/rules/create": self.create_rule, "/rules/update": self.update_rule, + "/rules/toggle": self.toggle_rule, "/rules/delete": self.delete_rule, "/test/send": self.send_test, "/account/password": self.change_password, @@ -799,7 +800,15 @@ class Handler(BaseHTTPRequestHandler): {'
'.join(item for item in conditions if item) or '-'} {rule['priority']}
{target_badges}
-{'启用' if rule['enabled'] else '停用'} + +
+ + +
+ 编辑删除 """ header = """""" @@ -1121,6 +1130,16 @@ class Handler(BaseHTTPRequestHandler): conn.execute("DELETE FROM routing_rules WHERE id = ?", (form["id"],)) redirect(self, "/rules") + def toggle_rule(self) -> None: + form = parse_form(self) + enabled = 1 if form.get("enabled") == "on" else 0 + with self.context.db.connect() as conn: + conn.execute( + "UPDATE routing_rules SET enabled = ?, updated_at = ? WHERE id = ?", + (enabled, now_iso(), form.get("id", "")), + ) + redirect(self, "/rules") + def update_rule(self) -> None: form = parse_form_multi(self) target_ids = [int(value) for value in form.get("target_ids", [])] diff --git a/app/static/styles.css b/app/static/styles.css index c85d3bc..384fa76 100644 --- a/app/static/styles.css +++ b/app/static/styles.css @@ -386,6 +386,31 @@ td textarea { font: 800 14px ui-sans-serif, system-ui, sans-serif; } +.switch-compact { + margin: 0; +} + +.switch-compact span { + width: 44px; + height: 26px; +} + +.switch-compact span::after { + top: 4px; + left: 4px; + width: 18px; + height: 18px; +} + +.switch-compact input:checked + span::after { + transform: translateX(18px); +} + +.switch-compact strong { + min-width: 28px; + font-size: 13px; +} + .checks { margin: 8px 0 12px; }