Merge branch '319-cmb-one-step-form-display-rider-distance' into '270-final-cmb-fixes'

Resolve "CMB - one step form display rider distance"

See merge request jankstudio/resq!366
This commit is contained in:
Kendrick Chan 2020-02-04 21:22:12 +00:00
commit eee516a6b5
9 changed files with 671 additions and 339 deletions

View file

@ -19,6 +19,7 @@ doctrine:
point: CrEOF\Spatial\DBAL\Types\Geometry\PointType point: CrEOF\Spatial\DBAL\Types\Geometry\PointType
polygon: CrEOF\Spatial\DBAL\Types\Geometry\PolygonType polygon: CrEOF\Spatial\DBAL\Types\Geometry\PolygonType
linestring: CrEOF\Spatial\DBAL\Types\Geometry\LineStringType linestring: CrEOF\Spatial\DBAL\Types\Geometry\LineStringType
multipolygon: CrEOF\Spatial\DBAL\Types\Geometry\MultiPolygonType
orm: orm:
auto_generate_proxy_classes: '%kernel.debug%' auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore naming_strategy: doctrine.orm.naming_strategy.underscore

View file

@ -10,6 +10,8 @@ use App\Entity\CustomerVehicle;
use App\Entity\Promo; use App\Entity\Promo;
use App\Entity\Battery; use App\Entity\Battery;
use App\Entity\JobOrder; use App\Entity\JobOrder;
use App\Entity\VehicleManufacturer;
use App\Entity\Vehicle;
use App\Service\InvoiceGeneratorInterface; use App\Service\InvoiceGeneratorInterface;
use App\Service\JobOrderHandlerInterface; use App\Service\JobOrderHandlerInterface;
@ -196,6 +198,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 +213,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 +229,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);
@ -691,8 +696,10 @@ class JobOrderController extends Controller
// get customer vehicle // get customer vehicle
$cv = $em->getRepository(CustomerVehicle::class)->find($cvid); $cv = $em->getRepository(CustomerVehicle::class)->find($cvid);
/*
if ($cv == null) if ($cv == null)
throw new \Exception('Could not get customer vehicle'); throw new \Exception('Could not get customer vehicle');
*/
// instantiate invoice criteria // instantiate invoice criteria
@ -833,7 +840,7 @@ class JobOrderController extends Controller
/** /**
* @Menu(selected="jo_onestep_form") * @Menu(selected="jo_onestep_form")
*/ */
public function oneStepForm(JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis) public function oneStepForm(EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis)
{ {
$this->denyAccessUnlessGranted('jo_onestep.form', null, 'No access.'); $this->denyAccessUnlessGranted('jo_onestep.form', null, 'No access.');
@ -841,6 +848,8 @@ class JobOrderController extends Controller
$params['submit_url'] = $this->generateUrl('jo_onestep_submit'); $params['submit_url'] = $this->generateUrl('jo_onestep_submit');
$params['return_url'] = $this->generateUrl('jo_onestep_form'); $params['return_url'] = $this->generateUrl('jo_onestep_form');
$params['map_js_file'] = $gis->getJSJOFile(); $params['map_js_file'] = $gis->getJSJOFile();
$params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll();
$params['vmakes'] = $em->getRepository(Vehicle::class)->findAll();
$template = $params['template']; $template = $params['template'];
@ -877,7 +886,7 @@ class JobOrderController extends Controller
/** /**
* @Menu(selected="jo_onestep_edit_form") * @Menu(selected="jo_onestep_edit_form")
*/ */
public function oneStepEditForm($id, JobOrderHandlerInterface $jo_handler, public function oneStepEditForm($id, EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler,
GISManagerInterface $gis, MapTools $map_tools) GISManagerInterface $gis, MapTools $map_tools)
{ {
$this->denyAccessUnlessGranted('jo_onestep.edit', null, 'No access.'); $this->denyAccessUnlessGranted('jo_onestep.edit', null, 'No access.');
@ -886,6 +895,8 @@ class JobOrderController extends Controller
$params['submit_url'] = $this->generateUrl('jo_onestep_edit_submit', ['id' => $id]); $params['submit_url'] = $this->generateUrl('jo_onestep_edit_submit', ['id' => $id]);
$params['return_url'] = $this->generateUrl('jo_open'); $params['return_url'] = $this->generateUrl('jo_open');
$params['map_js_file'] = $gis->getJSJOFile(); $params['map_js_file'] = $gis->getJSJOFile();
$params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll();
$params['vmakes'] = $em->getRepository(Vehicle::class)->findAll();
$template = $params['template']; $template = $params['template'];

View file

@ -104,7 +104,7 @@ class InvoiceCriteria
return $this->entries; return $this->entries;
} }
public function setCustomerVehicle(CustomerVehicle $cv) public function setCustomerVehicle(CustomerVehicle $cv = null)
{ {
$this->cv = $cv; $this->cv = $cv;
return $this; return $this;

View file

@ -519,6 +519,7 @@ class CMBCustomerHandler implements CustomerHandlerInterface
], ],
'vehicle' => [ 'vehicle' => [
'id' => $vehicle->getID(), 'id' => $vehicle->getID(),
'mfg_id' => $vehicle->getManufacturer()->getID(),
'mfg_name' => $vehicle->getManufacturer()->getName(), 'mfg_name' => $vehicle->getManufacturer()->getName(),
'make' => $vehicle->getMake(), 'make' => $vehicle->getMake(),
'model_year_from' => $vehicle->getModelYearFrom(), 'model_year_from' => $vehicle->getModelYearFrom(),

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)
{ {
@ -2435,7 +2443,36 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
switch ($tier) switch ($tier)
{ {
case 'fulfill': case 'fulfill':
$query->where('q.status IN (:statuses)') if (isset($datatable['query']['data-rows-search']))
{
$query->innerJoin('q.cus_vehicle', 'cv')
->innerJoin('q.customer', 'c')
->where('cv.plate_number like :filter')
->orWhere('c.phone_mobile like :filter')
->orWhere('c.first_name like :filter or c.last_name like :filter')
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
}
if (isset($datatable['query']['rider']))
{
$query->innerJoin('q.rider', 'r')
->andWhere('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->andWhere('q.date_schedule >= :date_start')
->andWhere('q.date_schedule <= :date_end')
->setParameter('date_start', $date_start)
->setParameter('date_end', $date_end);
}
$query->andWhere('q.status IN (:statuses)')
->andWhere('q.hub IN (:hubs)') ->andWhere('q.hub IN (:hubs)')
->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY) ->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY)
->setParameter('hubs', $hubs, Connection::PARAM_STR_ARRAY); ->setParameter('hubs', $hubs, Connection::PARAM_STR_ARRAY);
@ -2461,6 +2498,25 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
$query->where('q.status IN (:statuses)') $query->where('q.status IN (:statuses)')
->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY); ->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY);
} }
if (isset($datatable['query']['rider']))
{
$query->innerJoin('q.rider', 'r')
->andWhere('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->andWhere('q.date_schedule >= :date_start')
->andWhere('q.date_schedule <= :date_end')
->setParameter('date_start', $date_start)
->setParameter('date_end', $date_end);
}
break; break;
case 'all': case 'all':
if (isset($datatable['query']['data-rows-search'])) if (isset($datatable['query']['data-rows-search']))
@ -2472,6 +2528,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')
->andWhere('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->andWhere('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

@ -30,6 +30,7 @@
</div> </div>
</div> </div>
<form id="row-form" class="m-form m-form--fit m-form--label-align-right" method="post" action="{{ submit_url }}"> <form id="row-form" class="m-form m-form--fit m-form--label-align-right" method="post" action="{{ submit_url }}">
<input type="hidden" id="vid" name="vid" value="0">
<input type="hidden" id="invoice-change" name="invoice_change" value="0"> <input type="hidden" id="invoice-change" name="invoice_change" value="0">
<div class="m-portlet__body"> <div class="m-portlet__body">
{%if ftags.vehicle_dropdown %} {%if ftags.vehicle_dropdown %}
@ -42,12 +43,14 @@
<select class="form-control m-select2" id="customer-vehicle" name="customer_vehicle"></select> <select class="form-control m-select2" id="customer-vehicle" name="customer_vehicle"></select>
<div class="form-control-feedback hide" data-field="customer_vehicle"></div> <div class="form-control-feedback hide" data-field="customer_vehicle"></div>
</div> </div>
<!--
<div class="col-lg-6"> <div class="col-lg-6">
<label></label> <label></label>
<div style="display:block; margin-top: 5px"> <div style="display:block; margin-top: 5px">
<a href="{{ url('customer_create', {'ref':'jo'}) }}" class="btn btn-success">Create New Customer / Vehicle</a> <a href="{{ url('customer_create', {'ref':'jo'}) }}" class="btn btn-success">Create New Customer / Vehicle</a>
</div> </div>
</div> </div>
-->
</div> </div>
</div> </div>
<div class="m-form__section"> <div class="m-form__section">
@ -75,20 +78,27 @@
{% endif %} {% endif %}
<div class="m-form__section{{ mode != 'create' and not obj.getReferenceJO ? ' m-form__section--first' }}"> <div class="m-form__section{{ mode != 'create' and not obj.getReferenceJO ? ' m-form__section--first' }}">
<div class="m-form__heading"> <div class="m-form__heading flex-row">
<h3 class="m-form__heading-title"> <h3 class="m-form__heading-title">
Customer Details Customer Details
</h3> </h3>
<span class="m-switch m-switch--icon block-switch">
<label>
<input type="checkbox" name="new_customer" id="flag-new-customer" value="1"{{ obj.isAdvanceOrder ? ' checked' }}>
<label class="switch-label">New Customer</label>
<span></span>
</label>
</span>
</div> </div>
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-6"> <div class="col-lg-6">
<label data-field="customer_first_name">First Name</label> <label data-field="customer_first_name">First Name</label>
<input type="text" name="customer_first_name" id="customer-first-name" class="form-control m-input" value="{{ obj.getCustomer.getFirstName|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="customer_first_name" id="customer-first-name" class="form-control m-input cust_field" value="{{ obj.getCustomer.getFirstName|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="customer_first_name"></div> <div class="form-control-feedback hide" data-field="customer_first_name"></div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<label data-field="customer_last_name">Last Name</label> <label data-field="customer_last_name">Last Name</label>
<input type="text" name="customer_last_name" id="customer-last-name" class="form-control m-input" value="{{ obj.getCustomer.getLastName|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="customer_last_name" id="customer-last-name" class="form-control m-input cust_field" value="{{ obj.getCustomer.getLastName|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="customer_last_name"></div> <div class="form-control-feedback hide" data-field="customer_last_name"></div>
</div> </div>
</div> </div>
@ -97,7 +107,7 @@
<label data-field="customer_phone_mobile">Mobile Phone</label> <label data-field="customer_phone_mobile">Mobile Phone</label>
<div class="input-group m-input-group"> <div class="input-group m-input-group">
<span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span> <span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span>
<input type="text" name="customer_phone_mobile" id="customer-phone-mobile" class="form-control m-input" value="{{ obj.getCustomer.getPhoneMobile|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="customer_phone_mobile" id="customer-phone-mobile" class="form-control m-input cust_field" value="{{ obj.getCustomer.getPhoneMobile|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="customer_phone_mobile"></div> <div class="form-control-feedback hide" data-field="customer_phone_mobile"></div>
</div> </div>
</div> </div>
@ -105,7 +115,7 @@
<label data-field="customer_phone_landline">Landline</label> <label data-field="customer_phone_landline">Landline</label>
<div class="input-group m-input-group"> <div class="input-group m-input-group">
<span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span> <span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span>
<input type="text" name="customer_phone_landline" id="customer-phone-landline" class="form-control m-input" value="{{ obj.getCustomer.getPhoneLandline|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="customer_phone_landline" id="customer-phone-landline" class="form-control m-input cust_field" value="{{ obj.getCustomer.getPhoneLandline|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="customer_phone_landline"></div> <div class="form-control-feedback hide" data-field="customer_phone_landline"></div>
</div> </div>
</div> </div>
@ -115,7 +125,7 @@
<label data-field="customer_phone_office">Office Phone</label> <label data-field="customer_phone_office">Office Phone</label>
<div class="input-group m-input-group"> <div class="input-group m-input-group">
<span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span> <span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span>
<input type="text" name="customer_phone_office" id="customer-phone-office" class="form-control m-input" value="{{ obj.getCustomer.getPhoneOffice|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="customer_phone_office" id="customer-phone-office" class="form-control m-input cust_field" value="{{ obj.getCustomer.getPhoneOffice|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="customer_phone_office"></div> <div class="form-control-feedback hide" data-field="customer_phone_office"></div>
</div> </div>
</div> </div>
@ -123,7 +133,7 @@
<label data-field="customer_phone_fax">Fax</label> <label data-field="customer_phone_fax">Fax</label>
<div class="input-group m-input-group"> <div class="input-group m-input-group">
<span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span> <span class="input-group-addon">{% trans %}country_code_prefix{% endtrans %}</span>
<input type="text" name="customer_phone_fax" id="customer-phone-fax" class="form-control m-input" value="{{ obj.getCustomer.getPhoneFax|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="customer_phone_fax" id="customer-phone-fax" class="form-control m-input cust_field" value="{{ obj.getCustomer.getPhoneFax|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="customer_phone_fax"></div> <div class="form-control-feedback hide" data-field="customer_phone_fax"></div>
</div> </div>
</div> </div>
@ -131,7 +141,7 @@
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-6"> <div class="col-lg-6">
<label data-field="customer_customer_notes">Customer Notes</label> <label data-field="customer_customer_notes">Customer Notes</label>
<textarea name="customer_customer_notes" id="customer-customer-notes" class="form-control m-input" data-vehicle-field="1" rows="4" disabled>{{ obj.getCustomer ? obj.getCustomer.getCustomerNotes }}</textarea> <textarea name="customer_customer_notes" id="customer-customer-notes" class="form-control m-input cust_field" data-vehicle-field="1" rows="4" disabled>{{ obj.getCustomer ? obj.getCustomer.getCustomerNotes }}</textarea>
<div class="form-control-feedback hide" data-field="customer_customer_notes"></div> <div class="form-control-feedback hide" data-field="customer_customer_notes"></div>
</div> </div>
</div> </div>
@ -144,32 +154,47 @@
</div> </div>
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-3"> <div class="col-lg-3">
<label data-field="vmfg">Manufacturer</label> <label data-field="cv_mfg">Manufacturer</label>
<input type="text" name="vmfg" id="vmfg" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getManufacturer.getName }}" data-vehicle-field="1" disabled> <select name="cv_mfg" class="form-control m-input cv_field" id="cv-mfg" data-required="0" disabled>
<div class="form-control-feedback hide" data-field="vmfg"></div> <option value="">Select a manufacturer</option>
{% for manufacturer in vmfgs %}
{% set vmfg_id = obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getManufacturer.getID : 0 %}
<option value="{{ manufacturer.getID() }}" {% if vmfg_id == manufacturer.getID %}selected{% endif %}>{{ manufacturer.getName() }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="cv-mfg"></div>
</div>
<div class="col-lg-6">
<label data-field="cv-make">Make</label>
<select name="cv_make" class="form-control m-input" id="cv-make" data-required="0" disabled>
<option value="">Select a make</option>
{% for make in vmakes %}
{% set vmake_id = obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getID : 0 %}
<option value="{{ make.getID() }}" {% if vmake_id == make.getID %}selected{% endif %}>{{ make.getMake() }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="cv_make"></div>
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<label data-field="vehicle_make">Make</label> <label data-field="cv_year">Model Year</label>
<input type="text" name="vehicle_make" id="vehicle-make" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getMake }}" data-vehicle-field="1" disabled> <input type="text" name="cv_year" id="cv-year" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getModelYear }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_make"></div> <div class="form-control-feedback hide" data-field="cv_year"></div>
</div>
<div class="col-lg-3">
<label data-field="vehicle_year">Model Year</label>
<input type="text" name="vehicle_year" id="vehicle-year" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getModelYear }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_year"></div>
</div> </div>
</div> </div>
<div class="form-group m-form__group row"> <div class="form-group m-form__group row">
<div class="col-lg-3"> <div class="col-lg-3">
<label data-field="vehicle_plate">Plate #</label> <label data-field="cv_plate">Plate #</label>
<input type="text" name="vehicle_plate" id="vehicle-plate" class="form-control m-input" value="{{ obj.getCustomerVehicle.getPlateNumber|default('') }}" data-vehicle-field="1" disabled> <input type="text" name="cv_plate" id="cv-plate" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle.getPlateNumber|default('') }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_color"></div> <div class="form-control-feedback hide" data-field="cv_color"></div>
</div> </div>
<!--
<div class="col-lg-3"> <div class="col-lg-3">
<label data-field="vehicle_color">Color</label> <label data-field="vehicle_color">Color</label>
<input type="text" name="vehicle_color" id="vehicle-color" class="form-control m-input" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getColor }}" data-vehicle-field="1" disabled> <input type="text" name="vehicle_color" id="vehicle-color" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getColor }}" data-vehicle-field="1" disabled>
<div class="form-control-feedback hide" data-field="vehicle_color"></div> <div class="form-control-feedback hide" data-field="vehicle_color"></div>
</div> </div>
-->
</div> </div>
</div> </div>
<div class="m-form__section"> <div class="m-form__section">
@ -607,6 +632,33 @@
<script> <script>
function get_vehicle_makes(mfg_id, vid = 0) {
var field = $("#cv-make");
$.ajax({
method: "POST",
url: "{{ url('vmfg_vehicles') }}",
data: {id: mfg_id}
}).done(function(response) {
if (response.data.length > 0) {
var html = '';
$.each(response.data, function(index, vehicle) {
html += '<option value="' + vehicle.id + '" data-index="' + index + '">' + vehicle.make + ' (' + vehicle.model_year_from + '-' + vehicle.model_year_to + ')</option>';
});
field.html(html).prop('disabled', false);
field.val(field.data('id'));
} else {
field.html('<option value="">No vehicles found</option>').prop('disabled', true);
}
if (vid != 0) {
field.val(vid);
field.prop('disabled', true);
}
})
}
$(function() { $(function() {
var form_in_process = false; var form_in_process = false;
@ -1021,6 +1073,9 @@ $(function() {
data: { id: data.id } data: { id: data.id }
}).done(function(response) { }).done(function(response) {
vdata = response.data; vdata = response.data;
$('#vid').val(vdata.vehicle.id);
$('#flag-new-customer').prop('checked', false).change();
// reset vehicle fields // reset vehicle fields
resetVehicleFields(); resetVehicleFields();
@ -1040,11 +1095,14 @@ $(function() {
$("#customer-phone-office").val(vdata.customer.phone_office); $("#customer-phone-office").val(vdata.customer.phone_office);
$("#customer-phone-fax").val(vdata.customer.phone_fax); $("#customer-phone-fax").val(vdata.customer.phone_fax);
$("#customer-customer-notes").val(vdata.customer.customer_notes); $("#customer-customer-notes").val(vdata.customer.customer_notes);
$("#vmfg").val(vdata.vehicle.mfg_name); $("#cv-mfg").val(vdata.vehicle.mfg_id);
// get vehicles for this manufacturer
get_vehicle_makes(vdata.vehicle.mfg_id, vdata.vehicle.id);
$("#vehicle-make").val(vdata.vehicle.make); $("#vehicle-make").val(vdata.vehicle.make);
$("#vehicle-year").val(vdata.vehicle.model_year); $("#cv-year").val(vdata.vehicle.model_year);
$("#vehicle-color").val(vdata.vehicle.color); $("#cv-color").val(vdata.vehicle.color);
$("#vehicle-plate").val(vdata.vehicle.plate_number); $("#cv-plate").val(vdata.vehicle.plate_number);
if (typeof vdata.battery !== 'undefined') { if (typeof vdata.battery !== 'undefined') {
$("#current-battery").val(vdata.battery.mfg_name + " " + vdata.battery.model_name + " " + vdata.battery.size_name + " (" + vdata.battery.prod_code + ")"); $("#current-battery").val(vdata.battery.mfg_name + " " + vdata.battery.model_name + " " + vdata.battery.size_name + " (" + vdata.battery.prod_code + ")");
@ -1123,17 +1181,52 @@ $(function() {
} }
}).change(); }).change();
// toggle new customer
$("#flag-new-customer").change(function() {
checked = $(this).prop('checked');
if (checked) {
$('.cust_field').prop('disabled', false);
$('.cv_field').prop('disabled', false);
$('.cust_field').val('');
$('.cv_field').val('');
$('#cv-make').val('');
} else {
$('.cust_field').prop('disabled', true);
$('.cv_field').prop('disabled', true);
}
}).change();
// vehicle manufacturer change
$("#cv-mfg").change(function() {
var id = $(this).val();
field = $('#cv-make');
// no id specified
if (!id) {
field.html('<option value="">Select a manufacturer first</option>').prop('disabled', true);
return true;
}
// get vehicles for this manufacturer
get_vehicle_makes(id);
});
// vehicle make change (store in vid)
$("#cv-make").change(function() {
$('#vid').val($('#cv-make').val());
$('#invoice-bmfg').change();
});
// update battery list when changing manufacturer // update battery list when changing manufacturer
$("#invoice-bmfg").change(function() { $("#invoice-bmfg").change(function() {
{% if ftags.preset_vehicle %} {% if ftags.preset_vehicle %}
vdata = { $('#vid').val({{ vid }});
'vehicle': {
'id': {{ vid }}
}
};
{% endif %} {% endif %}
// must have a selected vehicle // must have a selected vehicle
if (!vdata) vid = $('#vid').val();
if (vid == 0)
return; return;
var id = $(this).val(); var id = $(this).val();
@ -1151,7 +1244,7 @@ $(function() {
url: "{{ url('vehicle_batteries') }}", url: "{{ url('vehicle_batteries') }}",
data: { data: {
id: id, id: id,
vehicle_id: vdata.vehicle.id vehicle_id: vid
} }
}).done(function(response) { }).done(function(response) {
if (response.data.length > 0) { if (response.data.length > 0) {

View file

@ -19,21 +19,45 @@
<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">
<option value=""></option>
{% 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 +69,119 @@
{% 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 %}

View file

@ -19,21 +19,45 @@
<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>
</div> <label>Rider:</label>
<select class="form-control m-input" id="rider_list" name="rider_list">
<option value=""></option>
{% 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,88 +69,116 @@
{% 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_fulfill_rows') }}', data: {
method: 'POST' type: 'remote',
} source: {
}, read: {
saveState: { url: '{{ url('jo_fulfill_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: 'delivery_address',
title: 'Customer Area'
},
{
field: 'service_type',
title: 'Type of Transaction'
},
{
field: 'type',
title: 'Schedule'
}, },
{ saveState: {
field: 'date_schedule', cookie: false,
title: 'Scheduled Date' webstorage: false
}, },
{ pageSize: 10,
field: 'status', serverPaging: true,
title: 'Status' serverFiltering: true,
}, serverSorting: true
{ },
field: 'processor', rows: {
title: 'Dispatcher' beforeTemplate: function (row, data, index) {
}, if (data.flag_advance) {
{ $(row).addClass('m-table__row--danger');
field: 'Actions', }
width: 110, }
title: 'Actions', },
sortable: false, columns: [
overflow: 'visible', {
template: function (row, index, datatable) { field: 'id',
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>' + '<a href="' + row.meta.onestep_edit_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="One Step Edit"><i class="la la-edit"></i></a>'; title: 'JO Number'
},
{
field: 'delivery_address',
title: 'Customer Area'
},
{
field: 'service_type',
title: 'Type of Transaction'
},
{
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>' + '<a href="' + row.meta.onestep_edit_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="One Step Edit"><i class="la la-edit"></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() {
console.log($(this).val());
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 %}

View file

@ -19,21 +19,45 @@
<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>
</div> <label>Rider:</label>
<select class="form-control m-input" id="rider_list" name="rider_list">
<option value=""></option>
{% 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,104 +69,129 @@
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<script> <script>
$(function() { $(function() {
var options = { $("#date-range").datepicker({
data: { orientation: "bottom"
type: 'remote', });
source: { var options = {
read: { data: {
url: '{{ url('jo_open_rows') }}', type: 'remote',
method: 'POST' source: {
} read: {
}, url: '{{ url('jo_open_rows') }}',
saveState: { method: 'POST'
cookie: false, }
webstorage: false },
}, saveState: {
pageSize: 10, cookie: false,
serverPaging: true, webstorage: false
serverFiltering: true, },
serverSorting: true pageSize: 10,
}, serverPaging: true,
rows: { serverFiltering: true,
beforeTemplate: function (row, data, index) { serverSorting: true
if (data.flag_advance) { },
$(row).addClass('m-table__row--danger'); rows: {
} beforeTemplate: function (row, data, index) {
if (data.flag_advance) {
$(row).addClass('m-table__row--danger');
}
if (data.is_mobile) { if (data.is_mobile) {
$(row).addClass('m-table__row--is_mobile'); $(row).addClass('m-table__row--is_mobile');
} }
} }
}, },
columns: [ columns: [
{ {
field: 'id', field: 'id',
title: 'JO #' title: 'JO #'
}, },
{ {
field: 'plate_number', field: 'plate_number',
title: 'Plate #' title: 'Plate #'
}, },
{ {
field: 'customer_name', field: 'customer_name',
title: 'Customer' title: 'Customer'
}, },
{ {
field: 'delivery_address', field: 'delivery_address',
title: 'Area' title: 'Area'
}, },
{ {
field: 'type', field: 'type',
title: 'Schedule' title: 'Schedule'
}, },
{ {
field: 'date_schedule', field: 'date_schedule',
title: 'Scheduled Date' title: 'Scheduled Date'
}, },
{ {
field: 'status', field: 'status',
title: 'Status' title: 'Status'
}, },
{ {
field: 'processor', field: 'processor',
title: 'Dispatcher' title: 'Dispatcher'
}, },
{ {
field: 'Actions', field: 'Actions',
width: 110, width: 110,
title: 'Actions', title: 'Actions',
sortable: false, sortable: false,
overflow: 'visible', overflow: 'visible',
template: function (row, index, datatable) { template: function (row, index, datatable) {
var actions = '<a href="' + row.meta.reassign_hub_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-hub" title="Re-assign Hub"><i class="fa fa-home"></i></a>' + var actions = '<a href="' + row.meta.reassign_hub_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-hub" title="Re-assign Hub"><i class="fa fa-home"></i></a>' +
(row.status != '{{ statuses["pending"] }}' ? '<a href="' + row.meta.reassign_rider_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-focus m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-rider" title="Re-assign Rider"><i class="fa fa-truck"></i></a>' : ''); (row.status != '{{ statuses["pending"] }}' ? '<a href="' + row.meta.reassign_rider_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-focus m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-rider" title="Re-assign Rider"><i class="fa fa-truck"></i></a>' : '');
{% if is_granted('jo_open.edit') %} {% if is_granted('jo_open.edit') %}
actions += '<a href="' + row.meta.edit_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-hub" title="Edit"><i class="fa fa-file"></i></a>'; actions += '<a href="' + row.meta.edit_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-hub" title="Edit"><i class="fa fa-file"></i></a>';
{% endif %} {% endif %}
{% if is_granted('jo_onestep.edit') %} {% if is_granted('jo_onestep.edit') %}
actions += '<a href="' + row.meta.onestep_edit_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-hub" title="One Step Edit"><i class="fa fa-file"></i></a>'; actions += '<a href="' + row.meta.onestep_edit_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-reassign-hub" title="One Step Edit"><i class="fa fa-file"></i></a>';
{% endif %} {% endif %}
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 %}