document.getElementById('formSuplemen').addEventListener('submit', async function (e) {
const header = @include('layouts.components.header_bearer_api_gabungan');
const rows = document.querySelectorAll('#dragable-form-utama tr.duplikasi');
let formDatas = [];
// Mengumpulkan data dari setiap row
rows.forEach(function(row) {
const tipe = row.querySelector('select.pilih_tipe').value;
const namaKode = row.querySelector('input[name="nama_kode[]"]').value;
const labelKode = row.querySelector('input[name="label_kode[]"]').value;
const deskripsiKode = row.querySelector('input[name="deskripsi_kode[]"]').value;
const required = row.querySelector('input.isian-required').checked ? 1 : 0;
const kolom = row.querySelector('select[name="kolom[]"]').value;
const atribut = row.querySelector('textarea[name="atribut_kode[]"]').value;
const pilihanKode = row.querySelector('textarea[name="pilihan_kode[]"]').value;
const referensiKode = row.querySelector('select[name="referensi_kode[]"]').value;
// Menyimpan data dalam array
formDatas.push({
tipe: tipe,
nama_kode: namaKode,
label_kode: labelKode,
deskripsi_kode: deskripsiKode,
required: required,
kolom: kolom,
atribut: atribut,
pilihan_kode: pilihanKode,
referensi_kode: referensiKode
});
});
// Menyimpan data ke dalam input hidden
document.getElementById('form_isian').value = JSON.stringify(formDatas);
e.preventDefault();
const formData = new FormData(this);
const jsonData = Object.fromEntries(formData.entries());
try {
const response = await fetch(new URL("{{ config('app.databaseGabunganUrl').''.$form_action }}"), {
method: 'POST',
headers: header,
body: JSON.stringify(jsonData)
});
const data = await response.json();
if (response.ok && data.success) {
// alert('Data berhasil disimpan!');
window.location.href = "{{ route('suplemen') }}";
} else {
// alert('Gagal menyimpan data: ' + (data.message || 'Terjadi kesalahan.'));
}
} catch (error) {
console.error('Error:', error);
// alert('Terjadi kesalahan saat menyimpan data.');
}
});
let jumlahIsianBaru = {{ $jumlah_isian ?? 0 }}; // Menyimpan jumlah baris yang ada saat ini
// Fungsi untuk menambahkan baris baru
function tambahBaris() {
let newRow = document.createElement('tr');
newRow.classList.add('duplikasi', 'ui-sortable-handle');
newRow.id = "gandakan-" + jumlahIsianBaru; // ID baris baru
newRow.setAttribute('data-id', jumlahIsianBaru);
// Masukkan konten baris baru
newRow.innerHTML = `
`;
// Tambahkan baris baru ke dalam tabel
document.getElementById('dragable-form-utama').appendChild(newRow);
// Update jumlah baris untuk ID berikutnya
jumlahIsianBaru++;
}
// Fungsi untuk menghapus baris
function hapusBaris(button) {
// Mengambil elemen
yang merupakan parent dari tombol yang diklik
var row = button.closest('tr');
if (row) {
// Menghapus baris tersebut
row.remove();
}
}
document.addEventListener('DOMContentLoaded', function() {
const namaKodeInputs = document.querySelectorAll('input[name="nama_kode[]"]');
namaKodeInputs.forEach(input => {
input.addEventListener("input", function () {
// Hapus karakter yang tidak valid
this.value = this.value.replace(/[^a-zA-Z0-9_]/g, "");
// Pastikan tidak dimulai dengan angka
if (/^\d/.test(this.value)) {
alert("Nama kode tidak boleh dimulai dengan angka.");
this.value = this.value.replace(/^\d+/, "");
}
});
});
// Menangani perubahan tipe
document.querySelectorAll('.pilih_tipe').forEach(function(select) {
select.addEventListener('change', function() {
const row = this.closest('tr');
const tipeValue = this.value;
// Menampilkan atau menyembunyikan elemen berdasarkan tipe
const isianPilihan = row.querySelector('.isian-pilihan');
const selectManual = row.querySelector('.select-manual');
const isianReferensi = row.querySelector('.isian-referensi');
if (tipeValue === 'select-manual') {
isianPilihan.style.display = 'none';
selectManual.style.display = 'block';
isianReferensi.style.display = 'none';
} else if (tipeValue === 'select-otomatis') {
isianPilihan.style.display = 'none';
selectManual.style.display = 'none';
isianReferensi.style.display = 'block';
} else {
isianPilihan.style.display = 'block';
selectManual.style.display = 'none';
isianReferensi.style.display = 'none';
}
});
});
// Menambahkan kode isian baru
document.querySelector('.tambah-kode').addEventListener('click', function() {
const tableBody = document.querySelector('#dragable-form-utama');
const newRow = document.querySelector('tr.duplikasi').cloneNode(true);
const newRowId = Date.now(); // Membuat ID unik untuk baris baru
newRow.id = `gandakan-${newRowId}`;
newRow.setAttribute('data-id', newRowId);
// Menampilkan tombol hapus untuk row baru
const deleteButton = newRow.querySelector('.hapus-kode');
deleteButton.style.display = 'inline-block';
// Reset input pada row baru
newRow.querySelectorAll('input, textarea, select').forEach(input => input.value = '');
// Menambahkan row baru ke tabel
tableBody.appendChild(newRow);
});
// Menangani hapus kode isian
document.addEventListener('click', function(e) {
if (e.target && e.target.classList.contains('hapus-kode')) {
const row = e.target.closest('tr');
row.remove();
}
});
$('.pilih_tipe').on('change', function() {
var tipe = $(this).val();
var atribut = '';
var option = '{}';
var parents = $(this).parents('.duplikasi');
var isian_atribut = parents.find('.isian-atribut');
var isian_pilihan = parents.find('.isian-pilihan').not('.select-manual');
var isian_manual = parents.find('.select-manual');
var isian_referensi = parents.find('.isian-referensi');
var isian_required = parents.find('.isian-required');
var isian = parents.find('.isian');
var pindah_kode = parents.find('.pindah-kode');
if (tipe == '') {
atribut = 'Masukkan Atribut';
option = 'Masukkan Pilihan';
isian.prop("disabled", true);
isian_required.prop("disabled", true);
isian.removeClass('required');
isian_referensi.addClass('hide');
isian_manual.addClass('hide');
isian_manual.removeClass('required');
// pindah_kode.addClass('hide');
} else {
isian.prop("disabled", false);
isian_required.prop("disabled", false);
isian.addClass('required');
isian_atribut.removeClass('required');
isian_referensi.addClass('hide');
isian_manual.addClass('hide');
isian_manual.removeClass('required');
// pindah_kode.removeClass('hide');
if (tipe == 'select-manual') {
atribut = 'size="5"';
isian_manual.removeClass('hide')
isian_manual.addClass('required select2');
isian_manual.select2({
tags: true,
placeholder: "Masukkan Pilihan",
createTag: function(params) {
return {
id: params.term,
text: params.term,
newOption: true
};
},
templateResult: function(data) {
var $result = $("");
$result.text(data.text);
if (data.newOption) {
$result.append(" (Buat Baru)");
}
return $result;
},
insertTag: function(data, tag) {
data.push(tag);
}
});
loadSelect2()
isian_referensi.addClass('hide');
isian_referensi.removeClass('required');
isian_pilihan.addClass('hide');
isian_pilihan.removeClass('show');
isian_pilihan.removeClass('required');
} else {
option = '{}';
isian_referensi.addClass('hide');
isian_referensi.removeClass('required');
isian_pilihan.removeClass('hide');
isian_pilihan.removeClass('required');
isian_manual.addClass('hide');
isian_manual.removeClass('required');
isian_manual.removeClass('select2')
if (isian_manual[0].classList.contains('select2-hidden-accessible') == true) {
isian_manual.removeAttr("data-select2-id").removeClass(
"select2-hidden-accessible").removeAttr("aria-hidden")
isian_manual[0].nextElementSibling.remove()
}
if (tipe == 'select-otomatis') {
atribut = 'size="5"';
isian_referensi.removeClass('hide');
isian_referensi.addClass('required');
isian_pilihan.addClass('hide');
isian_pilihan.removeClass('required');
} else if (tipe == 'text') {
atribut = 'minlength="5" maxlength="50"';
} else if (tipe == 'number') {
atribut = 'min="1" max="100" step="1"';
} else if (tipe == 'email') {
atribut = 'minlength="5" maxlength="50"';
} else if (tipe == 'url') {
atribut = 'minlength="5" maxlength="50"';
} else if (tipe == 'date') {
atribut = 'min="2021-01-01" max="2021-12-31"';
} else if (tipe == 'time') {
atribut = 'min="00:00" max="23:59"';
} else {
atribut = 'minlength="5" maxlength="50" rows="5"';
}
if (tipe == 'hari' || tipe == 'hari-tanggal') {
atribut = 'Masukkan atribut';
// isian_atribut.removeClass('required');
// isian_atribut.prop("disabled", true);;
}
isian_pilihan.prop("disabled", true);
isian_pilihan.addClass('required');
}
}
isian_atribut.attr("placeholder", atribut);
isian_pilihan.attr("placeholder", option);
$(this).parents('.duplikasi').find('.isian').val('');
});
});