implemented editing members of company
This commit is contained in:
@@ -3,6 +3,32 @@
|
||||
import {t} from '../../translations.svelte.js';
|
||||
import LineEditor from '../../Components/LineEditor.svelte';
|
||||
import Multiline from '../../Components/MultilineEditor.svelte';
|
||||
import Users from '../../Components/UserSelector.svelte'
|
||||
|
||||
let caption = $state(t('save_object',{object:t('users')}));
|
||||
let { company } = $props();
|
||||
let error = $state(null);
|
||||
let btnEnabled = $state(true);
|
||||
let memberCopy = $state(JSON.parse(JSON.stringify(company.members)));
|
||||
|
||||
async function getCandidates(text){
|
||||
const url = api('user/search');
|
||||
const resp = await fetch(url,{
|
||||
credentials : 'include',
|
||||
method : 'POST',
|
||||
body : text
|
||||
});
|
||||
if (resp.ok){
|
||||
error = null;
|
||||
const input = await resp.json();
|
||||
return Object.fromEntries(
|
||||
Object.entries(input).map(([key, value]) => [key, value.name])
|
||||
);
|
||||
} else {
|
||||
error = await resp.text();
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
async function patch(changeSet){
|
||||
const url = api(`company/${company.id}`)
|
||||
@@ -12,13 +38,27 @@
|
||||
body : JSON.stringify(changeSet)
|
||||
});
|
||||
if (resp.ok){
|
||||
const patched = await resp.json();
|
||||
for (let key of Object.keys(patched)){
|
||||
console.log('patching '+key+'…');
|
||||
company[key] = patched[key];
|
||||
}
|
||||
return true;
|
||||
}
|
||||
error = await resp.text();
|
||||
return false;
|
||||
}
|
||||
|
||||
let { company } = $props();
|
||||
async function saveUsers(){
|
||||
btnEnabled = false;
|
||||
caption = t('data_sent');
|
||||
const members = Object.keys(memberCopy).map(Number);
|
||||
company.members = {};
|
||||
var success = await patch({members:members});
|
||||
if (success) caption = t('saved');
|
||||
btnEnabled = true;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<fieldset>
|
||||
@@ -60,5 +100,10 @@
|
||||
<legend>{t('customer_number_prefix')}</legend>
|
||||
<LineEditor bind:value={company.customer_number_prefix} editable={true} onSet={val => patch({customer_number_prefix:val})} />
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>{t('members')}</legend>
|
||||
<Users bind:users={memberCopy} {getCandidates} />
|
||||
<button onclick={saveUsers} disabled={!btnEnabled} >{caption}</button>
|
||||
</fieldset>
|
||||
{/if}
|
||||
</fieldset>
|
||||
Reference in New Issue
Block a user