function constructSpecialTable(targetTableID) {
var currentElement = $('#'+targetTableID);
var parentHeight = currentElement.parent().height();
var convertHeader = false;
var convertFooter = false;
if (currentElement.find('thead').length) convertHeader = true;
if (currentElement.find('tfoot').length) convertFooter = true;
currentElement.addClass('spt_table');
if (convertHeader) {
var currentHeaderClone = currentElement.clone();
currentHeaderClone.find('tbody').remove();
currentHeaderClone.find('tfoot').remove();
}
if (convertFooter) {
var currentFooterClone = currentElement.clone();
currentFooterClone.find('tbody').remove();
currentFooterClone.find('thead').remove();
}
currentContainer = $('
');
currentElement.before(currentContainer);
currentElement.detach().appendTo(currentContainer.find('.spt_table_container_2'));
if (convertHeader) {
currentElement.find('thead th, thead td').each(function(index, element) {
var currentChild = $(element);
currentHeaderClone.find('thead th, thead td').eq(index).css('width', currentChild.width());
});
currentHeaderClone.addClass('spt_table_header');
currentHeaderClone.width(currentElement.width());
currentHeaderClone.removeAttr('id');
currentContainer.prepend(currentHeaderClone);
currentElement.find('thead').css('visibility', 'hidden');
currentElement.find('thead input, thead select').attr('disabled', true);
}
if (convertFooter) {
currentElement.find('tfoot th, tfoot td').each(function(index, element) {
var currentChild = $(element);
currentFooterClone.find('tfoot th, tfoot td').eq(index).css('width', currentChild.width());
});
currentFooterClone.addClass('spt_table_footer');
currentFooterClone.width(currentElement.width());
currentFooterClone.removeAttr('id');
currentContainer.append(currentFooterClone);
currentElement.find('tfoot').css('visibility', 'hidden');
currentElement.find('tfoot input, tfoot select').attr('disabled', true);
}
}
function updateSpecialTable(targetTableID) {
var currentElement = $('#'+targetTableID);
var convertHeader = false;
var convertFooter = false;
if (currentElement.find('thead').length) convertHeader = true;
if (currentElement.find('tfoot').length) convertFooter = true;
var currentContainer = currentElement.parentsUntil('.spt_table_container_0').parent();
var parentHeight = currentContainer.parent().height();
var currentHeaderClone = currentContainer.find('.spt_table_header');
var currentFooterClone = currentContainer.find('.spt_table_footer');
if (convertHeader) {
currentElement.find('thead th, thead td').each(function(index, element) {
var currentChild = $(element);
currentHeaderClone.find('thead th, thead td').eq(index).css('width', currentChild.width());
});
currentHeaderClone.width(currentElement.width());
}
if (convertFooter) {
currentElement.find('tfoot th, tfoot td').each(function(index, element) {
var currentChild = $(element);
currentFooterClone.find('tfoot th, tfoot td').eq(index).css('width', currentChild.width());
});
currentFooterClone.width(currentElement.width());
}
currentElement.parentsUntil('.spt_table_container_1').parent().css('height', parentHeight+'px');
}
var blockInterfaceCount = 0;
function blockInterface() {
blockInterfaceCount++;
if (blockInterfaceCount == 1) $('.blockui_overlay').show();
}
function unblockInterface() {
blockInterfaceCount--;
if (blockInterfaceCount == 0) $('.blockui_overlay').hide();
}
function displayModal(currentTitle, currentMessage) {
var messageContainer = $('#user_message_container');
messageContainer.html(currentMessage);
messageContainer.dialog({
closeOnEscape: true,
modal: true,
height: 'auto',
width: 500,
minWidth: 0,
minHeight: 0,
title: currentTitle,
buttons: {
'Close': function() {
$(this).dialog("close");
}
}
});
}
function displayMessageError(currentContainer, currentMessage) {
$('#'+currentContainer).html(''+currentMessage+'
');
$(window).scrollTop($('#'+currentContainer).offset().top);
}
function displayMessageSuccess(currentContainer, currentMessage) {
$('#'+currentContainer).html(''+currentMessage+'
');
$(window).scrollTop($('#'+currentContainer).offset().top);
}
function constructModalAlert(currentTitle, currentMessage) {
$('#document_modal').html(currentMessage);
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': {
'Close': function() {
$(this).dialog("close");
}
},
'open': function() {
$('.ui-dialog-titlebar-close').hide();
},
'closeOnEscape': false,
'title': currentTitle
});
}
function constructModalConfirm(currentTitle, currentMessage, buttonConfirm, buttonCancel, callbackFunctionConfirm, callbackFunctionCancel) {
$('#document_modal').html(currentMessage);
var buttonObject = {};
buttonObject[buttonConfirm] = function() {
if (typeof callbackFunctionConfirm != 'undefined') callbackFunctionConfirm();
$(this).dialog("close");
}
buttonObject[buttonCancel] = function() {
if (typeof callbackFunctionCancel != 'undefined') callbackFunctionCancel();
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
},
'closeOnEscape': false,
'title': currentTitle
});
}
function generateClockRequestSingle(clockUserID, clockRequest, clockUserManagement) {
if (clockRequest == 'start') var clockRequestType = 'Clock In';
else var clockRequestType = 'Clock Out';
$('#document_modal').html('\
\
\
');
$('#clock_user_date').datetimepicker({
dateFormat: 'yy-mm-dd'
});
var buttonObject = {};
buttonObject[clockRequestType] = function() {
var requestData = $('#clock_request_form').serialize();
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=store_clock_request_single',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').dialog('close');
displayModal(clockRequestType, 'Operation completed successfully.');
if (clockUserManagement == false) {
var triggerElement = $('#clock_request_trigger');
if (triggerElement.length) {
triggerElement.unbind('click');
if (clockRequest == 'start') {
triggerElement.val('Clock Out');
triggerElement.click(function() {
generateClockRequestSingle(clockUserID, 'stop', false);
});
}
else {
triggerElement.val('Clock In');
triggerElement.click(function() {
generateClockRequestSingle(clockUserID, 'start', false);
});
}
}
}
else generateUserManagement();
}
else displayMessageError('um_clock_message', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
buttonObject['Close'] = function() {
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
},
'closeOnEscape': false,
'title': clockRequestType
});
}
function toggleClockUserDate(clockType) {
if (clockType == 'late') $('#clock_user_date_container').show();
else $('#clock_user_date_container').hide();
}
var clockFilterComplete = false;
var clockFilterDateStart = false;
var clockFilterDateStop = false;
function generateClockManagement(userID) {
clockFilterComplete = false;
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=generate_clock_management',
data: {
id_user: userID
},
beforeSend: function() {
$('#um_user_edit_container').fadeOut(500);
blockInterface();
},
success: function(ajaxData) {
unblockInterface();
$('#um_user_edit_container').html(ajaxData);
$('#um_user_edit_container').fadeIn(500);
},
dataType: 'html'
});
}
function generateClockManagementTable() {
var requestData = $('#clock_filter_form').serialize();
$('#um_user_message').html('');
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=generate_clock_management_table',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
unblockInterface();
if (ajaxData.request_success) {
clockFilterComplete = true;
clockFilterDateStart = $('#clock_filter_date_start').val();
clockFilterDateStop = $('#clock_filter_date_stop').val();
$('#clock_management_container').html(ajaxData.response_html);
}
else displayMessageError('um_user_message', ajaxData.request_response.join(' '));
},
dataType: 'json'
});
}
function refreshClockManagementTable() {
if (clockFilterComplete) {
$('#clock_filter_date_start').val(clockFilterDateStart);
$('#clock_filter_date_stop').val(clockFilterDateStop);
generateClockManagementTable();
}
}
function generateClockRequestComplete(clockUserID) {
$('#document_modal').html('\
\
\
\
Clock In Date \
\
\
\
Clock Out Date \
\
\
\
Clock In Comment \
\
\
\
Clock Out Comment \
\
\
\
\
');
$('#clock_user_date_start').datetimepicker({
dateFormat: 'yy-mm-dd'
});
$('#clock_user_date_stop').datetimepicker({
dateFormat: 'yy-mm-dd'
});
var buttonObject = {};
buttonObject['Store Session'] = function() {
var requestData = $('#clock_request_form').serialize();
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=store_clock_request_complete',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').dialog('close');
refreshClockManagementTable();
displayModal('Add Clock Segment', 'Operation completed successfully.');
}
else displayMessageError('um_clock_message', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
buttonObject['Close'] = function() {
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
},
'closeOnEscape': false,
'title': 'Add Clock Segment'
});
}
function generateClockEdit(clockID) {
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=generate_clock_edit',
data: {
'id_clock': clockID
},
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').html('\
\
\
\
Clock In Date \
\
\
\
Clock Out Date \
\
\
\
Clock In Comment \
\
'+ajaxData.clock_comment_start+' \
\
Clock Out Comment \
\
'+ajaxData.clock_comment_stop+' \
\
\
');
var buttonObject = {};
buttonObject['Save Changes'] = function() {
var requestData = $('#clock_request_form').serialize();
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=edit_clock_request',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').dialog('close');
refreshClockManagementTable();
displayModal('Edit Clock Segment', 'Operation completed successfully.');
}
else displayMessageError('um_clock_message', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
buttonObject['Close'] = function() {
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
$('#clock_user_date_start').datetimepicker({
dateFormat: 'yy-mm-dd'
});
$('#clock_user_date_stop').datetimepicker({
dateFormat: 'yy-mm-dd'
});
},
'closeOnEscape': false,
'title': 'Edit Clock Segment'
});
}
else constructModalAlert('Error', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
function generateClockRemove(clockID) {
constructModalConfirm(
'Delete Clock Session',
'Are you sure you want to delete this session?',
'Ok',
'Cancel',
function() {
$.ajax({
type: 'post',
url: 'kb_request/kb_clock_management.php?request_action=remove_clock_request',
data: {
'id_clock': clockID
},
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
unblockInterface();
if (ajaxData.request_success) {
refreshClockManagementTable();
constructModalAlert('Success', 'Clock session removed successfully!');
}
else constructModalAlert('Error', ajaxData.request_response.join(' '));
},
dataType: 'json'
});
},
function() {}
);
}
function generateUserTimetable(timetableUserID) {
$('#document_modal').html('\
\
\
\
Timetable Month \
\
\
\
Timetable Type \
\
\
Single User \
Complete \
\
\
\
');
var buttonObject = {};
buttonObject['Display Timetable'] = function() {
var requestData = $('#timetable_request_form').serialize();
$.ajax({
type: 'post',
url: 'kb_request/kb_timetable.php?request_action=construct_user_timetable',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#um_user_edit_container').html(ajaxData.response_html);
$('#um_user_edit_container').fadeIn(500);
$('#document_modal').dialog('close');
}
else displayMessageError('um_timetable_message', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
buttonObject['Close'] = function() {
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
$('#timetable_month').monthpicker({
pattern: 'yyyy-mm'
});
},
'closeOnEscape': false,
'title': 'Display User Timetable'
});
}
var leaveFilterComplete = false;
var leaveFilterYear = false;
function generateLeaveManagement(userID) {
$.ajax({
type: 'post',
url: 'kb_request/kb_leave_management.php?request_action=generate_leave_management',
data: {
id_user: userID
},
beforeSend: function() {
$('#um_user_edit_container').fadeOut(500);
blockInterface();
},
success: function(ajaxData) {
unblockInterface();
$('#um_user_edit_container').html(ajaxData);
$('#um_user_edit_container').fadeIn(500);
},
dataType: 'html'
});
}
function generateLeaveManagementTable() {
var requestData = $('#leave_filter_form').serialize();
$('#um_user_message').html('');
$.ajax({
type: 'post',
url: 'kb_request/kb_leave_management.php?request_action=generate_leave_management_table',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
unblockInterface();
if (ajaxData.request_success) {
leaveFilterComplete = true;
leaveFilterYear = $('#leave_filter_year').val();
$('#leave_management_container').html(ajaxData.response_html);
}
else displayMessageError('um_user_message', ajaxData.request_response.join(' '));
},
dataType: 'json'
});
}
function refreshLeaveManagementTable() {
if (leaveFilterComplete) {
$('#leave_filter_year').val(leaveFilterYear);
generateLeaveManagementTable();
}
}
function generateLeaveRequest(leaveUserID) {
$('#document_modal').html('\
\
\
\
From \
\
\
\
Until \
\
\
\
Leave Type \
\
\
[PAID] Leave Without Pay \
[PAID] Maternity Leave \
[PAID] Others \
[PAID] Sick Leave \
[PAID] Vacation Leave \
[NOT PAID] Marriage Leave \
\
\
Comment \
\
\
\
\
');
var buttonObject = {};
buttonObject['Store Leave'] = function() {
var requestData = $('#leave_request_form').serialize();
$.ajax({
type: 'post',
url: 'kb_request/kb_leave_management.php?request_action=store_leave_request',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').dialog('close');
refreshLeaveManagementTable();
displayModal('Add Leave', 'Operation completed successfully.');
}
else displayMessageError('um_leave_message', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
buttonObject['Close'] = function() {
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
$('#leave_date_start').datepicker({
dateFormat: 'yy-mm-dd'
});
$('#leave_date_stop').datepicker({
dateFormat: 'yy-mm-dd'
});
},
'closeOnEscape': false,
'title': 'Add Leave'
});
}
function generateLeaveEdit(userLeaveID) {
$.ajax({
type: 'post',
url: 'kb_request/kb_leave_management.php?request_action=generate_leave_edit',
data: {
'id_user_leave': userLeaveID
},
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').html('\
\
\
\
From \
\
\
\
Until \
\
\
\
Leave Type \
\
\
Leave Without Pay \
Marriage Leave \
Maternity Leave \
Others \
Sick Leave \
Vacation Leave \
\
\
Comment \
\
'+ajaxData.leave_comment+' \
\
\
');
$('#id_leave').val(ajaxData.id_leave);
var buttonObject = {};
buttonObject['Save Changes'] = function() {
var requestData = $('#leave_request_form').serialize();
$.ajax({
type: 'post',
url: 'kb_request/kb_leave_management.php?request_action=edit_leave_request',
data: requestData,
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
if (ajaxData.request_success) {
$('#document_modal').dialog('close');
refreshLeaveManagementTable();
displayModal('Edit Leave', 'Operation completed successfully.');
}
else displayMessageError('um_leave_message', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
buttonObject['Close'] = function() {
$(this).dialog("close");
}
$('#document_modal').dialog({
'modal': true,
'minWidth': 0,
'minHeight': 0,
'buttons': buttonObject,
'open': function() {
$('.ui-dialog-titlebar-close').hide();
$('#leave_date_start').datepicker({
dateFormat: 'yy-mm-dd'
});
$('#leave_date_stop').datepicker({
dateFormat: 'yy-mm-dd'
});
},
'closeOnEscape': false,
'title': 'Add Leave'
});
}
else constructModalAlert('Error', ajaxData.request_response.join(' '));
unblockInterface();
},
dataType: 'json'
});
}
function generateLeaveRemove(userLeaveID) {
constructModalConfirm(
'Delete Leave',
'Are you sure you want to delete this?',
'Ok',
'Cancel',
function() {
$.ajax({
type: 'post',
url: 'kb_request/kb_leave_management.php?request_action=remove_leave_request',
data: {
'id_user_leave': userLeaveID
},
beforeSend: function() {
blockInterface();
},
success: function(ajaxData) {
unblockInterface();
if (ajaxData.request_success) {
refreshLeaveManagementTable();
constructModalAlert('Success', 'Leave removed successfully!');
}
else constructModalAlert('Error', ajaxData.request_response.join(' '));
},
dataType: 'json'
});
},
function() {}
);
}