From dba2657894ee57953cd548099106c50f98f0c289 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Thu, 26 Mar 2026 10:52:22 +0100 Subject: [PATCH] improved time selector in document editor Signed-off-by: Stephan Richter --- .../src/routes/document/PositionList.svelte | 24 +++++++++++- .../routes/document/PositionSelector.svelte | 16 +++----- frontend/src/routes/document/TimeList.svelte | 38 ++++++++++--------- frontend/src/routes/document/View.svelte | 23 +---------- 4 files changed, 52 insertions(+), 49 deletions(-) diff --git a/frontend/src/routes/document/PositionList.svelte b/frontend/src/routes/document/PositionList.svelte index c9810166..2805d24e 100644 --- a/frontend/src/routes/document/PositionList.svelte +++ b/frontend/src/routes/document/PositionList.svelte @@ -2,11 +2,12 @@ import { onMount } from 'svelte'; import { useTinyRouter } from 'svelte-tiny-router'; - import { api } from '../../urls.svelte.js'; + import { api, post } from '../../urls.svelte.js'; import { error, yikes } from '../../warn.svelte'; import { t } from '../../translations.svelte.js'; import Position from './Position.svelte'; + import PositionSelector from './PositionSelector.svelte'; var { document = $bindable(null), @@ -15,6 +16,18 @@ let editable = $derived(document.state == 1); let sums = $derived.by(calcSums); + let position_select = $state(false); + + async function addPosition(selected){ + const url = api(`document/${document.id}/position`); + const resp = await post(url,selected); + if (resp.ok){ + document.positions = await resp.json(); + yikes(); + } else { + error(resp); + } + } function calcSums(){ let data = {} @@ -69,6 +82,12 @@ } + + {t('positions')} + {#if editable} + + {/if} + {#if document.positions} @@ -98,3 +117,6 @@
{/if} +{#if position_select} + position_select=false} doc={document} onSelect={addPosition} /> +{/if} \ No newline at end of file diff --git a/frontend/src/routes/document/PositionSelector.svelte b/frontend/src/routes/document/PositionSelector.svelte index e8a479a7..c9a287e8 100644 --- a/frontend/src/routes/document/PositionSelector.svelte +++ b/frontend/src/routes/document/PositionSelector.svelte @@ -13,13 +13,8 @@ let source = $state(0); - function select(position){ - close(); - onSelect(position); - } - function estimateSelected(estimate){ - select({ + onSelect({ item_code : t('estimated_time'), title : estimate.name, description : estimate.description.source, @@ -56,11 +51,11 @@ }; if (tax) data['tax'] = tax; - select(data); + onSelect(data); } function timeSelected(time){ - select({ + onSelect({ item_code : t('timetrack'), title : time.subject, description : time.description.source, @@ -100,6 +95,7 @@ {:else if source == 1} {:else} - + {/if} - \ No newline at end of file +
+
diff --git a/frontend/src/routes/document/TimeList.svelte b/frontend/src/routes/document/TimeList.svelte
index 178292f4..50fc7a4e 100644
--- a/frontend/src/routes/document/TimeList.svelte
+++ b/frontend/src/routes/document/TimeList.svelte
@@ -1,12 +1,13 @@