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
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>
|
|
<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);
|
|
|
|
}
|