Untitled
unknown
plain_text
9 months ago
23 kB
6
Indexable
<script type="text/javascript" src="<?php echo base_url("assets/js/tabulator.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/moment.min.js"); ?>"></script>
<link href="<?php echo base_url("assets/css/tabulator_bootstrap.min.css"); ?>" rel="stylesheet" type="text/css" />
<link href="<?php echo base_url("assets/css/sipnewui.css"); ?>" rel="stylesheet" type="text/css" />
<style>
.tabulator-menu {
overflow-y: scroll;
max-height: 300px;
}
.tabulator-header-filter input {
background-color: #f7f7f7;
padding: 2px 5px !important;
color: #6b6363 !important;
border: 0px;
}
.tabulator-headers .tabulator-header-filter input::placeholder {
margin-left: 0px !important;
background-color: #f9f9f9 !important;
border: 0px solid #ddd;
color: #bbb !important;
width: 100%;
text-align: center;
}
.menu-header_v2 #tabulator_grid {
height: 75vh !important;
}
</style>
<div class="page-breadcrumb new-pagebread">
<ol class="breadcrumb">
<!--<li><a href="<?php // echo site_url("dashboard");
?>"><?php //echo _t("Dashboard", $translatedData);
?></a></li>-->
<li class="breadcrumb-item"><a href="<?php echo site_url("performance-cycle"); ?>"><?php echo _t("Comp Plans", $translatedData); ?></a></li>
<li class="breadcrumb-item"><a href="<?php echo site_url("sip-rule-list/" . $rule_dtls['performance_cycle_id']); ?>"><?php echo _t("Incentive Rule List ", $translatedData, [], ['%rule_name' => $rule_dtls['sip_rule_name']]); ?></a></li>
<li class="breadcrumb-item"><a href="<?php echo site_url("sip-rule-process/" . $rule_dtls['performance_cycle_id'] . "/" . $rule_dtls['id']); ?>"><?php echo _t("Process Incentive", $translatedData); ?></a></li>
<li class="breadcrumb-item active"><?php echo _t("Employees Incentive List", $translatedData); ?></li>
</ol>
<div class="action-item-btns">
<?php if (helper_have_rights(CV_LETTER_DOCS_STORAGE, CV_VIEW_RIGHT_NAME) && $rule_dtls['template_id'] && $employee_incentive_cnt && $generate_bulk_pdf) { ?>
<a data-frequencyid="<?php echo $frequency_id; ?>" data-ruleid="<?php echo $rule_dtls["id"]; ?>" data-toggle='tooltip' data-original-title='Generate bulk scorecard in PDF format' data-placement='bottom' class="generate_bulk_pdf breadbtn"> <i class="fa-regular fa-file-pdf" aria-hidden="true"></i> </a>
<?php if($this->session->userdata('compport_drive_module')){ ?>
<a href="<?php echo site_url('salary-review-letter') ?>" data-toggle='tooltip' data-original-title="<?php echo _t("Document Storage", $translatedData); ?>" data-placement='bottom' class="breadbtn"> <i class="fa-regular fa-file-text" aria-hidden="true"></i> </a>
<?php } ?>
<?php } ?>
<?php if ($rule_dtls['config']['integration_outbond'] && $employee_incentive_cnt && helper_have_rights(CV_LETTER_DOCS_STORAGE, CV_INSERT_RIGHT_NAME)) { ?>
<a style="padding-right: 8px !important;" data-frequencyid="<?php echo $frequency_id; ?>" data-ruleid="<?php echo $rule_dtls["id"]; ?>" data-toggle='tooltip' data-original-title='Publish the data to outbound integration tasks queue' data-placement='top' class="integration_outbond breadbtn"> <i class="fas fa-file-upload" aria-hidden="true"></i> </a>
<?php } ?>
<?php if ($employee_incentive_cnt && $rule_dtls['rule_type'] != 'type_2' && $is_open_frm_hr_side) { ?>
<a style="padding-right: 8px !important;" data-frequencyid="<?php echo $frequency_id; ?>" data-ruleid="<?php echo $rule_dtls["id"]; ?>" data-toggle='tooltip' data-original-title='Download Incentive Report' data-placement='top' class="final-process breadbtn"><img alt='filters' src="<?php echo base_url('assets/img/svg/download-new.svg') ?>"> </a>
<?php if (helper_have_rights(CV_SIP_RELEASE_PG_ID, CV_INSERT_RIGHT_NAME) || $rule_dtls["crdeatedby"] == $this->session->userdata("userid_ses")) { ?>
<a data-frequencyid="<?php echo $frequency_id; ?>" data-ruleid="<?php echo $rule_dtls["id"]; ?>" data-toggle='tooltip' data-original-title='Download Full Report' data-placement='top' class="download-final-process-data breadbtn"><img alt='filters' src="<?php echo base_url('assets/img/svg/download-new.svg') ?>"> </a>
<?php } ?>
<?php } ?>
</div>
</div>
<div id="main-wrapper" class="">
<div class="col-md-12">
<div class="mailbox-content white-new-bg" id="newui-formater" style="margin-top:10px;">
<?php $tbl_exceptional_cell_type = "";
if (helper_have_rights(CV_SIP_RELEASE_PG_ID, CV_INSERT_RIGHT_NAME)) {
$tbl_exceptional_cell_type = "input";
}
echo $this->session->flashdata('message');
echo $msg; ?>
<div class="form-horizontal">
<div class=" table-scroll11">
<div id="tabulator_grid" style="height: 600px;" class="ag-theme-alpine"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
// Enable Bootstrap tooltips for elements with data-toggle="tooltip"
$('[data-toggle="tooltip"]').tooltip();
});
//for final rule process and sheet-download
$(document).on('click', '.final-process', function(e) {
var rule_id = $(this).data('ruleid');
var frequency_id = $(this).data('frequencyid'); //use for update
if (!rule_id || !frequency_id) {
custom_alert_popup("There seem to be some error.");
return;
}
document.location.href = BASE_URL + 'sip/download_sip_incentives/' + rule_id + '/' + frequency_id;
return;
});
$(document).on('click', '.download-final-process-data', function(e) {
var rule_id = $(this).data('ruleid');
var frequency_id = $(this).data('frequencyid');
if (!rule_id || !frequency_id) {
custom_alert_popup("There seem to be some error.");
return;
}
document.location.href = BASE_URL + 'sip/sip_download_final_process_data/' + rule_id + '/' + frequency_id;
return;
});
//for final rule process and sheet-download
</script>
<script type="text/javascript" charset="utf-8">
const rule_id = <?php echo $rule_dtls["id"]; ?>;
const frequency_id = <?php echo $frequency_id; ?>; //use for update
Tabulator.prototype.extendModule("format", "formatters", {
bold: function(cell, formatterParams) {
return "<strong>" + cell.getValue() + "</strong>"; //make the contents of the cell bold
},
uppercase: function(cell, formatterParams) {
return cell.getValue().toUpperCase(); //make the contents of the cell uppercase
},
custom_format: function(cell, formatterParams) {
var value = cell.getValue();
//console.log(cell.getField(), value,typeof value);
if (typeof value == 'undefined' || typeof value == 'object') return '';
var format = formatterParams.format || 'auto';
var format_ary = format.split('~');
if (typeof value != 'string') {
cell.getElement().style.textAlign = "right";
var formatter = new Intl.NumberFormat('<?php echo $this->session->userdata('locale'); ?>');
//var format_ary = format.split('~');
var max_decimals = format_ary[1] || 0;
value = Number(Math.round(value + 'e' + max_decimals) + 'e-' + max_decimals).toFixed(max_decimals);
switch (format_ary[0].toLowerCase()) {
case 'number_format':
return formatter.format(value);
break;
case 'currency_format':
return "<currency>" + formatter.format(value) + "</currency>";
break;
case 'percentx100':
value = formatter.format(value * 100);
return value + '% ';
break;
case 'percent':
value = formatter.format(value);
return value + '% ';
break;
default:
return value;
}
} else if (value != '') {
if (format_ary[0] == 'currency_format' || format_ary[0] == 'number_format' || format_ary[0] == 'percentx100' || format_ary[0] == 'percent') {
cell.getElement().style.textAlign = "right";
}
switch (format.toLowerCase()) {
case 'date_format':
return value;
case 'capital': //currency
return value[0].toUpperCase() + value.slice(1);
break;
case 'upper':
return value.toUpperCase();
break;
case 'lower':
return value.toLowerCase();
break;
case 'bold':
return "<strong>" + value + "</strong>"; //make the contents of the cell bold
break;
default:
return value;
break;
}
}
return value;
},
});
//define column header menu as column visibility toggle
var headerMenu = function() {
var menu = [];
var columns = this.getColumns();
for (let column of columns) {
if (column.getField() == 'id' || column.getField() == 'name') continue;
//create checkbox element using font awesome icons
let icon = document.createElement("i");
icon.classList.add("fa");
icon.classList.add(column.isVisible() ? "fa-check-square" : "fa-square");
//build label
let label = document.createElement("span");
let title = document.createElement("span");
title.textContent = " " + column.getDefinition().title;
label.appendChild(icon);
label.appendChild(title);
//create menu item
menu.push({
label: label,
action: function(e) {
//prevent menu closing
e.stopPropagation();
//toggle current column visibility
column.toggle();
//change menu item icon
if (column.isVisible()) {
icon.classList.remove("fa-square");
icon.classList.add("fa-check-square");
} else {
icon.classList.remove("fa-check-square");
icon.classList.add("fa-square");
}
}
});
}
return menu;
};
//define print formatter
function nameFormatter(cell, formatterParams, onRendered) {
//cell - the cell component
//formatterParams - parameters set for the column
//onRendered - function to call when the formatter has been rendered
// console.log(cell);
var row = cell.getData();
//var emp_url = BASE_URL + "admin-view-sip-incentive/" + row.rule_id + "/" + row.fid + "/" + row.user_id;
var comment = `<span data-assignment-key="${row.assignment_key}" data-user-id="${row.user_id}" class='badge bg-blue float-end comment-history-structure-data c-badge'><i class='kpi-custom fa-regular fa-comment' aria-hidden='true'></i></span>`;
var emp_url = "<a style='float:right;' data-toggle='tooltip' data-original-title='View Details' data-placement='bottom' class='badge pull-right bg-blue c-badge' href='" + BASE_URL + "admin-view-sip-incentive/" + rule_id + "/" + frequency_id + "/" + row.user_id + "/" + row.assignment_id + "'><i class='fa-regular fa-eye kpi-inc-list' aria-hidden='true'></i></a></span>";
var emp_scorecard_pdf = '';
if (emp_url && <?php echo $rule_dtls['template_id']; ?>) {
var rule_freq_id = rule_id + "###" + frequency_id + "###" + row.assignment_id;
var rule_freq_user_id = window.btoa(`${rule_freq_id}/${row.user_id}`);
var emp_scorecard_pdf_url = '<?php echo $emp_score_card_url; ?>' + `/${rule_freq_user_id}`;
emp_scorecard_pdf = `<a target="_blank" href='${emp_scorecard_pdf_url}' data-original-title='View scorecard in pdf format' class='badge bg-blue pull-right scorecard-pdf c-badge'><i class='kpi-custom fa-regular fa-file-pdf' aria-hidden='true'></i></a>`;
}
var assignment_id = row.assignment_id > 0 ? ` [${row.assignment_id}]` : '';
return cell.getValue() + assignment_id + emp_url + emp_scorecard_pdf + comment;
}
var nameMutator = function(value, data, type, params, component) {
//value - original value of the cell
//data - the data for the row
//type - the type of mutation occurring (data|edit)
//params - the mutatorParams object from the column definition
//component - when the "type" argument is "edit", this contains the cell component for the edited cell, otherwise it is the column component for the column
return value > mutatorParams.threshold; //return the new value for the cell data.
}
var cellClick = function(e, cell) {
cell.getRow().toggleSelect();
}
var rowClick = function(e, row) {
row.toggleSelect();
}
var groupHeader = function(value, count, data, group) {
//value - the value all members of this group share
//count - the number of rows in this group
//data - an array of all the row data objects in this group
//group - the group component for the group
//console.log(data[0].approval_status);
// console.log(data);
var label = document.createElement("span");
var checkbox = document.createElement("input");
checkbox.type = 'checkbox';
//console.log()
//checkbox.className = 'form-check-input';
checkbox.addEventListener("change", function(e) {
//console.log(this.checked);
group.getRows().forEach(row => {
// if (row.getData().is_checked == 1) {
if (this.checked)
row.select();
else
row.deselect();
//}
});
});
var approval_status = ''; //data[0].currency;
var cnt_lbl = "<div class='badge bg-blue' style='margin-left:10px;'>" + count + " records</div>";
var dn_btn = ""; //"<div class='badge bg-blue download-structure-data' style='margin-left:10px; padding:3.5px 10px;'><i class='fa fa-download kpi-custom' aria-hidden='true'></i></div> ";
var up_btn = "";
var value = "";
label.innerHTML = "<span class='wf_group' data-sip-role-id='" + approval_status + "'>" + value + cnt_lbl + dn_btn + up_btn + "</span>";
label.prepend(checkbox);
return label;
}
var selectboxFormatter = function(cell, formatterParams, onRendered) {
var _this64 = this;
var checkbox = document.createElement("input");
checkbox.type = 'checkbox';
if (this.table.modExists("selectRow", true)) {
checkbox.addEventListener("click", function(e) {
e.stopPropagation();
});
if (typeof cell.getRow == 'function') {
var row = cell.getRow();
checkbox.addEventListener("change", function(e) {
row.toggleSelect();
});
checkbox.checked = row.isSelected && row.isSelected();
this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
//console.log(row.getData().is_checked);
/*if (row.getData().is_checked == 1) { //row.getData().approval_status == sip_role_id || row.getData().approval_status_name == sip_role_name ||
checkbox.checked = row.isSelected && row.isSelected();
this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
} else {
checkbox.checked = true;
checkbox.disabled = true;
//checkbox='';
}*/
} else {
return '';
checkbox.addEventListener("change", function(e) {
if (_this64.table.modules.selectRow.selectedRows.length) {
_this64.table.deselectRow();
} else {
_this64.table.getRows().forEach(row => {
if (row.getData().approval_status == sip_role_id || row.getData().approval_status_name == sip_role_name) {
row.select();
}
});
//_this64.table.selectRow(formatterParams.rowRange);
}
});
this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
}
}
return checkbox;
}
// specify the columns
var columnDefs = <?php echo $columnDefs; ?>;
columnDefs.forEach(element => {
element.headerFilter = true;
//element.formatterParams:{format:6}
//element.headerVertical=true;//"input";
element.maxWidth = 300;
switch (element.field) {
/*case 'id':
element.formatter = "rowSelection";
element.titleFormatter = "rowSelection";
//element.formatter = selectboxFormatter;
//element.titleFormatter = selectboxFormatter;
element.hozAlign = "center";
element.cellClick = cellClick;
element.headerFilter = false;
//element.resizable = false;
element.headerSort = false;
element.frozen = true;
//element.headerMenu = headerMenu;
element.editor = '';
//element.rowHandle = true;
//element.minWidth = 50;
//{rowHandle:true, formatter:"handle", headerSort:false, frozen:true, width:30, minWidth:30},
//element.width = 50;
break;*/
case 'id':
element.formatter = selectboxFormatter;
element.titleFormatter = selectboxFormatter;
element.hozAlign = "center";
element.cellClick = cellClick;
element.headerFilter = false;
//element.resizable = false;
element.headerSort = false;
element.frozen = true;
//element.headerMenu = headerMenu;
element.editor = '';
break;
case 'name':
// element.headerContextMenu = headerContextMenu;
element.width = 350;
element.maxWidth = 400;
element.frozen = true;
element.formatter = nameFormatter;
element.headerMenu = headerMenu;
//formatter:"rowSelection", :, :, headerSort:false, cellClick:
//element.mutator =customMutator;
// element.checkboxSelection = checkboxSelection;
// element.headerCheckboxSelection = headerCheckboxSelection;
// element.resizable = false;
break;
case 'exception_incentive':
case 'exception_reason':
element.editor = "<?php echo $tbl_exceptional_cell_type; ?>";
break;
default:
break;
}
if (element.editor == '') {
delete element.editor;
}
if (element.sorter == 'dateSorter') {
element.sorter = dateSorter
}
});
function dateSorter(a, b, aRow, bRow, column, dir, sorterParams) {
a = a ? Math.round(new Date(a)) / 1000 : 0;
b = b ? Math.round(new Date(b)) / 1000 : 0;
return a - b;
}
// console.log(columnDefs);
var table = new Tabulator("#tabulator_grid", {
height: '68vh', // set height of table (in CSS or here), this enables the Virtual DOM and improves render speed dramatically (can be any valid css height value)
//data:tabledata, //assign data to table
ajaxURL: "<?php echo $emp_data_json_url; ?>",
ajaxProgressiveLoad: "load", // enable progressive loading
ajaxProgressiveLoadDelay: 200, //wait 200 milliseconds between each request
/*
ajaxParams: {
}, //set any standard parameters to pass with the request
*/
ajaxLoader: false,
//pagination:"local", //enable remote pagination
paginationInitialPage: 1, //optional parameter to set the initial page to load
paginationSize: 5000,
// ajaxSorting:true, //send sort data to the server instead of processing locally
// ajaxFiltering:true,
//layout:"fitColumns", //fit columns to width of table (optional)
columns: columnDefs,
// autoColumns:true,
movableColumns: true,
textDirection: 'auto',
headerFilterPlaceholder: "filter...", //set column header placeholder text
resizableRows: true,
// groupBy:"currency",
movableRows: false,
/*
persistence: {
sort: true,
filter: true,
columns: true,
},
persistenceID: "tabular_sip_emp_inc_list2",*/
/*rowClick: function(e, row) { //trigger an alert message when the row is clicked
// alert("Row " + row.getData().id + " Clicked!!!!");
},
ajaxError: function(error) {
// alert("An error occurred");
},*/
groupBy: ['status'],
groupToggleElement: "arrow",
groupHeader: groupHeader,
cellEdited: function(cell) {
var row = cell.getRow();
var param_arr = {
pk_id: row.getData().id,
key_nm: cell.getField(),
key_new_val: cell.getValue(),
key_old_val: cell.getOldValue()
};
if (cell.getValue() != cell.getOldValue() && $.inArray(cell.getField(), ["exception_incentive", "exception_reason"]) !== -1) {
upd_emp_sip_exceptional_data(param_arr);
}
},
});
function upd_emp_sip_exceptional_data(param_arr) {
var csrf_val = $('input[name="<?php echo $this->security->get_csrf_token_name(); ?>"]').val();
var csrf_name = "<?php echo $this->security->get_csrf_token_name(); ?>";
var frmData = new FormData();
var structure_id = "<?php echo $structure_id; ?>";
frmData.append(csrf_name, csrf_val);
frmData.append('rule_id', rule_id);
frmData.append('frequency_id', frequency_id);
frmData.append('structure_id', structure_id);
frmData.append('pk_id', param_arr.pk_id);
frmData.append('key_nm', param_arr.key_nm);
frmData.append('key_old_val', param_arr.key_old_val);
frmData.append('key_new_val', param_arr.key_new_val);
$.ajax({
type: "post",
url: BASE_URL + 'sip/upd_emp_sip_exceptional_data',
processData: false,
contentType: false,
data: frmData,
beforeSend: function() {
showLoader();
},
error: function(jqXHR, textStatus) {
hideLoader();
},
complete: function() {
hideLoader();
set_csrf_field();
},
success: function(result) {
try {
var parseResult = JSON.parse(result);
if (parseResult.status == true) {
$.each(parseResult.data, function(index, value) {
table.updateRow(index, value);
});
buildToast('success', parseResult.msg);
} else {
buildToast('error', parseResult.msg);
}
} catch (e) {
//console.error(e);
}
}
});
}
$(document).on('click', '.generate_bulk_pdf', function() {
var requestUrl = '<?php echo $generate_bulk_pdf_url; ?>';
PerformOperation(requestUrl)
});
$(document).on('click', '.integration_outbond', function() {
var requestUrl = '<?php echo $integration_outbond_url; ?>';
PerformOperation(requestUrl)
});
function PerformOperation(requestUrl) {
var selectedRows = table.getSelectedRows();
if (!selectedRows.length) {
buildToast('error', "<?php echo _t("No records selected.", $translatedData); ?>");
return;
}
custom_confirm_popup_callback('<?php echo CV_CONFIRMATION_MESSAGE; ?>', function(result) {
if (result) {
var selectedRows = table.getSelectedRows();
var user_ids = [];
var assignment_keys = [];
selectedRows.forEach(function(row) {
user_ids.push(row.getData().user_id);
assignment_keys.push(row.getData().assignment_key);
});
user_ids = Array.from(new Set(user_ids)); //make it unique
assignment_keys = Array.from(new Set(assignment_keys));
if (!assignment_keys.length) {
buildToast('error', "<?php echo _t("No records selected.", $translatedData); ?>");
return;
}
if (!user_ids.length) {
buildToast('error', "<?php echo _t("No records selected.", $translatedData); ?>");
return;
}
var csrf_val = $('input[name="<?php echo $this->security->get_csrf_token_name(); ?>"]').val();
var rule_id = <?php echo $rule_dtls['id']; ?>;
var frequency_id = <?php echo $frequency_id; ?>; //use for update
var template_id = $('#TempateID_' + rule_id).val();
$("#loading").show();
$.ajax({
type: "POST",
url: requestUrl,
data: {
assignment_keys: window.btoa(JSON.stringify(assignment_keys)),
template_id: template_id,
rule_id: rule_id,
frequency_id: frequency_id,
emp: user_ids,
'<?php echo $this->security->get_csrf_token_name(); ?>': csrf_val
},
success: function(data) {
$("#loading").css('display', 'none');
},
beforeSend: function(data) {
$("#loading").show();
},
complete: function(data) {
//console.log(data);
//set_csrf_field();
location.reload(true);
}
});
}
});
}
</script>
<?php $this->load->view('sip/sip_emp_comment_popup', ['structure_id' => $structure_id, 'rule_id' => $rule_dtls["id"], 'fid' => $fid, 'comment_type' => 'sip_approval_workflow']); ?>Editor is loading...
Leave a Comment