From 40ac1ae2f5ee331b115d946d3c671ae0cb5bebbb Mon Sep 17 00:00:00 2001 From: sebadob Date: Sun, 29 Oct 2023 13:56:39 +0100 Subject: [PATCH] group / op selectors for ApiKeys --- .../admin/api_keys/ApiKeyAccessMatrix.svelte | 59 ++++++++++++++++--- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/admin/api_keys/ApiKeyAccessMatrix.svelte b/frontend/src/components/admin/api_keys/ApiKeyAccessMatrix.svelte index fba869d7..9b127f2d 100644 --- a/frontend/src/components/admin/api_keys/ApiKeyAccessMatrix.svelte +++ b/frontend/src/components/admin/api_keys/ApiKeyAccessMatrix.svelte @@ -24,6 +24,10 @@ 'delete', ]; + // keep the state for whole row or column toggles + let groupsToggle = new Array(GROUPS.length).fill(false); + let opsToggle = new Array(OPS.length).fill(false); + onMount(() => { buildArray(); if (apiKey?.access) { @@ -73,6 +77,31 @@ return access; } + function toggleGroup(idx) { + groupsToggle[idx] = !groupsToggle[idx]; + + const toggleTo = groupsToggle[idx]; + let row = accessMatrix[idx]; + for (let i = 0; i < OPS.length; i++) { + for (let [key, value] of Object.entries(row)) { + if (key !== 'group') { + console.log(`${key} - ${value}`); + row[key] = toggleTo; + } + } + } + accessMatrix[idx] = row; + } + + function toggleOp(idx) { + opsToggle[idx] = !opsToggle[idx]; + + const toggleTo = opsToggle[idx]; + for (let i = 0; i < GROUPS.length; i++) { + accessMatrix[i][OPS[idx]] = toggleTo; + } + } +
@@ -81,18 +110,34 @@
{#each OPS as op, i (i)} -
{OPS[i]}
+
+ {OPS[i]} +
{/each}
{#if accessMatrix} {#each GROUPS as group, i (i)}
-
{GROUPS[i]}
+
+ {GROUPS[i]} +
{#each OPS as op, j (j)}
@@ -109,10 +154,6 @@ text-align: center; } - .chkbox { - cursor: pointer; - } - .label { width: 6.5rem; } @@ -130,4 +171,8 @@ .mr:hover { background: var(--col-gmid); } + + .pointer { + cursor: pointer; + }