continue crud test

This commit is contained in:
faiztyanirh 2026-03-31 18:14:03 +07:00
parent 9d4f295522
commit 9851697c52
8 changed files with 50 additions and 14 deletions

View File

@ -23,7 +23,8 @@ const optionsMode = {
if (field.key === 'FormulaInput') { if (field.key === 'FormulaInput') {
return { return {
...baseOption, ...baseOption,
level: item.CountStat, testid: item.TestSiteID,
level: item.isCountStat,
}; };
} }

View File

@ -674,7 +674,7 @@ export const testGroupFormFields = [
required: false, required: false,
type: 'members', type: 'members',
optionsEndpoint: `${API.BASE_URL}${API.TEST}`, optionsEndpoint: `${API.BASE_URL}${API.TEST}`,
valueKey: 'TestSiteCode', valueKey: 'TestSiteID',
labelKey: (item) => `${item.TestSiteCode} - ${item.TestSiteName}`, labelKey: (item) => `${item.TestSiteCode} - ${item.TestSiteName}`,
validateOn: ['input'] validateOn: ['input']
} }
@ -1072,15 +1072,16 @@ export function buildTestPayload({ mainForm, activeFormStates, testType, refNumD
AgeEnd: toDays(row.AgeEnd), AgeEnd: toDays(row.AgeEnd),
})) }))
} else if(key === 'group' && state.form?.Members?.length > 0) { } else if(key === 'group' && state.form?.Members?.length > 0) {
payload[key] = { payload.testdefgrp = {
...state.form, ...state.form,
Members: state.form?.Members?.map((m) => m.value).filter(Boolean) ?? [] Members: state.form?.Members?.filter((m) => m.value).map((m) => ({ TestSiteID: Number(m.value) }))
}; };
} else if (key === 'map' && mapData?.length > 0) { } else if (key === 'map' && mapData?.length > 0) {
payload.testmap = mapData; payload.testmap = mapData;
} else if (key === 'cal') { } else if (key === 'cal') {
payload[key] = { payload.testdefcal = {
...state.form ...state.form,
FormulaInput: state.form?.FormulaInput?.map((m) => ({ TestSiteID: Number(m.testid) }))
} }
} }
// else if ((key === 'cal' || key === 'map') && state?.form) { // else if ((key === 'cal' || key === 'map') && state?.form) {

View File

@ -109,7 +109,8 @@
}; };
case 'GROUP': case 'GROUP':
return { return {
group: groupFormState group: groupFormState,
map: mapFormState
} }
case 'TITLE': case 'TITLE':
default: default:
@ -148,10 +149,10 @@
}); });
console.log(payload); console.log(payload);
const result = await formState.save(masterDetail.mode, payload); // const result = await formState.save(masterDetail.mode, payload);
toast('Test Created!'); // toast('Test Created!');
masterDetail?.exitForm(true); // masterDetail?.exitForm(true);
} }
const primaryAction = $derived({ const primaryAction = $derived({
@ -175,7 +176,7 @@
case 'CALC': case 'CALC':
return ['definition', 'calculation', 'map', 'reference']; return ['definition', 'calculation', 'map', 'reference'];
case 'GROUP': case 'GROUP':
return ['definition', 'group']; return ['definition', 'group', 'map'];
default: default:
return ['definition']; return ['definition'];
} }

View File

@ -342,6 +342,12 @@
AgeEnd: typeof row.AgeEnd === 'number' ? buildAgeText(daysToAge(row.AgeEnd)) : row.AgeEnd, AgeEnd: typeof row.AgeEnd === 'number' ? buildAgeText(daysToAge(row.AgeEnd)) : row.AgeEnd,
})); }));
} }
if (mainForm.testdefgrp && Array.isArray(mainForm.testdefgrp)) {
groupFormState.form.Members = mainForm.testdefgrp.map((m, index) => ({
id: m.id ?? index + 1,
value: String(m.TestSiteID)
}));
}
// if (mainForm.testmap && Array.isArray(mainForm.testmap)) { // if (mainForm.testmap && Array.isArray(mainForm.testmap)) {
// mapData = mainForm.testmap.map((row, index) => ({ // mapData = mainForm.testmap.map((row, index) => ({
// id: row.id ?? index + 1, // id: row.id ?? index + 1,

View File

@ -103,6 +103,7 @@
props.calFormState.form[key] = []; props.calFormState.form[key] = [];
props.calFormState.validateField?.(key, [], false); props.calFormState.validateField?.(key, [], false);
} }
$inspect(props.calFormState.selectOptions)
</script> </script>
<div class="flex flex-col gap-4 w-full"> <div class="flex flex-col gap-4 w-full">

View File

@ -1,5 +1,6 @@
<script> <script>
import DictionaryFormRenderer from '$lib/components/reusable/form/dictionary-form-renderer.svelte'; import DictionaryFormRenderer from '$lib/components/reusable/form/dictionary-form-renderer.svelte';
import { untrack } from 'svelte';
let props = $props(); let props = $props();
@ -14,6 +15,30 @@
props.groupFormState.form.Members = props.groupFormState.form.Members.filter((m) => m.id !== id); props.groupFormState.form.Members = props.groupFormState.form.Members.filter((m) => m.id !== id);
props.groupFormState.validateField?.("Members", props.groupFormState.form.Members, false); props.groupFormState.validateField?.("Members", props.groupFormState.form.Members, false);
} }
$effect(() => {
const allColumns = props.testGroupFormFields.flatMap((section) =>
section.rows.flatMap((row) => row.columns ?? [])
);
untrack(() => {
for (const col of allColumns) {
if (!col.optionsEndpoint) continue;
props.groupFormState.fetchOptions?.(
{
key: col.key,
optionsEndpoint: col.optionsEndpoint,
valueKey: col.valueKey,
labelKey: col.labelKey
},
props.groupFormState.form
);
}
});
});
$inspect(props.groupFormState.selectOptions)
</script> </script>
<div class="flex flex-col gap-4 w-full"> <div class="flex flex-col gap-4 w-full">

View File

@ -373,6 +373,7 @@
idCounter = maxId; idCounter = maxId;
} }
}); });
</script> </script>
<div class="flex flex-col gap-4 w-full"> <div class="flex flex-col gap-4 w-full">

View File

@ -10,8 +10,8 @@
import { untrack } from "svelte"; import { untrack } from "svelte";
import { toDays } from "$lib/utils/ageUtils"; import { toDays } from "$lib/utils/ageUtils";
let { tempTxt = $bindable([]), resetRefTxt = $bindable(), ...props } = $props() let { tempTxt = $bindable([]), resetRefTxt = $bindable(), ...props } = $props();
$inspect(props.refTxtFormFields)
let editingId = $state(null); let editingId = $state(null);
let idCounter = $state(0); let idCounter = $state(0);