const globalObject = {
_Help: function(){
return {
getLabel: function(a){
let vv = document.getElementById(objectForm.idform);
let yo = vv.querySelector('#' + a);
if (typeof yo === 'object') {
return (function getLabel(yo) {
if (yo.parentNode.querySelector('label') === null) {
return getLabel(yo.parentNode)
}
return yo.parentNode.querySelector('label');
})(yo);
}
return false;
}
}
}
};
// Salin properti dari objek global Anda ke objek window
Object.keys(globalObject).forEach(key => {
if (!window.hasOwnProperty(key)) {
Object.defineProperty(window, key, {
get: globalObject[key], // Assign the function as the getter
set: function () {
// Tidak melakukan apa-apa saat mencoba mengatur properti
},
enumerable: true,
configurable: false // Mencegah penghapusan atau perubahan konfigurasi
});
}
});
window._Evclick = function (a, callback) {
a.addEventListener('click', callback, false);
}
window._Evchange = function (a, callback) {
if (objectForm.idform != undefined) {
$("#" + objectForm.idform + " #" + a.id).change(callback)
} else {
$("#" + a.id).change(callback)
}
}
window.dateNow = function(){
return tanggal(tanggal().normal).sekarang;
}
window._Evkeyup = function (a, callback) {
a.addEventListener('keyup', callback, false);
}
window._Evkeydown = function (a, callback) {
a.addEventListener('keydown', callback, false);
}
window._Evload = function (a, callback) {
a.addEventListener('load', callback, false);
}
window._viewnum = function (a, b) {
if (b != 'update') {
return a.number(2).currency(0)
} else {
return a;
}
}
window._viewrp = function (a, b) {
if (b != 'update') {
return a.number(2).currency(0).replace(/\./g,',')
} else {
return a;
}
}
window._tgl = function (a, b) {
return tanggal(a).sekarang;
}
window._nodecimal = function (a, b) {
if (objectForm.idform != undefined) {
$("#" + objectForm.idform + " #" + a).val(Number(b).currency(0))
} else {
$("#" + a).val(b)
}
}
globalThis._times = function () {
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
return time;
}
window._selectNull = function (id) {
$("#" + id).val('').trigger('change');
}
window._bbdown = function (faktur) {
var _ld = cssLoader();
AuditDevQuery(`DELETE FROM lap_bb WHERE kode = '${faktur}'`, function () {
_ld.remove();
})
}
window._arrayBB = function (dat) {
var bb = _master('bb', 'bb').cond(dat.table, 'table_name').cond(_setup('kodebb'), 'kode')
var app = '{{APPNAME}}';
var newA = [];
dat.data.forEach(function (c) {
bb.forEach(function (d) {
var x = {}
x.rekdebit = d.akundebet
x.rekkredit = d.akunkredit
x.debit = c[d.kodedebet]
x.kredit = c[d.kodekredit]
x.app = d.app
x.table_name = dat.table
x.username = username
x.userlog = timestamp()
x.keterangan = c[dat.ket]
x.tgl = c[dat.tgl]
x.tr = d.tr
x.kode = c[dat.kode]
newA.push(x)
})
})
return newA;
}
window._doubleInsert = function (dat) {
var dx = [];
dx.push(_setInsert({
kode: dat.kode,
table: dat.table,
data: dat.data,
}))
var s = _arrayBB({
table: dat.table
, kode: dat.kode
, tgl: dat.tgl
, ket: dat.ket
, data: dat.data
})
dx.push(_setInsert({
table: 'lap_bb',
kode: 'kode',
data: s,
}))
return dx;
}
window._setInsert = function (dat) {
var kode = dat.kode
var table = dat.table
var rw = (function () {
if (dat.data.length > 0) {
return '(' + Object.keys(dat.data[0]).join(',') + ')';
} else {
return ''
}
})();
var rw2 = (function () {
if (dat.data.length > 0) {
var f = 'SELECT ' + Object.keys(dat.data[0]).map(function (r) {
return 'a.' + r
}).join(',') + ' FROM (';
f += dat.data.map(function (j) {
var p = ' SELECT '
p += Object.keys(j).map(function (c) {
if (j[c] === null){
return '"" `' + c + '`';
}
return '"' + j[c].replace(/\"/g, "\\\"") + '" `' + c + '`'
}).join(",")
return p;
}).join(" \n UNION ALL \n ")
f += ") a ";
f += "LEFT JOIN " + table + " b ON b." + kode + " = a." + kode + " WHERE "
f += "b." + kode + " IS NULL";
return f;
} else {
return ''
}
})();
var qr = 'INSERT INTO ';
qr += table;
qr += rw;
qr += rw2;
return qr;
}
window._setupKodesp = function (kodesp, v){
if(v === undefined){
_setup('kodebb', globalThis[kodesp].parent.value);
return false;
}
if(v != undefined && typeof v === 'string'){
_setup('kodebb', v);
}
}
window._bbup = function (dat) {
var kode = _getval(dat.faktur);
var tgl = _getval(dat.tgl);
var keterangan = _getval(dat.ket);
var username = _getval(dat.username);
var userlog = _getval('userlog');
var table_name = dat.table;
var app = dataApi.app;
AuditDevQuery("SELECT * FROM setbb", function(bb){
bb = bb.cond(table_name, 'table_name').cond(_setup('kodebb'), 'kode').map(function (q) {
var c = {}
c.tr = q.tr;
c.rekdebit = (function(){
if (dat.reverse === true) {
return q.akunkredit;
}
return q.akundebet;
})();
if (q.kodedebet.indexOf(',') != -1) {
c.debit = (function (vv) {
var x = 0;
vv.forEach(function (t) {
x += _getval(t).number();
})
return x;
})(q.kodedebet.split(','));
} else {
c.debit = _getval(q.kodedebet).number();
}
c.rekkredit = (function(){
if(dat.reverse === true){
return q.akundebet;
}
return q.akunkredit;
})();;
if (q.kodedebet.indexOf(',') != -1) {
c.kredit = (function (vv) {
var x = 0;
vv.forEach(function (t) {
x += _getval(t).number();
})
return x;
})(q.kodekredit.split(','));
} else {
c.kredit = _getval(q.kodekredit).number();
}
c.table_name = table_name;
c.app = q.app;
c.username = username;
c.userlog = userlog;
c.keterangan = keterangan;
c.tgl = tgl;
c.kode = kode;
if(dat.data != undefined && typeof dat.data === 'object'){
Object.keys(dat.data).forEach(function(w){
c[w] = dat.data[w];
})
}
return c;
});
if (bb.length > 0) {
var nm = Object.keys(bb[0])
var sw = 'SELECT a.* FROM (\n' + bb.map(function (pop) {
var s = ' SELECT ';
s += nm.map(function (hk) {
if (Number.isInteger(pop[hk])) {
return '"' + pop[hk] + '" ' + hk
}
return '"' + pop[hk].replace(/\"/g, "\\\"") + '" ' + hk
}).join(",")
return s;
}).join("\n UNION ALL\n") + `\n) a `;
var insert = `INSERT INTO lap_bb (${nm.join(',')}) ` + sw + `
LEFT JOIN lap_bb b ON b.kode = a.kode AND b.tr = a.tr
WHERE b.kode IS NULL
`;
var update = `UPDATE lap_bb aa, (${sw}) bb SET ${nm.map(function (as) {
return ` aa.${as} = bb.${as} `
}).join(",")
} WHERE aa.kode = bb.kode AND aa.tr = bb.tr `
var _tdl = cssLoader();
AuditDevQuery(insert, function () {
AuditDevQuery(update, function () {
_tdl.remove();
})
})
}
});
}
Object.defineProperty(Array.prototype, 'toOption', {
value: function (id = 'kode',text = 'nama') {
var f = [].concat(this).map(function(a){
return {
id: a[id],
text: a[text],
}
});
return f;
}
});
window._setval = function (a, b) {
try{
(function(){
if (objectForm.idform != undefined) {
var type = document.querySelector("#" + objectForm.idform + " #" + a);
if (type != undefined) {
if (type.tagName === 'SELECT') {
$("#" + objectForm.idform + " #" + a).val(b);
$("#" + objectForm.idform + " #" + a).trigger('change');
} else if(type.tagName === 'INPUT' && type.dataset.type === 'date') {
$("#" + objectForm.idform + " #" + a).datepicker("update", new Date(b));
} else if(type.tagName === 'INPUT' && type.dataset.type === 'radio') {
if (typeof window._radioAct != 'undefined') {
window._radioAct.setVal(a, b)
}
} else {
type.value = b;
}
}
} else {
document.querySelector("#" + a).value = b;
}
})();
}catch(e){
}
}
window._setVal = _setval;
window._getval = function (a) {
if (objectForm.idform != undefined) {
var vv = document.querySelector("#" + objectForm.idform + " #" + a);
var tiraInput = objectForm.data.cond(a, 'name');
if(tiraInput.length > 0){
if(tiraInput[0].type === 'radio'){
return document.querySelector('input.form-d[name="'+a+'"]')?
document.querySelector('input.form-d[name="'+a+'"]').value
:'';
}
}
if(vv.tagName === 'SELECT'){
var v = $("#"+objectForm.idform+" #"+a).val();
if(Array.isArray(v)){
return v.join(",");
}
return v;
} else if(vv.tagName == 'INPUT' && vv.dataset.type == 'date'){
return (function (s) {
var [tgl, bulan, tahun] = s.split("-");
return tahun + '-' + bulan + '-' + tgl;
})(document.querySelector("#" + objectForm.idform + " #" + a).value);
}
return document.querySelector("#" + objectForm.idform + " #" + a).value;
} else {
return document.querySelector("#" + a).value
}
}
window._getVal = _getval;
window._setoption = function (a, bm) {
if (objectForm.idform != undefined) {
var val = document.querySelector("#" + objectForm.idform + " #" + a).value;
document.querySelector("#" + objectForm.idform + " #" + a).innerHTML = `` + bm.map(function (k) {
var txt = `${k.id} - ${k.text}`;
if(k.id.toLowerCase() == k.text.toLowerCase()){
txt = k.text;
}
return ``
}).join('');
$("#" + objectForm.idform + ' #' + a).trigger('change');
$("#" + objectForm.idform + ' #' + a).val(val).trigger('change');
} else {
document.querySelector("#" + a).innerHTML = `` + bm.map(function (k) {
return ``
}).join('');
}
}
window._setoptionmulti = function (id, a, bm) {
Array.from(document.querySelectorAll("#" + id + " [name=\"" + a+"\"")).forEach(function(s){
var val = s.value;
var idx = s.id;
s.innerHTML = `` + bm.map(function (k) {
return ``
}).join('');
$("#" + id +' #'+idx).val(val).trigger('change');
});
return true;
}
window._setOption = _setoption;
window._cekNullDoc = function (el, n) {
if (el == undefined) {
alert(n + ' not found');
throw 'not found';
}
}
window._setup = function (a, b) {
if (window._winSetData == undefined) {
window._winSetData = {}
}
if (b === undefined || b === null) {
if (window._winSetData[a] == undefined) {
return false;
} else {
var v = window._winSetData[a];
return v;
}
} else {
window._winSetData[a] = b;
return true;
}
};
Object.defineProperty(Array.prototype, 'chunk', {
value: function (chunkSize) {
var array = this;
return [].concat.apply([],
array.map(function (elem, i) {
return i % chunkSize ? [] : [array.slice(i, i + chunkSize)];
})
);
}
});
window.getFormData = function(classX,w = 4){
var t = Array.from(document.querySelectorAll("#" + classX+" .form-s"))
var z = t.chunk(w);
return z.map(function(i){
var ws = {};
i.forEach(function(q){
if(q.className.indexOf('numbers') != -1){
ws[q.name] = q.value.number();
}else{
ws[q.name] = q.value;
}
})
return ws;
});
};
// confirm
const confirmation = function(a){
if(typeof Swal != 'undefined'){
Swal({
title: a.title,
text: a.text,
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 () {
a.callback();
});
};
}