program short name

This commit is contained in:
2026-05-29 09:50:10 +07:00
parent c4e4f396d2
commit 6ff0ef011c
10 changed files with 49 additions and 14 deletions
@@ -49,6 +49,7 @@ class ProgramController extends Controller
'sub_domain' => ['required', Rule::unique(Program::class, 'sub_domain')],
'tahun' => ['required', 'integer'],
'instansi' => ['nullable', 'string'],
'nama_singkat' => ['required', 'string'],
]);
if ($validator->fails()) {
@@ -96,6 +97,7 @@ class ProgramController extends Controller
'sub_domain' => ['required', Rule::unique(Program::class, 'sub_domain')->ignore($id)],
'tahun' => ['required', 'integer'],
'instansi' => ['nullable', 'string'],
'nama_singkat' => ['required', 'string'],
]);
if ($validator->fails()) {
@@ -22,6 +22,7 @@ class ProgramResource extends JsonResource
'sub_domain' => $this->sub_domain,
'tahun' => $this->tahun,
'instansi' => $this->instansi,
'nama_singkat' => $this->nama_singkat,
'komoditas' => $this->komoditas()->with('komoditas')->get()->map(function ($item) {
return new ProgramKomoditasResource($item);
}),
+1
View File
@@ -20,6 +20,7 @@ class Program extends Model
"sub_domain",
"tahun",
"instansi",
"nama_singkat",
];
public function komoditas(): HasMany
@@ -18,6 +18,7 @@ return new class extends Migration
$table->string('sub_domain');
$table->integer('tahun');
$table->string('instansi')->nullable();
$table->string('nama_singkat', length: 50);
$table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null');
$table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null');
+10 -2
View File
@@ -18,6 +18,12 @@
<input type="text" class="form-control" id="add-program-nama" name="nama" placeholder="Cth: Program Pertanian" />
</div>
</div>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="add-program-nama-singkat">Nama Singkat<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="add-program-nama-singkat" name="nama_singkat" placeholder="Cth: PP" />
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-program-subdomain">Sub Domain<span class="text-danger">*</span></label>
@@ -51,12 +57,14 @@
rules: {
nama: { required: true },
sub_domain: { required: true },
tahun: { required: true }
tahun: { required: true },
nama_singkat: { required: true }
},
messages: {
nama: { required: "Nama program wajib diisi" },
sub_domain: { required: "Subdomain wajib diisi" },
tahun: { required: "Tahun wajib diisi" }
tahun: { required: "Tahun wajib diisi" },
nama_singkat: { required: "Nama singkat wajib diisi" }
},
errorElement: 'div',
errorPlacement: function (error, element) {
+10 -2
View File
@@ -19,6 +19,12 @@
<input type="text" class="form-control" id="add-program-nama" name="nama" placeholder="Cth: Program Pertanian" value="{{ old('nama', $program->nama) }}" />
</div>
</div>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="add-program-nama-singkat">Nama Singkat<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="add-program-nama-singkat" name="nama_singkat" placeholder="Cth: PP" value="{{ old('nama_singkat', $program->nama_singkat) }}" />
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-program-subdomain">Sub Domain<span class="text-danger">*</span></label>
@@ -56,12 +62,14 @@
rules: {
nama: { required: true },
sub_domain: { required: true },
tahun: { required: true }
tahun: { required: true },
nama_singkat: { required: true }
},
messages: {
nama: { required: "Nama program wajib diisi" },
sub_domain: { required: "Subdomain wajib diisi" },
tahun: { required: "Tahun wajib diisi" }
tahun: { required: "Tahun wajib diisi" },
nama_singkat: { required: "Nama singkat wajib diisi" }
},
errorElement: 'div',
errorPlacement: function (error, element) {
@@ -17,6 +17,12 @@
<input type="text" class="form-control" id="add-program-nama" name="nama" placeholder="Cth: Program Pertanian" value="{{ old('nama', $program->nama) }}" readonly />
</div>
</div>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="add-program-nama-singkat">Nama Singkat<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="add-program-nama-singkat" name="nama_singkat" placeholder="Cth: PP" value="{{ old('nama_singkat', $program->nama_singkat) }}" readonly />
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-program-subdomain">Sub Domain<span class="text-danger">*</span></label>
@@ -49,16 +49,15 @@
<div class="col-md-auto d-flex gap-2">
@if (app()->has('SystemProgram'))
@else
<div class="col-md-auto">
<div class="col-6">
<div class="d-flex align-items-center">
<label class="me-2 text-nowrap">Program</label>
<select name="program_id" class="form-select form-select-sm w-auto" onchange="this.form.submit()">
<option value="">Pilih Program</option>
<select name="program_id" class="form-select form-select-sm w-auto" onchange="this.form.submit()" id="program_id">
<option value="">--- Pilih Program ---</option>
@foreach($programList as $prog)
<option value="{{ $prog->id }}" {{ request('program_id') == $prog->id ? 'selected' : '' }}>{{ $prog->nama }}</option>
<option value="{{ $prog->id }}" {{ request('program_id') == $prog->id ? 'selected' : '' }}>{{ $prog->nama_singkat }}</option>
@endforeach
</select>
<label class="ms-2 text-nowrap">entries</label>
</div>
</div>
@endif
@@ -66,9 +65,8 @@
<input type="text" name="search" class="form-control" placeholder="Cari Nama Tabel..." value="{{ request('search') }}">
<button type="submit" class="btn btn-outline-primary"><i class="ti tabler-search"></i></button>
</div>
<a href="{{ route('tabel.data.create', [$tabel->id, 'program_id' => request('program_id')]) }}" class="btn btn-sm btn-primary add-new"
style="display: {{ request('program_id') ? 'flex' : 'none' }};">
<i class="ti tabler-plus me-1"></i> Tambah
<a href="{{ route('tabel.data.create', [$tabel->id, 'program_id' => request('program_id')]) }}" class="btn btn-sm btn-primary flex-shrink-0 add-new">
<i class="icon-xs icon-base ti tabler-plus me-1"></i> Tambah
</a>
</div>
</form>
@@ -123,6 +121,8 @@
'use strict';
$(document).ready(function () {
$('#program_id').select2();
$(".delete-record").click(function (e) {
e.preventDefault();
const id = $(this).data('id');
+9 -2
View File
@@ -102,7 +102,7 @@
</li>
</ul>
</li>
<li class="menu-item {{ request()->routeIs(['petani-cpm.*','tabel.data.*']) ? 'active open' : '' }}">
<li class="menu-item {{ request()->routeIs(['petani-cpm.*', 'lahan-cpcl.*', 'tabel.data.*']) ? 'active open' : '' }}">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon icon-base ti tabler-folder-root"></i>
<div data-i18n="Basis Data Ekosistem">Basis Data Ekosistem</div>
@@ -110,7 +110,14 @@
<ul class="menu-sub">
<li class="menu-item {{ request()->routeIs('petani-cpm.*') ? 'active' : '' }}">
<a href="{{ route('petani-cpm.index') }}" class="menu-link">
<div data-i18n="Petani">Petani</div>
<div data-i18n="Petani CPM">Petani CPM</div>
</a>
</li>
</ul>
<ul class="menu-sub">
<li class="menu-item {{ request()->routeIs('lahan-cpcl.*') ? 'active' : '' }}">
<a href="{{ route('lahan-cpcl.index') }}" class="menu-link">
<div data-i18n="Lahan CPCL">Lahan CPCL</div>
</a>
</li>
</ul>
+1
View File
@@ -132,6 +132,7 @@ Route::middleware('auth')
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');
Route::resource('lahan-cpcl', App\Http\Controllers\Web\Ekosistem\LahanCPCLController::class);
// Monev
Route::resource('framework', App\Http\Controllers\Web\Program\FrameworkController::class);