Merge branch '674-color-code-jos-in-dispatch-page' into 'master'
Resolve "Color code JOs in dispatch page" Closes #674 See merge request jankstudio/resq!788
This commit is contained in:
commit
16e0d8448f
3 changed files with 142 additions and 86 deletions
|
|
@ -155,6 +155,30 @@ span.has-danger,
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.m-table__row--is_vip td {
|
||||||
|
background-color: #ffff00 !important;
|
||||||
|
color: #414a4c !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-table__row--is_vip td > span,
|
||||||
|
.m-table__row--is_vip td > span a,
|
||||||
|
.m-table__row--is_vip td > span a i {
|
||||||
|
color: #414a4c !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-table__row--is_emergency td {
|
||||||
|
background-color: #ffa500 !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-table__row--is_emergency td > span,
|
||||||
|
.m-table__row--is_emergency td > span a,
|
||||||
|
.m-table__row--is_emergency td > span a i {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.m-datatable.m-datatable--default > .m-datatable__table {
|
.m-datatable.m-datatable--default > .m-datatable__table {
|
||||||
min-height: 0 !important;
|
min-height: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ use App\Ramcar\HubCriteria;
|
||||||
use App\Ramcar\DeliveryStatus;
|
use App\Ramcar\DeliveryStatus;
|
||||||
use App\Ramcar\SourceOfAwareness;
|
use App\Ramcar\SourceOfAwareness;
|
||||||
use App\Ramcar\InitialConcern;
|
use App\Ramcar\InitialConcern;
|
||||||
|
use App\Ramcar\CustomerClassification;
|
||||||
use App\Ramcar\Gender;
|
use App\Ramcar\Gender;
|
||||||
use App\Ramcar\CallerClassification;
|
use App\Ramcar\CallerClassification;
|
||||||
|
|
||||||
|
|
@ -187,8 +188,20 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$service_types = ServiceType::getCollection();
|
$service_types = ServiceType::getCollection();
|
||||||
|
|
||||||
// process rows
|
// process rows
|
||||||
|
$is_vip = false;
|
||||||
|
$is_emergency = false;
|
||||||
$rows = [];
|
$rows = [];
|
||||||
foreach ($obj_rows as $orow) {
|
foreach ($obj_rows as $orow) {
|
||||||
|
// check if customer is vip
|
||||||
|
$cust_class = $orow->getCustomer()->getCustomerClassification();
|
||||||
|
if ($cust_class == CustomerClassification::VIP)
|
||||||
|
$is_vip = true;
|
||||||
|
|
||||||
|
// check if customer is not willing to wait
|
||||||
|
$will_not_wait = $orow->getWillWait();
|
||||||
|
if ($will_not_wait == WillingToWaitContent::NOT_WILLING_TO_WAIT)
|
||||||
|
$is_emergency = true;
|
||||||
|
|
||||||
// add row data
|
// add row data
|
||||||
$row['id'] = $orow->getID();
|
$row['id'] = $orow->getID();
|
||||||
$row['customer_name'] = $orow->getCustomer()->getFirstName() . ' ' . $orow->getCustomer()->getLastName();
|
$row['customer_name'] = $orow->getCustomer()->getFirstName() . ' ' . $orow->getCustomer()->getLastName();
|
||||||
|
|
@ -200,6 +213,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$row['flag_advance'] = $orow->isAdvanceOrder();
|
$row['flag_advance'] = $orow->isAdvanceOrder();
|
||||||
$row['plate_number'] = $orow->getCustomerVehicle()->getPlateNumber();
|
$row['plate_number'] = $orow->getCustomerVehicle()->getPlateNumber();
|
||||||
$row['is_mobile'] = $orow->getSource() == TransactionOrigin::MOBILE_APP;
|
$row['is_mobile'] = $orow->getSource() == TransactionOrigin::MOBILE_APP;
|
||||||
|
$row['is_vip'] = $is_vip;
|
||||||
|
$row['is_emergency'] = $is_emergency;
|
||||||
|
|
||||||
$processor = $orow->getProcessedBy();
|
$processor = $orow->getProcessedBy();
|
||||||
if ($processor == null)
|
if ($processor == null)
|
||||||
|
|
|
||||||
|
|
@ -45,94 +45,111 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
var options = {
|
var options = {
|
||||||
data: {
|
data: {
|
||||||
type: 'remote',
|
type: 'remote',
|
||||||
source: {
|
source: {
|
||||||
read: {
|
read: {
|
||||||
url: '{{ url('jo_proc_rows') }}',
|
url: '{{ url('jo_proc_rows') }}',
|
||||||
method: 'POST'
|
method: 'POST'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
saveState: {
|
saveState: {
|
||||||
cookie: false,
|
cookie: false,
|
||||||
webstorage: false
|
webstorage: false
|
||||||
},
|
},
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
serverPaging: true,
|
serverPaging: true,
|
||||||
serverFiltering: true,
|
serverFiltering: true,
|
||||||
serverSorting: true
|
serverSorting: true
|
||||||
},
|
},
|
||||||
rows: {
|
rows: {
|
||||||
beforeTemplate: function (row, data, index) {
|
beforeTemplate: function (row, data, index) {
|
||||||
if (data.flag_advance) {
|
var attribute = getRowAttribute(data);
|
||||||
$(row).addClass('m-table__row--danger');
|
// check if we have to apply a background color for the row
|
||||||
}
|
if (attribute) {
|
||||||
|
var row_class = "m-table__row--" + attribute;
|
||||||
|
$(row).addClass(row_class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
field: 'id',
|
||||||
|
title: 'JO Number'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'delivery_address',
|
||||||
|
title: 'Customer Area'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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 / Edit"><i class="la la-edit"></i></a>';
|
||||||
|
|
||||||
if (data.is_mobile) {
|
{% if is_granted('jo_proc.unlock') %}
|
||||||
$(row).addClass('m-table__row--is_mobile');
|
if (row.meta.unlock_url != '') {
|
||||||
}
|
actions += '<a href="' + row.meta.unlock_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="Unlock"><i class="fa fa-unlock"></i></a>';
|
||||||
}
|
}
|
||||||
},
|
{% endif %}
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
field: 'id',
|
|
||||||
title: 'JO Number'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'delivery_address',
|
|
||||||
title: 'Customer Area'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
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 / Edit"><i class="la la-edit"></i></a>';
|
|
||||||
|
|
||||||
{% if is_granted('jo_proc.unlock') %}
|
return actions;
|
||||||
if (row.meta.unlock_url != '') {
|
},
|
||||||
actions += '<a href="' + row.meta.unlock_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="Unlock"><i class="fa fa-unlock"></i></a>';
|
}
|
||||||
}
|
],
|
||||||
{% endif %}
|
search: {
|
||||||
|
onEnter: false,
|
||||||
|
input: $('#data-rows-search'),
|
||||||
|
delay: 400
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return actions;
|
var table = $("#data-rows").mDatatable(options);
|
||||||
},
|
|
||||||
}
|
|
||||||
],
|
|
||||||
search: {
|
|
||||||
onEnter: false,
|
|
||||||
input: $('#data-rows-search'),
|
|
||||||
delay: 400
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var table = $("#data-rows").mDatatable(options);
|
// auto refresh table
|
||||||
|
setInterval(function() {
|
||||||
|
table.reload();
|
||||||
|
}, {{ table_refresh_rate }});
|
||||||
|
});
|
||||||
|
|
||||||
// auto refresh table
|
function getRowAttribute(data) {
|
||||||
setInterval(function() {
|
if (data.is_vip) {
|
||||||
table.reload();
|
return 'is_vip';
|
||||||
}, {{ table_refresh_rate }});
|
}
|
||||||
});
|
if (data.is_emergency) {
|
||||||
</script>
|
return 'is_emergency';
|
||||||
|
}
|
||||||
|
if (data.flag_advance) {
|
||||||
|
return 'danger';
|
||||||
|
}
|
||||||
|
if (data.is_mobile) {
|
||||||
|
return 'is_mobile';
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue