Tankolás működik

This commit is contained in:
Vincze József 2023-10-19 12:50:31 +02:00
parent 1e70fb7f5a
commit 882372dd7b
8 changed files with 170 additions and 59 deletions

1
app.js
View File

@ -199,6 +199,7 @@ app.use('/fullcalendar',express.static(path.join(__dirname, 'node_modules/@fullc
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'media')));
app.use(express.static(path.join(__dirname, 'docs')));
app.use(express.static(path.join(__dirname, '/views/Modals')));
app.use(flash());
// Express session middlevare
app.use(session({

View File

@ -227,35 +227,63 @@ exports.apiRefuelingById=asyncHandler(async (req,res)=>{
// Tankolás adatainak lekérdezése
exports.apiGetFueling=asyncHandler(async (req,res)=>{
if (isValidObjectId(req.params.id)==false)
const {id, selectedMonth}=req.params;
if (isValidObjectId(id)==false)
{
req.flash('error','Nem létező jármű');
res.redirect('/');
return;
}
var firstDay= moment(selectedMonth,"YYYY.MM").startOf('month').toISOString();
var lastDay = moment(selectedMonth,"YYYY.MM").endOf('month').toISOString();
try{
const vehicle=await Vehicle//.findById(req.params.id).sort({dateTime:-1});
.aggregate([
{ "$match" : { _id: mongoose.Types.ObjectId(id) } },
{ "$unwind" : "$refueling"} ,
{"$match": {
"refueling.dateTime":{
$gte: new Date(firstDay),
$lte: new Date(lastDay)
}
}
},
{ "$sort" : { "refueling.dateTime" : 1}},
{ "$group" : { "refueling" : { "$push" : { "dateTime" : "$refueling.dateTime", "quantity": "$refueling.quantity","kilometer":"$refueling.kilometer","fueledHUF":"$refueling.fueledHUF"}} , "_id" : "$_id"}},
])
const vehicle=await Vehicle.findById(req.params.id);
if (vehicle)
if (vehicle.length)
{
var fueling=[];
vehicle.refueling.forEach(element => {
fueling.push({
id: element._id,
title:"Tankolás <br /> "+element.quantity+" l "+element.kilometer+" km "+element.fueledHUF+" Ft",
start:element.dateTime,
allDay:false
})
});
res.status(200).send(fueling)
// Átlagfogyasztás számítás
if (vehicle[0].refueling.length>=2)
{
var refueling=vehicle[0].refueling;
var kmStart=refueling[0].kilometer; // Kezdő kilométer
var kmEnd=refueling[refueling.length-1].kilometer; // Utolsó kilométer
var kmRun=kmEnd-kmStart; // Megtett út:
var tankoltMennyiseg=0;
var fogyasztas=0;
// Tankolások összegzése (az utolsót nem számoljuk bele)
refueling.forEach(function(element,idx,array) {
if (idx<array.length-1)
{
tankoltMennyiseg+=element.quantity;
}
})
fogyasztas=tankoltMennyiseg/(kmRun/100)
console.log('Menny: '+tankoltMennyiseg)
console.log('Fogyasztás: '+fogyasztas)
}
res.status(200).send({refueling:refueling,fueledSum:tankoltMennyiseg,fuelConsumption:fogyasztas})
}
else
{
res.status(404).send('Error')
res.status(200).send()
}
}
catch(e){
res.status(500).json({'Error':e})
}
})
// Beállítások olvasása

View File

@ -2,7 +2,7 @@ let mongoose = require('mongoose');
const vehicleSchema=new mongoose.Schema({
name: {type: String, require: true},
persons: Number,
vehicle_id: {type: String, require: true},
@ -52,5 +52,7 @@ const vehicleSchema=new mongoose.Schema({
heading: Number
} ]
});
//var Route = module.exports = mongoose.model('Route', routeSchema);
var Vehicle = module.exports = mongoose.model('Vehicle', vehicleSchema);

View File

@ -10,7 +10,7 @@ const { apiGetVehicles, apiRefuelingById, apiGetVehicle, apiUpdateVehicle, apiOi
router.route('/api/getVehicles').get(apiGetVehicles);
router.route('/api/refueling/').post(apiRefuelingById);
router.route('/api/fueling/:id').get(apiGetFueling);
router.route('/api/fueling/:id/:selectedMonth').get(apiGetFueling);
router.route('/api/getVehicle/:id').get(apiGetVehicle);
router.route('/api/updateVehicle/:id').post(apiUpdateVehicle);
router.route('/api/oilchangeVehicle/:id').post(apiOilChangeVehicle);

View File

@ -0,0 +1,99 @@
#fuelingModal.modal(tabindex='-1', role='dialog', aria-labelledby='fuelingModalLabel', aria-hidden='true')
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
.modal-dialog(role='document', style='width:1000px;')
.modal-content
.modal-header#fuelingHeader.bg-primary(style="background: Primary")
h4#vehicleId.modal-title
h6#id
.modal-body
.container(style='width:100%;')
#darktable.container
table#fuelingTable(style='width:100%;')
col(width='2%')
col(width='10%')
col(width='10%')
col(width='10%')
col(width='8%')
thead
tr
th
h1(style='text-align:right') #
th
h1(style='text-align:center') Időpont
th
h1(style='text-align:center') Mennyiség
th
h1(style='text-align:center') Kilométer óra állás
th
h1(style='text-align:center') Összeg
tbody
h4(style="height:12px")#sum
h4(style="height:12px")#consumption
br
.modal-footer
.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;')
span.input-group-addon
span.glyphicon.glyphicon-calendar
button#fmodalClose.btn.btn-primary(type='button', data-dismiss='modal') Bezár
//-button.btn.btn-primary(type='submit') Rendben
script.
// Generate Table
var createTable=function (data){
var sum=0;
var consumption=0;
$('#fuelingTable > tbody').empty();
if (data)
{
$.each(data.refueling,function(i,el){
var newRow=$('<tr class="clickable-row" id='+el._id+' data-href=/employee/detailstemp/'+el._id+'>"'+//);
'<td style="text-align:right">'+(i+1)+'</td>'+
'<td style="text-align:center">'+moment(el.dateTime).format("YYYY.MM.DD")+'</td>'+
'<td style="text-align:center">'+el.quantity+' l'+'</td>'+
'<td style="text-align:center">'+el.kilometer.toLocaleString('hu-HU')+' km'+'</td>'+
'<td style="text-align:center">'+el.fueledHUF.toLocaleString('hu-HU')+' Ft'+'</td>'+
'</tr>');
$('#fuelingTable > tbody:last-child').append (newRow);
sum+=parseInt(el.fueledHUF);
})
consumption= data.fuelConsumption;
}
$('#sum').text('Összesen: '+sum.toLocaleString('hu-HU')+' Ft')
$('#consumption').text('Fogyasztás: '+consumption.toLocaleString('hu-HU')+' l/100km')
}
// Tankolás modal
$('#fuelingModal').on('show.bs.modal', function () {
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');
var selectedDate=$('#datetimepickerFuel').data("DateTimePicker").viewDate().format("YYYY.MM");
$(this).find('#vehicleId').html($('<b> Tankolások: '+ getVnameFromRow + '</b> <b style="float:right">'+getVidFromRow+'</b>' ))
$('#id').text(getIdFromRow);
$.get('/vehicles/api/fueling/'+getIdFromRow+'/'+selectedDate,function(data)
{
createTable(data);
})
})
$(document).ready(function () {
$('#datetimepickerFuel').datetimepicker({
locale: 'hu',
format: 'LD',
defaultDate: new Date(),
inline: false,
sideBySide: true,
showTodayButton: true,
format: 'YYYY.MM'
}).on('dp.change',function(e){
var calcdate=moment(e.date).format('YYYY.MM');// new Date($('#calcDate').val());
//moment.locale('hu');
var id=$('#id').text();
//document.getElementById('month').innerHTML='Munkaidő lista '+moment(calcdate,'YYYY.MM').format('MMMM');
$.get('/vehicles/api/fueling/'+id+'/'+calcdate,function(data)
{
createTable(data);
})
});
});

View File

@ -24,7 +24,7 @@ html
link(rel='stylesheet', href='/css/sidebar.css')
link(rel='stylesheet' href='/bower_components/jquery-typeahead/dist/jquery.typeahead.min.css')
link(rel='stylesheet' href='/css/darktable.css')
link(rel='stylesheet' href='/css/infopanel.css')
//link(rel='stylesheet' href='/css/infopanel.css')
style.
div.a {
text-indent: 50px;
@ -100,7 +100,7 @@ html
script(type='text/javascript',src='/build/vfs_fonts.js')
script.
window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\\/script>')
//window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\\/script>')
// Get current page and set current in nav
$(document).ready(function(){

View File

@ -15,8 +15,10 @@ block content
link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css')
link(href='/bower_components/bootstrap-toggle/css/bootstrap-toggle.min.css', rel='stylesheet', type='text/css')
link(href='https://cdn.jsdelivr.net/gh/gitbrent/bootstrap-switch-button@1.1.0/css/bootstrap-switch-button.min.css' rel='stylesheet')
//-link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css')
include modal_settings
include Modals/modal_settings
include Modals/modal_fuelingInfo
#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')
@ -29,18 +31,7 @@ block content
.modal-footer
button.btn.btn-primary(type='button', data-dismiss='modal') Bezár
//-button.btn.btn-primary(type='submit') Rendben
#fuelingModal.modal(tabindex='-1', role='dialog', aria-labelledby='fuelingModalLabel', aria-hidden='true')
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
.modal-dialog(role='document', style='width:1000px')
.modal-content
.modal-header#fuelingHeader.bg-primary(style="background: Primary")
h4#vehicleId.modal-title A
.modal-body
#calendarFuel(style="background-color: white")
br
.modal-footer
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',
@ -77,7 +68,7 @@ block content
.row
.col-sm-6
.form-group
label.form-label(for='editVehicleName') Megnevezés:
label.form-label(for='editVehicleName' style="color: black !important") Megnevezés:
input#editVehicleName.form-control(name='editVehicleName',type=text, autofocus,tabindex='1', readonly=false,width='1000')
.col-sm-3
.form-group
@ -223,29 +214,19 @@ block content
$('tr[data-href]').on("click", function() {
document.location = $(this).data('href');
});
// Tankolás modal
$('#fuelingModal').on('show.bs.modal', function () {
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');
//$("#fuelingHeader").html(getIdFromRow);
$(this).find('#vehicleId').html($('<b> Tankolások: '+ getVnameFromRow + '</b> <b style="float:right">'+getVidFromRow+'</b>' ))
$.get('/vehicles/api/fueling/'+getIdFromRow,function(data)
{
var calendarEl = document.getElementById('calendarFuel');
var calendarFuel = new FullCalendar.Calendar(calendarEl, {
//themeSystem: 'bootstrap',
initialView: 'dayGridMonth',
locale: 'hu',
firstDay: 1,
initialEvents: data,
weekNumbers: true,
themeSystem: 'default'
});
calendarFuel.render();
})
})
/* function renderEventContent(eventInfo) {
return (
' <div> \
<p>{eventInfo.timeText}</p> \
<i>{eventInfo.event.title}</i> \
<button>123</button> \
</div>'
);
}*/
/* function haha(dayRenderInfo){
console.log(dayRenderInfo)
}*/
// Szerkesztés modal
$('#vehicleEditModal').on('show.bs.modal', function () {
var getIdFromRow = $(event)[0].currentTarget.activeElement.getAttribute('data-id')//$(event.target).closest('tr').data('id');