Add rider and date filter to search. #319

This commit is contained in:
Korina Cordero 2020-02-04 08:43:39 +00:00
parent ca8d6fb57d
commit 3789871f9a
3 changed files with 182 additions and 100 deletions

View file

@ -196,6 +196,7 @@ class JobOrderController extends Controller
$template = $jo_handler->getTwigTemplate('jo_list_fulfillment'); $template = $jo_handler->getTwigTemplate('jo_list_fulfillment');
$params = $jo_handler->getOtherParameters();
$params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval'); $params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval');
return $this->render($template, $params); return $this->render($template, $params);
@ -210,6 +211,7 @@ class JobOrderController extends Controller
$template = $jo_handler->getTwigTemplate('jo_list_open'); $template = $jo_handler->getTwigTemplate('jo_list_open');
$params = $jo_handler->getOtherParameters();
$params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval'); $params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval');
$params['statuses'] = JOStatus::getCollection(); $params['statuses'] = JOStatus::getCollection();
@ -225,6 +227,7 @@ class JobOrderController extends Controller
$template = $jo_handler->getTwigTemplate('jo_list_all'); $template = $jo_handler->getTwigTemplate('jo_list_all');
$params = $jo_handler->getOtherParameters();
$params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval'); $params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval');
return $this->render($template, $params); return $this->render($template, $params);

View file

@ -2197,6 +2197,14 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
return null; return null;
} }
public function getOtherParameters()
{
// get riders for dropdown
$params['riders'] = $this->em->getRepository(Rider::class)->findAll();
return $params;
}
protected function fillDropdownParameters(&$params) protected function fillDropdownParameters(&$params)
{ {
@ -2472,6 +2480,25 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
->orWhere('c.first_name like :filter or c.last_name like :filter') ->orWhere('c.first_name like :filter or c.last_name like :filter')
->setParameter('filter', $datatable['query']['data-rows-search'] . '%'); ->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
} }
if (isset($datatable['query']['rider']))
{
$query->innerJoin('q.rider', 'r')
->where('r.id = :rider_id')
->setParameter('rider_id', $datatable['query']['rider']);
}
if (isset($datatable['query']['schedule_date']))
{
$start = $datatable['query']['schedule_date'][0] . ' ' . '00:00:00';
$end = $datatable['query']['schedule_date'][1] . ' ' . '23:59:00';
$date_start = DateTime::createFromFormat('m/d/Y H:i:s', $start);
$date_end = DateTime::createFromFormat('m/d/Y H:i:s', $end);
$query->where('q.date_schedule >= :date_start')
->andWhere('q.date_schedule <= :date_end')
->setParameter('date_start', $date_start)
->setParameter('date_end', $date_end);
}
break; break;
default: default:
$query->where('q.status = :status') $query->where('q.status = :status')

View file

@ -19,21 +19,44 @@
<div class="m-portlet m-portlet--mobile"> <div class="m-portlet m-portlet--mobile">
<div class="m-portlet__body"> <div class="m-portlet__body">
<div class="m-form m-form--label-align-right m--margin-top-20 m--margin-bottom-30"> <div class="m-form m-form--label-align-right m--margin-top-20 m--margin-bottom-30">
<div class="row align-items-center"> <div class="row align-items-center">
<div class="col-xl-12"> <div class="col-xl-12">
<div class="form-group m-form__group row align-items-center"> <div class="form-group m-form__group row align-items-center">
<div class="col-md-4"> <div class="col-md-4">
<div class="m-input-icon m-input-icon--left"> <div class="m-input-icon m-input-icon--left">
<input type="text" class="form-control m-input m-input--solid" placeholder="Search..." id="data-rows-search"> <input type="text" class="form-control m-input m-input--solid" placeholder="Search..." id="data-rows-search">
<span class="m-input-icon__icon m-input-icon__icon--left"> <span class="m-input-icon__icon m-input-icon__icon--left">
<span><i class="la la-search"></i></span> <span><i class="la la-search"></i></span>
</span> </span>
</div> </div>
</div> </div>
</div> <div class="col-md-4">
</div> <div class="m-input-icon m-input-icon--left">
</div> <div class="input-group">
</div> <label>Rider:</label>
<select class="form-control m-input" id="rider_list" name="rider_list">
{% for rider in riders %}
<option value="{{ rider.getID }}">{{ rider.getFirstName ~ ' ' ~ rider.getLastName }} </option>
{% endfor %}
</select>
</div>
</div>
</div>
<div class="col-md-4">
<div class="m-input-icon m-input-icon--left">
<div class="input-daterange input-group" id="date-range">
<input role="presentation" type="text" class="form-control m-input" id="date_start" name="date_start" placeholder="Start date" />
<div class="input-group-append">
<span class="input-group-text"><i class="la la-ellipsis-h"></i></span>
</div>
<input role="presentation" type="text" class="form-control" id="date_end" name="date_end" placeholder="End date" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--begin: Datatable --> <!--begin: Datatable -->
<div id="data-rows"></div> <div id="data-rows"></div>
<!--end: Datatable --> <!--end: Datatable -->
@ -45,93 +68,122 @@
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<script> <script>
$(function() { $(function() {
var options = { $("#date-range").datepicker({
data: { orientation: "bottom"
type: 'remote', });
source: {
read: { var options = {
url: '{{ url('jo_all_rows') }}', data: {
method: 'POST' type: 'remote',
} source: {
}, read: {
saveState: { url: '{{ url('jo_all_rows') }}',
cookie: false, method: 'POST'
webstorage: false }
},
pageSize: 10,
serverPaging: true,
serverFiltering: true,
serverSorting: true
},
rows: {
beforeTemplate: function (row, data, index) {
if (data.flag_advance) {
$(row).addClass('m-table__row--danger');
}
}
},
columns: [
{
field: 'id',
title: 'JO Number'
},
{
field: 'plate_number',
title: 'Plate #'
}, },
{ saveState: {
field: 'customer_name', cookie: false,
title: 'Customer' webstorage: false
}, },
{ pageSize: 10,
field: 'delivery_address', serverPaging: true,
title: 'Customer Area' serverFiltering: true,
}, serverSorting: true
{ },
field: 'type', rows: {
title: 'Schedule' beforeTemplate: function (row, data, index) {
}, if (data.flag_advance) {
{ $(row).addClass('m-table__row--danger');
field: 'date_schedule', }
title: 'Scheduled Date' }
}, },
{ columns: [
field: 'status', {
title: 'Status' field: 'id',
}, title: 'JO Number'
{ },
field: 'processor', {
title: 'Dispatcher' field: 'plate_number',
}, title: 'Plate #'
{ },
field: 'Actions', {
width: 110, field: 'customer_name',
title: 'Actions', title: 'Customer'
sortable: false, },
overflow: 'visible', {
template: function (row, index, datatable) { field: 'delivery_address',
var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View"><i class="la la-edit"></i></a>'; title: 'Customer Area'
actions += '<a href="' + row.meta.pdf_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="PDF" target="_blank"><i class="la la-file-o"></i></a>'; },
{
field: 'type',
title: 'Schedule'
},
{
field: 'date_schedule',
title: 'Scheduled Date'
},
{
field: 'status',
title: 'Status'
},
{
field: 'processor',
title: 'Dispatcher'
},
{
field: 'Actions',
width: 110,
title: 'Actions',
sortable: false,
overflow: 'visible',
template: function (row, index, datatable) {
var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View"><i class="la la-edit"></i></a>';
actions += '<a href="' + row.meta.pdf_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="PDF" target="_blank"><i class="la la-file-o"></i></a>';
return actions; return actions;
}, },
} }
], ],
search: { search: {
onEnter: false, onEnter: false,
input: $('#data-rows-search'), input: $('#data-rows-search'),
delay: 400 delay: 400
} }
}; };
var table = $("#data-rows").mDatatable(options); var table = $("#data-rows").mDatatable(options);
// auto refresh table // auto refresh table
setInterval(function() { setInterval(function() {
table.reload(); table.reload();
}, {{ table_refresh_rate }}); }, {{ table_refresh_rate }});
});
</script> $("#rider_list").on("change", function() {
table.search($(this).val(), "rider");
});
$("#date_start").on("change", function() {
var date_start = $(this).val();
var date_end = $("[name='date_end']").val();
var date_array = [date_start, date_end];
table.search(date_array, "schedule_date");
});
$("#date_end").on("change", function() {
console.log($(this).val());
var date_end = $(this).val();
var date_start = $("[name='date_start']").val();
var date_array = [date_start, date_end];
table.search(date_array, "schedule_date");
});
});
</script>
{% endblock %} {% endblock %}