Add routes and UI elements to add compatible battery to vehicle. #323
This commit is contained in:
parent
bfbe4ca95e
commit
fd2fe4fb6f
4 changed files with 130 additions and 24 deletions
|
|
@ -39,6 +39,11 @@ battery_delete:
|
|||
controller: App\Controller\BatteryController::destroy
|
||||
methods: [DELETE]
|
||||
|
||||
battery_get:
|
||||
path: /ajax/battery_find
|
||||
controller: App\Controller\BatteryController::getBattery
|
||||
methods: [GET]
|
||||
|
||||
# battery manufacturers
|
||||
|
||||
bmfg_list:
|
||||
|
|
|
|||
|
|
@ -415,6 +415,32 @@ class BatteryController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
public function getBattery(Request $req)
|
||||
{
|
||||
// no access check, grant all for this ajax call
|
||||
|
||||
error_log($req->query->get('id'));
|
||||
// parse the id: model size
|
||||
$batt_specs = explode(" ", $req->query->get('id'));
|
||||
$bmodel_id = $batt_specs[0];
|
||||
$bsize_id = $batt_specs[1];
|
||||
|
||||
// find the battery using model and size
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$query = $em->createQuery('select b from App\Entity\Battery b join b.model bm
|
||||
join b.size bs
|
||||
where bm.id = :bm_id and bs.id = :bs_id')
|
||||
->setParameter('bm_id', $bmodel_id)
|
||||
->setParameter('bs_id', $bsize_id);
|
||||
|
||||
$result = $query->getResult();
|
||||
|
||||
foreach ($result as $row)
|
||||
{
|
||||
error_log('id ' . $row->getID());
|
||||
}
|
||||
}
|
||||
|
||||
// check if datatable filter is present and append to query
|
||||
protected function setQueryFilters($datatable, &$query) {
|
||||
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@ namespace App\Controller;
|
|||
|
||||
use App\Entity\Vehicle;
|
||||
use App\Entity\VehicleManufacturer;
|
||||
use App\Entity\BatteryManufacturer;
|
||||
use App\Entity\Battery;
|
||||
use App\Entity\BatteryModel;
|
||||
use App\Entity\BatterySize;
|
||||
|
||||
use Doctrine\ORM\Query;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
|
@ -225,6 +228,11 @@ class VehicleController extends Controller
|
|||
$params['years'] = $this->generateYearOptions();
|
||||
$params['obj'] = $row;
|
||||
|
||||
// get battery information for compatible batteries
|
||||
$params['bmfgs'] = $em->getRepository(BatteryManufacturer::class)->findAll();
|
||||
$params['bmodels'] = $em->getRepository(BatteryModel::class)->findAll();
|
||||
$params['bsizes'] = $em->getRepository(BatterySize::class)->findAll();
|
||||
|
||||
// response
|
||||
return $this->render('vehicle/form.html.twig', $params);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,23 +96,50 @@
|
|||
</div>
|
||||
|
||||
{% if mode == 'update' %}
|
||||
<div class="m-form__seperator m-form__seperator--dashed"></div>
|
||||
|
||||
<div class="m-form__section m-form__section--last">
|
||||
<div class="m-form__heading">
|
||||
<h3 class="m-form__heading-title">
|
||||
Compatible Batteries
|
||||
</h3>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-12">
|
||||
<div class="m_datatable" id="data-batts"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="m-form__seperator m-form__seperator--dashed"></div>
|
||||
<div class="m-form__section m-form__section--last">
|
||||
<div class="m-form__heading">
|
||||
<h3 class="m-form__heading-title">
|
||||
Compatible Batteries
|
||||
</h3>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-12">
|
||||
<div class="m_datatable" id="data-batts"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<label class="col-lg-1 col-form-label" data-field="battery_list">
|
||||
Add Battery:
|
||||
</label>
|
||||
<div class="col-lg-3">
|
||||
<select name="bmfg_list" class="form-control m-input" id="bmfg">
|
||||
{% for bmfg in bmfgs %}
|
||||
<option value="{{ bmfg.getID }}">{{ bmfg.getName }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<select name="bmodel_list" class="form-control m-input" id="bmodel">
|
||||
{% for bmodel in bmodels %}
|
||||
<option value="{{ bmodel.getID }}">{{ bmodel.getName }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<select name="bsize_list" class="form-control m-input" id="bsize">
|
||||
{% for bsize in bsizes %}
|
||||
<option value="{{ bsize.getID }}">{{ bsize.getName }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<button type="button" class="btn btn-primary" id="btn-add-battery" >Add to List</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="m-portlet__foot m-portlet__foot--fit">
|
||||
<div class="m-form__actions m-form__actions--solid m-form__actions--right">
|
||||
<div class="row">
|
||||
|
|
@ -201,19 +228,22 @@ $(function() {
|
|||
});
|
||||
});
|
||||
|
||||
// initialize battery arrays
|
||||
var battRows = [];
|
||||
var batteryIds = [];
|
||||
var battModelSize = []
|
||||
|
||||
{% for batt in obj.getBatteries %}
|
||||
trow = {
|
||||
id: "{{ batt.getID }}",
|
||||
model: "{{ batt.getModel.getName|default('') }}",
|
||||
size: "{{ batt.getSize.getName|default('') }}",
|
||||
sell_price: "{{ batt.getSellingPrice }}"
|
||||
};
|
||||
trow = {
|
||||
id: "{{ batt.getID }}",
|
||||
model: "{{ batt.getModel.getName|default('') }}",
|
||||
size: "{{ batt.getSize.getName|default('') }}",
|
||||
sell_price: "{{ batt.getSellingPrice }}"
|
||||
};
|
||||
|
||||
battRows.push(trow);
|
||||
batteryIds.push({{ batt.getID }});
|
||||
battRows.push(trow);
|
||||
batteryIds.push({{ batt.getID }});
|
||||
battModelSize.push({{ batt.getModel.getID }} + ' ' + {{ batt.getSize.getID }});
|
||||
{% endfor %}
|
||||
|
||||
// remove battery from table
|
||||
|
|
@ -237,6 +267,43 @@ $(function() {
|
|||
battTable.reload();
|
||||
});
|
||||
|
||||
// add a battery to the table
|
||||
$("#btn-add-battery").click(function() {
|
||||
var bmfg_id = $("#bmfg").val();
|
||||
var bmodel_id = $("#bmodel").val();
|
||||
var bsize_id = $("#bsize").val();
|
||||
|
||||
var bmodelsize = (bmodel_id + ' ' + bsize_id);
|
||||
|
||||
console.log(bmodelsize);
|
||||
|
||||
if (battModelSize.indexOf(bmodelsize) !== -1) {
|
||||
swal({
|
||||
title: 'Whoops',
|
||||
text: 'This battery is already on the list.',
|
||||
type: 'warning'
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
// get the battery given the model and size
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "{{ url('battery_get') }}",
|
||||
data: {id: bmodelsize}
|
||||
}).done(function(response) {
|
||||
|
||||
})
|
||||
|
||||
// add battery to arrays
|
||||
battModelSize.push(bmodelsize);
|
||||
|
||||
// refresh the data table
|
||||
battTable.originalDataSet = battRows;
|
||||
battTable.reload();
|
||||
|
||||
});
|
||||
|
||||
// battery data table
|
||||
var battOptions = {
|
||||
data: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue