working on project settings update:

adding/updating members not implemented
This commit is contained in:
2025-07-21 00:16:14 +02:00
parent c8b6c3feb7
commit 6016f81c27
17 changed files with 169 additions and 34 deletions
+2 -1
View File
@@ -29,7 +29,8 @@
function openTask(evt){
evt.preventDefault();
router.navigate(`/task/${task.id}/view`);
//router.navigate(`/task/${task.id}/view`);
location.href = `https://umbrella.srsoftware.de/task/${task.id}/view`;
}
if (task.estimated_time){
@@ -0,0 +1,42 @@
<script>
import { onMount } from 'svelte';
import { t } from '../translations.svelte.js';
import PermissionSelector from './PermissionSelector.svelte';
let { members, updatePermission = (uid,perm) => console.log({user:uid,perm:perm}) } = $props();
let error = $state(null);
let sortedMembers = $derived.by(() => Object.values(members).sort((a, b) => a.user.name.localeCompare(b.user.name)));
let permissions = $state(null);
async function loadPermissions(){
const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/task/permissions`;
var resp = await fetch(url,{credentials: 'include'});
if (resp.ok){
permissions = await resp.json();
} else {
message = await resp.text();
}
}
onMount(loadPermissions);
</script>
{#if error}
<span class="error">{error}</span>
{/if}
<table>
<tbody>
{#each sortedMembers as member,i}
<tr>
{#if !i}
<th rowspan={sortedMembers.length}>{t('members')}</th>
{/if}
<td>{member.user.name}</td>
<td>
<PermissionSelector {permissions} selected={member.permission.code} onchange={(perm) => updatePermission(member.user.id,perm)} />
</td>
</tr>
{/each}
</tbody>
</table>
@@ -0,0 +1,26 @@
<script>
import {onMount} from 'svelte';
import {t} from '../translations.svelte.js';
let {
caption = t('select_permission'),
selected = $bindable(0),
onchange = (val) => console.log('changed to',val),
permissions = null
} = $props();
function onSelect(newVal){
onchange({name:permissions[newVal],code:newVal});
}
let message = $state(t('loading'));
</script>
{#if permissions}
<select bind:value={selected} onchange={() => onSelect(selected)}>
{#each Object.entries(permissions) as [k,perm]}
<option value={+k}>{t('permission_'+perm.toLowerCase())}</option>
{/each}
</select>
{:else}
<span>{message}</span>
{/if}