Skip to content
This repository has been archived by the owner on Feb 12, 2020. It is now read-only.

Commit

Permalink
Merge pull request #2 from anup-khanal-reisys/advanced-export
Browse files Browse the repository at this point in the history
Advanced export
  • Loading branch information
anup-khanal committed Oct 25, 2017
2 parents 57ee540 + 26ff822 commit e79f800
Show file tree
Hide file tree
Showing 5 changed files with 160 additions and 6 deletions.
66 changes: 64 additions & 2 deletions application/controllers/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@ function __construct() {
function index() {

try{

//load agency list and category List
$querya = $this->get_agencies();
$queryb = $this->get_categories();
$queryc = $this->get_report_columns();

if($this->config->item('default_report_columns')){
$default_columns = explode(',', $this->config->item('default_report_columns'));
} else {
Expand All @@ -34,6 +38,9 @@ function index() {

$crud = $this->_set_common_report_crud($default_columns);
$output = $crud->render();
$output->agencieslist = $querya;
$output->categorieslist = $queryb;
$output->columnslist = $queryc;
$this->_admin_output($output);
} catch(Exception $e) {
show_error($e->getMessage().' --- '.$e->getTraceAsString());
Expand Down Expand Up @@ -115,6 +122,42 @@ function reports_csv() {
$filename = date('Y-m-d_Hi') . '_reports.csv';
query_to_csv($query, TRUE, $filename);
}
function reports_dyn_csv() {
$this->load->helper('csv');
//$this->db->select('report_id AS ID, status AS Status, requested_datetime AS Received, agency_responsible AS Agency Responsible, category_id AS Category, description AS Description, updated_datetime AS Last Updated');
$agency = strtolower($this->input->post('agency'));
$category = strtolower($this->input->post('category'));
$orderby = strtolower($this->input->post('orderby'));
if(!$this->saml_auth->is_admin()) {
$where_group = $this->filter_query_permissions();
if (!empty($where_group)) {
$agency = $where_group[0];
}
}

if((empty($agency))||($agency=="all")){
//$agency = null;
}else{
$this->db->where('agency_responsible', $agency);
}
if((empty($category))||($category=="all")){
//$category = null;
}else{
$this->db->where('category_id', $category);
}

//$array = array('agency_responsible' => $agency, 'category_id' => $category);
//$this->db->where($array);

if((empty($orderby))||($orderby=="na")){
$orderby = "report_id";
}

$this->db->order_by($orderby, 'ASC');
$query = $this->db->get('reports');
$filename = date('Y-m-d_Hi') . '_dyn_reports.csv';
query_to_csv($query, TRUE, $filename);
}

function agencies() {
$crud = new grocery_CRUD();
Expand Down Expand Up @@ -551,7 +594,25 @@ function delete_selection() {
function unique_field_name($field_name) {
return 's'.substr(md5($field_name),0,8); //This s is because is better for a string to begin with a letter and not with a number
}


function get_agencies()
{
$this->db->select('name, url_slug');
$this->db->from('agencies');
$query = $this->db->get();
return $query;
}
function get_categories()
{
$this->db->select('category_name, category_id');
$this->db->from('categories');
$query = $this->db->get();
return $query;
}
function get_report_columns()
{
return $this->db->list_fields('reports');
}
function _set_update_time($value, $primary_key){
$current_value = (!empty($value)) ? date('l F j, Y \a\t g:i a', strtotime($value)) : 'No updates yet';
$timestamp_field = "<input id='updated_datetime' name='updated_datetime' type='hidden' value='".date('Y-m-d H:i:s')."' />" . $current_value;
Expand Down Expand Up @@ -579,6 +640,7 @@ function _fix_zero_prio_callback($post_array, $primary_key) {
}

function _admin_output($output = null) {
$output->currmethod = $this->router->fetch_method();
$this->load->view('admin_view.php', $output);
}

Expand Down
10 changes: 9 additions & 1 deletion application/views/admin_view.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
<?php $this->load->view('header');?>
<?php echo $output; ?>
<?php $this->load->view('footer');?>
<?php $this->load->view('footer');?>
<script type="text/javascript">
if("<?php echo $currmethod; ?>"=="index"){
$("#agencieslist").html('<select id="agencieslistselect" class="form-control"><?php foreach($agencieslist->result() as $al){?><option value="<?php echo $al->url_slug ;?>"><?php echo $al->name ;?></option> <?php }?></select>');
$("#categorylist").html('<select id="categorylistselect" class="form-control"><option value="ALL">All</option><?php foreach($categorieslist->result() as $cl){?><option value="<?php echo $cl->category_id; ?>"><?php echo $cl->category_name; ?></option><?php }?></select>');
$("#sortbylist").html('<select id="sortbylistselect" class="form-control"><?php foreach($columnslist as $cll){?><option value="<?php echo $cll; ?>"><?php echo $cll; ?></option><?php }?></select>');
$(".advexport-anchor").show();
};
</script>
4 changes: 3 additions & 1 deletion application/views/footer.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ class="<?php echo (preg_match('/https?:\/\/(\\w*\\.)*fixmy/', $org_url))? 'fmse-
<script>window.jQuery || document.write('<script src="<?php echo site_url('assets/fms-endpoint/js/vendor/jquery-1.10.1.min.js')?>"><\/script>')</script>

<script src="<?php echo site_url('assets/fms-endpoint/js/vendor/bootstrap.min.js')?>"></script>

<script type="text/javascript">
$(".advexport-anchor").hide();
</script>

<?php if (config_item('google_analytics_id')): ?>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -337,4 +337,56 @@ function deteleGroceryCrudInformation(delete_url){
}
}
});
}
//when page is ready, prepare on click advanced export button
$(document).ready(function(){
$( "#advexportbtn" ).click(function() {
var agency = $("#agencieslistselect").val(),
category = $("#categorylistselect").val(),
orderby = $("#sortbylistselect").val();
$.ajax({
url: "admin/reports_dyn_csv",
method: "POST",
data: {
'agency': agency,
'category': category,
'orderby': orderby
},
dataType : "text",
success: function(data){
var date = new Date();
var filename = (date.getMonth() + 1) + '-' + date.getDate() + '-' + date.getFullYear() +'-'+ date.getHours()+'-'+date.getMinutes()+"_dyn_reports.csv";
download(data, filename, "text/csv");
}
});
return false;
});
});

//CSV Advanced export
function download(strData, strFileName, strMimeType) {
var D = document,
a = D.createElement("a");
strMimeType= strMimeType || "application/octet-stream";
if (navigator.msSaveBlob) { // IE10
return navigator.msSaveBlob(new Blob([strData], {type: strMimeType}), strFileName);
}
if ('download' in a) { //html5 A[download]
a.href = "data:" + strMimeType + "," + encodeURIComponent(strData);
a.setAttribute("download", strFileName);
a.innerHTML = "downloading...";
D.body.appendChild(a);
setTimeout(function() {
a.click();
D.body.removeChild(a);
}, 66);
return true;
}
var f = D.createElement("iframe");
D.body.appendChild(f);
f.src = "data:" + strMimeType + "," + encodeURIComponent(strData);
setTimeout(function() {
D.body.removeChild(f);
}, 333);
return true;
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,13 @@
</a>
<?php
}
} ?>
if(!$unset_export) { ?>
<a class="advexport-anchor btn" rel="external" data-toggle="collapse" data-target="#advexport">
<i class="glyphicon glyphicon-wrench"></i> Advanced <?php echo $this->l('list_export');?>
</a>
<?php
}
} ?>
<button style="display:none" class="btn" data-toggle="modal" data-target="#filtering-form-search" >
<i class="glyphicon glyphicon-search"></i>
<?php echo $this->l('list_search');?>
Expand All @@ -94,7 +100,31 @@
<?php echo ($success_message !== null) ? $success_message : ''; ?>
</div>
</div>

<!-- Advanced Export -->
<div id="advexport" class="panel panel-default collapse">
<div class="panel-body">
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-3">Agency Responsible</div>
<div class="col-md-3">CRM Request Type (Category)</div>
<div class="col-md-3">Sort By</div>
<div class="col-md-2"></div>
</div>
<div class="row">
<div class="col-md-1"><b>Export By</b></div>
<div id="agencieslist" class="col-md-3">
</div>
<div id="categorylist" class="col-md-3">
</div>
<div id="sortbylist" class="col-md-3">
</div>
<div class="col-md-2">
<button type="button" id="advexportbtn" class="btn btn-success"><i class="glyphicon glyphicon-download"></i> <?php echo $this->l('list_export');?></button>
</div>
</div>
</div>
</div>
<!-- Advanced Export Ends-->
<div id="ajax_list">
<?php echo $list_view; ?>
</div>
Expand Down

0 comments on commit e79f800

Please sign in to comment.