diff --git a/app/Enums/LayoutForm.php b/app/Enums/LayoutForm.php new file mode 100644 index 0000000..434d90a --- /dev/null +++ b/app/Enums/LayoutForm.php @@ -0,0 +1,31 @@ + 'Row', + self::COLUMN => 'Column', + self::VALUE => 'Value', + self::SECTION => 'Section', + self::HR_LINE => 'HR Line', + }; + } + + public static function options(): array + { + return collect(self::cases())->map(fn ($case) => [ + 'value' => $case->value, + 'label' => $case->label(), + ])->toArray(); + } +} diff --git a/app/Http/Controllers/Web/Ekosistem/FormBasisDataController.php b/app/Http/Controllers/Web/Ekosistem/FormBasisDataController.php new file mode 100644 index 0000000..4d03593 --- /dev/null +++ b/app/Http/Controllers/Web/Ekosistem/FormBasisDataController.php @@ -0,0 +1,295 @@ +json([ + 'status' => 'error', + 'message' => 'Data tabel tidak ditemukan.' + ], 404); + } + + $listEnum = LayoutForm::options(); + + $tab = $request->tab ?? 'form'; + $tabel->state = 'preview'; + + return view('ekosistem.form-basis-data.index', compact('tabel', 'listEnum', 'tab')); + } + + public function create() + { + // + } + + public function store(Request $request, string $tabelId): JsonResponse + { + Gate::authorize('super_admin'); + + $tabel = TabelBasisData::find($tabelId); + if (!$tabel) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data tabel tidak ditemukan.' + ], 404); + } + + $validated = $request->validate([ + 'parent_id' => ['nullable', 'exists:ekosistem_basis_data_form,id'], + 'tipe' => ['required', Rule::enum(LayoutForm::class)], + 'column_width' => [ + Rule::requiredIf($request->tipe === LayoutForm::COLUMN->value), + 'nullable', 'integer', 'min:1', 'max:12'], + 'kolom_id' => [ + Rule::requiredIf($request->tipe === LayoutForm::VALUE->value), + 'nullable', 'exists:ekosistem_basis_data_kolom,id'], + 'section_label' => [ + Rule::requiredIf($request->tipe === LayoutForm::SECTION->value), + 'nullable', 'string'], + ]); + + FormBasisData::create([...$validated, + 'tabel_id' => $tabelId, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Form basis data berhasil ditambahkan.' + ], 201); + } + + public function show(string $tabelId, string $id): JsonResponse + { + Gate::authorize('super_admin'); + + $form = FormBasisData::where('tabel_id', $tabelId)->find($id); + if (!$form) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data formulir basis data tidak ditemukan.' + ], 404); + } + return response()->json([ + 'status' => 'success', + 'data' => $form + ], 200); + } + + public function edit(string $id) + { + // + } + + public function update(Request $request, string $tabelId, string $id) + { + Gate::authorize('super_admin'); + + $form = FormBasisData::where('tabel_id', $tabelId)->find($id); + if (!$form) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data formulir basis data tidak ditemukan.' + ], 404); + } + + $validated = $request->validate([ + 'parent_id' => ['nullable', 'exists:ekosistem_basis_data_form,id'], + 'tipe' => ['required', Rule::enum(LayoutForm::class)], + 'column_width' => [ + Rule::requiredIf($request->tipe === LayoutForm::COLUMN->value), + 'nullable', 'integer', 'min:1', 'max:12'], + 'kolom_id' => [ + Rule::requiredIf($request->tipe === LayoutForm::VALUE->value), + 'nullable', 'exists:ekosistem_basis_data_kolom,id'], + 'section_label' => [ + Rule::requiredIf($request->tipe === LayoutForm::SECTION->value), + 'nullable', 'string'], + ]); + + $form->update([...$validated, + 'updated_by' => auth()->user()->id + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Form basis data berhasil diubah.' + ]); + } + + public function destroy(string $tabelId, string $id): JsonResponse + { + Gate::authorize('super_admin'); + + $form = FormBasisData::where('tabel_id', $tabelId)->find($id); + if (!$form) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data form basis data tidak ditemukan.' + ], 404); + } + if ($form->form->count() > 0) { + return response()->json([ + 'status' => 'error', + 'message' => 'Tidak dapat menghapus formulir basis data yang memiliki formulir.' + ], 400); + } + $form->update([ + 'deleted_by' => auth()->user()->id + ]); + $form->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Form basis data berhasil dihapus.' + ], 200); + } + + public function generate(Request $request, string $tabelId): RedirectResponse + { + Gate::authorize('super_admin'); + + $tabel = TabelBasisData::find($tabelId); + if (!$tabel) { + return redirect()->route('tabel.formulir.index', $tabelId)->with('error', 'Tabel basis data tidak ditemukan.'); + } + + DB::transaction(function () use ($tabel) { + + FormBasisData::where('tabel_id', $tabel->id)->delete(); + + FormBasisData::create([ + 'tabel_id' => $tabel->id, + 'tipe' => LayoutForm::SECTION, + 'section_label' => $tabel->label, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id + ]); + + FormBasisData::create([ + 'tabel_id' => $tabel->id, + 'tipe' => LayoutForm::HR_LINE, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id + ]); + + $chunks = $tabel->kolom->chunk(4); + + foreach ($chunks as $chunk) { + + $row = FormBasisData::create([ + 'tabel_id' => $tabel->id, + 'tipe' => LayoutForm::ROW, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id + ]); + + foreach ($chunk as $kolom) { + $column = FormBasisData::create([ + 'tabel_id' => $tabel->id, + 'tipe' => LayoutForm::COLUMN, + 'column_width' => 3, + 'parent_id' => $row->id, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id + ]); + + FormBasisData::create([ + 'tabel_id' => $tabel->id, + 'tipe' => LayoutForm::VALUE, + 'parent_id' => $column->id, + 'kolom_id' => $kolom->id, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id + ]); + } + } + + }); + + return redirect()->route('tabel.formulir.index', $tabelId)->with('success', 'Formulir berhasil dibuat.'); + } + + public function moveUp(Request $request, string $tabelId, string $id): JsonResponse + { + Gate::authorize('super_admin'); + + $current = FormBasisData::where('tabel_id', $tabelId)->find($id); + if (!$current) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data formulir tidak ditemukan.' + ], 404); + } + + $prev = FormBasisData::where('tabel_id', $tabelId) + ->where('urutan', '<', $current->urutan) + ->where('parent_id', $current->parent_id) + ->orderBy('urutan', 'desc') + ->first(); + + if ($prev) { + // swap + [$current->urutan, $prev->urutan] = [$prev->urutan, $current->urutan]; + $current->save(); + $prev->save(); + } + + return response()->json([ + 'status' => 'success', + 'message' => 'Formulir basis data berhasil diperbarui.' + ], 200); + } + + public function moveDown(Request $request, string $tabelId, string $id): JsonResponse + { + Gate::authorize('super_admin'); + + $current = FormBasisData::where('tabel_id', $tabelId)->find($id); + if (!$current) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data formulir tidak ditemukan.' + ], 404); + } + + $next = FormBasisData::where('tabel_id', $tabelId) + ->where('urutan', '>', $current->urutan) + ->where('parent_id', $current->parent_id) + ->orderBy('urutan', 'asc') + ->first(); + + if ($next) { + // swap + [$current->urutan, $next->urutan] = [$next->urutan, $current->urutan]; + $current->save(); + $next->save(); + } + + return response()->json([ + 'status' => 'success', + 'message' => 'Formulir basis data berhasil diperbarui.' + ], 200); + } +} diff --git a/app/Http/Controllers/Web/Ekosistem/KolomBasisDataController.php b/app/Http/Controllers/Web/Ekosistem/KolomBasisDataController.php index 3813976..d29fb2c 100644 --- a/app/Http/Controllers/Web/Ekosistem/KolomBasisDataController.php +++ b/app/Http/Controllers/Web/Ekosistem/KolomBasisDataController.php @@ -188,7 +188,7 @@ class KolomBasisDataController extends Controller ], 404); } - $prev = KolomBasisData::where('tabel_id', $current->tabel_id) + $prev = KolomBasisData::where('tabel_id', $tabelId) ->where('urutan', '<', $current->urutan) ->orderBy('urutan', 'desc') ->first(); @@ -218,7 +218,7 @@ class KolomBasisDataController extends Controller ], 404); } - $next = KolomBasisData::where('tabel_id', $current->tabel_id) + $next = KolomBasisData::where('tabel_id', $tabelId) ->where('urutan', '>', $current->urutan) ->orderBy('urutan', 'asc') ->first(); diff --git a/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php b/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php index 84828cb..2c5234c 100644 --- a/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php +++ b/app/Http/Controllers/Web/Ekosistem/ValueBasisDataController.php @@ -8,6 +8,10 @@ use Illuminate\Support\Facades\Gate; use Illuminate\View\View; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Validator; +use Illuminate\Http\JsonResponse; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Str; use App\Models\Ekosistem\TabelBasisData; use App\Models\Ekosistem\KolomBasisData; @@ -199,8 +203,7 @@ class ValueBasisDataController extends Controller } } $list_relasi = collect($list_relasi); - // dd($kolom->where('tipe', 'enum')->first()?->enum_opsi); - + return view('ekosistem.value-basis-data.add', compact('tabel', 'kolom', 'program', 'list_relasi')); } diff --git a/app/Models/Ekosistem/FormBasisData.php b/app/Models/Ekosistem/FormBasisData.php new file mode 100644 index 0000000..d8f7ab4 --- /dev/null +++ b/app/Models/Ekosistem/FormBasisData.php @@ -0,0 +1,236 @@ + LayoutForm::class + ]; + + protected static function booted() + { + static::creating(function ($model) { + $max = self::where('tabel_id', $model->tabel_id)->max('urutan'); + $model->urutan = ($max ?? 0) + 1; + }); + static::addGlobalScope('order', function (Builder $builder) { + $builder->orderBy('urutan'); + }); + } + + + public function tabel(): BelongsTo + { + return $this->belongsTo(TabelBasisData::class, 'tabel_id'); + } + + public function form(): HasMany + { + return $this->hasMany(FormBasisData::class, 'parent_id') + ->with('form') + ->orderBy('urutan'); + } + + public function kolom(): BelongsTo + { + return $this->belongsTo(KolomBasisData::class, 'kolom_id'); + } + + public function renderHtml(string $state, $errors = null, $optionsFK = null, $values = null): string + { + return match ($this->tipe) { + LayoutForm::COLUMN => '
' + .$this->childHtml($state, $errors, $optionsFK, $values).'
', + LayoutForm::VALUE => $this->value($state, $errors, $optionsFK, $values), + LayoutForm::SECTION => '
'.$this->section_label.'
', + LayoutForm::ROW => '
'.$this->childHtml($state, $errors, $optionsFK, $values).'
', + LayoutForm::HR_LINE => '
', + default => '' + }; + } + + + private function childHtml(string $state, $errors = null, $optionsFK = null, $values = null): string + { + $html = ''; + foreach ($this->form as $form) { + $html .= $form->renderHtml($state, $errors, $optionsFK, $values); + } + return $html; + } + + private function value(string $state, $errors = null, $optionsFK = null, $values = null): string + { + $html = ''; + if ($this->kolom) { + $k = $this->kolom; + + $value = $values ? $values->where('kolom_id', $k->id)->first() : null; + $oldValue = old($k->kolom); + + $html .= ''; + + if($k->tipe == 'varchar') { + $html .= ''; + } + elseif($k->tipe == 'text') { + $html .= ''; + } + elseif($k->tipe == 'integer') { + $html .= ''; + } + elseif($k->tipe == 'float') { + $html .= ''; + } + elseif($k->tipe == 'date') { + $html .= ''; + } + elseif($k->tipe == 'datetime'){ + $html .= ''; + } + elseif($k->tipe == 'boolean') { + if ($state == 'preview' || $state == 'view') { + $html .= ''; + } elseif ($state == 'add') { + $html .= ''; + } elseif ($state == 'edit') { + $html .= ''; + } + } + elseif($k->tipe == 'foreign_key') { + if ($state == 'preview' || $state == 'view') { + $html .= ''; + } elseif ($state == 'add') { + $html .= ''; + } elseif ($state == 'edit') { + $html .= ''; + } + } + elseif($k->tipe == 'enum') { + if ($state == 'preview' || $state == 'view') { + $html .= ''; + } elseif ($state == 'add') { + $html .= ''; + } elseif ($state == 'edit') { + $html .= ''; + } + } + else { + $html .= ''; + } + + $errorClass = $errors && $errors->has($k->kolom) + ? 'is-invalid' + : ''; + + if ($state == 'preview') { + $html = Str::of($html) + ->replace('kolom_value', '') + ->replace('kolom_name', $k->kolom) + ->replace('kolom_error', '') + ->replace('kolom_required', ''); + } elseif ($state == 'add') { + $html = Str::of($html) + ->replace('kolom_value', e($oldValue)) + ->replace('kolom_name', $k->kolom) + ->replace('kolom_error', $errorClass) + ->replace('kolom_required', '') + ->replace('readonly', ''); + } elseif ($state == 'edit') { + $html = Str::of($html) + ->replace('kolom_value', e($oldValue ?? ($value ? ($value['value_'.$k->tipe]) : null))) + ->replace('kolom_name', $k->kolom) + ->replace('kolom_error', $errorClass) + ->replace('kolom_required', '') + ->replace('readonly', ''); + } elseif ($state == 'view') { + $html = Str::of($html) + ->replace('kolom_name', $k->kolom) + ->replace('kolom_error', '') + ->replace('kolom_required', ''); + + if ($k->tipe == 'boolean') { + $html = Str::of($html) + ->replace('kolom_value', e($value ? ($value['value_'.$k->tipe] == 1 ? 'Ya' : 'Tidak') : null)); + } elseif($k->tipe == 'foreign_key') { + $html = Str::of($html) + ->replace('kolom_value', e($value ? $value['value_relasi_label'] : null)); + } elseif($k->tipe == 'enum') { + $html = Str::of($html) + ->replace('kolom_value', e($value ? $value['value_enum_label'] : null)); + } else { + $html = Str::of($html) + ->replace('kolom_value', e($value ? $value['value_'.$k->tipe] : null)); + } + } + } + + return $html; + } +} diff --git a/app/Models/Ekosistem/TabelBasisData.php b/app/Models/Ekosistem/TabelBasisData.php index b238269..5d04b2e 100644 --- a/app/Models/Ekosistem/TabelBasisData.php +++ b/app/Models/Ekosistem/TabelBasisData.php @@ -7,10 +7,14 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasOne; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Casts\Attribute; use App\Models\Ekosistem\KolomBasisData; use App\Models\Ekosistem\GroupBasisData; use App\Models\Ekosistem\RingkasanBasisData; +use App\Models\Ekosistem\FormBasisData; class TabelBasisData extends Model { @@ -53,4 +57,20 @@ class TabelBasisData extends Model { return $this->hasMany(RingkasanBasisData::class, 'tabel_id')->orderBy('urutan'); } + + public function form(): HasMany + { + return $this->hasMany(FormBasisData::class, 'tabel_id') + ->whereNull('parent_id') + ->orderBy('urutan'); + } + + public function renderHtml(string $state, $errors = null, $optionsFK = null, $values = null): string + { + $html = ''; + foreach ($this->form as $form) { + $html .= $form->renderHtml($state, $errors, $optionsFK, $values); + } + return $html; + } } diff --git a/database/migrations/2026_05_08_161821_create_form_basis_data_table.php b/database/migrations/2026_05_08_161821_create_form_basis_data_table.php new file mode 100644 index 0000000..2502189 --- /dev/null +++ b/database/migrations/2026_05_08_161821_create_form_basis_data_table.php @@ -0,0 +1,47 @@ +id(); + + $table->foreignId('tabel_id')->constrained('ekosistem_basis_data_tabel')->restrictOnDelete(); + + $table->foreignId('parent_id')->nullable()->constrained('ekosistem_basis_data_form')->restrictOnDelete(); + + $table->enum('tipe', ['form-row', 'form-column', 'form-value', 'form-section', 'form-hr-line'])->default('form-value'); + + $table->integer('column_width')->nullable(); + + $table->foreignId('kolom_id')->nullable()->constrained('ekosistem_basis_data_kolom')->nullOnDelete(); + + $table->string('section_label')->nullable(); + + $table->integer('urutan')->default(1); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('ekosistem_basis_data_form'); + } +}; diff --git a/resources/views/ekosistem/form-basis-data/add-column.blade.php b/resources/views/ekosistem/form-basis-data/add-column.blade.php new file mode 100644 index 0000000..7ab57e1 --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/add-column.blade.php @@ -0,0 +1,81 @@ +
+
+
Tambah Kolom
+ +
+
+
+ @csrf + + + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/add-hr-line.blade.php b/resources/views/ekosistem/form-basis-data/add-hr-line.blade.php new file mode 100644 index 0000000..22475be --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/add-hr-line.blade.php @@ -0,0 +1,27 @@ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/add-row.blade.php b/resources/views/ekosistem/form-basis-data/add-row.blade.php new file mode 100644 index 0000000..8693842 --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/add-row.blade.php @@ -0,0 +1,27 @@ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/add-section.blade.php b/resources/views/ekosistem/form-basis-data/add-section.blade.php new file mode 100644 index 0000000..a9837ec --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/add-section.blade.php @@ -0,0 +1,77 @@ +
+
+
Tambah Section
+ +
+
+
+ @csrf + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/add-value.blade.php b/resources/views/ekosistem/form-basis-data/add-value.blade.php new file mode 100644 index 0000000..f80e27a --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/add-value.blade.php @@ -0,0 +1,85 @@ +
+
+
Tambah Formulir Nilai
+ +
+
+
+ @csrf + + + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/edit-column.blade.php b/resources/views/ekosistem/form-basis-data/edit-column.blade.php new file mode 100644 index 0000000..99d8e01 --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/edit-column.blade.php @@ -0,0 +1,94 @@ +
+
+
Edit Kolom
+ +
+
+
+ @csrf + @method('PUT') + + + + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/edit-section.blade.php b/resources/views/ekosistem/form-basis-data/edit-section.blade.php new file mode 100644 index 0000000..509079a --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/edit-section.blade.php @@ -0,0 +1,89 @@ +
+
+
Edit Section
+ +
+
+
+ @csrf + @method('PUT') + + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/edit-value.blade.php b/resources/views/ekosistem/form-basis-data/edit-value.blade.php new file mode 100644 index 0000000..14384e9 --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/edit-value.blade.php @@ -0,0 +1,97 @@ +
+
+
Edit Formulir Nilai
+ +
+
+
+ @csrf + @method('PUT') + + + + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/index.blade.php b/resources/views/ekosistem/form-basis-data/index.blade.php new file mode 100644 index 0000000..27fceeb --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/index.blade.php @@ -0,0 +1,283 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Formulir untuk Tabel Basis Data Ekosistem: {{ $tabel->label }}
+ +
+
+ @csrf + +
+ +
+
+ +
+ + +
+ + +
+ +
+ Kembali +
+
+
+
+@include('ekosistem.form-basis-data.add-row') +@include('ekosistem.form-basis-data.add-section') +@include('ekosistem.form-basis-data.edit-section') +@include('ekosistem.form-basis-data.add-hr-line') +@include('ekosistem.form-basis-data.add-column') +@include('ekosistem.form-basis-data.edit-column') +@include('ekosistem.form-basis-data.move-column') +@include('ekosistem.form-basis-data.add-value') +@include('ekosistem.form-basis-data.edit-value') +@endsection + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/form-basis-data/move-column.blade.php b/resources/views/ekosistem/form-basis-data/move-column.blade.php new file mode 100644 index 0000000..ad27ef6 --- /dev/null +++ b/resources/views/ekosistem/form-basis-data/move-column.blade.php @@ -0,0 +1,98 @@ +
+
+
Edit Kolom
+ +
+
+
+ @csrf + @method('PUT') + + + + + +
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/tabel-basis-data/view.blade.php b/resources/views/ekosistem/tabel-basis-data/view.blade.php index 3eb64f1..3c90a9b 100644 --- a/resources/views/ekosistem/tabel-basis-data/view.blade.php +++ b/resources/views/ekosistem/tabel-basis-data/view.blade.php @@ -159,6 +159,24 @@ +
Informasi Formulir Tabel
+ +
+
+
+ + Edit + +
+
+ +
+
+
Pratinjau Formulir
+ {!! $tabel->renderHtml('preview') !!} +
+
+
Kembali
diff --git a/resources/views/ekosistem/value-basis-data/add-ref.blade.php b/resources/views/ekosistem/value-basis-data/add-ref.blade.php new file mode 100644 index 0000000..22bce66 --- /dev/null +++ b/resources/views/ekosistem/value-basis-data/add-ref.blade.php @@ -0,0 +1,107 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Tambah Data {{ $tabel->label }}
+
+ +
+
+ @csrf + +
Informasi {{ $tabel->label }}
+
+ @foreach($kolom as $k) +
+ + @if($k->tipe == 'varchar') + + @elseif($k->tipe == 'text') + + @elseif($k->tipe == 'integer') + + @elseif($k->tipe == 'float') + + @elseif($k->tipe == 'date') + + @elseif($k->tipe == 'datetime') + + @elseif($k->tipe == 'boolean') + + @elseif($k->tipe == 'foreign_key') + + @elseif($k->tipe == 'enum') + + @else + + @endif + @error($k->kolom)
{{ $message }}
@enderror +
+ @endforeach +
+ + +
+ Kembali + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/value-basis-data/add.blade.php b/resources/views/ekosistem/value-basis-data/add.blade.php index 22bce66..c75a269 100644 --- a/resources/views/ekosistem/value-basis-data/add.blade.php +++ b/resources/views/ekosistem/value-basis-data/add.blade.php @@ -10,58 +10,8 @@
@csrf - -
Informasi {{ $tabel->label }}
-
- @foreach($kolom as $k) -
- - @if($k->tipe == 'varchar') - - @elseif($k->tipe == 'text') - - @elseif($k->tipe == 'integer') - - @elseif($k->tipe == 'float') - - @elseif($k->tipe == 'date') - - @elseif($k->tipe == 'datetime') - - @elseif($k->tipe == 'boolean') - - @elseif($k->tipe == 'foreign_key') - - @elseif($k->tipe == 'enum') - - @else - - @endif - @error($k->kolom)
{{ $message }}
@enderror -
- @endforeach -
- + + {!! $tabel->renderHtml('add', $errors, $list_relasi) !!}
Kembali diff --git a/resources/views/ekosistem/value-basis-data/edit-ref.blade.php b/resources/views/ekosistem/value-basis-data/edit-ref.blade.php new file mode 100644 index 0000000..6963d01 --- /dev/null +++ b/resources/views/ekosistem/value-basis-data/edit-ref.blade.php @@ -0,0 +1,124 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Tambah Data {{ $tabel->label }}
+
+ +
+ + @csrf + @method('PUT') + +
Informasi {{ $tabel->label }}
+ @if (!$program) +
+
+ + +
+
+ @endif +
+ @foreach($kolom as $k) + where('kolom_id', $k->id)->first(); + ?> +
+ + @if($k->tipe == 'varchar') + + @elseif($k->tipe == 'text') + + @elseif($k->tipe == 'integer') + + @elseif($k->tipe == 'float') + + @elseif($k->tipe == 'date') + + @elseif($k->tipe == 'datetime') + + @elseif($k->tipe == 'boolean') + + @elseif($k->tipe == 'foreign_key') + + @elseif($k->tipe == 'enum') + + @else + + @endif + @error($k->kolom)
{{ $message }}
@enderror +
+ @endforeach +
+ + +
+ Kembali + +
+ +
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/ekosistem/value-basis-data/edit.blade.php b/resources/views/ekosistem/value-basis-data/edit.blade.php index 6963d01..ae3326f 100644 --- a/resources/views/ekosistem/value-basis-data/edit.blade.php +++ b/resources/views/ekosistem/value-basis-data/edit.blade.php @@ -10,76 +10,10 @@
@csrf - @method('PUT') + @method('PUT') -
Informasi {{ $tabel->label }}
- @if (!$program) -
-
- - -
-
- @endif -
- @foreach($kolom as $k) - where('kolom_id', $k->id)->first(); - ?> -
- - @if($k->tipe == 'varchar') - - @elseif($k->tipe == 'text') - - @elseif($k->tipe == 'integer') - - @elseif($k->tipe == 'float') - - @elseif($k->tipe == 'date') - - @elseif($k->tipe == 'datetime') - - @elseif($k->tipe == 'boolean') - - @elseif($k->tipe == 'foreign_key') - - @elseif($k->tipe == 'enum') - - @else - - @endif - @error($k->kolom)
{{ $message }}
@enderror -
- @endforeach -
+ {!! $tabel->renderHtml('edit', $errors, $list_relasi, $values) !!} -
Kembali diff --git a/resources/views/ekosistem/value-basis-data/view.blade.php b/resources/views/ekosistem/value-basis-data/view.blade.php index 6716131..bdc2da3 100644 --- a/resources/views/ekosistem/value-basis-data/view.blade.php +++ b/resources/views/ekosistem/value-basis-data/view.blade.php @@ -12,63 +12,7 @@ @csrf @method('PUT') -
Informasi {{ $tabel->label }}
- @if (!$program) -
-
- - -
-
- @endif -
- @foreach($kolom as $k) - where('kolom_id', $k->id)->first(); - ?> -
- - @if($k->tipe == 'varchar') - - @elseif($k->tipe == 'text') - - @elseif($k->tipe == 'integer') - - @elseif($k->tipe == 'float') - - @elseif($k->tipe == 'date') - - @elseif($k->tipe == 'datetime') - - @elseif($k->tipe == 'boolean') - - @elseif($k->tipe == 'foreign_key') - - @elseif($k->tipe == 'enum') - - @else - - @endif - @error($k->kolom)
{{ $message }}
@enderror -
- @endforeach -
- + {!! $tabel->renderHtml('view', $errors, null, $values) !!}
Kembali diff --git a/routes/web.php b/routes/web.php index 9ceb9fb..1675e25 100644 --- a/routes/web.php +++ b/routes/web.php @@ -118,9 +118,13 @@ Route::middleware('auth') Route::put('tabel/{tabelId}/kolom/{id}/move-down', [App\Http\Controllers\Web\Ekosistem\KolomBasisDataController::class, 'moveDown'])->name('tabel.kolom.move-down'); Route::resource('tabel.kolom', App\Http\Controllers\Web\Ekosistem\KolomBasisDataController::class)->only(['show', 'store', 'update', 'destroy']); Route::resource('tabel.data', App\Http\Controllers\Web\Ekosistem\ValueBasisDataController::class); - Route::resource('tabel.ringkasan', App\Http\Controllers\Web\Ekosistem\RingkasanBasisDataController::class); Route::put('tabel/{tabelId}/ringkasan/{id}/move-up', [App\Http\Controllers\Web\Ekosistem\RingkasanBasisDataController::class, 'moveUp'])->name('tabel.ringkasan.move-up'); Route::put('tabel/{tabelId}/ringkasan/{id}/move-down', [App\Http\Controllers\Web\Ekosistem\RingkasanBasisDataController::class, 'moveDown'])->name('tabel.ringkasan.move-down'); + Route::resource('tabel.ringkasan', App\Http\Controllers\Web\Ekosistem\RingkasanBasisDataController::class); + Route::post('tabel/{tabelId}/formulir/generate', [App\Http\Controllers\Web\Ekosistem\FormBasisDataController::class, 'generate'])->name('tabel.formulir.generate'); + Route::put('tabel/{tabelId}/formulir/{id}/move-up', [App\Http\Controllers\Web\Ekosistem\FormBasisDataController::class, 'moveUp'])->name('tabel.formulir.move-up'); + Route::put('tabel/{tabelId}/formulir/{id}/move-down', [App\Http\Controllers\Web\Ekosistem\FormBasisDataController::class, 'moveDown'])->name('tabel.formulir.move-down'); + Route::resource('tabel.formulir', App\Http\Controllers\Web\Ekosistem\FormBasisDataController::class); Route::resource('petani-cpm', App\Http\Controllers\Web\Ekosistem\PetaniCPMController::class); Route::get('petani-cpm/summary/{tipe}', [App\Http\Controllers\Web\Ekosistem\PetaniCPMController::class, 'summary'])->name('petani-cpm.summary');