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.
338 lines
12 KiB
PHTML
338 lines
12 KiB
PHTML
<script>
|
|
function typeInput(a){
|
|
var ct = div().class('form-group');
|
|
ct.child(
|
|
el('label').html(a.title)
|
|
)
|
|
var inpt = el('input').type(a.type).class('form-control form-d').name(a.name).id(a.name).hold('...')
|
|
if(a.readonly == true){
|
|
inpt.attr('readonly', 'true')
|
|
}
|
|
ct.child(
|
|
inpt
|
|
)
|
|
var dv = div().class('col-sm-'+a.row).child(ct)
|
|
|
|
return dv.get();
|
|
}
|
|
|
|
function typeSelect(a){
|
|
var ct = div().class('form-group');
|
|
ct.child(
|
|
el('label').html(a.title)
|
|
)
|
|
var inpt = el('select').class('form-control form-d').name(a.name).id(a.name)
|
|
if(a.readonly == true){
|
|
inpt.attr('readonly', 'true')
|
|
}
|
|
inpt.child(
|
|
el('option').val('').html('Pilih Data')
|
|
)
|
|
a.data.forEach(function(dt){
|
|
inpt.child(
|
|
el('option').val(dt.id).html(dt.id+'-'+dt.text)
|
|
)
|
|
})
|
|
ct.child(
|
|
inpt
|
|
)
|
|
|
|
var dv = div().class('col-sm-'+a.row).child(ct)
|
|
|
|
return dv.get();
|
|
}
|
|
|
|
var formMaker = objectForm.data.map(function(e){
|
|
var obj = null;
|
|
if(e.type == 'text'){
|
|
obj = typeInput(e);
|
|
}else if(e.type == 'date'){
|
|
obj = typeInput(e);
|
|
}else if(e.type == 'select'){
|
|
obj = typeSelect(e);
|
|
}
|
|
return obj;
|
|
});
|
|
|
|
formMaker.forEach(function(elemen){
|
|
_id(objectForm.idform).appendChild(elemen)
|
|
});
|
|
|
|
(function dtButtons(){
|
|
var dt = document.querySelector('.dt-buttons');
|
|
if(dt == null){
|
|
setTimeout(() => {
|
|
dtButtons();
|
|
}, 500);
|
|
}else{
|
|
Array.from(document.querySelector('.dt-buttons').children).forEach(function(e){
|
|
_id('listreportmenu').appendChild(
|
|
el('a').addModule('actbut', e).click(function(){
|
|
this.actbut.click();
|
|
}).href('#').class('dropdown-item').html(e.innerHTML).get()
|
|
)
|
|
});
|
|
document.querySelector('.panel-head-menu').appendChild(
|
|
el('input').type('search').keyup(function(){
|
|
table.search( this.value ).draw();
|
|
}).load(function(e){
|
|
e.el.addEventListener('search', function(){
|
|
table.search( this.value ).draw();
|
|
},false)
|
|
}).class('form-control form-search').hold('search...').get()
|
|
)
|
|
}
|
|
})();
|
|
|
|
var table = $('#tabledata').DataTable( {
|
|
dom: 'Bfrtip',
|
|
scrollX: true,
|
|
scrollCollapse: true,
|
|
paging: true,
|
|
"lengthChange": true,
|
|
"lengthMenu": [[25, 50, 100, 500, 1000],[25, 50, 100, 500, "Max"]],
|
|
"pageLength": 50,
|
|
"columnDefs": [
|
|
{ "width": "59px", "targets": 0 }
|
|
],
|
|
fixedColumns: {
|
|
left: 1
|
|
},
|
|
buttons: [
|
|
'copy',
|
|
{
|
|
title: 'Data '+(function(){
|
|
var titleX = '';
|
|
if(objectForm.title != undefined){
|
|
titleX = objectForm.title();
|
|
}
|
|
return titleX;
|
|
})(),
|
|
extend: 'excel',
|
|
exportOptions: {
|
|
columns: [ 1, 2 ]
|
|
}
|
|
},
|
|
{
|
|
title: 'Data '+(function(){
|
|
var titleX = '';
|
|
if(objectForm.title != undefined){
|
|
titleX = objectForm.title();
|
|
}
|
|
return titleX;
|
|
})(),
|
|
extend: 'pdf',
|
|
download: 'open',
|
|
messageBottom: null,
|
|
exportOptions: {
|
|
columns: [ 1, 2 ]
|
|
}
|
|
},
|
|
{
|
|
title: 'Data '+(function(){
|
|
var titleX = '';
|
|
if(objectForm.title != undefined){
|
|
titleX = objectForm.title();
|
|
}
|
|
return titleX;
|
|
})(),
|
|
extend: 'print',
|
|
exportOptions: {
|
|
columns: [ 1, 2 ]
|
|
},
|
|
messageBottom: null
|
|
}
|
|
]
|
|
} );
|
|
function _load(){
|
|
table.clear();
|
|
var g = cssLoader();
|
|
var qr = objectForm.queryTemp;
|
|
qr1 = qr.split('||')[0].replace(/\{select\}/g, objectForm.dataSelect);
|
|
qr2 = qr.split('||')[1];
|
|
var ty = qr1 + qr2;
|
|
AuditDevQuery(ty, function(r){
|
|
r.forEach(function(d,i){
|
|
var dat = [];
|
|
dat.push(`<div>
|
|
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-warning edit"><i class="icon-note"></i></button>
|
|
<button data-id="${i}" data-kode="${d[objectForm.kode]}" class="btn btn-sm btn-danger hapus"><i class="icon-trash"></i></button>
|
|
</div>`)
|
|
objectForm.view.forEach(function(v){
|
|
dat.push(d[v])
|
|
})
|
|
table.row.add(dat)
|
|
})
|
|
g.remove();
|
|
table.draw(true)
|
|
})
|
|
}
|
|
|
|
_load();
|
|
|
|
$(document).on('click','button.new', function(){
|
|
$("#modala").modal('show')
|
|
var titleX = '';
|
|
if(objectForm.title != undefined){
|
|
titleX = objectForm.title();
|
|
}
|
|
$(".title-f").html('Tambah Baru '+titleX)
|
|
var qr = objectForm.queryTemp;
|
|
qr1 = qr.split('||')[0].replace(/\{select\}/g, objectForm.dataSelect);
|
|
Array.from(document.querySelectorAll('.form-d')).forEach(function(j){
|
|
j.value = '';
|
|
});
|
|
if(objectForm.newkode != ''){
|
|
var k = cssLoader();
|
|
AuditDevQuery(objectForm.newkode, function(a){
|
|
k.remove();
|
|
globalThis['kode'].parent.value = a[0].kode;
|
|
})
|
|
}
|
|
})
|
|
|
|
var editActive;
|
|
var dataSelect;
|
|
$(document).on('click','.edit', function(){
|
|
var kode = this.getAttribute('data-kode');
|
|
var id = this.getAttribute('data-id');
|
|
editActive = id;
|
|
var cek = `SELECT * FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}'`;
|
|
var t = cssLoader();
|
|
AuditDevQuery(cek, function(r){
|
|
if(r.length > 0){
|
|
t.remove()
|
|
r = r[0];
|
|
dataSelect = r;
|
|
var titleX = '';
|
|
if(objectForm.title != undefined){
|
|
titleX = objectForm.title();
|
|
}
|
|
$(".title-f").html('Update Data '+titleX)
|
|
Object.keys(r).forEach(function(jj){
|
|
if(globalThis[jj] != undefined && globalThis[jj] != ''){
|
|
globalThis[jj].parent.value = r[jj];
|
|
}
|
|
})
|
|
$("#modala").modal('show')
|
|
_id('kode').value = r.kode;
|
|
_id('nama').value = r.nama;
|
|
}else{
|
|
dataSelect = null;
|
|
t.remove();
|
|
Swal('Info', 'data ini telah dihapus', 'info')
|
|
setTimeout(() => {
|
|
_load();
|
|
}, 500);
|
|
}
|
|
})
|
|
})
|
|
|
|
$(document).on('click','.hapus', function(event){
|
|
var kode = this.getAttribute('data-kode');
|
|
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(){
|
|
AuditDevQuery(`DELETE FROM ${objectForm.table} WHERE ${objectForm.kode} = '${kode}'`, function(){
|
|
_load();
|
|
})
|
|
},false)
|
|
})
|
|
|
|
$(document).on('click','.simpan', function(){
|
|
var type = document.querySelector('.title-f').innerHTML;
|
|
if(type.indexOf('Tambah Baru') != -1){
|
|
var gt = Array.from(document.querySelectorAll('.form-d')).map(function(j){
|
|
var t = {};
|
|
t['title'] = j.parentNode.querySelector('label').innerHTML;
|
|
t['name'] = j.name;
|
|
t['text'] = j.value;
|
|
return t;
|
|
});
|
|
|
|
|
|
objectForm.validasiForm.forEach(function(t){
|
|
if(globalThis[t].parent.value === ''){
|
|
Swal('Warning', globalThis[t].parent.parentNode.querySelector('label').innerHTML+' Tidak Boleh Kosong', 'warning');
|
|
throw globalThis[t].parent.parentNode.querySelector('label').innerHTML+' Tidak Boleh Kosong';
|
|
}
|
|
});
|
|
|
|
var insert = `INSERT INTO ${objectForm.table} (${gt.map(function(n){
|
|
return n.name
|
|
}).join(',')}) values (${gt.map(function(cj){
|
|
return `"${cj.text.replace(/\"/g,"\\\"")}"`;
|
|
})})`;
|
|
var cek = `SELECT * FROM ${objectForm.table} WHERE ${objectForm.kode} = '${globalThis[objectForm.kode].parent.value}'`;
|
|
AuditDevQuery(cek, function(r){
|
|
if(r.length == 0){
|
|
AuditDevQuery(insert, function(){
|
|
$("#modala").modal('toggle')
|
|
swal("Success", "Data telah ditambahkan", "success");
|
|
_load();
|
|
})
|
|
}else{
|
|
Swal('Warning', 'kode sudah digunakan', 'warning');
|
|
}
|
|
})
|
|
}else{
|
|
var gt = Array.from(document.querySelectorAll('.form-d')).map(function(j){
|
|
var t = {};
|
|
t['title'] = j.parentNode.querySelector('label').innerHTML;
|
|
t['name'] = j.name;
|
|
t['text'] = j.value;
|
|
return t;
|
|
});
|
|
|
|
objectForm.validasiForm.forEach(function(t){
|
|
if(globalThis[t].parent.value === ''){
|
|
Swal('Warning', globalThis[t].parent.parentNode.querySelector('label').innerHTML+' Tidak Boleh Kosong', 'warning');
|
|
throw globalThis[t].parent.parentNode.querySelector('label').innerHTML+' Tidak Boleh Kosong';
|
|
}
|
|
});
|
|
|
|
var kode = _id(objectForm.kode).value;
|
|
|
|
var update = `UPDATE ${objectForm.table} SET ${gt.map(function(df){
|
|
return ` ${df.name} = "${df.text.replace(/\"/g, '\\\"')}" `
|
|
}).join(',')} WHERE ${objectForm.kode} = '${kode}'`;
|
|
|
|
var y = cssLoader()
|
|
AuditDevQuery(update,function(){
|
|
y.remove();
|
|
$("#modala").modal('toggle')
|
|
var dat = [];
|
|
dat.push(`<div>
|
|
<button data-id="${editActive}" data-kode="${kode}" class="btn btn-sm btn-warning edit"><i class="icon-note"></i></button>
|
|
<button data-id="${editActive}" data-kode="${kode}" class="btn btn-sm btn-danger hapus"><i class="icon-trash"></i></button>
|
|
</div>`);
|
|
objectForm.view.forEach(function(v){
|
|
dat.push(globalThis[v].parent.value)
|
|
})
|
|
table.row(editActive).data(dat).draw( false )
|
|
});
|
|
|
|
}
|
|
})
|
|
</script> |