У меня есть две фиктивные записи времени, которые я принес из моей базы данных в мой PHPстраница в console.log
:
[{
"FIRST_NAME": "Kiera",
"LAST_NAME": "Long",
"USERNAME": "[email protected]",
"CLOCK_IN": "2017-08-25 09:19:04",
"START_LUNCH": "0000-00-00 00:00:00",
"END_LUNCH": "0000-00-00 00:00:00",
"CLOCK_OUT": "2017-08-25 09:33:28",
"TOTAL_HRS": "00:00hr:14min:24s"}, {
"FIRST_NAME": "Kiera",
"LAST_NAME": "Long",
"USERNAME": "[email protected]",
"CLOCK_IN": "2017-11-12 10:59:59",
"START_LUNCH": "0000-00-00 00:00:00",
"END_LUNCH": "0000-00-00 00:00:00",
"CLOCK_OUT": "2017-11-12 11:39:13",
"TOTAL_HRS": "00:00hr:39min:14s"}]
я использую jspdfа также jspdfAutoTable, чтобы поместить эти результаты в виде таблицы внутри PDF. Каждый раз я генерирую PDF, отдельный PDFдокумент создается для каждой временной записи. Мне нужно, чтобы эти две записи печатались на одном документе и были строками в одной таблице.
Я также пытаюсь стать лучше в написании функций тоже. Вот:
$.post('api/hoursprintoff.php', {
useremail: useremail,
startdate: startdate,
enddate: enddate
}, function(data) {
console.log(data);
var obj = JSON.parse(data);
var htmlToInsert = obj.map(function(item) {
var fname = item.FIRST_NAME;
var lname = item.LAST_NAME;
var username = item.USERNAME;
var startd = item.CLOCK_IN;
var totals = item.TOTAL_HRS;
var endd = item.CLOCK_OUT;
var username = item.USERNAME;/*if (startd.length >1 && endd.length > 1) {
console.log(startd + " " + endd);
/*$.each(obj, function( key, value ) {
console.dir( key + ": " + JSON.stringify(value) );
});
}*/
//console.log(username);
//console.log(startd);
//console.log(endd);
//var columns = [{title: "Clock In", dataKey: "CLOCK_IN"}, {title: "Clock Out", dataKey: "CLOCK_OUT"}, {title: "Total Hours", dataKey: "TOTAL_HRS"}];
//var rows = {data} ;
//console.log(obj.length);
//console.log(item);
/*
function timesheet(timein, timeout, total) {
var columns = [{title: "Clock In", dataKey: "CLOCK_IN"}, {title: "Clock Out", dataKey: "CLOCK_OUT"}, {title: "Total Hours", dataKey: "TOTAL_HRS"}];
$.each(item, function( key, value ) {
console.log(key, value);
//var rows = [{'CLOCK_IN': timein, 'CLOCK_OUT': timeout, 'TOTAL_HRS': total}];
});
var doc = new jsPDF('p', 'pt');
//doc.createdCell: function (cell, data) { }
//doc.autoTable(columns, rows);
doc.text(20, 20, fname + " " + lname + "'s " + 'Timesheet!');
doc.text(20, 30, 'Organization Email: ' + username);
doc.save("Test.pdf");
}//end of timesheet function
*/
function timesheet(startd, endd, totals) {
var doc = new jsPDF('p', 'pt');
var columns = [{
title: "Clock In",
dataKey: "CLOCK_IN"}, {
title: "Clock Out",
dataKey: "CLOCK_OUT"}, {
title: "Total Hours",
dataKey: "TOTAL_HRS"}];
var rows = [{
'CLOCK_IN': startd,
'CLOCK_OUT': endd,
'TOTAL_HRS': totals
}];
if (item > 1) {
doc.after(rows);
}//console.log(rows);//doc.createdCell: function (cell, data) { }
doc.autoTable(columns, rows);
doc.text(20, 20, fname + " " + lname + "'s " + 'Timesheet!');
//doc.text(20, 30, 'Organization Email: ' + username);
doc.save("Test.pdf");
} //end of timesheet function
timesheet(startd, endd, totals);
}); //end of object map
}); //end of post
Мой вопрос как мне остановиться jspdfот создания нового документа для каждой записи времени?
Ваша функция object.map будет перебирать каждый объект и, следовательно, вызывать timesheet(startd, endd, totals);
для каждого объекта. Достаточно просто переместить его за пределы цикла.
Других решений пока нет …