Skip to content

Commit 3d4b378

Browse files
committed
display DE data records
1 parent 5787b86 commit 3d4b378

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

src/routes/(protected)/dynamic-entities/system/[id]/crud/+page.server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,13 @@ export const load: PageServerLoad = async ({ params, locals }) => {
6060
if (Array.isArray(dataResponse)) {
6161
dataRecords = dataResponse;
6262
} else {
63+
// Try common patterns: data, records, entityName, or snake_case version (e.g., piano_list)
64+
const snakeCaseKey = `${entityName.toLowerCase()}_list`;
6365
dataRecords =
6466
dataResponse.data ||
6567
dataResponse.records ||
6668
dataResponse[entityName] ||
69+
dataResponse[snakeCaseKey] ||
6770
[];
6871
}
6972
} catch (dataErr) {

src/routes/(protected)/dynamic-entities/system/[id]/crud/+page.svelte

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,24 @@
3232
const properties = schema?.properties || {};
3333
const requiredFields = schema?.required || [];
3434
35+
// Helper function to extract data from record (handles potential nesting)
36+
function getRecordData(record: any): any {
37+
if (!record) return record;
38+
39+
// Check if data is nested under the entity name
40+
// e.g., { "Guitar": { "name": "Fender", "price": 1000 }, "dynamic_entity_id": "123" }
41+
if (
42+
entityName &&
43+
record[entityName] &&
44+
typeof record[entityName] === "object"
45+
) {
46+
return record[entityName];
47+
}
48+
49+
// Otherwise return the record as-is (flat structure)
50+
return record;
51+
}
52+
3553
let dataRecords = $state(data.dataRecords || []);
3654
let searchQuery = $state("");
3755
let showCreateModal = $state(false);
@@ -56,8 +74,9 @@
5674
5775
function initializeFormData(record?: any) {
5876
formData = {};
77+
const recordData = record ? getRecordData(record) : null;
5978
Object.keys(properties).forEach((fieldName) => {
60-
formData[fieldName] = record ? record[fieldName] : "";
79+
formData[fieldName] = recordData ? recordData[fieldName] : "";
6180
});
6281
validationErrors = {};
6382
}
@@ -534,14 +553,15 @@
534553
class="divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-gray-800"
535554
>
536555
{#each filteredRecords as record, index}
556+
{@const recordData = getRecordData(record)}
537557
<tr class="hover:bg-gray-50 dark:hover:bg-gray-700/50">
538558
{#each Object.keys(properties).slice(0, 4) as fieldName}
539559
<td
540560
class="max-w-xs truncate px-6 py-4 text-sm text-gray-900 dark:text-gray-100"
541561
>
542-
{record[fieldName] !== undefined &&
543-
record[fieldName] !== null
544-
? String(record[fieldName])
562+
{recordData[fieldName] !== undefined &&
563+
recordData[fieldName] !== null
564+
? String(recordData[fieldName])
545565
: "-"}
546566
</td>
547567
{/each}
@@ -929,6 +949,7 @@
929949
<div class="p-6">
930950
<dl class="space-y-4">
931951
{#each Object.entries(properties) as [fieldName, fieldDef]}
952+
{@const recordData = getRecordData(selectedRecord)}
932953
<div>
933954
<dt class="text-sm font-medium text-gray-500 dark:text-gray-400">
934955
{fieldName}
@@ -937,9 +958,9 @@
937958
{/if}
938959
</dt>
939960
<dd class="mt-1 text-sm text-gray-900 dark:text-gray-100">
940-
{selectedRecord[fieldName] !== undefined &&
941-
selectedRecord[fieldName] !== null
942-
? String(selectedRecord[fieldName])
961+
{recordData[fieldName] !== undefined &&
962+
recordData[fieldName] !== null
963+
? String(recordData[fieldName])
943964
: "-"}
944965
</dd>
945966
</div>

0 commit comments

Comments
 (0)