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