working on entry form

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-04-01 23:26:04 +02:00
parent 5dcd8be93a
commit 71f91f0f61
5 changed files with 124 additions and 3 deletions

View File

@@ -0,0 +1,99 @@
<script>
import { useTinyRouter } from 'svelte-tiny-router';
import { t } from '../../translations.svelte';
import { api, post } from '../../urls.svelte';
import { error, yikes } from '../../warn.svelte';
import { user } from '../../user.svelte';
import Autocomplete from '../../Components/Autocomplete.svelte';
let { new_account = false } = $props();
let entry = $state({
account : {
id : 0,
name : '',
currency : ''
},
date : new Date().toISOString().substring(0, 10),
source : {
display: user.name,
user_id: user.id
},
destination : {},
amount : 0.0,
purpose : {}
});
let router = useTinyRouter();
async function save(){
let data = {
...entry,
purpose: entry.purpose.display
}
let url = api('accounting');
let res = await post(url, data);
if (res.ok) {
yikes();
router.navigate('/accounting');
} else error(res);
}
</script>
<style>
hr{
grid-column: 1 / -1;
margin: 0.5rem 0;
border: 0;
height: 1px;
align-self: center;
background: red;
}
</style>
<fieldset class="grid2">
{#if new_account}
<legend>{t('create_new_object',{object:t('account')})}</legend>
<span>{t('account name')}</span>
<input type="text" bind:value={entry.account.name} />
<span>{t('currency')}</span>
<input type="text" bind:value={entry.account.currency} />
<hr/>
{:else}
<legend>{t('add_object',{object:t('entry')})}</legend>
{/if}
<span>{t('date')}</span>
<input type="date" value={entry.date} />
<span>{t('source')}</span>
<Autocomplete bind:candidate={entry.source} />
<span>{t('destination')}</span>
<Autocomplete bind:candidate={entry.destination} />
<span>{t('amount')}</span>
<span>
<input type="number" bind:value={entry.amount} />&nbsp;{entry.account.currency}
</span>
<span>{t('purpose')}</span>
<Autocomplete bind:candidate={entry.purpose} />
<span></span>
<span>
<button onclick={save}>{t('save')}</button>
</span>
</fieldset>
<pre>
<code>
{JSON.stringify(entry,null,2)}
</code>
</pre>
<pre>
<code>
{JSON.stringify(user,null,2)}
</code>
</pre>