From f5a34df9e5ab229727e88ce796478898080e94b8 Mon Sep 17 00:00:00 2001 From: "Markus F.J. Busche" Date: Sun, 21 Sep 2025 12:52:47 +0200 Subject: [PATCH] Navbar step2: minimaler Status im Dropdown (GET /plugin/tailscale_funnel/status), Open-Link bei Enabled --- .../octoprint_tailscale_funnel/__init__.py | 2 +- .../static/js/tailscale_funnel_navbar.js | 43 +++++++++++++++++++ .../templates/tailscale_funnel_navbar.jinja2 | 5 ++- 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 octoprint_tailscale_funnel/octoprint_tailscale_funnel/static/js/tailscale_funnel_navbar.js diff --git a/octoprint_tailscale_funnel/octoprint_tailscale_funnel/__init__.py b/octoprint_tailscale_funnel/octoprint_tailscale_funnel/__init__.py index 043f64b..7901ee3 100644 --- a/octoprint_tailscale_funnel/octoprint_tailscale_funnel/__init__.py +++ b/octoprint_tailscale_funnel/octoprint_tailscale_funnel/__init__.py @@ -91,7 +91,7 @@ class TailscaleFunnelPlugin(octoprint.plugin.StartupPlugin, def get_assets(self): return dict( - js=["js/tailscale_funnel.js"], + js=["js/tailscale_funnel.js", "js/tailscale_funnel_navbar.js"], css=["css/tailscale_funnel.css"], less=["less/tailscale_funnel.less"] ) diff --git a/octoprint_tailscale_funnel/octoprint_tailscale_funnel/static/js/tailscale_funnel_navbar.js b/octoprint_tailscale_funnel/octoprint_tailscale_funnel/static/js/tailscale_funnel_navbar.js new file mode 100644 index 0000000..37f3efd --- /dev/null +++ b/octoprint_tailscale_funnel/octoprint_tailscale_funnel/static/js/tailscale_funnel_navbar.js @@ -0,0 +1,43 @@ +$(function() { + function refreshNavbarStatus() { + var $status = $("#tsf_nav_status"); + var $openLi = $("#tsf_nav_open_li"); + var $open = $("#tsf_nav_open"); + if ($status.length === 0) return; + $status.text("Checking..."); + $.ajax({ + url: PLUGIN_BASEURL + "tailscale_funnel/status", + type: "GET", + dataType: "json", + success: function(resp) { + if (resp && resp.status === "success") { + var enabled = !!(resp.data && resp.data.funnel_enabled); + var url = resp.data && resp.data.public_url ? resp.data.public_url : ""; + $status.text(enabled ? "Enabled" : "Disabled"); + if (enabled && url) { + $open.attr("href", url); + $openLi.removeClass("hidden"); + } else { + $open.attr("href", "#"); + $openLi.addClass("hidden"); + } + } else { + $status.text("Error"); + $openLi.addClass("hidden"); + } + }, + error: function() { + $status.text("Error"); + $openLi.addClass("hidden"); + } + }); + } + + // Refresh when dropdown opens, and on click of Refresh + $(document).on('show.bs.dropdown', '#navbar_plugin_tailscale_funnel', refreshNavbarStatus); + $(document).on('click', '#tsf_nav_refresh', function(e) { + e.preventDefault(); + refreshNavbarStatus(); + }); +}); + diff --git a/octoprint_tailscale_funnel/octoprint_tailscale_funnel/templates/tailscale_funnel_navbar.jinja2 b/octoprint_tailscale_funnel/octoprint_tailscale_funnel/templates/tailscale_funnel_navbar.jinja2 index 373daa4..28a49e9 100644 --- a/octoprint_tailscale_funnel/octoprint_tailscale_funnel/templates/tailscale_funnel_navbar.jinja2 +++ b/octoprint_tailscale_funnel/octoprint_tailscale_funnel/templates/tailscale_funnel_navbar.jinja2 @@ -4,9 +4,10 @@ Funnel