var authorsTbl = '';
$(function() {
// draw function [called if the database updates]
function draw_data() {
if ($.fn.dataTable.isDataTable('#authors-tbl') && authorsTbl != '') {
authorsTbl.draw(true)
} else {
load_data();
}
}
function load_data() {
authorsTbl = $('#authors-tbl').DataTable({
dom: '<"row"B>flr<"py-2 my-2"t>ip',
"processing": true,
"serverSide": true,
"ajax": {
url: "./get_authors.php",
method: 'POST'
},
columns: [{
data: 'id',
className: 'py-0 px-1'
},
{
data: 'first_name',
className: 'py-0 px-1'
},
{
data: 'last_name',
className: 'py-0 px-1'
},
{
data: 'email',
className: 'py-0 px-1'
},
{
data: 'birthdate',
className: 'py-0 px-1'
},
{
data: null,
orderable: false,
className: 'text-center py-0 px-1',
render: function(data, type, row, meta) {
console.log()
return '<a class="me-2 btn btn-sm rounded-0 py-0 edit_data btn-primary" href="javascript:void(0)" data-id="' + (row.id) + '">Edit</a><a class="btn btn-sm rounded-0 py-0 delete_data btn-danger" href="javascript:void(0)" data-id="' + (row.id) + '">Delete</a>';
}
}
],
drawCallback: function(settings) {
$('.edit_data').click(function() {
$.ajax({
url: 'get_single.php',
data: { id: $(this).attr('data-id') },
method: 'POST',
dataType: 'json',
error: err => {
alert("An error occured while fetching single data")
},
success: function(resp) {
if (!!resp.status) {
Object.keys(resp.data).map(k => {
if ($('#edit_modal').find('input[name="' + k + '"]').length > 0)
$('#edit_modal').find('input[name="' + k + '"]').val(resp.data[k])
})
$('#edit_modal').modal('show')
} else {
alert("An error occured while fetching single data")
}
}
})
})
$('.delete_data').click(function() {
$.ajax({
url: 'get_single.php',
data: { id: $(this).attr('data-id') },
method: 'POST',
dataType: 'json',
error: err => {
alert("An error occured while fetching single data")
},
success: function(resp) {
if (!!resp.status) {
$('#delete_modal').find('input[name="id"]').val(resp.data['id'])
$('#delete_modal').modal('show')
} else {
alert("An error occured while fetching single data")
}
}
})
})
},
buttons: [{
text: "Add New",
className: "btn btn-primary py-0",
action: function(e, dt, node, config) {
$('#add_modal').modal('show')
}
}],
"order": [
[1, "asc"]
],
initComplete: function(settings) {
$('.paginate_button').addClass('p-1')
}
});
}
//Load Data
load_data()
//Saving new Data
$('#new-author-frm').submit(function(e) {
e.preventDefault()
$('#add_modal button').attr('disabled', true)
$('#add_modal button[form="new-author-frm"]').text("saving ...")
$.ajax({
url: 'save_data.php',
data: $(this).serialize(),
method: 'POST',
dataType: "json",
error: err => {
alert("An error occured. Please chech the source code and try again")
},
success: function(resp) {
if (!!resp.status) {
if (resp.status == 'success') {
var _el = $('<div>')
_el.hide()
_el.addClass('alert alert-primary alert_msg')
_el.text("Data successfulle saved");
$('#new-author-frm').get(0).reset()
$('.modal').modal('hide')
$('#msg').append(_el)
_el.show('slow')
draw_data();
setTimeout(() => {
_el.hide('slow')
.remove()
}, 2500)
} else if (resp.status == 'success' && !!resp.msg) {
var _el = $('<div>')
_el.hide()
_el.addClass('alert alert-danger alert_msg form-group')
_el.text(resp.msg);
$('#new-author-frm').append(_el)
_el.show('slow')
} else {
alert("An error occured. Please chech the source code and try again")
}
} else {
alert("An error occurred. Please check the source code and try again")
}
$('#add_modal button').attr('disabled', false)
$('#add_modal button[form="new-author-frm"]').text("Save")
}
})
})
// Update Data
$('#edit-author-frm').submit(function(e) {
e.preventDefault()
$('#edit_modal button').attr('disabled', true)
$('#edit_modal button[form="edit-author-frm"]').text("saving ...")
$.ajax({
url: 'update_data.php',
data: $(this).serialize(),
method: 'POST',
dataType: "json",
error: err => {
alert("An error occured. Please chech the source code and try again")
},
success: function(resp) {
if (!!resp.status) {
if (resp.status == 'success') {
var _el = $('<div>')
_el.hide()
_el.addClass('alert alert-primary alert_msg')
_el.text("Data successfulle updated");
$('#edit-author-frm').get(0).reset()
$('.modal').modal('hide')
$('#msg').append(_el)
_el.show('slow')
draw_data();
setTimeout(() => {
_el.hide('slow')
.remove()
}, 2500)
} else if (resp.status == 'success' && !!resp.msg) {
var _el = $('<div>')
_el.hide()
_el.addClass('alert alert-danger alert_msg form-group')
_el.text(resp.msg);
$('#edit-author-frm').append(_el)
_el.show('slow')
} else {
alert("An error occured. Please chech the source code and try again")
}
} else {
alert("An error occurred. Please check the source code and try again")
}
$('#edit_modal button').attr('disabled', false)
$('#edit_modal button[form="edit-author-frm"]').text("Save")
}
})
})
// DELETE Data
$('#delete-author-frm').submit(function(e) {
e.preventDefault()
$('#delete_modal button').attr('disabled', true)
$('#delete_modal button[form="delete-author-frm"]').text("deleting data ...")
$.ajax({
url: 'delete_data.php',
data: $(this).serialize(),
method: 'POST',
dataType: "json",
error: err => {
alert("An error occured. Please chech the source code and try again")
},
success: function(resp) {
if (!!resp.status) {
if (resp.status == 'success') {
var _el = $('<div>')
_el.hide()
_el.addClass('alert alert-primary alert_msg')
_el.text("Data successfulle updated");
$('#delete-author-frm').get(0).reset()
$('.modal').modal('hide')
$('#msg').append(_el)
_el.show('slow')
draw_data();
setTimeout(() => {
_el.hide('slow')
.remove()
}, 2500)
} else if (resp.status == 'success' && !!resp.msg) {
var _el = $('<div>')
_el.hide()
_el.addClass('alert alert-danger alert_msg form-group')
_el.text(resp.msg);
$('#delete-author-frm').append(_el)
_el.show('slow')
} else {
alert("An error occured. Please chech the source code and try again")
}
} else {
alert("An error occurred. Please check the source code and try again")
}
$('#delete_modal button').attr('disabled', false)
$('#delete_modal button[form="delete-author-frm"]').text("YEs")
}
})
})
});