diff --git a/app.js b/app.js index 633e8fe..4d90e2a 100644 --- a/app.js +++ b/app.js @@ -24,8 +24,8 @@ var PdfPrinter=require('pdfmake'); //const util = require('util'); //var currentWorkNumber=0; const { XMLParser, XMLBuilder, XMLValidator} = require("fast-xml-parser/src/fxp"); -const { apiSaveReport, apiGetReport, apiGetReportList, apiGetUsers } = require('./js/workReport.js'); - +const { apiSaveReport, apiGetReport, apiGetReportList, apiGetUsers, apiGetReportDates, apiUpdateReport } = require('./js/workReport.js'); +moment.locale('HU'); const fss = require('fs'); global.currentWorkNumber=0; mongoose.Promise = global.Promise; @@ -1871,10 +1871,11 @@ app.get('/media/:file', function(req, res) { }); app.route('/workreport').post(apiSaveReport); +app.route('/workreportUpdate').post(apiUpdateReport); app.route('/workreportUserList').get(apiGetUsers); app.route('/workreport/:id').get(apiGetReport); app.route('/workreportList/:id').get(apiGetReportList); - +app.route('/workreportDates/:id').get(apiGetReportDates); // Route Files app.locals.moment = require('moment'); //app.use('/articles', articles); @@ -1898,6 +1899,7 @@ let components_base=require('./routes/components_base'); let bid=require('./routes/bid'); let vehicles=require('./routes/vehicles'); let quotes=require('./routes/quotes'); +let workReport=require('./routes/workReport'); const { date } = require('jszip/lib/defaults'); const { apiGetWorkList, apiGetEmployeeList, apiGetDailyReport, apiEmployee, apiGetAllReport, apiCheckDevice, apiRegisterDevice,apiRequestAPIkey, apiGetQRCode,apiGetWorkState } = require('./js/androidApi'); @@ -1924,6 +1926,7 @@ app.use('/certificates_mc',certificates_mc); app.use('/components',components); app.use('/components_base',components_base); app.use('/quotes',quotes); +app.use('/workReport',workReport); // Kábel mérési jegyzőkönyv //apkUpdater.enable(app, '/anyUpdateServerRoute'); diff --git a/js/workReport.js b/js/workReport.js index 0882395..90aa4ba 100644 --- a/js/workReport.js +++ b/js/workReport.js @@ -3,7 +3,7 @@ let Employee = require('../models/employee'); const asyncHandler = require('express-async-handler'); var mongoose = require('mongoose'); const moment = require('moment'); - +/* exports.apiSaveReport=asyncHandler(async (req,res)=>{ const {workId,foremanId,date, workTitle,employeeList }=req.body; const workReport = new WorkReport({ @@ -24,7 +24,59 @@ exports.apiSaveReport=asyncHandler(async (req,res)=>{ } }); +*/ +exports.apiSaveReport=asyncHandler(async (req,res)=>{ + const {workId,foremanId,date, workTitle,workFlow }=req.body; + const workReport = new WorkReport({ + workId: mongoose.Types.ObjectId(workId), + date:new Date(date), + foremanId: mongoose.Types.ObjectId(foremanId), + workTitle: workTitle, + workFlow: workFlow + + }) + res.setHeader('Content-Type', 'application/json'); + try{ + await workReport.save(); + res.send({'response':'ok','message':'Sikeresen létrehozva!'}); + }catch(err){ + + res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message}); + } + +}); + +exports.apiUpdateReport=asyncHandler(async (req,res)=>{ + const {workReport }=req.body; + + + res.setHeader('Content-Type', 'application/json'); + try{ + await WorkReport.replaceOne( + {_id: mongoose.Types.ObjectId(workReport._id)}, + workReport + ) + res.send({'response':'ok','message':'Sikeresen mentve!'}); + }catch(err){ + + res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message}); + } + +}); +/*exports.apiGetReport=asyncHandler(async (req,res)=>{ + //const {workId,foremanId, workTitle,employeeList }=req.body; + + res.setHeader('Content-Type', 'application/json'); + try{ + const reports=await WorkReport.find({workId: mongoose.Types.ObjectId(req.params.id)}) + res.send({'response':'ok','reports':reports}); + }catch(err){ + + res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message}); + } + +});*/ exports.apiGetReport=asyncHandler(async (req,res)=>{ //const {workId,foremanId, workTitle,employeeList }=req.body; @@ -38,6 +90,26 @@ exports.apiGetReport=asyncHandler(async (req,res)=>{ } }); + +// Használt dátumok +exports.apiGetReportDates=asyncHandler(async (req,res)=>{ + //const {workId,foremanId, workTitle,employeeList }=req.body; + + res.setHeader('Content-Type', 'application/json'); + try{ + const reports=await WorkReport.find({workId: mongoose.Types.ObjectId(req.params.id)}) + var dates=[]; + reports.forEach((elem,idx)=>{ + dates.push(elem.date) + }) + res.send({'response':'ok','dates':dates}); + }catch(err){ + + res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message}); + } + +}); + // Felhasználói adatok exports.apiGetUsers=asyncHandler(async (req,res)=>{ //const {workId,foremanId, workTitle,employeeList }=req.body; diff --git a/models/workReportModel.js b/models/workReportModel.js index 8f5adb9..d231995 100644 --- a/models/workReportModel.js +++ b/models/workReportModel.js @@ -1,5 +1,5 @@ let mongoose = require('mongoose'); - +/* let workReportSchema = mongoose.Schema({ // Napi jelentés workId:{type: mongoose.Schema.Types.ObjectId}, @@ -12,5 +12,21 @@ let workReportSchema = mongoose.Schema({ }] }) +*/ + +let workReportSchema = mongoose.Schema({ + // Napi jelentés + workId:{type: mongoose.Schema.Types.ObjectId}, + date: {type: Date}, + foremanId: {type: String}, + workTitle: {type: String}, + workFlow: [{ + Title: {type: String}, + employeeList:[{ + employeeId:{type: mongoose.Schema.Types.ObjectId}, + name: {type: String}, + }] + }], +}) let WorkReport = module.exports = mongoose.model('WorkReport', workReportSchema); \ No newline at end of file diff --git a/routes/workReport.js b/routes/workReport.js new file mode 100644 index 0000000..7246eca --- /dev/null +++ b/routes/workReport.js @@ -0,0 +1,41 @@ +const express = require('express'); +const router = express.Router(); +var utils = require('../js/utils'); +var mongoose = require('mongoose'); +const moment = require('moment'); +let Work=require('../models/works'); +let WorkReport = require('../models/workReportModel'); +// Add Route +router.get('/new/:wid', utils.ensureAuthenticated, async function (req,res) { + var devId =new Date().getFullYear() ; + // Find last id + const currentWork=await Work.findById(req.params.wid); + const reports=await WorkReport.find({workId: mongoose.Types.ObjectId(req.params.wid)}) + var dates=[]; + reports.forEach((elem,idx)=>{ + dates.push(moment(elem.date).format("YYYY.MM.DD")) + }) + res.render('workReportNew', { + title: 'Műhely munkavégzés Felvétele', + workId: req.params.wid, + dates: JSON.stringify(dates), + workTitle: currentWork.title + }); + + }); + router.get('/edit/:wid/:reportId', utils.ensureAuthenticated, async function (req,res) { + var devId =new Date().getFullYear() ; + // Find last id + const reports=await WorkReport.findOne({_id: mongoose.Types.ObjectId(req.params.reportId), workId:mongoose.Types.ObjectId(req.params.wid),}) + + + res.render('workReportEdit', { + title: 'Műhely munkavégzés Módosítás', + workId: req.params.wid, + report: JSON.stringify(reports), + workTitle: reports.workTitle + }); + + }); + +module.exports = router; \ No newline at end of file diff --git a/views/Modals/modal_workReport.pug b/views/Modals/modal_workReport.pug index 4a5c3dd..c19d4b1 100644 --- a/views/Modals/modal_workReport.pug +++ b/views/Modals/modal_workReport.pug @@ -22,6 +22,15 @@ .row .col-sm-12 input(id='datepicker',style='display:none', type=text) + .row + .table-responsive + table#workReportEdit.table.table-striped + col(width='15%') + col(width='auto') + thead + th(style='text-align:left') Résztvevők + th(style='text-align:left') Munkavégzés leírása + tbody hr .row .col-sm-12 @@ -47,21 +56,37 @@ script. var workers=[] - + function tableUpdate() + { + const workFlow = document.getElementById('workFlow').value; + // $.each(data.reports,function(i,item){ + var newRow="" + //newRow+='' + $.each(workers,function(i,employee){ + newRow+=employee.name+'
' + }); + newRow+='' + newRow+=""+workFlow+"" + newRow+=''; + $('#workReportEdit > tbody:last-child').append (newRow); + // }) + } const form = document.getElementById('kabelform'); function handleClick(identifier) { const state=$(identifier).hasClass('active'); //const d=JSON.parse(decodeURIComponent($(identifier).data('item'))) const d=$(identifier).data('id') + const name=$(identifier).data('name') if (!state) { - workers.push({employeeId:d,workFlow:""}); + workers.push({employeeId:d, name:name,workFlow:""}); } else { workers=workers.filter(obj=>obj._id!==d._id); } // alert("data-id:"+JSON.stringify(workers) ); + tableUpdate() $('#arc').text(JSON.stringify(workers)) } function textChanged(){ @@ -222,7 +247,7 @@ script. console.log(data) $.each(data.users,function(i,item){ var data_str = encodeURIComponent(JSON.stringify(item)); - $('').appendTo('#buttons'); + $('').appendTo('#buttons'); }) }) .catch(error => console.error('Error:', error)); diff --git a/views/Modals/modal_workReportEdit.pug b/views/Modals/modal_workReportEdit.pug new file mode 100644 index 0000000..5a935d6 --- /dev/null +++ b/views/Modals/modal_workReportEdit.pug @@ -0,0 +1,190 @@ +#workReportEditModal.modal(tabindex='-1', role='dialog', aria-labelledby='workReportEditModalLabel') + //-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/') + style(type="text/css"). + .aaa:active, + .aaa.active { + background: red !important; + box-shadow: none !important; + } + .modal-dialog(role='document', style='width:1000px;') + .modal-content + .modal-header#workReportEditHeader.bg-primary(style="background: Primary") + h4 #{workTitle} + .modal-body(style='background-color:#5f6b79') + + form#kabelform2 + #form-group + input#wn1(name='wn1',style='display:none') + input#userid(name='userid',style='display:none', value=user._id) + input#id(name='id',style='display:none') + input#modify(name='modify',style='display:none') + + .row + .col-sm-12 + label(for="workFlow",style='color: white') Munka leírása: + input.form-control(id='workFlow', name='workFlow', required, minlength="6",type=text, autofocus, readonly=false,style='') + br + .row + .col-sm-12 + #buttons2(style="margin: 10px;") + + h4#arc + br + //button#submit.btn.btn-primary(type='submit' ) Rendben + + .modal-footer(style="background-color: #2C3446") + + + button#sendData.btn.btn-primary(type='button',data-dismiss='modal') Mentés + button#fmodalClose.btn.btn-primary(type='button', data-dismiss='modal') Mégsem + + script(src='/bower_components/jquery/dist/jquery.min.js') + //-script(src='/bower_components/bootstrap-validator/dist/validator.min.js') +script. + + var workers=[] + var usedWorkers=[] + const form = document.getElementById('kabelform2'); + function handleClick(identifier) { + const state=$(identifier).hasClass('active'); + //const d=JSON.parse(decodeURIComponent($(identifier).data('item'))) + const d=$(identifier).data('id') + const name=$(identifier).data('name') + if (!state) + { + workers.push({employeeId:d, name:name}); + } + else + { + workers=workers.filter(obj=>obj.employeeId!==d); + } + if (workers.length) + { + document.getElementById("sendData").disabled=false + } + else + { + document.getElementById("sendData").disabled=true + } + $('#arc').text(JSON.stringify(workers)) + } + function textChanged(){ + var length=document.getElementById("workFlow").value.length + if (length>3) + { + let divElement = document.getElementById("buttons2"); + $.each(divElement.children,function(i,item){ + if (workers.some(item3 => item3.employeeId === item.id)){ + item.classList.add("active") + } + if (usedWorkers.some(item2 => item2.employeeId === item.id)===false){ + item.disabled=false + } + + }) + if (workers.length) + { + document.getElementById("sendData").disabled=false + } + }else{ + let divElement = document.getElementById("buttons2"); + $.each(divElement.children,function(i,item){ + + item.disabled=true + item.classList.remove("active") + }) + workers=[] + document.getElementById("sendData").disabled=true + } + } + $(document).ready(function () { + var wid = document.getElementById ('wn').textContent; + var uid = document.getElementById ('uid').textContent; + var workFlowId="" + + + const title=document.getElementById ('wn').textContent; + document.getElementById("workFlow").onkeydown = function() { + textChanged(); + }; + $('#workFlow').change(function(event) { + //do stuff with the "event" object as the object that called the method + textChanged(); + } + ); + + document.getElementById('sendData').addEventListener('click', function(a) { + const workFlowTitle = document.getElementById('workFlow').value; + var dummy=document.getElementById('dummy').textContent + var t=JSON.parse(dummy); + //let result = t.workFlow.find(obj => obj._id === workFlowId); + var foundIndex = t.workFlow.findIndex(x => x._id == workFlowId); + const workFlowItem= + { + Title : workFlowTitle, + employeeList: workers + } + t.workFlow[foundIndex].Title=workFlowTitle; + t.workFlow[foundIndex].employeeList=workers; + document.getElementById('dummy').textContent=JSON.stringify(t) + updateEditTable() + }) + // Modal megjelenítése esemény + $(document).on('show.bs.modal','#workReportEditModal', function (event) { + form.reset(); + document.getElementById("sendData").disabled=true + var dummy=document.getElementById('dummy').textContent + + var button = $(event.relatedTarget); // button the triggered modal + workFlowId = button.data("rid"); //data-id of button which is equal to id (primary key) of person + + + var t=JSON.parse(dummy); + let result = t.workFlow.find(obj => obj._id === workFlowId); + document.getElementById("workFlow").value=result.Title + + workers=[] + usedWorkers=[]; + + workers=result.employeeList; + + + $.each(t.workFlow,function(i,item){ + if(item._id!=result._id) + { + var arr=usedWorkers + usedWorkers=[...arr,...item.employeeList]//.push(item.employeeList) + } + }) + + let divElement = document.getElementById("buttons2"); + while (divElement.firstChild) { + divElement.removeChild(divElement.firstChild); + } + // const title=document.getElementById ('headertitle').textContent; + + //var foo = document.getElementById("buttons"); + //Append the element in page (in span). + + //Fetch workReport + + fetch('/workreportUserList', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_ACCESS_TOKEN' + } + }) + .then(response => response.json()) + .then(data => { + console.log(data) + $.each(data.users,function(i,item){ + var data_str = encodeURIComponent(JSON.stringify(item)); + $('').appendTo('#buttons2'); + }) + textChanged() + }) + .catch(error => console.error('Error:', error)); + }) + + }); \ No newline at end of file diff --git a/views/Modals/modal_workReportNew.pug b/views/Modals/modal_workReportNew.pug new file mode 100644 index 0000000..9dcea16 --- /dev/null +++ b/views/Modals/modal_workReportNew.pug @@ -0,0 +1,238 @@ +#workReportNewModal.modal(tabindex='-1', role='dialog', aria-labelledby='workReportNewModalLabel') + //-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/') + style(type="text/css"). + .aaa:active, + .aaa.active { + background: red !important; + box-shadow: none !important; + } + .modal-dialog(role='document', style='width:1000px;') + .modal-content + .modal-header#workReportNewHeader.bg-primary(style="background: Primary") + h4 #{workTitle} + .modal-body(style='background-color:#5f6b79') + + form#kabelform2 + #form-group + input#wn1(name='wn1',style='display:none') + input#userid(name='userid',style='display:none', value=user._id) + input#id(name='id',style='display:none') + input#modify(name='modify',style='display:none') + + .row + .col-sm-12 + label(for="workFlow",style='color: white') Munka leírása: + input.form-control(id='workFlow', name='workFlow', required, placeholder="Nevezze meg a munka folyamatot", minlength="6",type=text, autofocus, readonly=false,style='') + br + .row + .col-sm-12 + #buttons(style="margin: 10px;") + + h4#arc(style="display:none") + br + //button#submit.btn.btn-primary(type='submit' ) Rendben + + .modal-footer(style="background-color: #2C3446") + + + button#sendData.btn.btn-primary(type='button',data-dismiss='modal') Mentés + button#fmodalClose.btn.btn-primary(type='button', data-dismiss='modal') Mégsem + + script(src='/bower_components/jquery/dist/jquery.min.js') + //-script(src='/bower_components/bootstrap-validator/dist/validator.min.js') +script. + + var workers=[] + var usedWorkers=[] + const form = document.getElementById('kabelform2'); + function handleClick(identifier) { + const state=$(identifier).hasClass('active'); + //const d=JSON.parse(decodeURIComponent($(identifier).data('item'))) + const d=$(identifier).data('id') + const name=$(identifier).data('name') + if (!state) + { + workers.push({employeeId:d, name:name}); + } + else + { + workers=workers.filter(obj=>obj.employeeId!==d); + } + if (workers.length) + { + document.getElementById("sendData").disabled=false + } + else + { + document.getElementById("sendData").disabled=true + } + $('#arc').text(JSON.stringify(workers)) + } + function textChanged(){ + var length=document.getElementById("workFlow").value.length + if (length>3) + { + let divElement = document.getElementById("buttons"); + $.each(divElement.children,function(i,item){ + + if (usedWorkers.some(item2 => item2.employeeId === item.id)===false){ + item.disabled=false + } + + }) + if (workers.length) + { + document.getElementById("sendData").disabled=false + } + }else{ + let divElement = document.getElementById("buttons"); + $.each(divElement.children,function(i,item){ + + item.disabled=true + item.classList.remove("active") + }) + workers=[] + document.getElementById("sendData").disabled=true + } + } + $(document).ready(function () { + var wid = document.getElementById ('wn').textContent; + var uid = document.getElementById ('uid').textContent; + var selectedDate=""; + const title=document.getElementById ('wn').textContent; + document.getElementById("workFlow").onkeydown = function() { + textChanged(); + }; + $('#workFlow').change(function(event) { + //do stuff with the "event" object as the object that called the method + textChanged(); + } + ); + + + document.getElementById('sendData').addEventListener('click', function(a) { + const workFlowTitle = document.getElementById('workFlow').value; + var dummy=document.getElementById('dummy').textContent + var t=JSON.parse(dummy); + const workFlowItem= + { + Title : workFlowTitle, + employeeList: workers + } + t.workFlow.push(workFlowItem) + document.getElementById('dummy').textContent=JSON.stringify(t) + /* { + // Napi jelentés + workId:1, + date: {type: Date}, + foremanId: {type: String}, + workTitle: {type: String}, + workFlow: [{ + Title: {type: String}, + employeeList:[{ + id:{type: mongoose.Schema.Types.ObjectId}, + name: {type: String}, + }] + }], + }*/ + /* if(selectedDate.length) + { + Swal.fire('Error', '', 'error') + } + $.each(workers,function(i,w){ + w.workFlow=workFlow + }) + var dataa={ + date: selectedDate, + workId:wid, + foremanId:uid, + workTitle:title, + employeeList:workers + } + const response = fetch('/workreport', { + method: 'POST', + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(dataa) + }) + .then(response => response.json()) + .then(data => { + //console.log(data) + if (!data.response.ok) + { + Swal.fire('Error', '', 'error') + } + if (data.response="ok") + { + Swal.fire({ + position: "top-end", + icon: "success", + title: data.message, + showConfirmButton: false, + timer: 1500, + backdrop: false + }); + + } else + { + Swal.fire({ + position: "top-end", + icon: "error", + title: data.message, + showConfirmButton: false, + timer: 1500, + backdrop: false + }); + } + $('#workReportNewModal').modal('hide');//.modal('toggle'); + $('.modal').removeClass('in'); + $('.modal').attr("aria-hidden","true"); + $('.modal').css("display", "none"); + $('.modal-backdrop').remove(); + $('body').removeClass('modal-open'); + $('.modal-backdrop').remove() + }) + .catch(error => console.error('Error:', error)); */ + }) + + // Modal megjelenítése esemény + $(document).on('show.bs.modal','#workReportNewModal', function () { + document.getElementById("sendData").disabled=true + var dummy=document.getElementById('dummy').textContent + var t=JSON.parse(dummy); + $.each(t.workFlow,function(i,item){ + var arr=usedWorkers + usedWorkers=[...arr,...item.employeeList]//.push(item.employeeList) + }) + form.reset(); + let divElement = document.getElementById("buttons"); + while (divElement.firstChild) { + divElement.removeChild(divElement.firstChild); + } + // const title=document.getElementById ('headertitle').textContent; + + //var foo = document.getElementById("buttons"); + //Append the element in page (in span). + + //Fetch workReport + + fetch('/workreportUserList', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_ACCESS_TOKEN' + } + }) + .then(response => response.json()) + .then(data => { + console.log(data) + $.each(data.users,function(i,item){ + var data_str = encodeURIComponent(JSON.stringify(item)); + $('').appendTo('#buttons'); + }) + }) + .catch(error => console.error('Error:', error)); + }) + + }); \ No newline at end of file diff --git a/views/work.pug b/views/work.pug index c49f650..818f027 100644 --- a/views/work.pug +++ b/views/work.pug @@ -97,7 +97,8 @@ block content | Munka lezárása a.btn.btn-success.col-sm-1(href='/') i.fa.fa-home.fa-lg.fa-fw - | Vissza + | Vissza + br //-a(href='http://localhost/work/generateXML/634fdcc026d48a5c353a3e8d/63bd6a7d38a2c0150522567e') span.glyphicon.glyphicon-download @@ -166,7 +167,7 @@ block content //-button.btn.btn-primary(id=report._id,form="myForm",type='submit',formaction='/work/generateXML/'+work._id+'/'+report._id, value='enaplo',tabindex='56') //-button.btn.btn-secondary.button-spacer(id=report._id,form="myForm", data-wid=work._id,data-rid=report._id, type='submit') br - .panel.panel-primary( data-toggle="collapse") + .panel.panel-warning .panel-heading .row .col-md-9 @@ -177,34 +178,36 @@ block content span.pull-right.clickable i.glyphicon.glyphicon-chevron-up - #collapsePanel.panel-body - form#form-1 + .panel-body .row - .table-responsive - table#workReportTable.table.table-striped - col(width='5%') - col(width='10%') - col(width='15%') - col(width='auto') - if (work.enaploTemplate) - col(width='5%') - thead - tr - th # - th(style='text-align:left') Dátum - th(style='text-align:left') Résztvevők - th(style='text-align:left') Munkavégzés leírása - + .table-responsive + table#workReportTable2.table.table-striped + -//col(width='5%') + col(width='10%') + col(width='auto') + col(width='15%') + + thead + tr + -//th # + th(style='text-align:left') Dátum + th(style='text-align:left') Munkavégzés leírása + th(style='text-align:left') Résztvevők - tbody - .panel-footer + + tbody + + .panel-footer .btn-toolbar if(user.canAdd.device) - button.btn.btn-primary(data-toggle='modal', data-wn=work._id,data-title=work.title, data-target='#workReportModal',data-headertitle='Műhely munkavégzés',type='button') + button.btn.btn-default(data-toggle='modal', disabled data-wn=work._id,data-title=work.title, data-target='#workReportModal',data-headertitle='Műhely munkavégzés',type='button') i.fa.fa-plus.fa-lg.fa-fw | Bejegyzés hozzáadása - + a.btn.btn-primary(href='/workReport/new/'+work._id) + i.fa.fa-plus.fa-lg.fa-fw + | Bejegyzés hozzáadása + br .panel.panel-primary .panel-heading @@ -242,20 +245,83 @@ block content | Berendezés hozzáadása a.btn.btn-success.col-sm-2(href='/') i.fa.fa-home.fa-lg.fa-fw - | Vissza + | Vissza + script(src='/bower_components/jquery/dist/jquery.js') script(src='/js/work_utils.js') script(type='text/javascript', src='/bower_components/moment/min/moment.min.js') + script(src='/bower_components/moment/min/moment-with-locales.js') script(type='text/javascript',src='/build/pdfmake.js') script(type='text/javascript',src='/build/vfs_fonts.js') script(src='https://unpkg.com/lightpick@latest/lightpick.js') script(src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.min.js" integrity="sha512-nD7/PXl2UD6bAYMJVKTLhr7qwnWVvoyqk8/WMzedDKMiQbaNXT3EUPzLYbLUHCLWqAZoXO37aVCtCKmAxZfqGw==" crossorigin="anonymous" referrerpolicy="no-referrer") script. + + function getEmployeeList(wf) + { + var elist="" + $.each(wf.employeeList,function(i,el){ + elist+=el.name+'
' + }); + return elist; + } + function editReport(b){ + var wid = document.getElementById ('wn').textContent; + location.href = '/workReport/edit/'+wid+'/'+b.getAttribute('data-id'); + console.log(b.getAttribute('data-id')) + } $(document).ready(function () { - + moment.locale('HU') //Fetch workReport var wid = document.getElementById ('wn').textContent; - fetch('/workreportList/'+wid, { + fetch('/workreport/'+wid, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer YOUR_ACCESS_TOKEN' + } + }) + .then(response => response.json()) + .then(data => { + console.log(data) + //var t=data.reports[0]; + var newRow= "" + + $.each(data.reports,function(ix,t){ + newRow= ` +
+ ${moment(t.date).format("YYYY.MM.DD")} +
+
+ ${moment(t.date).format("dddd")} +
+
+ +
+ ` + $.each(t.workFlow,function(i,item){ + + //newRow+= `` + + + newRow+= `${item.Title}` + + $.each(item.employeeList,function(idx,employee){ + newRow+=employee.name+'
' + }) + newRow+= `` + newRow+= `` + }) + //newRow+= `12` + $('#workReportTable2 > tbody:last-child').append (newRow); + }) + //$('#workReportTable > tbody:last-child').append (newRow); + + }) + + .catch(error => console.error('Error:', error)); + /*fetch('/workreportList/'+wid, { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -286,7 +352,7 @@ block content }) }) .catch(error => console.error('Error:', error)); - + */ document.getElementById('enaploImp').addEventListener('change', readFile, false); /* var entemplate = document.getElementById ('entemp').textContent; diff --git a/views/workReportEdit.pug b/views/workReportEdit.pug new file mode 100644 index 0000000..94b7c6b --- /dev/null +++ b/views/workReportEdit.pug @@ -0,0 +1,179 @@ +extends layout + +block content + .container + link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css') + link(href='//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', rel='stylesheet') + link(rel='stylesheet', type='text/css', href='https://unpkg.com/lightpick@latest/css/lightpick.css') + link(rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.css" integrity="sha512-TG239kA30BXeGpy+HpJei+qfJcKo8V9HKpe8UWuVdpk49NGUe86EDhmdXkCxMqD5gSlkLLi6YQ9SbNp+yRa9xQ==" crossorigin="anonymous" referrerpolicy="no-referrer") + include Modals/modal_workReportEdit + style(type="text/css"). + + + .clickable{ + cursor: pointer; + } + .vcenter { + text-align: center; + align-content: center; + } + h4#dummy(style="display:none") #{report} + #form-group + -//form(id="myForm",name="myForm") + .panel.panel-warning + .panel-heading + .row + .col-md-9 + h4 #{title} + h5#wn #{workTitle} + h6#wid(style="display:none") #{workId} + h6#uid(style="display:none") #{user._id} + + .panel-body + form#form-1 + .row + .table-responsive + table#workReportTableEdit.table.table-striped + + col(width='5%') + col(width='auto') + col(width='15%') + col(width='15%') + thead + tr + + th(style='text-align:left') # + th(style='text-align:left') Munkavégzés leírása + th(style='text-align:left') Résztvevők + th(style='text-align:center') Művelet + + + tbody + .panel-footer + .col-sm-3 + .input-group + span#basic-addon1.input-group-addon + i.fa.fa-calendar.fa-lg.fa-fw + input.form-control( readonly, placeholder="Válasszon dátumot!", id='dpEditWorkReport', type=text) + + + .btn-toolbar + + //button.btn.btn-primary(data-toggle='modal', data-wn=workId,data-title=workTitle, data-target='#workReportNewModal',data-headertitle='Műhely munkavégzés',type='button') + i.fa.fa-plus.fa-lg.fa-fw + | Bejegyzés hozzáadása + button#btnSave2.btn.btn-primary(data-toggle='modal', disabled, type='button') + i.fa.fa-save.fa-lg.fa-fw + | Mentés + a.btn.btn-success(href='/work/'+workId) + i.fa.fa-home.fa-lg.fa-fw + | Vissza + br + + script(src='/bower_components/jquery/dist/jquery.js') + script(src='/js/work_utils.js') + script(type='text/javascript', src='/bower_components/moment/min/moment.min.js') + script(type='text/javascript',src='/build/pdfmake.js') + script(type='text/javascript',src='/build/vfs_fonts.js') + script(src='https://unpkg.com/lightpick@latest/lightpick.js') + script(src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.min.js" integrity="sha512-nD7/PXl2UD6bAYMJVKTLhr7qwnWVvoyqk8/WMzedDKMiQbaNXT3EUPzLYbLUHCLWqAZoXO37aVCtCKmAxZfqGw==" crossorigin="anonymous" referrerpolicy="no-referrer") + script. + function updateEditTable() + { + var wn = document.getElementById ('wn').textContent; + var wid = document.getElementById ('wid').textContent; + var uid = document.getElementById ('uid').textContent; + + $('#workReportTableEdit > tbody:last-child').empty(); + var dummy=document.getElementById('dummy').textContent + + var t=JSON.parse(dummy); + document.getElementById ('dpEditWorkReport').value=moment(t.date).format("YYYY.MM.DD"); + $.each(t.workFlow,function(i,item){ + var newRow= "" + const rows=item.employeeList.length + newRow= `` + + `${i}`+ + `${item.Title}` + $.each(item.employeeList,function(idx,employee){ + + + if (idx==0){ + newRow+=`${employee.name}`+ + `` + newRow+= `` + } else + { + newRow+=`${employee.name}`//+ + //`` + } + + }) + + $('#workReportTableEdit > tbody:last-child').append (newRow); + }) + if (document.getElementById('dummy').textContent.length && document.getElementById('dpEditWorkReport').value.length) + { + document.getElementById('btnSave2').disabled=false + } + } + $(document).ready(function () { + //var dummy=document.getElementById('dummy').textContent + + updateEditTable() + document.getElementById('btnSave2').addEventListener('click', function(a) { + const da=JSON.parse(document.getElementById('dummy').textContent) + + if (!da.workFlow.length) + { + alert("Adjon hozzá valamit!") + return + } + + + console.log(da) + + // Adatok mentése szerverre + const response = fetch('/workreportUpdate', { + method: 'POST', + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({workReport:da}) + }) + .then(response => response.json()) + .then(data => { + //console.log(data) + if (!data.response.ok) + { + Swal.fire('Error', '', 'error') + } + if (data.response="ok") + { + Swal.fire({ + position: "top-end", + icon: "success", + title: data.message, + showConfirmButton: false, + timer: 1500, + backdrop: false + }); + window.location.href = "/work/"+da.workId; + + } else + { + Swal.fire({ + position: "top-end", + icon: "error", + title: data.message, + showConfirmButton: false, + timer: 1500, + backdrop: false + }); + } + + }) + .catch(error => console.error('Error:', error)); + }); + + }) diff --git a/views/workReportNew.pug b/views/workReportNew.pug new file mode 100644 index 0000000..a139430 --- /dev/null +++ b/views/workReportNew.pug @@ -0,0 +1,203 @@ +extends layout + +block content + .container + link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css') + link(href='//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', rel='stylesheet') + link(rel='stylesheet', type='text/css', href='https://unpkg.com/lightpick@latest/css/lightpick.css') + link(rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.css" integrity="sha512-TG239kA30BXeGpy+HpJei+qfJcKo8V9HKpe8UWuVdpk49NGUe86EDhmdXkCxMqD5gSlkLLi6YQ9SbNp+yRa9xQ==" crossorigin="anonymous" referrerpolicy="no-referrer") + include Modals/modal_workReportNew + style(type="text/css"). + + + .clickable{ + cursor: pointer; + } + h4#dummy(style="display:none") + #form-group + form(id="myForm",name="myForm",method='get', action='/work/generateXML/') + .panel.panel-warning + .panel-heading + .row + .col-md-9 + h4 #{title} + h5#wn #{workTitle} + h6#wid(style="display:none") #{workId} + h6#uid(style="display:none") #{user._id} + h4#ddates(style="display:none") #{dates} + .panel-body + form#form-1 + .row + .table-responsive + table#workReportTable.table.table-striped + + col(width='5%') + col(width='auto') + col(width='15%') + col(width='15%') + thead + tr + + th(style='text-align:left') # + th(style='text-align:left') Munkavégzés leírása + th(style='text-align:left') Résztvevők + th(style='text-align:left') Művelet + + + tbody + .panel-footer + .col-sm-3 + .input-group + span#basic-addon1.input-group-addon + i.fa.fa-calendar.fa-lg.fa-fw + input.form-control( readonly, placeholder="Válasszon dátumot!", id='dpNewWorkReport', type=text) + + + .btn-toolbar + + button.btn.btn-primary(data-toggle='modal', data-wn=workId,data-title=workTitle, data-target='#workReportNewModal',data-headertitle='Műhely munkavégzés',type='button') + i.fa.fa-plus.fa-lg.fa-fw + | Bejegyzés hozzáadása + button#btnSave.btn.btn-primary(data-toggle='modal', disabled, type='button') + i.fa.fa-save.fa-lg.fa-fw + | Mentés + a.btn.btn-success(href='/work/'+workId) + i.fa.fa-home.fa-lg.fa-fw + | Vissza + br + + script(src='/bower_components/jquery/dist/jquery.js') + script(src='/js/work_utils.js') + script(type='text/javascript', src='/bower_components/moment/min/moment.min.js') + script(type='text/javascript',src='/build/pdfmake.js') + script(type='text/javascript',src='/build/vfs_fonts.js') + script(src='https://unpkg.com/lightpick@latest/lightpick.js') + script(src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.min.js" integrity="sha512-nD7/PXl2UD6bAYMJVKTLhr7qwnWVvoyqk8/WMzedDKMiQbaNXT3EUPzLYbLUHCLWqAZoXO37aVCtCKmAxZfqGw==" crossorigin="anonymous" referrerpolicy="no-referrer") + script. + $(document).ready(function () { + //var dummy=document.getElementById('dummy').textContent + var wn = document.getElementById ('wn').textContent; + var wid = document.getElementById ('wid').textContent; + var uid = document.getElementById ('uid').textContent; + dummy= { + // Napi jelentés + workId:wid, + date: new Date(), + foremanId: uid, + workTitle: wn, + workFlow: [], + } + document.getElementById('dummy').textContent=JSON.stringify(dummy) + + document.getElementById('sendData').addEventListener('click', function(a) { + console.log("Jacica") + var dummy=document.getElementById('dummy').textContent + var t=JSON.parse(dummy); + var newRow= "" + $.each(t.workFlow,function(i,item){ + const rows=item.employeeList.length + newRow= `` + + `${i}`+ + `${item.Title}` + $.each(item.employeeList,function(idx,employee){ + + + if (idx==0){ + newRow+=`${employee.name}`+ + `` + newRow+= `` + } else + { + newRow+=`${employee.name}`+ + `` + } + + }) + + }) + + $('#workReportTable > tbody:last-child').append (newRow); + if (document.getElementById('dummy').textContent.length && document.getElementById('dpNewWorkReport').value.length) + { + document.getElementById('btnSave').disabled=false + } + }) + document.getElementById('btnSave').addEventListener('click', function(a) { + const da=JSON.parse(document.getElementById('dummy').textContent) + const dt=document.getElementById('dpNewWorkReport').value + if (!da.workFlow.length) + { + alert("Adjon hozzá valamit!") + return + } + if (!dt.length) + { + alert("Válasszon Dátumot!") + return + } + da.date=dt + console.log(da) + + // Adatok mentése szerverre + const response = fetch('/workreport', { + method: 'POST', + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(da) + }) + .then(response => response.json()) + .then(data => { + //console.log(data) + if (!data.response.ok) + { + Swal.fire('Error', '', 'error') + } + if (data.response="ok") + { + Swal.fire({ + position: "top-end", + icon: "success", + title: data.message, + showConfirmButton: false, + timer: 1500, + backdrop: false + }); + window.location.href = "/work/"+da.workId; + + } else + { + Swal.fire({ + position: "top-end", + icon: "error", + title: data.message, + showConfirmButton: false, + timer: 1500, + backdrop: false + }); + } + + }) + .catch(error => console.error('Error:', error)); + }); + }) + const dd=JSON.parse(document.getElementById('ddates').textContent) + var picker = new Lightpick({ field: document.getElementById('dpNewWorkReport'), + singleDate: true, + inline: false, + //numberOfColumns: 2, + //numberOfMonths: 2, + disableDates: dd, + format: 'YYYY.MM.DD', + disableWeekends: false, + maxDate: moment(), + onSelect: function(date){ + selectedDate=date + const da=JSON.parse(document.getElementById('dummy').textContent).workFlow.length + + if (da ) + { + document.getElementById('btnSave').disabled=false + } + } + }); \ No newline at end of file