mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-12-26 05:19:05 +01:00
handle tag management based on role
This commit is contained in:
parent
d7a8bbf40b
commit
fe35313305
@ -104,8 +104,8 @@
|
||||
};
|
||||
|
||||
$: allTagsFiltered = ($initialized, fuzzySearchTags(filterTerm, allTags));
|
||||
$: usedTagsFiltered = matchJobTags(jobTags, allTagsFiltered, 'used');
|
||||
$: unusedTagsFiltered = matchJobTags(jobTags, allTagsFiltered, 'unused');
|
||||
$: usedTagsFiltered = matchJobTags(jobTags, allTagsFiltered, 'used', isAdmin);
|
||||
$: unusedTagsFiltered = matchJobTags(jobTags, allTagsFiltered, 'unused', isAdmin);
|
||||
|
||||
$: {
|
||||
newTagType = "";
|
||||
@ -117,12 +117,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
function matchJobTags(tags, availableTags, type) {
|
||||
function matchJobTags(tags, availableTags, type, isAdmin) {
|
||||
const jobTagIds = tags.map((t) => t.id)
|
||||
if (type == 'used') {
|
||||
return availableTags.filter((at) => jobTagIds.includes(at.id))
|
||||
} else if (type == 'unused') {
|
||||
} else if (type == 'unused' && isAdmin) {
|
||||
return availableTags.filter((at) => !jobTagIds.includes(at.id))
|
||||
} else if (type == 'unused' && !isAdmin) { // Normal Users should not see unused global tags here
|
||||
return availableTags.filter((at) => !jobTagIds.includes(at.id) && at.scope !== "global")
|
||||
}
|
||||
return []
|
||||
}
|
||||
@ -209,6 +211,8 @@
|
||||
{#if pendingChange === utag.id}
|
||||
<Spinner size="sm" secondary />
|
||||
{:else}
|
||||
{#if utag.scope === 'global' || utag.scope === 'admin'}
|
||||
{#if isAdmin}
|
||||
<Button
|
||||
size="sm"
|
||||
color="danger"
|
||||
@ -216,6 +220,25 @@
|
||||
>
|
||||
<Icon name="x" />
|
||||
</Button>
|
||||
{:else}
|
||||
<Button
|
||||
size="sm"
|
||||
color="dark"
|
||||
outline
|
||||
disabled
|
||||
>
|
||||
Global Tag
|
||||
</Button>
|
||||
{/if}
|
||||
{:else}
|
||||
<Button
|
||||
size="sm"
|
||||
color="danger"
|
||||
on:click={() => removeTagFromJob(utag)}
|
||||
>
|
||||
<Icon name="x" />
|
||||
</Button>
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
</ListGroupItem>
|
||||
@ -245,6 +268,8 @@
|
||||
{#if pendingChange === uutag.id}
|
||||
<Spinner size="sm" secondary />
|
||||
{:else}
|
||||
{#if uutag.scope === 'global' || uutag.scope === 'admin'}
|
||||
{#if isAdmin}
|
||||
<Button
|
||||
size="sm"
|
||||
color="success"
|
||||
@ -253,6 +278,16 @@
|
||||
<Icon name="plus" />
|
||||
</Button>
|
||||
{/if}
|
||||
{:else}
|
||||
<Button
|
||||
size="sm"
|
||||
color="success"
|
||||
on:click={() => addTagToJob(uutag)}
|
||||
>
|
||||
<Icon name="plus" />
|
||||
</Button>
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
</ListGroupItem>
|
||||
{/each}
|
||||
@ -345,6 +380,8 @@
|
||||
{#if pendingChange === utag.id}
|
||||
<Spinner size="sm" secondary />
|
||||
{:else}
|
||||
{#if utag.scope === 'global' || utag.scope === 'admin'}
|
||||
{#if isAdmin}
|
||||
<Button
|
||||
size="sm"
|
||||
color="danger"
|
||||
@ -353,6 +390,16 @@
|
||||
<Icon name="x" />
|
||||
</Button>
|
||||
{/if}
|
||||
{:else}
|
||||
<Button
|
||||
size="sm"
|
||||
color="danger"
|
||||
on:click={() => removeTagFromJob(utag)}
|
||||
>
|
||||
<Icon name="x" />
|
||||
</Button>
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
</ListGroupItem>
|
||||
{/each}
|
||||
@ -381,6 +428,8 @@
|
||||
{#if pendingChange === uutag.id}
|
||||
<Spinner size="sm" secondary />
|
||||
{:else}
|
||||
{#if uutag.scope === 'global' || uutag.scope === 'admin'}
|
||||
{#if isAdmin}
|
||||
<Button
|
||||
size="sm"
|
||||
color="success"
|
||||
@ -389,6 +438,16 @@
|
||||
<Icon name="plus" />
|
||||
</Button>
|
||||
{/if}
|
||||
{:else}
|
||||
<Button
|
||||
size="sm"
|
||||
color="success"
|
||||
on:click={() => addTagToJob(uutag)}
|
||||
>
|
||||
<Icon name="plus" />
|
||||
</Button>
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
</ListGroupItem>
|
||||
{/each}
|
||||
|
Loading…
Reference in New Issue
Block a user