Olajcsere array hozzáadva

This commit is contained in:
Vincze József 2023-10-20 12:45:32 +02:00
parent 882372dd7b
commit a190714cfb
5 changed files with 188 additions and 102 deletions

View File

@ -63,7 +63,26 @@ exports.apiGetVehicle=asyncHandler(async (req,res)=>{
if (vehicle)
{
res.status(200).send(vehicle)
if (!vehicle.oilChangeLast)
{
const arc = { ...vehicle.toObject(), oilChangeLastVal: 0};
res.status(200).send(arc);
return;
}
var oilChangeLastVal= getTopN(vehicle.oilChangeLast,'kilometer',1);
if (!oilChangeLastVal.length)
{
const arc = { ...vehicle.toObject(), oilChangeLastVal: 0};
res.status(200).send(arc);
return;
}
const arc = { ...vehicle.toObject(), oilChangeLastVal: oilChangeLastVal[0].kilometer};
res.status(200).send(arc)
}
else
{
@ -89,7 +108,7 @@ exports.apiUpdateVehicle=asyncHandler(async (req,res) => {
persons: req.body.persons,
vehicle_id: req.body.vehicleId,
oilChangeInterval: req.body.oilChangeInterval,
oilChangeLast:req.body.oilChangeLast,
//oilChangeLast:req.body.oilChangeLast,
visible: req.body.visible
},function(err,docs){
if (err){
@ -107,7 +126,7 @@ exports.apiUpdateVehicle=asyncHandler(async (req,res) => {
});
// Olajcsere
exports.apiOilChangeVehicle=asyncHandler(async (req,res) => {
const {oilChangeLast, oilChangeDate}=req.body;
// Get errors
if (isValidObjectId(req.params.id)==false)
{
@ -115,10 +134,25 @@ exports.apiOilChangeVehicle=asyncHandler(async (req,res) => {
res.status(400).send('Nem Létező Jármű!')
return;
}
let vehicle={}
Vehicle.findByIdAndUpdate(req.params.id,{
/* if (!oilChangeDate._isAMomentObject)
{
res.status(400).send('Dátum hiba!')
return;
}*/
try{
await Vehicle.findByIdAndUpdate(req.params.id,
{$push:{oilChangeLast:{
dateTime: Date.parse(oilChangeDate),
kilometer:oilChangeLast}
}
})
res.status(200).send('Sikeres rögzítés')
}
catch(e)
{
res.status(500).send(e.message)
}
/*Vehicle.findByIdAndUpdate(req.params.id,{
oilChangeLast: req.body.oilChangeLast
},function(err,docs){
if (err){
@ -131,11 +165,20 @@ exports.apiOilChangeVehicle=asyncHandler(async (req,res) => {
//res.redirect('/vehicles/view');
res.status(200).send('Sikeres rögzítés')
}
})
})*/
});
// JSON Legnagyobb érték a tömbben
function getTopN(arr, prop, n) {
var clone = arr.slice(0);
// sort descending
clone.sort(function(x, y) {
if (x[prop] == y[prop]) return 0;
else if (parseInt(x[prop]) < parseInt(y[prop])) return 1;
else return -1;
});
return clone.slice(0, n);
}
// Közeli dátum
// az adott dátum előtt nem lehet nagyobb óraállás egyébként return -1
// az adott dátum után nem lehet kisebb óraállás egyébként return 1
@ -190,9 +233,9 @@ exports.apiRefuelingById=asyncHandler(async (req,res)=>{
res.redirect('/');
return;
}
var oilChangeLast= getTopN(vehicle.oilChangeLast,'kilometer',1)[0].kilometer;
const settings=await Settings.find({name:"vehicleEmailNotify"});
var nextOilChange=vehicle.oilChangeLast+vehicle.oilChangeInterval
var nextOilChange=oilChangeLast+vehicle.oilChangeInterval
var remainingKilometers=nextOilChange-parseInt(kmcounter);
if(nextOilChange<=(parseInt(kmcounter)+5000))
@ -213,7 +256,10 @@ exports.apiRefuelingById=asyncHandler(async (req,res)=>{
console.log(req.body)
//res.status(204).send()
await Vehicle.findByIdAndUpdate(vehicleId,
{$push:{refueling:{
{ $set:{
oilChangeRemainingKm:remainingKilometers
},
$push:{refueling:{
dateTime: Date.parse(refuelPicker),
quantity:fueledqty,
fueledHUF:fueledHUF,

View File

@ -14,7 +14,11 @@ const vehicleSchema=new mongoose.Schema({
fueledHUF:{type: Number,require:true}
}],
oilChangeInterval:{type: Number,require:true,default: 50000},
oilChangeLast:{type: Number,require:true,default: 0},
oilChangeRemainingKm:{type: Number,require:true,default: 0},
oilChangeLast:[{
kilometer:{type: Number,require:true,default: 0},
dateTime:{type: Date,require: true},
}],
/* service: [
{
dateTime_Start:{type: Date,require: true},

View File

@ -5,7 +5,7 @@
.modal-header#fuelingHeader.bg-primary(style="background: Primary")
h4#vehicleId.modal-title
h6#id
.modal-body
.modal-body(style='background-color:#4f5b69')
.container(style='width:100%;')
#darktable.container
table#fuelingTable(style='width:100%;')
@ -27,10 +27,11 @@
th
h1(style='text-align:center') Összeg
tbody
h4(style="height:12px")#sum
h4(style="height:12px")#consumption
#darktable.container
h4(style="height:12px;color:#64b4da")#sum
h4(style="height:12px;color:#64b4da")#consumption
br
.modal-footer
.modal-footer(style="background-color: #2C3446")
.form-group(style="width:150px;float:left")
#datetimepickerFuel.input-group.date
input.form-control(id='calcDate',name='dateEmission', tabindex='6',type='text',style='color: white;background-color:#2C3446;')

View File

@ -0,0 +1,109 @@
link(rel='stylesheet', type='text/css', href='https://unpkg.com/lightpick@latest/css/lightpick.css')
#oilChangeModal.modal(tabindex='-1',
role='dialog',
aria-labelledby='oilChangeModalLabel',
aria-hidden='true',
)
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
.modal-dialog(role='document', style='width:720px')
.modal-content
.modal-header#oilChangeHeader.bg-primary(style="background: Primary")
h4#vehicleId.modal-title A
.modal-body
.form-group
label.form-label(for='oilChangePicker') Olaj csere időpontja
.input-group
input.form-control(id='oilChangePicker',required,placeholder='Olaj csere időpontja',name='oilChangePicker',type=text, tabindex='2',readonly,style='background-color:#c9ddfc;')
span.input-group-addon
span.glyphicon.glyphicon-calendar
.form-group
//-input#oilChangeLast.form-control(name="oilChangeLast" readonly min=0 type='number')
.input-group
span.input-group-addon.transparent
span.glyphicon.glyphicon-user
input#oilChangeKilometer.form-control(name="oilChangeKilometer" placeholder='Óra állás olajcsere után' min=0 type='number')
p.help-block.hidden Please enter a name 3 characters or more.
.modal-footer
button.btn.btn-primary(type='button', data-dismiss='modal')
i.fa.fa-arrow-left
| | Bezár
button#oilChangeSave.btn.btn-primary(type='button' )
i.fa.fa-save
| | Mentés
script(type='text/javascript', src='/bower_components/moment/min/moment.min.js')
script(src='https://unpkg.com/lightpick@latest/lightpick.js')
script.
//- Olajcsere modal
$('#oilChangeModal').on('show.bs.modal', function () {
$(this).find('form').trigger('reset');
var getIdFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-id')//$(event.target).closest('tr').data('id');
var getVidFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-vid');//$(event.target).closest('tr').data('vid');
var getVnameFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-name');//$(event.target).closest('tr').data('name');
$('#vehicleId').val(getIdFromRow);
//-$("#fuelingHeader").html(getIdFromRow);
$(this).find('#vehicleId').html($('<b> Olaj csere: '+ getVnameFromRow + '</b> <b style="float:right">'+getVidFromRow+'</b>' ))
$.get('/vehicles/api/getVehicle/'+getIdFromRow,function(data)
{
//- $('#editVehicleName').val(data.name);
//- $('#editVehiclePersons').val(data.persons);
//- $('#editVehicleId').val(data.vehicle_id);
//- $('#editOilChange').val(data.oilChangeInterval);
//- $('#oilChangeKilometer').val(data.oilChangeLast);
$('#oilChangeLast').val(data.oilChangeLast);
})
//- Mentés
})
$( "#oilChangeSave" ).click(function() {
event.preventDefault();
//-validate name
var th=$(this);
var oilChangeKilometer = $('#oilChangeKilometer').val();
var oilChangeLast=$('#oilChangeLast').val();
var oilChangeDate=picker.getDate();
const editId = $('#vehicleId').val();
if (oilChangeKilometer.length < 4) {
return showErrorSuccess($('#oilChangeKilometer'), false, 'Legalláb 4 karakter!');
}
if (oilChangeKilometer<=oilChangeLast) {
return showErrorSuccess($('#oilChangeKilometer'), false, 'Az olajcsere óra állása nem lehet kisebb, mint az előző!');
}
//- disable button
$(this).prop("disabled", true);
//- add spinner to button
$(this).html('<i class="fa fa-circle-o-notch fa-spin"></i> Várjon!');
showErrorSuccess($('#oilChangeKilometer'));
$.post( "/vehicles/api/oilchangeVehicle/"+editId, { oilChangeLast:oilChangeKilometer,oilChangeDate:oilChangeDate.toISOString()})
.done(function( data ) {
// disable button
th.prop("disabled", false);
// add spinner to buttoni.fa.fa-save
th.html('<i class="fa fa-save"></i> Mentés');
$('.modal-backdrop').remove()
$('#oilChangeModal').hide();
}).fail(function(xhr,status,error){
alert( "Hiba: " + xhr.responseText );
// disable button
th.prop("disabled", false);
// add spinner to buttoni.fa.fa-save
th.html('<i class="fa fa-save"></i> Mentés');
})
});
var picker = new Lightpick({ field: document.getElementById('oilChangePicker'),
singleDate: true,
inline: false,
//numberOfColumns: 2,
//numberOfMonths: 4,
format: 'YYYY.MM.DD',
disableWeekends: false,
maxDate: moment(),
//maxDays: remaining,
//disableDates: [['21.09.2020', '22.09.2020'], ['24.09.2020', '25.09.2020']],
});

View File

@ -19,6 +19,7 @@ block content
//-link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css')
include Modals/modal_settings
include Modals/modal_fuelingInfo
include Modals/modal_oilChange
#vehicleModal.modal(tabindex='-1', role='dialog', aria-labelledby='vehicleModalLabel', aria-hidden='true')
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
.modal-dialog(role='document', style='width:720px')
@ -32,32 +33,6 @@ block content
button.btn.btn-primary(type='button', data-dismiss='modal') Bezár
//-button.btn.btn-primary(type='submit') Rendben
#oilChangeModal.modal(tabindex='-1',
role='dialog',
aria-labelledby='oilChangeModalLabel',
aria-hidden='true',
)
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
.modal-dialog(role='document', style='width:720px')
.modal-content
.modal-header#oilChangeHeader.bg-primary(style="background: Primary")
h4#vehicleId.modal-title A
.modal-body
.form-group
//-input#oilChangeLast.form-control(name="oilChangeLast" readonly min=0 type='number')
.input-group
span.input-group-addon.transparent
span.glyphicon.glyphicon-user
input#oilChangeKilometer.form-control(name="oilChangeKilometer" placeholder='Óra állás olajcsere után' min=0 type='number')
p.help-block.hidden Please enter a name 3 characters or more.
.modal-footer
button.btn.btn-primary(type='button', data-dismiss='modal')
i.fa.fa-arrow-left
| | Bezár
button#oilChangeSave.btn.btn-primary(type='button' )
i.fa.fa-save
| | Mentés
#vehicleEditModal.modal(tabindex='-1', role='dialog', aria-labelledby='vehicleEditModalLabel', aria-hidden='true')
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
.modal-dialog(role='document', style='width:720px')
@ -90,7 +65,7 @@ block content
.col-sm-6
.form-group
label.form-label(for='editLastOilChange') Legutóbbi Olajcsere:
input#editLastOilChange.form-control(name='editLastOilChange',type=number, tabindex='4', readonly=false,required=true)
input#editLastOilChange.form-control(name='editLastOilChange',type=number, tabindex='4', readonly,required=true)
p.help-block.hidden Please enter a name 3 characters or more.
.col-sm-6
#form-group
@ -114,7 +89,7 @@ block content
table#vehicleTable(style='width:100%;')
col(width='5%')
col(width='20%')
col(width='10%')
col(width='8%')
col(width='10%')
col(width='8%')
col(width='8%')
@ -128,7 +103,7 @@ block content
th
h1 Megnevezés
th
h1(style='text-align:center') Személyek
h1(style='text-align:left') Személyek
th
h1(style='text-align:left') Rendszám
th
@ -137,6 +112,8 @@ block content
h1(style='text-align:center') Tankolások
th
h1(style='text-align:center') Olajcsere
th
h1(style='text-align:center') Esedékes Olajcsere
th
h1(style='text-align:center') Utolsó pozíció
th
@ -145,7 +122,6 @@ block content
tbody
each vehicle, i in Vehicles
if(vehicle.visible==true || showAll==true)
tr
//-.clickable-clientRow(data-id=vehicle._id, data-vid=vehicle.vehicle_id,data-name=vehicle.name,data-toggle='modal', data-target='#vehicleModal')
//-data-href="/vehicles/details/"+vehicle._id,
@ -162,6 +138,7 @@ block content
td(style='text-align:center')
button.btn.btn-primary(data-id=vehicle._id, data-vid=vehicle.vehicle_id,data-name=vehicle.name,data-toggle='modal', data-target='#oilChangeModal',style='width:40px;',type='button')
i.fa.fa-tint
td(style='text-align:center') #{vehicle.oilChangeRemainingKm} km
if (vehicle.lastCity.length>0)
td(style='text-align:center; font-size: 12px') #{lastPos=vehicle.lastCity.at(-1).city} #{moment(vehicle.lastCity.at(-1).timestamp).format("YYYY.MM.DD HH:mm")}
else
@ -171,6 +148,7 @@ block content
i.fa.fa-edit
script(type='text/javascript', src='/bower_components/bootstrap-toggle/js/bootstrap-toggle.min.js')
script(src='https://cdn.jsdelivr.net/gh/gitbrent/bootstrap-switch-button@1.1.0/dist/bootstrap-switch-button.min.js')
script.
// $(document).ready(function () {
// Get current page name
@ -241,7 +219,7 @@ block content
$('#editVehiclePersons').val(data.persons);
$('#editVehicleId').val(data.vehicle_id);
$('#editOilChange').val(data.oilChangeInterval);
$('#editLastOilChange').val(data.oilChangeLast);
$('#editLastOilChange').val(data.oilChangeLastVal);
$('#vehicleId').val(getIdFromRow);
if (data.visible)
{
@ -318,59 +296,7 @@ block content
})
})
});
// Olajcsere modal
$('#oilChangeModal').on('show.bs.modal', function () {
$(this).find('form').trigger('reset');
var getIdFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-id')//$(event.target).closest('tr').data('id');
var getVidFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-vid');//$(event.target).closest('tr').data('vid');
var getVnameFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-name');//$(event.target).closest('tr').data('name');
$('#vehicleId').val(getIdFromRow);
//$("#fuelingHeader").html(getIdFromRow);
$(this).find('#vehicleId').html($('<b> Olaj csere: '+ getVnameFromRow + '</b> <b style="float:right">'+getVidFromRow+'</b>' ))
$.get('/vehicles/api/getVehicle/'+getIdFromRow,function(data)
{
$('#editVehicleName').val(data.name);
$('#editVehiclePersons').val(data.persons);
$('#editVehicleId').val(data.vehicle_id);
$('#editOilChange').val(data.oilChangeInterval);
$('#oilChangeKilometer').val(data.oilChangeLast);
$('#oilChangeLast').val(data.oilChangeLast);
})
// Mentés
})
$( "#oilChangeSave" ).click(function() {
event.preventDefault();
//validate name
var th=$(this);
var oilChangeKilometer = $('#oilChangeKilometer').val();
var oilChangeLast=$('#oilChangeLast').val();
const editId = $('#vehicleId').val();
if (oilChangeKilometer.length < 4) {
return showErrorSuccess($('#oilChangeKilometer'), false, 'Legalláb 4 karakter!');
}
if (oilChangeKilometer<=oilChangeLast) {
return showErrorSuccess($('#oilChangeKilometer'), false, 'Az olajcsere óra állása nem lehet kisebb, mint az előző!');
}
// disable button
$(this).prop("disabled", true);
// add spinner to button
$(this).html('<i class="fa fa-circle-o-notch fa-spin"></i> Várjon!');
showErrorSuccess($('#oilChangeKilometer'));
$.post( "/vehicles/api/oilchangeVehicle/"+editId, { oilChangeLast:oilChangeKilometer})
.done(function( data ) {
// disable button
th.prop("disabled", false);
// add spinner to buttoni.fa.fa-save
th.html('<i class="fa fa-save"></i> Mentés');
$('.modal-backdrop').remove()
$('#oilChangeModal').hide();
}).fail(function(xhr,status,error){
alert( "Hiba: " + xhr.responseText );
})
});
// Pozíció Modal
$('#vehicleModal').on('show.bs.modal', function () {
var getIdFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-id')//$(event.target).closest('tr').data('id');