diff --git a/src/lib/components/reusable/form/order-form-renderer.svelte b/src/lib/components/reusable/form/order-form-renderer.svelte index ba69d45..dff17c0 100644 --- a/src/lib/components/reusable/form/order-form-renderer.svelte +++ b/src/lib/components/reusable/form/order-form-renderer.svelte @@ -41,6 +41,8 @@ const leftGroups = $derived([formFields[0]]); const rightGroups = $derived(formFields.slice(1)); let selectedTest = $state(null); + let selectedTests2 = $state([]); + let pendingTests = $state([]); let selectedCodes = $derived( new Set((formState.form.Tests ?? []).map(t => t.TestSiteCode)) ); @@ -67,6 +69,38 @@ return result; }); + + function toggleTest(test) { + const exists = selectedTests2.find(t => t.rawItem.TestSiteID === test.rawItem.TestSiteID); + if (exists) { + selectedTests2 = selectedTests2.filter(t => t.rawItem.TestSiteID !== test.rawItem.TestSiteID); + } else { + selectedTests2 = [...selectedTests2, test]; + } + } + + function isSelected(test) { + return selectedTests2.some(t => t.rawItem.TestSiteID === test.rawItem.TestSiteID); + } + + function addSelected() { + for (const test of selectedTests2) { + const alreadyAdded = pendingTests.some(t => t.rawItem.TestSiteID === test.rawItem.TestSiteID); + if (!alreadyAdded) { + pendingTests = [...pendingTests, test]; + } + } + selectedTests2 = []; + } + + function isPending(test) { + return pendingTests.some(t => t.rawItem.TestSiteID === test.rawItem.TestSiteID); + } + + function removeTest2(test) { + pendingTests = pendingTests.filter(t => t.rawItem.TestSiteID !== test.rawItem.TestSiteID); + selectedTests2 = selectedTests2.filter(t => t.rawItem.TestSiteID !== test.rawItem.TestSiteID); + } function getFilteredOptions(key) { const query = searchQuery[key] || ''; @@ -175,7 +209,7 @@ Object.entries(testsByDiscipline).filter(([disciplineId]) => disciplineId === selectedDiscipline) ); }); - $inspect(searchedTests) + $inspect(pendingTests) {#snippet Fieldset({ @@ -402,8 +436,10 @@ {@const filteredOptions = getFilteredOptions(key)}
Test list
+Test list
+Test ordered
-