diff --git a/internal/metricdata/cc-metric-store.go b/internal/metricdata/cc-metric-store.go index 8d2d3f5..5db7583 100644 --- a/internal/metricdata/cc-metric-store.go +++ b/internal/metricdata/cc-metric-store.go @@ -207,9 +207,9 @@ func (ccms *CCMetricStore) LoadData( jobData[metric] = make(map[schema.MetricScope]*schema.JobMetric) } - res := row[0].Resolution - if res == 0 { - res = mc.Timestep + res := mc.Timestep + if len(row) > 0 { + res = row[0].Resolution } jobMetric, ok := jobData[metric][scope] @@ -784,9 +784,9 @@ func (ccms *CCMetricStore) LoadNodeListData( scope := assignedScope[i] mc := archive.GetMetricConfig(cluster, metric) - res := row[0].Resolution - if res == 0 { - res = mc.Timestep + res := mc.Timestep + if len(row) > 0 { + res = row[0].Resolution } // Init Nested Map Data Structures If Not Found diff --git a/web/frontend/src/config/user/UserOptions.svelte b/web/frontend/src/config/user/UserOptions.svelte index be7f368..0cdbe9f 100644 --- a/web/frontend/src/config/user/UserOptions.svelte +++ b/web/frontend/src/config/user/UserOptions.svelte @@ -43,10 +43,33 @@ } } + let displayCheck = false; function clipJwt() { - navigator.clipboard - .writeText(jwt) - .catch((reason) => console.error(reason)); + displayCheck = true; + // Navigator clipboard api needs a secure context (https) + if (navigator.clipboard && window.isSecureContext) { + navigator.clipboard + .writeText(jwt) + .catch((reason) => console.error(reason)); + } else { + // Workaround: Create, Fill, And Copy Content of Textarea + const textArea = document.createElement("textarea"); + textArea.value = jwt; + textArea.style.position = "absolute"; + textArea.style.left = "-999999px"; + document.body.prepend(textArea); + textArea.select(); + try { + document.execCommand('copy'); + } catch (error) { + console.error(error); + } finally { + textArea.remove(); + } + } + setTimeout(function () { + displayCheck = false; + }, 1000); } const dispatch = createEventDispatcher(); @@ -120,6 +143,11 @@
Your token is displayed on the right. Press this button to copy it to the clipboard.
+ {#if displayCheck} ++ Copied! +
+ {/if} {:else}