Make k8s context a URL param

This commit is contained in:
Andrei Pohilko
2022-09-28 15:00:10 +01:00
parent c1732c86a5
commit 870a1196f0
3 changed files with 16 additions and 13 deletions

View File

@@ -258,7 +258,7 @@
</div> </div>
</div> </div>
<footer class="container-fluid small mt-3" style="z-index: -50"> <footer class="container-fluid small mt-5" style="z-index: -50">
<div class="row align-items-end justify-content-end"> <div class="row align-items-end justify-content-end">
<div class="col-3"></div> <div class="col-3"></div>
<div class="col-4 text-center bg-white bg-opacity-50 p-2 px-3 rounded b-shadow"> <div class="col-4 text-center bg-white bg-opacity-50 p-2 px-3 rounded b-shadow">
@@ -282,8 +282,6 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js" <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"
integrity="sha512-gU7kztaQEl7SHJyraPfZLQCNnrKdaQi5ndOyt4L4UPL/FHDd/uB9Je6KDARIqwnNNE27hnqoWLBq+Kpe4iHfeQ==" integrity="sha512-gU7kztaQEl7SHJyraPfZLQCNnrKdaQi5ndOyt4L4UPL/FHDd/uB9Je6KDARIqwnNNE27hnqoWLBq+Kpe4iHfeQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script> crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"
integrity="sha256-0H3Nuz3aug3afVbUlsu12Puxva3CP4EhJtPExqs54Vg=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/luxon@3.0.3/build/global/luxon.min.js" <script src="https://cdn.jsdelivr.net/npm/luxon@3.0.3/build/global/luxon.min.js"
integrity="sha256-RH4TKnKcKyde0s2jc5BW3pXZl/5annY3fcZI9VrV5WQ=" crossorigin="anonymous"></script> integrity="sha256-RH4TKnKcKyde0s2jc5BW3pXZl/5annY3fcZI9VrV5WQ=" crossorigin="anonymous"></script>
<script src="static/list-view.js"></script> <script src="static/list-view.js"></script>

View File

@@ -33,7 +33,7 @@ function buildChartCard(elm) {
statusStyle(elm.status, card, card.find(".rel-status span")) statusStyle(elm.status, card, card.find(".rel-status span"))
card.find("a").attr("href", '#namespace=' + elm.namespace + '&name=' + elm.name) card.find("a").attr("href", '#context=' + getHashParam('context') + '&namespace=' + elm.namespace + '&name=' + elm.name)
card.find(".rel-name span").data("chart", elm).click(function () { card.find(".rel-name span").data("chart", elm).click(function () {
const self = $(this) const self = $(this)

View File

@@ -1,14 +1,14 @@
$(function () { $(function () {
const clusterSelect = $("#cluster"); const clusterSelect = $("#cluster");
clusterSelect.change(function () { clusterSelect.change(function () {
Cookies.set("context", clusterSelect.find("input:radio:checked").val()) window.location.href = "/#context=" + clusterSelect.find("input:radio:checked").val()
window.location.href = "/" window.location.reload()
}) })
$.getJSON("/api/kube/contexts").fail(function (xhr) { $.getJSON("/api/kube/contexts").fail(function (xhr) {
reportError("Failed to get list of clusters", xhr) reportError("Failed to get list of clusters", xhr)
}).done(function (data) { }).done(function (data) {
const context = Cookies.get("context") const context = getHashParam("context")
fillClusterList(data, context); fillClusterList(data, context);
const namespace = getHashParam("namespace") const namespace = getHashParam("namespace")
@@ -31,7 +31,6 @@ function reportError(err, xhr) {
} }
function getHashParam(name) { function getHashParam(name) {
const params = new URLSearchParams(window.location.hash.substring(1)) const params = new URLSearchParams(window.location.hash.substring(1))
return params.get(name) return params.get(name)
@@ -75,17 +74,23 @@ function fillClusterList(data, context) {
opt.find("span").text(label) opt.find("span").text(label)
if (elm.IsCurrent && !context) { if (elm.IsCurrent && !context) {
opt.find("input").prop("checked", true) opt.find("input").prop("checked", true)
setCurrentContext(elm.Name)
} else if (context && elm.Name === context) { } else if (context && elm.Name === context) {
opt.find("input").prop("checked", true) opt.find("input").prop("checked", true)
setCurrentContext(elm.Name)
}
$("#cluster").append(opt)
})
}
function setCurrentContext(ctx) {
setHashParam("context", ctx)
$.ajaxSetup({ $.ajaxSetup({
headers: { headers: {
'x-kubecontext': context 'x-kubecontext': context
} }
}); });
} }
$("#cluster").append(opt)
})
}
function getAge(obj1, obj2) { function getAge(obj1, obj2) {
const date = luxon.DateTime.fromISO(obj1.updated); const date = luxon.DateTime.fromISO(obj1.updated);