@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @push('css') @endpush @section('content') @include('layouts.navbars.auth.topnav', ['title' => 'Edit']) @php // fallback alias dari controller $komposisi = $komposisi ?? ($list ?? null); $details = $details ?? ($detail_rows ?? []); use Illuminate\Support\Facades\DB; // Datalist kategori $kategoriList = DB::table('mst_kategori') ->orderBy('kategori') ->pluck('kategori') ->map(fn($v) => trim($v)) ->unique(fn($v) => mb_strtolower($v)) ->sort() ->values(); // normalizer $norm = fn($s) => mb_strtolower(preg_replace('/\s+/u', ' ', trim((string) $s))); // Pastikan $details berupa koleksi object + FILTER FES | SAP Core $detailsCol = collect($details) ->map(fn($r) => is_array($r) ? (object) $r : $r) ->filter(fn($r) => !($norm($r->tipe ?? '') === 'fes' && $norm($r->layer ?? '') === 'sap core')); // Urutkan by id ASC bila ada data, jika tidak ada → biarkan kosong (atau fallback sendiri) $rowsForEdit = $detailsCol->isNotEmpty() ? $detailsCol->sortBy(fn($r) => is_numeric($r->id ?? null) ? (int) $r->id : PHP_INT_MAX)->values() : collect([]); // ===== Helper display/raw layer ===== // Simpan (RAW): FES + "Glue (C-Fold)" -> "Glue" $rawLayer = function ($tipe, $layer) use ($norm) { if ($norm($tipe) === 'fes' && preg_match('/^glue\s*\(?\s*c[-–—]?\s*fold\s*\)?$/iu', (string) $layer)) { return 'Glue'; } return (string) ($layer ?? ''); }; // Tampil (DISPLAY): FES + "Glue" -> "Glue (C-Fold)" $displayLayer = function ($tipe, $layer) use ($norm, $rawLayer) { $t = $norm($tipe ?? ''); $raw = $rawLayer($tipe, $layer); if ($t === 'fes' && strcasecmp($raw, 'Glue') === 0) { return 'Glue (C-Fold)'; } return (string) ($layer ?? $raw); }; @endphp
@csrf @method('PUT') {{-- ACTION BAR --}}
{{-- CARD HEADER --}}
Header Komposisi
GSM FES Aktual :
{{-- CARD DETAIL --}}
Detail Komposisi
@foreach ($kategoriList as $k) @endforeach @php // Kalau ada data existing → render dari DB // Kalau kosong → default 6 baris (4 SAP + 2 FES) $hasRows = $rowsForEdit->isNotEmpty(); $defaults = ['sap', 'sap', 'sap', 'sap', 'fes', 'fes']; @endphp @if ($hasRows) @foreach ($rowsForEdit as $row) @endforeach @else @foreach ($defaults as $tipeDefault) @endforeach @endif
Tipe Kategori GSM Aksi
Tipe wajib dipilih.
@if (isset($row->id)) @endif
GSM wajib ≥ 0.
Tipe wajib dipilih.
GSM wajib ≥ 0.
Tips: Bisa paste banyak baris ke kolom kategori / GSM (satu per baris). Gunakan tombol “Tambah Baris” untuk menambah baris kosong.
{{-- MODAL UNLOCK GSM FES --}}
@endsection @push('js') @endpush