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.
484 lines
15 KiB
JavaScript
484 lines
15 KiB
JavaScript
|
|
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 = `<option value="">...</option>` + bm.map(function (k) {
|
|
var txt = `${k.id} - ${k.text}`;
|
|
if(k.id.toLowerCase() == k.text.toLowerCase()){
|
|
txt = k.text;
|
|
}
|
|
return `<option value="${k.id}">${txt}</option>`
|
|
}).join('');
|
|
$("#" + objectForm.idform + ' #' + a).trigger('change');
|
|
$("#" + objectForm.idform + ' #' + a).val(val).trigger('change');
|
|
} else {
|
|
document.querySelector("#" + a).innerHTML = `<option value="">...</option>` + bm.map(function (k) {
|
|
return `<option value="${k.id}">${k.id} - ${k.text}</option>`
|
|
}).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 = `<option value="">...</option>` + bm.map(function (k) {
|
|
return `<option value="${k.id}">${k.id} - ${k.text}</option>`
|
|
}).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();
|
|
});
|
|
};
|
|
}
|