@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