fixed permissionEditor in various locations

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-03-17 00:56:42 +01:00
parent d3e5897cd5
commit 72f897c40c
6 changed files with 17 additions and 21 deletions

View File

@@ -42,10 +42,6 @@
} else error(resp); } else error(resp);
} }
function onSelect(entry){
addMember(entry);
}
onMount(loadPermissions); onMount(loadPermissions);
</script> </script>
@@ -65,7 +61,7 @@
<tr> <tr>
<td>{t('add_object',{object:t('member')})}</td> <td>{t('add_object',{object:t('member')})}</td>
<td> <td>
<Autocomplete {getCandidates} {onSelect} /> <Autocomplete {getCandidates} onSelect={addMember} />
</td> </td>
</tr> </tr>
</tbody> </tbody>

View File

@@ -20,7 +20,7 @@
let members = $state([]); let members = $state([]);
function addMember(member){ function addMember(member){
for (let [id,name] of Object.entries(member)) update_permissions({user_id:+id,permission:4}); update_permissions({user_id:+member.id,permission:4});
return true; return true;
} }

View File

@@ -29,7 +29,7 @@
let state_available=$derived(new_state.name && new_state.code && !project.allowed_states[new_state.code]); let state_available=$derived(new_state.name && new_state.code && !project.allowed_states[new_state.code]);
async function addMember(user){ async function addMember(user){
update({new_member:+user.id}); return await update({new_member:+user.id});
} }
async function addState(){ async function addState(){

View File

@@ -29,7 +29,8 @@
let router = useTinyRouter(); let router = useTinyRouter();
function addMember(member){ function addMember(member){
for (let uid of Object.keys(member)) task.members[uid] = project.members[uid]; let uid = member.id;
task.members[uid] = project.members[uid];
} }
function flat(json){ function flat(json){
@@ -44,10 +45,9 @@
async function getCandidates(text){ async function getCandidates(text){
const origin = parent_task ? parent_task.members : project.members; const origin = parent_task ? parent_task.members : project.members;
const candidates = Object.values(origin) return Object.values(origin)
.filter(member => member.user.name.toLowerCase().includes(text.toLowerCase())) .filter(member => member.user.name.toLowerCase().includes(text.toLowerCase()))
.map(member => [member.user.id,member.user.name]); .map(member => {return { id:member.user.id,display:member.user.name}});
return Object.fromEntries(candidates);
} }
async function load(){ async function load(){

View File

@@ -37,9 +37,8 @@
router.navigate(`/task/${id}/add_subtask`); router.navigate(`/task/${id}/add_subtask`);
} }
async function addMember(entry){ async function addMember(newMember){
const ids = Object.keys(entry); return await update({new_member:+newMember.id});
if (ids) update({new_member:+ids.pop()});
} }
async function addTime(){ async function addTime(){
@@ -64,10 +63,10 @@
async function getCandidates(text){ async function getCandidates(text){
const origin = task.parent ? task.parent.members : project.members; const origin = task.parent ? task.parent.members : project.members;
const candidates = Object.values(origin) return Object.values(origin)
.filter(member => member.user.name.toLowerCase().includes(text.toLowerCase())) .filter(member => member.user.name.toLowerCase().includes(text.toLowerCase()))
.map(member => [member.user.id,member.user.name]); .map(member => { return {id:member.user.id,display:member.user.name}});
return Object.fromEntries(candidates);
} }
function gotoKanban(){ function gotoKanban(){
@@ -177,6 +176,8 @@
}); });
if (resp.ok){ if (resp.ok){
yikes(); yikes();
let json = await resp.json();
if (json.members) task.members = json.members;
return true; return true;
} else { } else {
error(resp); error(resp);

View File

@@ -22,9 +22,8 @@
async function addMember(entry){ async function addMember(entry){
let newMembers = JSON.parse(JSON.stringify(page.members)); let newMembers = JSON.parse(JSON.stringify(page.members));
for (var id of Object.keys(entry)){ let id = entry.id;
if (!newMembers[id]) newMembers[id] = { permission : {name:'READ_ONLY'} }; if (!newMembers[id]) newMembers[id] = { permission : {name:'READ_ONLY'} };
}
return patch({members:newMembers}); return patch({members:newMembers});
} }
@@ -74,7 +73,7 @@
}); });
if (resp.ok){ if (resp.ok){
var json = await resp.json(); var json = await resp.json();
return Object.fromEntries(Object.values(json).filter(nonMember).map(user => [user.id,user.name])); return Object.values(json).filter(nonMember).map(user => { return {id:user.id,display:user.name}});
} else { } else {
return []; return [];
} }