WorkReport kész 90%

This commit is contained in:
Vincze József 2025-01-14 08:15:03 +01:00
parent 0beb80773a
commit 85aa906d6e
10 changed files with 1068 additions and 35 deletions

9
app.js
View File

@ -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');

View File

@ -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;

View File

@ -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);

41
routes/workReport.js Normal file
View File

@ -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;

View File

@ -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="<tr><td>"
//newRow+='<td>'
$.each(workers,function(i,employee){
newRow+=employee.name+'<br>'
});
newRow+='</td>'
newRow+="<td>"+workFlow+"</td>"
newRow+='</tr>';
$('#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));
$('<button class="btn btn-primary aaa" disabled onclick="handleClick(this)" data-item="'+data_str+'" data-id="'+item._id+'" style="width:150px;margin: 3px" data-toggle="button" type="button">'+item.name+'</button>').appendTo('#buttons');
$('<button class="btn btn-primary aaa" disabled onclick="handleClick(this)" data-item="'+data_str+'" data-name="'+item.name+'" data-id="'+item._id+'" style="width:150px;margin: 3px" data-toggle="button" type="button">'+item.name+'</button>').appendTo('#buttons');
})
})
.catch(error => console.error('Error:', error));

View File

@ -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));
$('<button class="btn btn-primary aaa" disabled onclick="handleClick(this)" id="'+item._id+'" data-item="'+data_str+'" data-name="'+item.name+'" data-id="'+item._id+'" style="width:150px;margin: 3px" data-toggle="button" type="button">'+item.name+'</button>').appendTo('#buttons2');
})
textChanged()
})
.catch(error => console.error('Error:', error));
})
});

View File

@ -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));
$('<button class="btn btn-primary aaa" disabled onclick="handleClick(this)" id="'+item._id+'"data-item="'+data_str+'" data-name="'+item.name+'" data-id="'+item._id+'" style="width:150px;margin: 3px" data-toggle="button" type="button">'+item.name+'</button>').appendTo('#buttons');
})
})
.catch(error => console.error('Error:', error));
})
});

View File

@ -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+'<br>'
});
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= `<tr><td rowspan=${t.workFlow.length}>
<div class="row" style="margin-left: 3px">
${moment(t.date).format("YYYY.MM.DD")}
</div>
<div class="row" style="margin-left: 3px">
${moment(t.date).format("dddd")}
</div>
<div class="row justify-content-center" style="margin-left: 3px">
<button type="button" class="btn btn-primary btn-sm" style="margin-left: 4px" data-id=${t._id} onclick="editReport(this);">
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
</button>
</div>
</td>`
$.each(t.workFlow,function(i,item){
//newRow+= `<tr>` +
newRow+= `<td>${item.Title}</td><td>`
$.each(item.employeeList,function(idx,employee){
newRow+=employee.name+'<br>'
})
newRow+= `</td>`
newRow+= `</tr>`
})
//newRow+= `<td rowspan=${t.workFlow.length}>12</td></tr>`
$('#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;

179
views/workReportEdit.pug Normal file
View File

@ -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= `<tr>` +
`<td rowspan="${rows}">${i}</td>`+
`<td rowspan="${rows}" >${item.Title}</td>`
$.each(item.employeeList,function(idx,employee){
if (idx==0){
newRow+=`<td>${employee.name}</td>`+
`<td rowspan="${rows}" class="vcenter"><button class="btn btn-success" data-rid='${item._id}' data-toggle='modal' type='button' data-target='#workReportEditModal'>Szerkeszt</button></td>`
newRow+= `</tr>`
} else
{
newRow+=`<tr><td>${employee.name}</td></tr>`//+
//`<td><button>Edit</button></td></tr>`
}
})
$('#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));
});
})

203
views/workReportNew.pug Normal file
View File

@ -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= `<tr>` +
`<td rowspan="${rows}">${i}</td>`+
`<td rowspan="${rows}" >${item.Title}</td>`
$.each(item.employeeList,function(idx,employee){
if (idx==0){
newRow+=`<td>${employee.name}</td>`+
`<td><button>Edit</button></td>`
newRow+= `</tr>`
} else
{
newRow+=`<tr><td>${employee.name}</td>`+
`<td><button>Edit</button></td></tr>`
}
})
})
$('#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
}
}
});