You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1250 lines
47 KiB
JavaScript

const defineTable = {
nama: null
}
window.insertNodeAfterClass = function(className, content) {
// Create a new element to insert
// Find the element with the specified class
var targetElement = document.querySelector("." + className);
// Check if the target element exists
if (targetElement) {
// Insert the new node after the target element
targetElement.parentNode.insertBefore(content, targetElement.nextSibling);
} else {
console.error("Target element with class '" + className + "' not found.");
}
};
function ubahFormatTanggal(tanggal) {
const bulanDalamKata = ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'];
const tanggalArray = tanggal.split('-');
const tahun = tanggalArray[0];
const bulan = bulanDalamKata[parseInt(tanggalArray[1]) - 1];
const tanggalBaru = tanggalArray[2];
return `${tanggalBaru} ${bulan} ${tahun}`;
}
insertNodeAfterClass('panel-head-menu', div()
.id('pageContent').get())
if (typeof objectForm != 'undefined'){
let _rightPanel = document.querySelector('.content-header-right');
window._startDate;
window._endDate;
if (objectForm.filldate == true) {
if (_rightPanel != undefined) {
_rightPanel.appendChild(
div().html(`
<div id="reportrange" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%">
<i class="la la-calendar-o"></i>&nbsp;
<span></span> <i class="fa fa-caret-down"></i>
</div>
`).load(function () {
$(function () {
window._cekSession = (function () {
return {
get: function () {
let t = localStorage.getItem(location.href + 'ds');
let w = localStorage.getItem(location.href + 'dn');
if (t != undefined) {
return {
start: t,
end: w
}
}
return null;
},
set: function (start, end) {
localStorage.setItem(location.href + 'ds', start)
localStorage.setItem(location.href + 'dn', end)
}
}
})()
window._startDate = moment().subtract(29, 'days');
window._endDate = moment();
if (window._cekSession.get() != null) {
window._startDate = moment(window._cekSession.get().start)
window._endDate = moment(window._cekSession.get().end);
}
function cb(d1, d2) {
$('#reportrange span').html(d1.format('MMMM D, YYYY') + ' - ' + d2.format('MMMM D, YYYY'));
if (objectForm.serverSide != true){
_load();
}else{
setTimeout(function(){
table.ajax.reload()
},100)
}
}
function cb2(d1, d2) {
window._startDate = d1
window._endDate = d2
window._cekSession.set(d1, d2)
$('#reportrange span').html(d1.format('MMMM D, YYYY') + ' - ' + d2.format('MMMM D, YYYY'));
if (objectForm.serverSide != true) {
_load();
}else{
setTimeout(function () {
table.ajax.reload()
}, 100)
}
}
$('#reportrange').daterangepicker({
startDate: _startDate,
endDate: _endDate,
ranges: {
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'1 Years': [moment().startOf('year'), moment().endOf('year')],
'Last Year': [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year').endOf('year')]
}
}, cb2);
cb(_startDate, _endDate);
});
}).get()
)
}
}
function HtmlEncode(s) {
let el = document.createElement("div");
el.innerText = el.textContent = s;
s = el.innerHTML;
return s;
}
function decodeHTML(text) {
let textArea = document.createElement('textarea');
textArea.innerHTML = text;
return textArea.value;
}
let colDef = (function (x) {
if (x.multiAction != undefined) {
return [{
orderable: false,
className: 'select-checkbox',
targets: 0
}];
} else if( objectForm.noStartOrder === true ){
return [];
} else {
return [
{ "width": "59px", "targets": 0 }
];
}
})(objectForm);
let order = [];
objectForm.view.forEach(function(s, i){
let n = 1+i;
if(objectForm.noStartOrder === true){
n = 0+i;
}
if(s === 'tgl'){
order.push([n,'desc']);
}
});
const getPositionOrder = function(x){
let position = objectForm.view.indexOf(x) + 1;
if(objectForm.noStartOrder === true){
position = objectForm.view.indexOf(x) + 0;
}
return position;
};
if(typeof objectForm.custOrder != 'undefined'){
objectForm.custOrder.forEach(function(s){
let n = getPositionOrder(s);
order.push([n,'desc']);
});
};
objectForm.view.forEach(function(col, i){
let n = 1+i;
if (objectForm.noStartOrder === true) {
n = 0 + i;
}
if(col.indexOf('tgl') != -1){
colDef.push({
targets: n,
render: function (data, type, row, meta) {
if (type === 'display' || type === 'filter') {
return ubahFormatTanggal(data);
}
return data; // Tampilkan tanggal dalam format yyyy-mm-dd saat dilakukan pengurutan
},
orderData: [n], // Atur urutan data berdasarkan kolom tanggal
type: 'date-eu' // Atur jenis tipe data untuk pengurutan berdasarkan tanggal (format 'dd/mm/yyyy')
});
}
});
window.optionTable = {
dom: 'Bfrtip',
scrollY: '300px',
scrollX: true,
order: order,
scrollCollapse: true,
paging: (function(){
if(objectForm.pagin === false){
return false;
}
return true;
})(),
"lengthChange": true,
"lengthMenu": objectForm.serverSide ? [[10, 20, 50, 100, 500, 1000], [25, 50, 100, 500, "Max"]] : [[20, 50, 100, 500, 1000], [25, 50, 100, 500, "Max"]],
"pageLength": objectForm.serverSide? 10:20,
"columnDefs": colDef,
fixedColumns: {
left: (function (x) {
if (x.fixed != undefined) {
return x.fixed;
} else {
return 1;
}
})(objectForm)
},
buttons: [
'copy',
/* export excel */
{
title: function () {
let titleX = 'DATA ' + (function () {
let titleX = '';
if (objectForm.title != undefined) {
titleX = objectForm.title();
}
if(objectForm.titleReport != undefined){
titleX = objectForm.titleReport();
}
return titleX;
})();
return titleX;
},
extend: 'excel',
exportOptions: {
columns: objectForm.columnsExport
},
customize : function(xlsx){
let sheet = xlsx.xl.worksheets['sheet1.xml'];
console.log(sheet);
Array.from(sheet.querySelectorAll('row')).forEach(function(row, x){
Array.from(row.querySelectorAll('c')).forEach(function(f,i){
(function col(f, i){
if(f.children != undefined && f.children.length > 0){
col(f.children[0], i);
}else{
try{
(function(f,i){
if (
objectForm.customeExport[i].func != undefined
){
objectForm.customeExport[i].func(f, x, window._datar);
}
})(f, i);
}catch(e){
// console.log(e);
}
}
})(f, i);
});
})
}
},
/* export pdf */
{
title:
(function () {
if (objectForm.titleReport != undefined) {
return objectForm.titleReport;
}
return 'DATA ' + (function () {
let titleX = '';
if (objectForm.title != undefined) {
titleX = objectForm.title();
}
return titleX;
})()
})()
,
extend: 'pdf',
download: 'open',
messageBottom: null,
orientation: (function(obj){
if(obj.orientation == "l"){
return "landscape";
}
return "portrait";
})(objectForm),
exportOptions: {
columns: objectForm.columnsExport
},
customize: function (doc) {
console.log(doc);
doc.content[0].text = (function () {
return (function () {
if (objectForm.titleReport != undefined) {
return 'DATA '+objectForm.titleReport().toUpperCase();
}
return 'DATA ' + (function () {
let titleX = '';
if (objectForm.title != undefined) {
titleX = objectForm.title();
}
return titleX;
})().toUpperCase()
})()
})();
}
},
{
title: function () {
let titleX = 'DATA ' + (function () {
let titleX = '';
if (objectForm.title != undefined) {
titleX = objectForm.title();
}
return titleX;
})();
return titleX;
},
extend: 'print',
exportOptions: {
columns: objectForm.columnsExport
},
messageBottom: null,
customize: function (doc) {
}
}
]
}
if (objectForm.multiAction != undefined ){
optionTable.select = (function (x) {
if (x.multiAction != undefined) {
return {
style: 'os',
selector: 'td:first-child'
}
} else {
return {}
}
})(objectForm);
};
const ajaxData = delay(function (data, callback) {
table.clear();
let qr = objectForm.queryTemp;
let qr1 = qr.split('||')[0].replace(/\{select\}/g, objectForm.dataSelect);
if (window._startDate != undefined && objectForm.custcondition == undefined) {
if (objectForm.datekode != undefined && objectForm.filldate == true) {
if (qr1.indexOf('WHERE') != -1) {
qr1 += ' AND ' + objectForm.datekode + ' >= "' + window._startDate.format('YYYY-MM-DD') + '"'
} else {
qr1 += ' WHERE ' + objectForm.datekode + ' >= "' + window._startDate.format('YYYY-MM-DD') + '"'
}
qr1 += ' AND ' + objectForm.datekode + ' <= "' + window._endDate.format('YYYY-MM-DD') + '"'
}
}
// search
let searchData = ' HAVING 1=1 AND ( '+objectForm.view.map(function(x){
return ` ${x} LIKE "%${data.search.value}%" `
}).join("OR") + ' ) ';
if (objectForm.custcondition != undefined) {
qr1 = objectForm.custcondition(qr1);
};
if(objectForm.groupBy){
qr1 += ` GROUP BY ${objectForm.groupBy.join(",")} `;
}
qr1 += searchData;
let qr2 = qr.split('||')[1];
let ty = qr1;
if(data.order.length > 0){
let orderName = objectForm.view;
ty += ` ORDER BY `+data.order.map(function(x){
return ` ${orderName[(x.column - 1)]} ${x.dir} `;
}).join(',')
}
if (objectForm.debug == true) {
console.log(ty);
};
let dataConter = ty.split('FROM ' + objectForm.table);
let fst = dataConter.shift();
let lst = fst + ', 1 cn_count ' + 'FROM ' + objectForm.table + dataConter.join('FROM ' + objectForm.table);
ty += ` LIMIT ${data.start},10 `;
loaderCssCek();
AuditDevQuery(ty + '[;]' + ` SELECT ifnull((SELECT sum(cn_count) FROM ( ${lst} ) a ),0) cn_count ` , function (rx) {
loaderCssRemove();
let [r,counterData] = rx;
if(counterData === undefined){
counterData = 0;
}else{
counterData = counterData[0].cn_count;
}
if (objectForm.customeData != undefined && typeof objectForm.customeData === 'function') {
r = objectForm.customeData(r);
};
let dataArrayTable = [];
r.forEach(function (d, i) {
let dat = [];
let custb = '';
if (objectForm.custButton != undefined) {
custb = objectForm.custButton(d, i);
}
if (objectForm.multiAction === true) {
dat.push('');
}
if (objectForm.disableEditor != undefined) {
if (typeof objectForm.disableEditor === 'function') {
dat.push(objectForm.disableEditor(d[objectForm.kode], d, i));
} else {
dat.push(`<div style="text-align:center;">
-
</div>`)
}
} else if (objectForm.noAction === true) {
dat.push(`<div>
${custb}
</div>`)
} else if (objectForm.deleteOnly === true) {
dat.push(`<div>
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-clear hapus" style="color:red;"><i class="icon-trash"></i></button>
${custb}
</div>`)
} else {
dat.push(`<div>
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-clear edit" style="color:#666ee8;"><i class="icon-note"></i></button>
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-clear hapus" style="color:red;"><i class="icon-trash"></i></button>
${custb}
</div>`)
}
objectForm.view.forEach(function (v, o) {
if (objectForm.custView != undefined) {
if (objectForm.custView[o] != undefined && objectForm.custView[o] != false) {
dat.push(objectForm.custView[o](d[v]))
} else {
dat.push(d[v])
}
} else {
if (objectForm.custome != undefined) {
if (objectForm.custome[v] != undefined) {
let vv = objectForm.custome[v](d[v], d)
dat.push(vv);
} else {
dat.push(d[v])
}
} else {
dat.push(d[v])
}
}
})
dataArrayTable.push(dat);
})
callback(dataArrayTable, counterData);
})
}, 10)
if(objectForm.serverSide === true){
optionTable.ajax = delay(function (data, callback, settings) {
ajaxData(data, function(dataRender, counter){
callback({
draw: data.draw,
data: dataRender,
recordsTotal: counter,
recordsFiltered: counter
});
})
},300);
optionTable.serverSide = true;
}
const __updateTable = function(){
if (defineTable.nama != (objectForm.id ? '#' + objectForm.id : '#tabledata')){
defineTable.nama = (objectForm.id ? '#' + objectForm.id : '#tabledata');
window.table = $(objectForm.id?'#'+objectForm.id : '#tabledata').DataTable(optionTable);
}
}
__updateTable();
// const __update
table.columns.adjust().draw();
window._load = delay(function (callback) {
if(objectForm.serverSide === true){
table.ajax.reload();
return false;
}
table.clear();
let g = cssLoader();
let qr = objectForm.queryTemp;
let qr1 = qr.split('||')[0].replace(/\{select\}/g, objectForm.dataSelect);
if (window._startDate != undefined && objectForm.custcondition == undefined) {
if (objectForm.datekode != undefined && objectForm.filldate == true) {
if (qr1.indexOf('WHERE') != -1) {
qr1 += ' AND ' + objectForm.datekode + ' >= "' + window._startDate.format('YYYY-MM-DD') + '"'
} else {
qr1 += ' WHERE ' + objectForm.datekode + ' >= "' + window._startDate.format('YYYY-MM-DD') + '"'
}
qr1 += ' AND ' + objectForm.datekode + ' <= "' + window._endDate.format('YYYY-MM-DD') + '"'
}
}
if (objectForm.custcondition != undefined) {
qr1 = objectForm.custcondition(qr1);
};
let qr2 = qr.split('||')[1];
let ty = qr1 + qr2;
if(objectForm.debug == true){
console.log(ty);
};
AuditDevQuery(ty, function (r, counterData) {
if(callback != undefined && typeof callback === 'function'){
callback(r,counterData);
}else{
if(objectForm.customeData != undefined && typeof objectForm.customeData === 'function'){
r = objectForm.customeData(r);
};
r.forEach(function (d, i) {
let dat = [];
let custb = '';
if (objectForm.custButton != undefined) {
custb = objectForm.custButton(d, i);
}
if (objectForm.multiAction === true) {
dat.push('');
}
if (objectForm.disableEditor != undefined) {
if (typeof objectForm.disableEditor === 'function') {
dat.push(objectForm.disableEditor(d[objectForm.kode],d,i));
}else{
dat.push(`<div style="text-align:center;">
-
</div>`)
}
} else if (objectForm.noAction === true) {
dat.push(`<div>
${custb}
</div>`)
} else if (objectForm.deleteOnly === true){
dat.push(`<div>
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-clear hapus" style="color:red;"><i class="icon-trash"></i></button>
${custb}
</div>`)
} else {
dat.push(`<div>
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-clear edit" style="color:#666ee8;"><i class="icon-note"></i></button>
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-clear hapus" style="color:red;"><i class="icon-trash"></i></button>
${custb}
</div>`)
}
objectForm.view.forEach(function (v, o) {
if (objectForm.custView != undefined) {
if (objectForm.custView[o] != undefined && objectForm.custView[o] != false) {
dat.push(objectForm.custView[o](d[v]))
} else {
dat.push(d[v])
}
} else {
if (objectForm.custome != undefined) {
if (objectForm.custome[v] != undefined) {
let vv = objectForm.custome[v](d[v], d)
dat.push(vv);
} else {
dat.push(d[v])
}
} else {
dat.push(d[v])
}
}
})
table.row.add(dat)
})
g.remove();
if (window._w != undefined && window._w === 'c'){
setTimeout(function(){
table.draw(true);
},10);
}else{
table.draw(false);
}
objectForm.onStarted && typeof objectForm.onStarted == 'function' ? (function(objectForm){
setTimeout(()=>{
objectForm.onStarted();
})
})(objectForm) : null;
}
})
}, 10)
if (objectForm.filldate === undefined || objectForm.filldate === null){
if(objectForm.serverSide != true){
_load();
}
}
$(document).on('click', 'button.new', function () {
window._w = 'c';
$("#modala").modal('show');
document.querySelector('button.simpan').style.display = 'inline-block';
let titleX = '';
if (objectForm.title != undefined) {
titleX = objectForm.title();
}
$(".title-f").html('Tambah Baru ' + titleX)
let qr = objectForm.queryTemp;
let qr1 = qr.split('||')[0].replace(/\{select\}/g, objectForm.dataSelect);
Array.from(document.querySelectorAll('.form-d')).forEach(function (j) {
j.value = '';
});
if (objectForm.newkode != '') {
let k = cssLoader();
AuditDevQuery(objectForm.newkode, function (a) {
k.remove();
globalThis['kode'].parent.value = a[0].kode;
})
}
objectForm.data.forEach(function (j) {
if (j.area == true) {
$(".form-d[name=\"" + j.name + "\"]").summernote('code', '')
}
if (j.type == 'select') {
window._setval(j.name, '');
}
if (j.date == 'date') {
$(".form-d[name=\"" + j.name + "\"]").val("").datepicker("update");
}
})
if (objectForm.oncreate != undefined) {
objectForm.oncreate();
}
})
let updateKode;
let editActive;
let dataSelect;
$(document).on('click', '.edit', function () {
window._w = 'u';
if(objectForm.disableSave === true){
document.querySelector('button.simpan').style.display = 'none';
}
let kode = this.getAttribute('data-kode');
let id = this.getAttribute('data-id');
editActive = id;
let cek = `SELECT * FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}' LIMIT 1`;
let t = cssLoader();
AuditDevQuery(cek, function (r) {
if (r.length > 0) {
t.remove()
r = r[0];
updateKode = r[objectForm.kode];
dataSelect = r;
let titleX = '';
if (objectForm.title != undefined) {
titleX = objectForm.title();
}
$(".title-f").html('Update Data ' + titleX)
Object.keys(r).forEach(function (jj) {
let cekHero = _id(objectForm.idform).querySelector(`.form-d[name=${jj}]`);
if (cekHero != null && cekHero != undefined && cekHero != '') {
if (_id(objectForm.idform).querySelector(`.form-d[name=${jj}]`).tagName == 'SELECT') {
let id = _id(objectForm.idform).querySelector(`.form-d[name=${jj}]`).id;
let f = objectForm.data.cond(jj, 'name')[0];
if (f.unchange != true){
if(r[jj] != null){
if( r[jj].indexOf(',') != -1 ){
$('.form-d#' + id).val(r[jj].split(',')).trigger('change');
}else{
$('.form-d#' + id).val(r[jj]).trigger('change');
}
}
}
} else {
let jt = objectForm.data;
let f = objectForm.data.cond(jj, 'name')[0];
if (f.type == 'number') {
if (f.decimal != undefined) {
_id(objectForm.idform).querySelector(`.form-d[name=${jj}]`).value = r[jj].number(2).currency(2);
} else {
_id(objectForm.idform).querySelector(`.form-d[name=${jj}]`).value = r[jj].number(2).currency(0);
}
} else if ( f.type == 'date' ){
$('#'+objectForm.idform+` .form-d[name=${jj}]`)
.datepicker("update", new Date(r[jj]))
} else {
if (f.area == true) {
$(`.form-d[name=${jj}]`).summernote('code', decodeHTML(atob(r[jj])));
} else {
_id(objectForm.idform).querySelector(`.form-d[name=${jj}]`).value = r[jj];
}
}
if(f.type === 'radio'){
globalThis._radioAct.setVal(f.name, r[jj], 1);
}
}
}
})
$("#modala").modal('show')
if (objectForm.onupdate != undefined) {
objectForm.onupdate(r)
}
} else {
dataSelect = null;
t.remove();
Swal('Info', 'data ini telah dihapus', 'info')
setTimeout(() => {
_load();
}, 500);
}
})
})
$(document).on('click', '.hapus', async function (event) {
window._w = 'h';
let kode = this.getAttribute('data-kode');
if(objectForm.beforeDelete){
typeof objectForm.beforeDelete == 'function' ? await objectForm.beforeDelete(this.dataset):null;
}
if(objectForm._delete != undefined && typeof objectForm._delete === 'function'){
objectForm._delete(kode);
throw 'stop action';
};
event.preventDefault();
Swal({
title: "Apa kamu yakin?",
text: "Data ini akan di hapus dari system!",
type: "warning",
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: 'Ya, Saya yakin!',
cancelButtonText: "Tidak, Batalkan!",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
swal("Cancelled", "Your imaginary file is safe :)", "error");
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
e.preventDefault();
}
});
setTimeout(() => {
document.querySelector('.swal2-cancel').focus()
}, 100);
document.querySelector('.swal2-confirm').addEventListener('click', function () {
if (objectForm.connection != undefined){
let cssld = cssLoader();
$.ajax({
url: dataApi.connection
, typeData : 'json'
, method : 'POST'
, data: {
kode: kode
,data :objectForm.connection
}
, success : function(res){
res = JSON.parse(res);
cssld.remove();
if(res.counter > 0){
if(
objectForm.deleteInfoWarning != undefined
&& typeof objectForm.deleteInfoWarning === 'string'
){
Swal('Info', objectForm.deleteInfoWarning,'info')
}else{
Swal('Info', 'Data telah terpakai di transaksi. tidak boleh dihapus!','info')
}
}else{
console.log(`DELETE FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}'`)
AuditDevQuery(`DELETE FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}'`, function () {
if (globalThis._loadCust != undefined) {
// globalThis._loadCust();
_load();
} else {
_load();
}
if (globalThis._delete != undefined) {
globalThis._delete(kode)
}
})
}
},error: function(){
Swal('Warning', 'Connection Lost, please try again','warning');
cssld.remove();
throw 'error connection';
}
})
}else{
AuditDevQuery(`SELECT * FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}' LIMIT 1`, function (dx) {
if(dx.length > 0){
dx = dx[0];
};
if (objectForm._condDeleteStop != undefined){
objectForm._condDeleteStop.forEach(function(j){
if( dx[j.id] == j.val ){
Swal('Warning', 'data telah diposting', 'warning')
throw 'stop action';
};
});
};
AuditDevQuery(`DELETE FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}'`, function () {
if (globalThis._loadCust != undefined) {
_load();
} else {
_load();
}
if (globalThis._delete != undefined) {
globalThis._delete(kode)
}
})
})
}
}, false)
})
$(document).on('click', '.delete-multi', function () {
let ids = $.map(table.rows('.selected').data(), function (item) {
return el('div').html(item[1]).get().querySelector('.edit').getAttribute('data-kode')
});
})
$(document).on('click', '.simpan', function () {
if (objectForm.onviewonly != undefined) {
if (objectForm.onviewonly != undefined && typeof objectForm.onviewonly === 'function') {
if (globalThis._validasi != undefined) {
globalThis._validasi();
}
let gta = Array.from(document.querySelectorAll('.form-d')).map(function (j) {
let t = {};
let ty = objectForm.data.cond(j.name, 'name')[0];
if (ty.unfollow != undefined) {
t['follow'] = false;
} else {
t['follow'] = true;
}
t['title'] = (function cj(x){
if (x.querySelector('label') != undefined){
return x.querySelector('label').innerHTML
}else{
return cj(x.parentNode);
}
})(j.parentNode);
t['name'] = j.name;
if (ty.type == 'number') {
t['text'] = j.value.number().toString();
} else if (ty.type == 'select') {
t['text'] = _getval(j.name);
} else if (ty.type == 'date') {
t['text'] = (function (s) {
let [tgl, bulan, tahun] = s.split("-");
return tahun + '-' + bulan + '-' + tgl;
})(j.value);
} else {
if (ty.area == true) {
t['text'] = btoa(HtmlEncode(j.value));
} else {
t['text'] = j.value;
}
}
return t;
}).filter(function (cj) {
if (cj.follow === true) {
return cj
}
});
objectForm.validasiForm.forEach(function (t) {
let ty = objectForm.data.cond(t, 'name')[0];
if (ty.type == 'radio') {
if (_getval(t) === '') {
Swal('Warning', globalThis.kodesp.parent.parentNode.parentNode.querySelector('label').innerHTML + ' Tidak Boleh Kosong');
throw 'stop action'
}
} else {
if (_id(objectForm.idform).querySelector(`.form-d[name=${t}]`).value === '') {
Swal('Warning', _id(objectForm.idform).querySelector(`.form-d[name=${t}]`).parentNode.querySelector('label').innerHTML + ' Tidak Boleh Kosong', 'warning');
throw _id(objectForm.idform).querySelector(`.form-d[name=${t}]`).parentNode.querySelector('label').innerHTML + ' Tidak Boleh Kosong';
}
}
});
$("#modala").modal('toggle')
let obj = {}
gta.forEach(function (g, i) {
obj[g.name] = g.text;
})
objectForm.onviewonly(obj);
} else {
$("#modala").modal('toggle')
}
throw 'stop action'
}
let type = document.querySelector('.title-f').innerHTML;
if (type.indexOf('Tambah Baru') != -1) {
let gt = Array.from(document.querySelectorAll('.form-d')).map(function (j) {
let t = {};
let ty = objectForm.data.cond(j.name, 'name')[0];
if (ty.unfollow != undefined) {
t['follow'] = false;
} else {
t['follow'] = true;
}
t['title'] = (function cj(x) {
if (x.querySelector('label') != undefined) {
return x.querySelector('label').innerHTML
} else {
return cj(x.parentNode);
}
})(j.parentNode);
t['name'] = j.name;
if (ty.type == 'number') {
t['text'] = j.value.number().toString();
} else if (ty.type == 'select') {
t['text'] = _getval(j.name);
} else if (ty.type == 'date') {
t['text'] = (function (s) {
let [tgl, bulan, tahun] = s.split("-");
return tahun + '-' + bulan + '-' + tgl;
})(j.value);
} else {
if (ty.area == true) {
t['text'] = btoa(HtmlEncode(j.value));
} else {
t['text'] = j.value;
}
}
return t;
}).filter(function (cj) {
if (cj.follow === true) {
return cj
}
});
objectForm.validasiForm.forEach(function (t) {
let ty = objectForm.data.cond(t, 'name')[0];
if (ty.type == 'radio') {
if (_getval(t) === '') {
Swal('Warning', (function cj(x) {
if (x.querySelector('label') != undefined) {
return x.querySelector('label').innerHTML
} else {
return cj(x.parentNode);
}
})(globalThis.kodesp.parent.parentNode) + ' Tidak Boleh Kosong');
throw 'stop action'
}
} else {
if (_id(objectForm.idform).querySelector(`.form-d[name=${t}]`).value === '') {
Swal('Warning', (function cj(x) {
if (x.querySelector('label') != undefined) {
return x.querySelector('label').innerHTML
} else {
return cj(x.parentNode);
}
})(_id(objectForm.idform).querySelector(`.form-d[name=${t}]`).parentNode) + ' Tidak Boleh Kosong', 'warning');
throw 'Tidak Boleh Kosong';
}
}
});
if (globalThis._validasi != undefined) {
globalThis._validasi();
}
let insert = `INSERT INTO ${objectForm.table} (${gt.map(function (n) {
return n.name
}).join(',')}) values (${gt.map(function (cj) {
return `"${cj.text.replace(/\"/g, "\\\"")}"`;
})})`;
if (objectForm.debug != undefined) {
if (objectForm.debug == true) {
}
}
console.log(insert);
let validKode = '';
if (objectForm.validasiKode != undefined && Array.isArray(objectForm.validasiKode)){
validKode += " AND "+objectForm.validasiKode.map(function(v){
return ` ${v} = "${window._getval(v).replace(/\"/g,"\\\"")}" `;
}).join(" AND ");
};
let cek = `SELECT * FROM ${objectForm.table}
WHERE ${objectForm.kode} = '${globalThis[objectForm.kode].parent.value}'
${validKode} `;
AuditDevQuery(cek, function (r) {
if (r.length == 0) {
AuditDevQuery(insert+(objectForm.custQuery ? '[;]'+objectForm.custQuery:''), function () {
$("#modala").modal('toggle')
swal("Success", "Data telah ditambahkan", "success");
if (globalThis._loadCust != undefined) {
// globalThis._loadCust();
_load();
} else {
if(objectForm.serverSide === true){
table.ajax.reload();
}else{
_load();
}
}
if (globalThis._insert != undefined) {
globalThis._insert()
}
})
} else {
Swal('Warning', 'kode sudah digunakan', 'warning');
}
})
} else {
let gt = Array.from(document.querySelectorAll('.form-d')).map(function (j) {
let t = {};
let ty = objectForm.data.cond(j.name, 'name')[0];
if (ty.unfollow != undefined) {
t['follow'] = false;
} else {
t['follow'] = true;
}
t['title'] = (function cj(x) {
if (x.querySelector('label') != undefined) {
return x.querySelector('label').innerHTML
} else {
return cj(x.parentNode);
}
})(j.parentNode);
t['name'] = j.name;
if (ty.type == 'number') {
t['text'] = j.value.number().toString();
} else if(ty.type == 'select'){
t['text'] = _getval(j.name);
} else if (ty.type == 'date') {
t['text'] = (function (s) {
let [tgl, bulan, tahun] = s.split("-");
return tahun + '-' + bulan + '-' + tgl;
})(j.value);
} else {
if (ty.area == true) {
t['text'] = btoa(HtmlEncode(j.value));
} else {
t['text'] = j.value;
}
}
return t;
}).filter(function (cj) {
if (cj.follow === true) {
return cj
}
});
objectForm.validasiForm.forEach(function (t) {
let ty = objectForm.data.cond(t, 'name')[0];
if (ty.type == 'radio') {
if (_getval(t) === '') {
Swal('Warning', (function cj(x) {
if (x.querySelector('label') != undefined) {
return x.querySelector('label').innerHTML
} else {
return cj(x.parentNode);
}
})(globalThis.kodesp.parent.parentNode) + ' Tidak Boleh Kosong');
throw 'stop action'
}
} else {
if (_id(objectForm.idform).querySelector(`.form-d[name=${t}]`).value === '') {
Swal('Warning', (function cj(x) {
if (x.querySelector('label') != undefined) {
return x.querySelector('label').innerHTML
} else {
return cj(x.parentNode);
}
})(_id(objectForm.idform).querySelector(`.form-d[name=${t}]`).parentNode) + ' Tidak Boleh Kosong', 'warning');
throw ' Tidak Boleh Kosong';
}
}
});
if (globalThis._validasi != undefined) {
globalThis._validasi();
}
let kode = _id(objectForm.kode).value;
if (window.dataSelect != undefined && typeof window.dataSelect === 'object'){
if (window.dataSelect[objectForm.kode] != undefined){
kode = window.dataSelect[objectForm.kode];
}
}
if (window._w === 'u'){
kode = updateKode;
}
if(objectForm.cekData === true){
throw 'stop action'
}
let update = `UPDATE ${objectForm.table} SET ${gt.map(function (df) {
return ` ${df.name} = "${df.text.replace(/\"/g, '\\\"')}" `
}).join(',')} WHERE ${objectForm.kode} = '${kode}'`;
let y = cssLoader()
AuditDevQuery(update+(objectForm.custQuery ? '[;]'+objectForm.custQuery:''), function () {
y.remove();
if (globalThis._update != undefined) {
globalThis._update()
}
$("#modala").modal('toggle')
if (objectForm.serverSide === true) {
table.ajax.reload();
} else {
_load();
}
});
}
});
window._InputLine = function (kode, type, name, element) {
let last = element.innerHTML;
element.innerHTML = '';
let sx = div().html(last).get().children[0].querySelector('[data-action-table]').dataset;
let f = null;
f = el('input');
f.css({
padding: '5px 10px'
});
f.name(sx.name)
f.data('name', sx.name)
f.class('open-form-man')
f.css('width', '100%')
f.css('min-width', '120px')
f.data('kode', sx.actionTable)
f.val(div().html(last).get().querySelector('.data-show').innerText)
f.addModule('elm', element);
f.addModule('last', last);
f.load(function (eh) {
table.draw('false');
eh.el.focus();
setTimeout(function () {
document.querySelector(".dataTables_scrollBody").scrollLeft = 0;
scrollIntoViewWithOffset(eh.el, 90);
}, 100)
if (window.mobileCheck() === false) {
eh.el.addEventListener('keypress', function (e) {
if (e.key === 'Enter') {
let val = e.target.value;
let name = e.target.name;
e.target.elm.innerHTML = '';
let n = div().html(e.target.last).get().children[0];
n.id = 'tooltip' + Date.now();
n.querySelector('.data-show').innerText = val;
e.target.elm.appendChild(
n
);
table.draw('false');
let data = n.querySelector('[data-action-table]');
data = data.dataset;
data.kode = data.actionTable;
AuditDevQuery(`
UPDATE ${objectForm.table}
SET ${name} = "${val.replace(/\"/g, "\\\"")}"
WHERE ${objectForm.kode} = "${data.kode.replace(/\"/g, "\\\"") }"
`, function(){
toastr.success('your data success update.', 'Update Success', { timeOut: 800 })
});
if (data.next != undefined) {
let fd = _getElement('.open-form-man')
.findData('kode', data.kode)
.findData('name', data.next)
.focus()
}
}
});
} else {
eh.el.addEventListener('focusout', function (e) {
let val = e.target.value;
e.target.elm.innerHTML = '';
let n = div().html(e.target.last).get().children[0];
n.id = 'tooltip' + Date.now();
n.querySelector('.data-show').innerText = val;
e.target.elm.appendChild(
n
);
table.draw('false');
let data = n.querySelector('[data-action-table]');
data = data.dataset;
data.kode = data.actionTable;
if (data.next != undefined) {
let fd = _getElement('.open-form-man')
.findData('kode', data.kode)
.findData('name', data.next)
.focus()
}
}, false)
}
});
element.appendChild(
f.get()
);
Array.from(document.querySelectorAll('.ui-tooltip')).forEach(function (e) {
e.remove();
})
}
document.body.addEventListener('click', function (e) {
if (e.target.tagName === 'DIV' && e.target.getAttribute('data-action-table') != undefined) {
let d = e.target.dataset
let h = e.target.parentNode.parentNode
let type = d.type;
let name = d.name;
let actionTable = d.actionTable;
_InputLine(actionTable, type, name, h);
}
if (e.target.getAttribute('data-act-btn') != undefined) {
let kode = e.target.getAttribute('data-kode');
if (window.$_actButtonEdit != undefined) {
window.$_actButtonEdit(e.target.dataset);
};
}
}, false);
}