File: /home/cafsindia/uds.cafsinfotech.in/application/views/report/manage.php
<?php
$this->load->view("partial/header");
$access_data = $this->session->userdata('access_data');
$access_add = (int)$access_data[$controller_name]['access_add'];
$access_update = (int)$access_data[$controller_name]['access_update'];
$access_delete = (int)$access_data[$controller_name]['access_delete'];
$access_search = (int)$access_data[$controller_name]['access_search'];
$access_export = (int)$access_data[$controller_name]['access_export'];
$access_import = (int)$access_data[$controller_name]['access_import'];
$page_name = ucwords(str_replace("_"," ",$controller_name));
$prime_id = "prime_".$controller_name."_id";
$search_url = site_url($controller_name ."/search");
$view_url = site_url($controller_name ."/view/");
$import_url = site_url($controller_name ."/import/");
$table_col_count = 1;
?>
<link href="dist/daterangepicker/daterangepicker.min.css" rel="stylesheet" type="text/css" />
<div class='row title_content'>
<div class='col-md-4 col-xs-4'>
<h1 class='page_txt'><?php echo strtoupper($report_name) ?></h1>
</div>
<div class='col-md-8 col-xs-8'>
<ol class="breadcrumb">
<?php
$quick_link = explode(",",$link_info[0]->quicklink ?? "");
$link_li_line = "";
foreach($quick_link as $link){
if($link){
$url = site_url("$link");
$name = ucwords(str_replace("_"," ",$link));
$link_li_line .= "<li><a href='$url'> <i class='fa fa-angle-double-right fa-lg' aria-hidden='true'></i> $name</a></li>";
}
}
if($link_li_line){
echo "<li class='dropdown'>
<a class='btn btn-xs btn-primary dropdown-toggle' type='button' id='dropdownMenu2' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
<i class='fa fa-plus-circle' aria-hidden='true'></i> Quick Links
</a>
<ul class='dropdown-menu dropdown-menu-left' aria-labelledby='dropdownMenu2'>
$link_li_line
</ul>
</li>";
}
?>
<li><a href="<?php echo site_url()?>#Home">Home</a></li>
<li><a href="<?php echo site_url($controller_name)?>#<?php echo "$controller_name";?>"><?php echo "$page_name";?></a></li>
<li class="active">List</li>
</ol>
</div>
</div>
<div id="toolbar" class="form-inline" style="display: flex;">
<div class="form-group" style='width:12% !important;'>
<?php if((int)$date_filter === 1){ ?>
<div class="" >
<label><?php echo "$label_view_name";?><label>
<input name="daterangepicker" id="Date" class="daterangepicker-field form-control input-sm" data-bind='daterangepicker: dateRange, daterangepickerOptions: { maxDate: moment()}'></input>
</div>
<?php } ?>
</div>
<?php
if($access_search === 1){
?>
<div id="search_filter_div" class='search_filter' style="display:none;">
<div style="max-height:250px;overflow: auto;" id="filter_data">
</div>
<div class="row" style="margin:0px;margin-top:15px;">
<div class="col-md-6" style='text-align:left;'>
<a class="btn btn-xs btn-danger" id="clear_search"> Clear All</a>
</div>
<!-- <div class="col-md-4" style='text-align:left;'>
<a class="btn btn-xs btn-warning" id="save_filter">Save Filter</a>
</div> -->
<div class="col-md-6" style='text-align:right;'>
<a class="btn btn-xs btn-primary" id="search_submit" style="display: unset;"> Submit </a>
<a class="btn btn-xs btn-primary" id="sort_search_close" style="margin-left: 5px;display: unset;"> Close </a>
</div>
</div>
</div>
<?php
}
?>
<div class='form-inline col-md-12'>
<!-- <div class='form-group'>
<?php
//echo form_dropdown(array( 'name' => 'pre_filter', ' id' => 'pre_filter', 'class' => 'form-control input-sm select2'), $filter_info);
?>
</div> -->
<div class='form-group'>
<button id='report_submit' class='btn btn-primary btn-sm'> <i class='fa fa-send-o' aria-hidden='true'></i> View Report </button>
</div>
</div>
</div>
<div id="table_holder">
<table id="table"></table>
</div>
<script src="dist/daterangepicker/knockout.js" type="text/javascript"></script>
<script src="dist/daterangepicker/daterangepicker.min.js" type="text/javascript"></script>
<script src="dist/excel_xlsx.full.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function (){
var table_head = "";
var pick_list = "";
var start_date = "<?php echo date('Y-m-d',strtotime('first day of this month')); ?>";
var end_date = "<?php echo date('Y-m-d',strtotime('last day of this month')); ?>";
$(".monthpicker").datetimepicker({format: 'MM-YYYY'});
$(".daterangepicker-field").daterangepicker({
locale: { inputFormat: 'DD/MM/YYYY' },
forceUpdate: true,
startDate:start_date,
endDate:end_date,
callback: function(startDate, endDate, period){
start_date = moment(startDate,'YYYY-MM-DD').format('DD-MM-YYYY');
end_date = moment(endDate,'YYYY-MM-DD').format('DD-MM-YYYY');
var title = moment(startDate,'YYYY-MM-DD').format('DD/MM/YYYY') + ' – ' + moment(endDate,'YYYY-MM-DD').format('DD/MM/YYYY');
$(this).val(title);
}
});
//Submit to get the data
$("#report_submit").click(function(){
$("select[name='filter_cond[]']").val('');
$("input[name='filter_val[]'],select[name='filter_val[]']").val('');
var report_id = '<?php echo $form_id; ?>';
if(report_id){
$("#report_submit").html("<i class='fa fa-spinner fa-spin'></i> Processing...");
$('#report_submit').attr('disabled','disabled');
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {report_id:report_id};
var encData = encrypt(encKey,data);
$.ajax({
type: "POST",
url: '<?php echo site_url($controller_name . "/get_page_info"); ?>',
data:encData,
contentType: 'text/plain',
success: function(response){
var rslt = JSON.parse(response);
if(rslt.success){
table_head = rslt.table_head;
pick_list = rslt.pick_list;
table_draw(rslt.table_head,rslt.pick_list,start_date,end_date);
$('#filter_data').html(rslt.filter_table);
$('#report_submit').attr('disabled',false);
$("#report_submit").html("<i class='fa fa-send-o' aria-hidden='true'></i> View Report");
}else{
toastr.error(rslt.message);
}
}
});
}else{
toastr.error("Invalid Request..");
}
});
$("#search_filter_div").hide();
$("#search_submit").click(function(){
$("#search_filter_div").toggle();
table_draw(table_head,pick_list,start_date,end_date);
});
$(document).on("click","#search_filter",function(){
$("#search_filter_div").toggle();
});
$(document).on('click',"#sort_search_close", function (e) {
// $(".datalist").val('');
// $(".hidden_input").val('');
$("#search_filter_div").toggle();
});
$(document).on("click","#clear_search",function(){
$("select[name='filter_cond[]']").val('');
$("#pre_filter").val('');
$("input[name='filter_val[]'],select[name='filter_val[]']").val('');
$('option').attr('selected', false);
$("#search_filter_div").toggle();
$('.select2').select2({
placeholder: '---- Select ----',
});
table_draw(table_head,pick_list,start_date,end_date);
});
//$(function (){$(".datepicker").datetimepicker({format: 'DD-MM-YYYY',});});
$(".datepicker_time").datetimepicker({format: 'DD-MM-YYYY HH:mm:ss',});
$('.select2').select2({placeholder: '---- Select ----',});
//Datalist selected value fetch
$(document).on('change', '.datalist', function(){
var selected_value = $(this).val();
var list = $(this).attr('list');
var attr_id = list.replace('list_', '');
var data_value = $('#'+list+' option[value=\"' + selected_value + '\"]').attr('data-value');
if(data_value){
$('#'+attr_id).val(data_value);
}else{
$('#'+attr_id).val('');
}
});
});
function view_form_data(action,title,control,form_id){
$('.modal').modal({backdrop: 'static', keyboard: false});
$('.modal-body').html('<div style="text-align: center;padding:50px;color:#4b6fa2;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Please wait processing....</div>');
$.ajax({
type: 'POST',
url: control,
dataType: "html",
success: function (response){
$('.modal-title').html('<h4 class="modal-title">'+title+'</h4>');
$('.modal-body').html(response);
var btn_info = '<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>';
if(action === "Submit"){
btn_info += '<button class="btn btn-primary" id="submit" style="margin-left: 15px;">Submit</button>';
}
btn_info = '<div class="col-md-12" style="background-color:#FFFFFF;padding: 10px 20px; text-align: right; border-top: 1px solid #e5e5e5;">'+btn_info+'</div>';
$('#'+form_id).append(btn_info);
}
});
}
//Json to excel BSK- As dis wit GS 29sep2022
function JSONToXLSXConvertor(JSONData, ReportTitle, ShowLabel){
var myFile = ReportTitle+".xlsx";
var myWorkSheet = XLSX.utils.json_to_sheet(JSONData);
var myWorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "myWorkSheet");
XLSX.writeFile(myWorkBook, myFile);
$('.dataTables_processing').hide();
}
function export_to_excel(start_date,end_date){
var export_type = "<?php echo $export_type?>";
$.confirm({
title: 'Export to Excel',
content: '' +
'<form action="" class="formName">' +
'<div class="form-group">' +
'<label>Excel Name</label>' +
'<input type="text" placeholder="Please Enter Excel Name" name="excel_name" class="name form-control" required />' +
'</div>' +
'</form>',
buttons: {
formSubmit: {
text: 'Export',
btnClass: 'btn-blue',
action: function () {
var excel_name = this.$content.find('.name').val();
if(!excel_name){
$.alert('provide a valid Excel name');
return false;
}
var form_id = '<?php echo $form_id; ?>';
var search = $('input[type="search"]').val();
var filter_tbl_val = $("input[name='filter_tbl_val[]']").map(function(){return $(this).val();}).get();
var filter_label = $("input[name='filter_label[]']").map(function(){return $(this).val();}).get();
var field_type = $("input[name='field_type[]']").map(function(){return $(this).val();}).get();
var filter_cond = $("select[name='filter_cond[]']").map(function(){return $(this).val();}).get();
var filter_val = $("input[name='filter_val[]'],select[name='filter_val[]']").map(function(){
if($(this).val()){
var return_data = ($(this).val()).toString();;
return return_data;
}else{
return '';
}
}).get();
var i = 0;
var filter_count = [];
$.each($("input[name='filter_val[]'],select[name='filter_val[]']"), function(){
var filter_value = filter_val[i];
var filter_cond_val = filter_cond[i];
if(filter_value === "" && filter_cond_val === ""){
}else
if(filter_value && filter_cond_val){
}else{
filter_count.push(i);
}
i++;
});
var filter_count_val = filter_count.length;
if(parseInt(filter_count_val) === 0){
$('.dataTables_processing').html('<span style="color:#CC3366;font-weight:bold;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Processing the Excel Export.. Please Wait... </span>');
$('.dataTables_processing').show();
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {excel_name:excel_name,form_id:form_id,filter_label:filter_label,field_type:field_type,filter_cond:filter_cond,filter_val:filter_val,start_date:start_date,end_date:end_date,filter_tbl_val:filter_tbl_val};
var encData = encrypt(encKey,data);
$.ajax({
type: "POST",
url: '<?php echo site_url($controller_name . "/export_to_excel"); ?>',
data:encData,
contentType: 'text/plain',
success: function(response){
var rslt = JSON.parse(response);
if(rslt.success){
var file_name = '<?php echo base_url(); ?>/report_excel/'+rslt.file_name; // Get Filename
//Download the Excel file from the given path
fetch(file_name).then(resp => resp.blob()).then(blob => {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
// the filename you want
a.download = excel_name+'.xlsx';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
$('.dataTables_processing').hide();
toastr.success(rslt.message); // or you know, something with better UX...
}).catch(() => {
toastr.error('Please try Aftersometime..!');
});
}
}
});
}else{
/*$('#save_filter').attr('disabled',false);
$("#save_filter").html("Save Filter");*/
toastr.error('Filter condition and value is not equal');
}
}
},
cancel: function(){
$('.export_btn').attr('disabled',false);
$(".export_btn").html("MS EXCEL");
},
},
onContentReady: function () {
this.$content.find('.name').val($('#excel_name').val());
// bind to events
var jc = this;
this.$content.find('form').on('submit', function (e) {
// if the user submits the form by pressing enter in the field.
e.preventDefault();
jc.$$formSubmit.trigger('click'); // reference the button and click it
});
}
});
}
function table_draw(table_head,pick_list,start_date,end_date){
var table_arr = [];
table_arr.push({
title: '<input type="checkbox" name="select_all" class="select_all">',
data: '<?php echo $prime_id; ?>',
type: 'html',
orderable: false,
className: 'select-checkbox',
searchable:false,
width:'1%',
render:function (value){
return '<input type="checkbox" value="'+value+'" name="select_one" class="select_one">';
}
});
$.each(table_head,function(key,data_value){
//data render based on field type
if(data_value.field_type === '4'){
table_arr.push({
title: data_value.view_name,
data: data_value.label_name,
render:function(value) {
if(value && value !== '0000-00-00'){
if(value === null) return '';
return moment(value).format('DD/MM/YYYY');
}else{
return '';
}
}
//optionally do some type detection here for render function
});
}else if(data_value.field_type === '13'){
table_arr.push({
title: data_value.view_name,
data: data_value.label_name,
render: function (value){
if(value){
if (value === '' || value === '0000-00-00' || value === null || value === '1970-01-01 05:30:00') return '';
return moment(value).format('DD/MM/YYYY HH:mm:ss');
}else{
return '';
}
}
});
}
else
if((data_value.field_type === '5') || (data_value.field_type === '9')){
table_arr.push({
title: data_value.view_name,
data: data_value.label_name,
render:function(value, type, row, meta) {
if(data_value.label_name in pick_list){
if(pick_list[data_value.label_name]['array_list']){
if(value in pick_list[data_value.label_name]['array_list']){
if(data_value.label_name === 'termination_status' && value !== ''){
if(value){
return pick_list['termination_status']['array_list'][value];
}else{
return '';
}
}else
if((value === '0' || value === '') && data_value.label_name !== ' termination_status'){
return '';
}else{
var value = pick_list[data_value.label_name]['array_list'][value];
if(value === undefined){
value = '';
}
return value;
}
}else{
if((value === '0' || value === '') && data_value.label_name !== 'termination_status'){
return '';
}else{
return value;
}
}
}
}else{
return value;
}
}
});
}else
if(data_value.field_type ==='6'){
table_arr.push({
title: data_value.view_name,
data: data_value.label_name,
render:function(value) {
send_val = 'No';
if(value === '1'){ send_val = 'Yes'; }
return send_val;
}
//optionally do some type detection here for render function
});
}else
if(data_value.field_type ==='1' || data_value.field_type ==='8'){
table_arr.push({
title: data_value.view_name,
data: data_value.label_name,
render:function(value) {
if(value){
var val = value.replace(/\~/g,'\"');
var val = val.replace(/\`/g,'\'');
var val = val.replace(/\^/g,'\&');
return val;
}else{
return '';
}
}
});
}else{
table_arr.push({
title: data_value.view_name,
data: data_value.label_name,
render:function(value) {
if(value){
var val = value.replace(/\~/g,'\"');
var val = val.replace(/\`/g,'\'');
var val = val.replace(/\^/g,'\&');
return val;
}else{
return '';
}
}
});
}
});
var encKey = '<?php echo $encKey; ?>';
$table = $('#table').DataTable({
// paging: false,
processing: true,
serverSide: true,
destroy: true,
serverMethod: 'post',
lengthMenu: [[10],[10]], //,25,50,100,500,1000,-1 //,25,50,100,500,1000,"All"
// fixedColumns:{leftColumns: 3},
scrollX:true,
language:{
lengthMenu:"<span style='margin-top:8px;margin-left:10px;'>Display</span> _MENU_ <span style='margin-top:8px;'>Records</span>",
searchPlaceholder: "Search records",
search: "",
},
ajax:{
'url': '<?php echo $search_url; ?>',
'data': function(data){
data.start_date = start_date;
data.end_date = end_date;
var report_name = <?php echo json_encode($report_name);?>;
var filter_tbl_val = $("input[name='filter_tbl_val[]']").map(function(){return $(this).val();}).get();
var filter_label = $("input[name='filter_label[]']").map(function(){return $(this).val();}).get();
var field_type = $("input[name='field_type[]']").map(function(){return $(this).val();}).get();
var filter_cond = $("select[name='filter_cond[]']").map(function(){return $(this).val();}).get();
var filter_val = $("input[name='filter_val[]'],select[name='filter_val[]']").map(function(){
if($(this).val()){ var return_data = ($(this).val()).toString();; return return_data; }else{ return ''; }
}).get();
data.field_type = field_type; data.report_name = report_name; data.filter_label = filter_label; data.filter_tbl_val = filter_tbl_val; data.filter_cond = filter_cond; data.filter_val = filter_val; data.start_date = start_date; data.end_date = end_date;
var encData = encrypt(encKey,{data});
return { encrypted_data: encData };
},
beforeSend: function(){
$('.dataTables_processing').html('<span style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');
},
},
columns: table_arr
});
var table_option = "<table><tr><td id='filters' style='padding:8px 2px;'></td><td id='export' style='padding:8px 2px;'></td></tr></table>";
$("#table_filter").append(table_option);
var company_name = '<?php echo $company_information->company_name; ?>';
var report_name = '<?php echo $report_name;?>';
var custom_filter = "<button class='btn btn-xs btn-edit fliter' id='search_filter'>Filter <i class='fa fa-filter' aria-hidden='true'></i></button>";
$("#filters").append(custom_filter);
$(".buttons-collection").addClass("btn btn-xs btn-edit");
$('input[type=search]').addClass('form-control input-sm');
$("select[name='table_length']" ).addClass('form-control input-sm');
$('#export').html('');
var buttons = new $.fn.dataTable.Buttons(table, {
buttons: [{
extend: 'collection',
text: 'Export',
buttons: [
{text:'<button class="export_btn" style="background-color: #FFFFFF;border: none;" onclick=export_to_excel("'+start_date+'","'+end_date+'")><span>MS EXCEL</span></button>'}
]
}]
}).container().appendTo($('#export'));
$(function (){ $(".datepicker").datetimepicker({format: 'DD-MM-YYYY',}); });
}
//HIDE AND SHOW FOR FILTER
function condition_pick(element,field_type){
var condition = element.value;
var id = "dl_" + element.id;
var lastindex = id.lastIndexOf("_");
var firstindex = id.indexOf("_");
var text = id.slice(firstindex + 1, lastindex !== -1 ? lastindex : undefined);
var picklist = lastindex !== -1 ? id.slice(0, lastindex) : id;
if(field_type === '5' || field_type === '7' ||field_type === '9' ){
if(condition === 'LIKE' || condition === '='){
$('#' + text).hide();
$('#' + picklist).show();
}else if(condition === 'IN'){
$("#" + text).attr('type', 'text');
$('#' + text).show();
$("#" + picklist).hide();
}
}
}
//DYNAMIC FUNCTION FOR FILTER INPUT
function datalist_pick(element, pick_list, pick_table){
var name = element.name;
var list = element.list.id;
var attr_id = $(element).attr('id');
var pick = pick_list.split(',');
var select_id = pick[0];
var select_val = pick[1];
var rslt_data = 0;
if(name){
var term = element.value;
if(term.length < 4){
rslt_data = 0;
}
if(term.length >= 2 && rslt_data === 0){
rslt_data = 1;
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {term:term,pick_list:pick_list,pick_table:pick_table};
var encData = encrypt(encKey,data);
$.ajax({
url: '<?php echo site_url("$controller_name/filter_data"); ?>',
type: 'post',
data:encData,
contentType: 'text/plain',
success: function(data){
var rslt = JSON.parse(data);
$("#"+list).html('');
if(rslt.success){
$.each(rslt.search_rslt, function(i, val){
var id = val[select_id];
var value = val[select_val];
$("#"+list).append("<option data-value='"+$.trim(id)+"' value='"+$.trim(value)+"' >"+$.trim(value)+"</option>");
});
}else{
var rslt_data = 0;
}
},
beforeSend: function(){
$("#"+list).attr('disabled','disabled');
$("#span_"+attr_id).remove('');
$("#"+attr_id).parent().append('<span id="span_'+attr_id+'" style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');
},
complete: function() {
$("#"+list).attr('disabled',false);
$("#span_"+attr_id).remove('');
}
});
}
}
}
</script>
<style>
body{
overflow-x: hidden !important;
}
.pull-right.search {
display: none !important;
}
.columns.columns-right.btn-group.pull-right {
display: none !important;
}
span.select2-selection.select2-selection--multiple {
border: 0px;
border-radius: 0px;
border-bottom: 1px solid #CCCCCC;
padding: 0px 5px !important;
min-height: 35px !important;
}
.print_hide{
display: none !important;
}
.fixed-table-pagination{
display: none !important;
}
<?php
if($access_search === 1){
echo ".pull-right.search { display: block !important; }";
}
if($access_export === 1){
echo ".columns.columns-right.btn-group.pull-right{display: block !important;}";
}
?>
.select2-search__field{
width: 100% !important;
}
.search_td{
width: 100%;
}
.select2-hidden-accessible{
width: 100% !important;
}
.select2-container--default{
width: 100% !important;
}
.daterangepicker .custom-range-inputs input {
width:130px !important;
}
.select2-container--default .select2-search--inline .select2-search__field {
width:auto !important;
}
.dataTables_wrapper .dataTables_processing {
top: 40% !important;
}
select[readonly].select2 + .select2-container {
pointer-events: none;
touch-action: none;
}
input[readonly] {
pointer-events: none;
touch-action: none;
}
}
</style>
<?php $this->load->view("partial/footer"); ?>