246 lines
12 KiB
PHP
246 lines
12 KiB
PHP
@extends('layouts.master')
|
||
@section('content')
|
||
<div class="flex flex-col gap-6">
|
||
<div class="card">
|
||
<div class="card-header">
|
||
<div class="flex justify-between items-center">
|
||
<h4 class="card-title">{{$title}}</h4>
|
||
</div>
|
||
</div>
|
||
<form action="{{route($route.'.store')}}" method="POST" class="" enctype="multipart/form-data">
|
||
{{csrf_field()}}
|
||
<input type="hidden" name="secure_id" value="{{@$keyId}}">
|
||
<div class="p-6">
|
||
<div class="card border rounded mb-5">
|
||
<div class="card-header">
|
||
<h5 class="font-bold text-md">Informasi Instansi Dataset</h5>
|
||
</div>
|
||
<div class="card-body p-5">
|
||
<div class="grid lg:grid-cols-1 gap-3">
|
||
<div class="">
|
||
<label class="mb-3 required">Instansi</label>
|
||
<select name="instansi_id" required class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id="instansi_id">
|
||
<option value="">-</option>
|
||
@foreach($instansi as $dataInstansi)
|
||
<option {{@$item->instansi_id == $dataInstansi->MsInstansiId ? 'selected' : ''}} value="{{encode_id($dataInstansi->MsInstansiId)}}">{{$dataInstansi->name}}</option>
|
||
@endforeach
|
||
</select>
|
||
@error('instansi_id')
|
||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||
@enderror
|
||
</div>
|
||
<div class="">
|
||
<label class="mb-3 required">Resource Data</label>
|
||
<select name="template_id" required class="form-input template_id select2 @error('template_id') is-invalid @enderror" id="template_id">
|
||
{{-- <option value="">-</option> --}}
|
||
{{-- @foreach($template as $dataTemplate)
|
||
<?php
|
||
// $filename = pathinfo($dataTemplate->template_url, PATHINFO_FILENAME);
|
||
?>
|
||
<option {{@$item->template_id == $dataTemplate->MsTemplateId ? 'selected' : ''}} data-template="{{asset($dataTemplate->template_url)}}" value="{{encode_id($dataTemplate->MsTemplateId)}}">{{ $filename }} - {{$dataTemplate->name}}</option>
|
||
@endforeach --}}
|
||
</select>
|
||
@error('template_id')
|
||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||
@enderror
|
||
</div>
|
||
</div>
|
||
<a href="#" class="btn bg-success btnDownload text-white btn-md mt-3"><i class="ri-download-2-line"></i> Download Template Excel</a>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="grid lg:grid-cols-1 gap-3">
|
||
<div class="mb-3">
|
||
<label class="mb-3 required">Nama Dataset</label>
|
||
<input type="text" value="{{@$item->name ? @$item->name : old('name')}}" name="name" class="form-input @error('name') is-invalid @enderror" placeholder="Masukan Nama Dataset" required>
|
||
<small><i>*Harap perhatikan nama dataset yang Anda buat. Pastikan tidak ada duplikasi dataset dengan menekan tombol Cek Data.</i></small>
|
||
@error('name')
|
||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||
@enderror
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="mb-3 required">Upload File</label>
|
||
<input type="file" accept=".xls,.xlsx" value="{{@$item->file ? @$item->file : old('file')}}" name="file" class="form-input @error('file') is-invalid @enderror" placeholder="Masukan File Dataset" {{@$item->file ? '' : 'required'}}>
|
||
<small><i>Masukan Ekstensi File : .xls,.xlsx</i></small>
|
||
@if(@$item->file)
|
||
<br>
|
||
<a href="{{asset('uploads/'.$item->file)}}" class="btn bg-success text-white mt-3"><i class="ri-download-line"></i> Download File</a>
|
||
@endif
|
||
@error('file')
|
||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||
@enderror
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="mb-3 required">Deskripsi Dataset</label>
|
||
<textarea name="deskripsi" rows="10" required class="form-input @error('deskripsi') is-invalid @enderror" id="">{{@$item->deskripsi}}</textarea>
|
||
@error('deskripsi')
|
||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||
@enderror
|
||
</div>
|
||
<div class="mb-3">
|
||
<label class="mb-3">Data Tahun</label>
|
||
<select name="tahun" class="form-input" id="">
|
||
<option value="{{@$item->tahun ? @$item->tahun : date('Y')}}">{{@$item->tahun ? @$item->tahun : date('Y')}}</option>
|
||
{{-- @for($i = (date('Y')-5); date('Y') >= $i ; $i++) --}}
|
||
{{-- <option {{ (@$item ? (@$item->tahun == $i ? 'selected' : '') : ($i == date('Y') ? 'selected' : '') )}} value="{{$i}}">{{$i}}</option> --}}
|
||
{{-- @endfor --}}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="p-6">
|
||
<a href="{{route($route.'.index')}}" class="btn bg-danger text-white"><i class="ri-close-line"></i> Batal</a>
|
||
<button type="submit" class="btn bg-success text-white"><i class="ri-save-line"></i> Simpan</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
@endsection
|
||
@section('js')
|
||
<script>
|
||
function clear(elementId) {
|
||
$('#' + elementId).empty();
|
||
$('#' + elementId).select2();
|
||
}
|
||
$('select').on("select2:selecting", function(e) {
|
||
var selectorOrigin = this.id;
|
||
var id = e.params.args.data.id;
|
||
|
||
|
||
if(selectorOrigin=='instansi_id'){
|
||
$('#loading-spinner').show();
|
||
clear('template_id');
|
||
selector = 'template_id';
|
||
url_to = 'getResourceData';
|
||
getSelect(id, selector, url_to);
|
||
}
|
||
});
|
||
|
||
function getSelect(id, selectTo, urlTo, selected = "") {
|
||
id = id;
|
||
var base_url = "{{url('/')}}";
|
||
//alert(id);
|
||
destino = "#" + selectTo;
|
||
console.log(id);
|
||
valor = $('#' + id).find(":selected").val();
|
||
|
||
$.ajax({
|
||
method: "GET",
|
||
url: base_url + '/' + urlTo,
|
||
data: {
|
||
id: id
|
||
}
|
||
})
|
||
.done(function(msg) {
|
||
obj = msg.data;
|
||
|
||
if (obj.length > 0) {
|
||
//Clear the current options
|
||
$(destino).empty();
|
||
|
||
if(selectTo=='template_id'){
|
||
$(destino).append('<option value="">-PILIH RESOURCE DATA-</option>').select2("val", "0");
|
||
|
||
$.each(obj, function(index) {
|
||
value = obj[index].id;
|
||
text = obj[index].name;
|
||
excel = obj[index].excel;
|
||
$(destino).append('<option data-template="'+excel+'" value=' + value + '>' + text + '</option>');
|
||
});
|
||
console.log(selected)
|
||
if (selected) {
|
||
$(destino).val(selected).trigger('change');
|
||
selected = "";
|
||
}
|
||
}
|
||
|
||
|
||
} else {
|
||
if(selectTo=='template_id'){
|
||
$(destino).empty().append('<option value="0">-PILIH RESOURCE DATA-</option>').select2("val", "0");
|
||
}
|
||
}
|
||
$('#loading-spinner').hide();
|
||
});
|
||
return false;
|
||
}
|
||
</script>
|
||
<script>
|
||
|
||
const input = document.getElementById('tag-input');
|
||
const container = document.getElementById('tag-container');
|
||
|
||
input.addEventListener('keydown', function (e) {
|
||
if (e.key === 'Enter' && this.value.trim() !== '') {
|
||
e.preventDefault();
|
||
const tagText = this.value.trim();
|
||
|
||
// Buat tag baru
|
||
const tag = document.createElement('span');
|
||
tag.className = 'inline-flex items-center px-2 py-1 bg-primary text-white text-sm rounded';
|
||
tag.innerHTML = `${tagText} <button type="button" class="ml-1 text-blue-500 hover:text-red-600">×</button>`;
|
||
|
||
// Hidden input untuk dikirim ke server
|
||
const hiddenInput = document.createElement('input');
|
||
hiddenInput.type = 'hidden';
|
||
hiddenInput.name = 'tags[]';
|
||
hiddenInput.value = tagText;
|
||
|
||
// Tempelkan ke tag
|
||
tag.appendChild(hiddenInput);
|
||
|
||
// Tambahkan tag ke container sebelum input
|
||
container.insertBefore(tag, input);
|
||
|
||
// Reset input
|
||
this.value = '';
|
||
|
||
// Hapus tag saat tombol × ditekan
|
||
tag.querySelector('button').addEventListener('click', () => tag.remove());
|
||
}
|
||
});
|
||
</script>
|
||
<script type="text/javascript">
|
||
$('.template_id').on('change',function(){
|
||
var template = $(this).find(':selected').attr('data-template');
|
||
$('.btnDownload').attr('href',template);
|
||
});
|
||
$('#template_default').on('change',function(){
|
||
var instansi_id = $('.instansi_id').find(':selected').val();
|
||
var val = $(this).find(':selected').val();
|
||
var template = $('.template_id').find(':selected').attr('data-template');
|
||
if(instansi_id == ''){
|
||
toastr.error("Data instansi_id Belum Dipilih", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
||
$('#template_default').val('');
|
||
}else{
|
||
if(val == 1){
|
||
$('.btnDownload').attr('href',template);
|
||
$('.btnDownload').removeClass('hidden');
|
||
}else{
|
||
$('.btnDownload').attr('href',"#");
|
||
$('.btnDownload').addClass('hidden');
|
||
}
|
||
}
|
||
});
|
||
$(document).ready(function() {
|
||
$('.numberInput').on('input', function() {
|
||
this.value = this.value.replace(/[^0-9]/g, ''); // Hanya angka 0-9
|
||
});
|
||
$('#togglePassword').on('click', function() {
|
||
let passwordField = $('#password');
|
||
let icon = $(this).find('i');
|
||
|
||
// Cek apakah input saat ini bertipe password
|
||
if (passwordField.attr('type') === 'password') {
|
||
passwordField.attr('type', 'text'); // Ubah ke teks
|
||
icon.removeClass('fa-eye').addClass('fa-eye-slash'); // Ganti ikon
|
||
} else {
|
||
passwordField.attr('type', 'password'); // Ubah ke password
|
||
icon.removeClass('fa-eye-slash').addClass('fa-eye'); // Kembalikan ikon
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
@endsection
|