diff --git a/src/lib/components/dictionary/test/page/create-page.svelte b/src/lib/components/dictionary/test/page/create-page.svelte index 68a2493..fd1ac37 100644 --- a/src/lib/components/dictionary/test/page/create-page.svelte +++ b/src/lib/components/dictionary/test/page/create-page.svelte @@ -16,9 +16,9 @@ let props = $props(); - let previousTestType = $state(''); + let resetRefNum = $state(); - let previousRefType = $state(''); + let resetRefTxt = $state(); const { masterDetail, formFields, formActions, schema, initialForm } = props.context; @@ -225,30 +225,68 @@ }) }); - $effect(() => { - const currentTestType = formState.form.TestType; - - if (previousTestType && currentTestType !== previousTestType) { - calFormState.reset(); - refNumState.reset(); - refTxtState.reset(); - } - - previousTestType = currentTestType; - }); + function handleTestTypeChange(value) { + formState.form.TestType = value; - //masih error cek dulu - $effect(() => { - const currentRefType = formState.form.RefType; - - if (previousRefType && currentRefType !== previousRefType) { - console.log('rst'); - refNumState.reset(); - refTxtState.reset(); + formState.form.ResultType = ""; + formState.errors.ResultType = null; + formState.form.RefType = ""; + formState.errors.RefType = null; + + calFormState.reset(); + refNumState.reset(); + refTxtState.reset(); + + resetRefNum?.(); + resetRefTxt?.(); + } + + function handleResultTypeChange(value) { + formState.form.ResultType = value; + + formState.form.RefType = ""; + formState.errors.RefType = null; + + calFormState.reset(); + refNumState.reset(); + refTxtState.reset(); + + resetRefNum?.(); + resetRefTxt?.(); + + let newRefType = ""; + if (value === 'TEXT') { + newRefType = 'TEXT'; + } + if (value === 'VSET') { + newRefType = 'VSET'; + } + if (value === 'NORES') { + newRefType = 'NOREF'; } - previousRefType = currentRefType; - }); + if (newRefType) { + formState.form.RefType = newRefType; + handleRefTypeChange(newRefType); + } + } + + function handleRefTypeChange(value) { + formState.form.RefType = value; + + refNumState.reset(); + refTxtState.reset(); + + resetRefNum?.(); + resetRefTxt?.(); + + if (value === 'RANGE' || value === 'THOLD') { + refNumState.form.NumRefType = value; + } + if (value === 'TEXT' || value === 'VSET') { + refTxtState.form.TxtRefType = value; + } + } @@ -278,6 +316,9 @@ {disabledResultTypes} {disabledReferenceTypes} {hiddenFields} + {handleTestTypeChange} + {handleResultTypeChange} + {handleRefTypeChange} /> @@ -292,9 +333,9 @@
{#if refComponent === 'numeric'} - + {:else if refComponent === 'text'} - + {:else}
diff --git a/src/lib/components/dictionary/test/page/tabs/ref-num.svelte b/src/lib/components/dictionary/test/page/tabs/ref-num.svelte index 239957b..79b8f15 100644 --- a/src/lib/components/dictionary/test/page/tabs/ref-num.svelte +++ b/src/lib/components/dictionary/test/page/tabs/ref-num.svelte @@ -9,12 +9,16 @@ import Trash2Icon from "@lucide/svelte/icons/trash-2"; import { untrack } from "svelte"; - let props = $props(); + let { resetRefNum = $bindable(), ...props } = $props() let tempNumeric = $state([]); let editingId = $state(null); let idCounter = $state(0); + resetRefNum = () => { + tempNumeric = []; + }; + let joinFields = $state({ AgeStart: { DD: "", MM: "", YY: "" }, AgeEnd: { DD: "", MM: "", YY: "" }, @@ -129,12 +133,6 @@ return "-"; }; - $effect(() => { - if (props.refType) { - props.refNumState.form.NumRefType = props.refType; - } - }); - $effect(() => { for (const key of ["AgeStart", "AgeEnd"]) { props.refNumState.form[key] = diff --git a/src/lib/components/dictionary/test/page/tabs/ref-txt.svelte b/src/lib/components/dictionary/test/page/tabs/ref-txt.svelte index 3fdd5dc..6fd3642 100644 --- a/src/lib/components/dictionary/test/page/tabs/ref-txt.svelte +++ b/src/lib/components/dictionary/test/page/tabs/ref-txt.svelte @@ -9,12 +9,16 @@ import Trash2Icon from "@lucide/svelte/icons/trash-2"; import { untrack } from "svelte"; - let props = $props(); + let { resetRefTxt = $bindable(), ...props } = $props() let tempTxt = $state([]); let editingId = $state(null); let idCounter = $state(0); + resetRefTxt = () => { + tempTxt = []; + }; + let joinFields = $state({ AgeStart: { DD: "", MM: "", YY: "" }, AgeEnd: { DD: "", MM: "", YY: "" }, @@ -101,11 +105,11 @@ const txtRefTypeBadge = (type) => ({ TEXT: "TX", VSET: "VS" }[type] ?? null);; - $effect(() => { - if (props.refType) { - props.refTxtState.form.TxtRefType = props.refType; - } - }); + // $effect(() => { + // if (props.refType) { + // props.refTxtState.form.TxtRefType = props.refType; + // } + // }); $effect(() => { for (const key of ["AgeStart", "AgeEnd"]) { diff --git a/src/lib/components/reusable/form/dictionary-form-renderer.svelte b/src/lib/components/reusable/form/dictionary-form-renderer.svelte index 3420f92..57d3127 100644 --- a/src/lib/components/reusable/form/dictionary-form-renderer.svelte +++ b/src/lib/components/reusable/form/dictionary-form-renderer.svelte @@ -21,6 +21,9 @@ disabledSign = false, joinFields = $bindable(), hiddenFields, + handleTestTypeChange, + handleResultTypeChange, + handleRefTypeChange, } = $props(); let searchQuery = $state({}); @@ -155,6 +158,9 @@ if (validateOn?.includes("input")) { formState.validateField?.(key, formState.form[key], false); } + if (key === "TestType") { + handleTestTypeChange(val); + } if (key === "Province") { formState.form.City = ""; if (formState.selectOptions) { @@ -164,33 +170,11 @@ formState.lastFetched.City = null; } } - if (key === "TestType") { - formState.form[key] = val; - - formState.form.ResultType = ""; - formState.errors.ResultType = null; - formState.form.RefType = ""; - formState.errors.RefType = null; - - if (val === 'CALC') { - formState.form.ResultType = 'NMRIC'; - } - } if (key === "ResultType") { - formState.form[key] = val; - - formState.form.RefType = ""; - formState.errors.RefType = null; - - if (val === 'TEXT') { - formState.form.RefType = 'TEXT'; - } - if (val === 'VSET') { - formState.form.RefType = 'VSET'; - } - if (val === 'NORES') { - formState.form.RefType = 'NOREF'; - } + handleResultTypeChange(val); + } + if (key === "RefType") { + handleRefTypeChange(val); } }} onOpenChange={(open) => {