Navbar step2: minimaler Status im Dropdown (GET /plugin/tailscale_funnel/status), Open-Link bei Enabled

This commit is contained in:
Markus F.J. Busche
2025-09-21 12:52:47 +02:00
parent 5e448e8041
commit f5a34df9e5
3 changed files with 47 additions and 3 deletions

View File

@@ -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"]
)

View File

@@ -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();
});
});

View File

@@ -4,9 +4,10 @@
<span class="visible-lg">Funnel</span>
</a>
<ul class="dropdown-menu">
<li class="disabled"><a href="#"><strong>Status:</strong> (static) Loaded</a></li>
<li class="disabled"><a href="#"><strong>Status:</strong> <span id="tsf_nav_status">Checking...</span></a></li>
<li id="tsf_nav_open_li" class="hidden"><a id="tsf_nav_open" href="#" target="_blank" rel="noopener"><i class="fas fa-external-link-alt"></i> Open</a></li>
<li class="divider"></li>
<li class="disabled"><a href="#">Static prototype</a></li>
<li><a id="tsf_nav_refresh" href="#"><i class="fas fa-sync"></i> Refresh</a></li>
</ul>
</li>