Merge branch '317-delete-icon-for-battery-in-vehicle-screen' into 'master'
Resolve "Delete icon for battery in vehicle screen" Closes #317 See merge request jankstudio/resq!361
This commit is contained in:
commit
15ec71d3d0
2 changed files with 93 additions and 3 deletions
|
|
@ -241,6 +241,10 @@ class VehicleController extends Controller
|
||||||
if (empty($row))
|
if (empty($row))
|
||||||
throw $this->createNotFoundException('The item does not exist');
|
throw $this->createNotFoundException('The item does not exist');
|
||||||
|
|
||||||
|
// get current batteries of vehicle to be updated
|
||||||
|
$current_batteries = $row->getBatteries();
|
||||||
|
error_log('count of current batteries ' . count($current_batteries));
|
||||||
|
|
||||||
// set and save values
|
// set and save values
|
||||||
$row->setMake($req->request->get('make'))
|
$row->setMake($req->request->get('make'))
|
||||||
->setModelYearFrom($req->request->get('model_year_from'))
|
->setModelYearFrom($req->request->get('model_year_from'))
|
||||||
|
|
@ -251,7 +255,6 @@ class VehicleController extends Controller
|
||||||
else
|
else
|
||||||
$row->setDisplayMobile(false);
|
$row->setDisplayMobile(false);
|
||||||
|
|
||||||
|
|
||||||
// validate
|
// validate
|
||||||
$errors = $validator->validate($row);
|
$errors = $validator->validate($row);
|
||||||
|
|
||||||
|
|
@ -272,6 +275,50 @@ class VehicleController extends Controller
|
||||||
else
|
else
|
||||||
$row->setManufacturer($manufacturer);
|
$row->setManufacturer($manufacturer);
|
||||||
|
|
||||||
|
// custom validation for batteries
|
||||||
|
$batteries = $req->request->get('batteries');
|
||||||
|
if (!empty($batteries))
|
||||||
|
{
|
||||||
|
// need to check if a battery has been removed
|
||||||
|
if (count($current_batteries) > count($batteries))
|
||||||
|
{
|
||||||
|
// battery/batteries have been removed
|
||||||
|
foreach ($current_batteries as $cbatt)
|
||||||
|
{
|
||||||
|
$cbatt_id = $cbatt->getID();
|
||||||
|
if (in_array($cbatt_id, $batteries))
|
||||||
|
{
|
||||||
|
// do nothing, move to next element
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// cbatt_id has been deleted
|
||||||
|
$battery = $em->getRepository(Battery::class)->find($cbatt_id);
|
||||||
|
|
||||||
|
if (!empty($battery))
|
||||||
|
{
|
||||||
|
$battery->removeVehicle($row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// no more battery compatible with vehicle
|
||||||
|
foreach ($current_batteries as $c_battery)
|
||||||
|
{
|
||||||
|
$cbatt_id = $c_battery->getID();
|
||||||
|
$battery = $em->getRepository(Battery::class)->find($cbatt_id);
|
||||||
|
|
||||||
|
if (!empty($battery))
|
||||||
|
{
|
||||||
|
$battery->removeVehicle($row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check if any errors were found
|
// check if any errors were found
|
||||||
if (!empty($error_array)) {
|
if (!empty($error_array)) {
|
||||||
// return validation failure response
|
// return validation failure response
|
||||||
|
|
|
||||||
|
|
@ -135,13 +135,23 @@
|
||||||
$(function() {
|
$(function() {
|
||||||
$("#row-form").submit(function(e) {
|
$("#row-form").submit(function(e) {
|
||||||
var form = $(this);
|
var form = $(this);
|
||||||
|
var formdata = form.serialize();
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
// add battery data
|
||||||
|
bdata = '';
|
||||||
|
$.each(battRows, function(index, battery) {
|
||||||
|
bdata += "&batteries%5B%5D=" + battery.id;
|
||||||
|
});
|
||||||
|
|
||||||
|
// append to form data
|
||||||
|
formdata += bdata;
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: form.prop('action'),
|
url: form.prop('action'),
|
||||||
data: form.serialize()
|
data: formdata
|
||||||
}).done(function(response) {
|
}).done(function(response) {
|
||||||
// remove all error classes
|
// remove all error classes
|
||||||
removeErrors();
|
removeErrors();
|
||||||
|
|
@ -192,6 +202,7 @@ $(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
var battRows = [];
|
var battRows = [];
|
||||||
|
var batteryIds = [];
|
||||||
|
|
||||||
{% for batt in obj.getBatteries %}
|
{% for batt in obj.getBatteries %}
|
||||||
trow = {
|
trow = {
|
||||||
|
|
@ -202,8 +213,30 @@ $(function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
battRows.push(trow);
|
battRows.push(trow);
|
||||||
|
batteryIds.push({{ batt.getID }});
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
// remove battery from table
|
||||||
|
$(document).on('click', '.btn-delete', function(e) {
|
||||||
|
var btn = $(this);
|
||||||
|
var id = $(this).data('id');
|
||||||
|
|
||||||
|
$.each(battRows, function(index, battery) {
|
||||||
|
if (battery.id == id) {
|
||||||
|
battRows.splice(index, 1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// remove from battery ids
|
||||||
|
batteryIds.splice(batteryIds.indexOf(id), 1);
|
||||||
|
|
||||||
|
// reload table
|
||||||
|
battTable.row(btn.parents('tr')).remove();
|
||||||
|
battTable.originalDataSet = battRows;
|
||||||
|
battTable.reload();
|
||||||
|
});
|
||||||
|
|
||||||
// battery data table
|
// battery data table
|
||||||
var battOptions = {
|
var battOptions = {
|
||||||
data: {
|
data: {
|
||||||
|
|
@ -235,7 +268,17 @@ $(function() {
|
||||||
{
|
{
|
||||||
field: 'sell_price',
|
field: 'sell_price',
|
||||||
title: 'Price'
|
title: 'Price'
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
field: 'Actions',
|
||||||
|
width: 70,
|
||||||
|
title: 'Actions',
|
||||||
|
sortable: false,
|
||||||
|
overflow: 'visible',
|
||||||
|
template: function (row, index, datatable) {
|
||||||
|
return '<button data-id="' + row.id + '" type="button" class="m-portlet__nav-link btn m-btn m-btn--hover-danger m-btn--icon m-btn--icon-only m-btn--pill btn-delete" title="Delete"><i class="la la-trash"></i></button>';
|
||||||
|
},
|
||||||
|
}
|
||||||
],
|
],
|
||||||
pagination: false
|
pagination: false
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue