fix(dokumen): perbaikan dan penambahan tipe custom field

- Menambahkan dukungan untuk berbagai tipe custom field: text, number, date, textarea, dan select.
- Memperbaiki cara pengambilan nilai custom field dari detail.
- Mengoptimalkan penggunaan variabel untuk meningkatkan keterbacaan kode.
This commit is contained in:
Daeng Deni Mardaeni
2025-03-05 10:03:46 +07:00
parent 1aeb96f8b5
commit e52fd8243f

View File

@@ -317,11 +317,38 @@
@if($detail->jenisLegalitasJaminan->custom_fields)
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@php
$customField = getCustomField($key);
$fieldValue = json_decode($detail->details)->{$customField->name} ?? '';
@endphp
<label class="form-label max-w-56 capitalize">
{{ getCustomField($key)->label ?? "" }}
{{ $customField->label ?? "" }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{getCustomField($key)->name}}]" value="{{ json_decode($detail->details)->{getCustomField($key)->name} ?? '' }}">
@switch($customField->type)
@case('text')
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
@break
@case('number')
<input class="input" type="number" step="0.01" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
@break
@case('date')
<input class="input" type="date" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}">
@break
@case('textarea')
<textarea class="textarea" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">{{ $fieldValue }}</textarea>
@break
@case('select')
<select class="select" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]">
<option value="">Select an option</option>
@foreach($customField->options as $option)
<option value="{{ $option }}" {{ $fieldValue == $option ? 'selected' : '' }}>{{ $option }}</option>
@endforeach
</select>
@break
@default
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
@endswitch
</div>
</div>
@endforeach
@@ -330,11 +357,37 @@
@if($detail->jenisLegalitasJaminan->custom_fields)
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@php
$customField = getCustomField($key);
@endphp
<label class="form-label max-w-56 capitalize">
{{ getCustomField($key)->label }}
{{ $customField->label }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{getCustomField($key)->name}}]" placeholder="...">
@switch($customField->type)
@case('text')
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">
@break
@case('number')
<input class="input" type="number" step="0.01" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">
@break
@case('date')
<input class="input" type="date" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]">
@break
@case('textarea')
<textarea class="textarea" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="..."></textarea>
@break
@case('select')
<select class="select" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]">
<option value="">Select an option</option>
@foreach($customField->options as $option)
<option value="{{ $option }}">{{ $option }}</option>
@endforeach
</select>
@break
@default
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">
@endswitch
</div>
</div>
@endforeach
@@ -387,12 +440,36 @@
@if($item->custom_fields)
@foreach($item->custom_fields as $field)
@php $custom_field = getCustomField($field) @endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
{{ getCustomField($field)->label }}
{{ $custom_field->label }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[{{$item->id}}][{{getCustomField($field)->name}}]" placeholder="...">
@switch($custom_field->type)
@case('text')
<input class="input" type="text" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="...">
@break
@case('number')
<input class="input" type="number" step="0.01" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="...">
@break
@case('date')
<input class="input" type="date" name="custom_field[{{$item->id}}][{{$custom_field->name}}]">
@break
@case('textarea')
<textarea class="textarea" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="..."></textarea>
@break
@case('select')
<select class="select" name="custom_field[{{$item->id}}][{{$custom_field->name}}]">
<option value="">Select an option</option>
@foreach($custom_field->options as $option)
<option value="{{ $option }}">{{ $option }}</option>
@endforeach
</select>
@break
@default
<input class="input" type="text" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="...">
@endswitch
</div>
</div>
@endforeach
@@ -627,7 +704,7 @@
case "text":
return `<input class="input" type="text" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
case "number":
return `<input class="input" type="number" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
return `<input class="input" type="number" step="0.01" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
case "date":
return `<input class="input" type="date" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
case "textarea":