Skip to content

Commit 1bdf939

Browse files
authored
Merge branch 'master' into ar2rsawseen/feature/tracking
2 parents 9418a61 + 8a88fee commit 1bdf939

File tree

7 files changed

+108
-11
lines changed

7 files changed

+108
-11
lines changed

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
## Version 25.03.xx
22
Fixes:
3-
- [mail] add smtp debug option for mail module
3+
- [mail] Add smtp debug option for mail module
4+
5+
Enterprise Fixes:
6+
- [users] Fixed uploading user profile pictures
7+
- [funnels] Show notification if funnel results are from cache/task manager
8+
- [block] Fixed filter for consent events
9+
- [drill] [survey] Fix survey answer in drill
10+
- [users] Add survey section to user feedback page
11+
412

513
## Version 25.03.22
614
Fixes:

api/utils/pdf.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ exports.renderPDF = async function(html, callback, options = null, puppeteerArgs
4242
}
4343
const updatedTimeout = 240000;
4444
const page = await browser.newPage();
45-
45+
await page.setBypassCSP(true);
4646
page.on('console', (msg) => {
4747
log.d("Headless chrome page log", msg.text());
4848
});
@@ -74,6 +74,16 @@ exports.renderPDF = async function(html, callback, options = null, puppeteerArgs
7474
await page.setContent(html);
7575
}
7676

77+
const contentHeight = await page.evaluate(() => {
78+
/*global document*/
79+
return document.body.scrollHeight;
80+
});
81+
82+
options.width = '210mm'; // A4 width, for example
83+
options.height = `${contentHeight}px`; // full content height
84+
options.printBackground = true;
85+
options.preferCSSPageSize = true;
86+
7787
await page.pdf(options).then(callback, function(error) {
7888
log.d('pdf generation error', error);
7989
});

api/utils/render.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ exports.renderView = function(options, cb) {
6868
XDG_CONFIG_HOME: pathModule.resolve(__dirname, "../../.cache/chrome/tmp/.chromium"),
6969
XDG_CACHE_HOME: pathModule.resolve(__dirname, "../../.cache/chrome/tmp/.chromium")
7070
},
71-
args: ['--no-sandbox', '--disable-setuid-sandbox', '--ignore-certificate-errors'],
71+
args: ['--no-sandbox', '--disable-setuid-sandbox', '--ignore-certificate-errors', '--disable-web-security'],
7272
ignoreHTTPSErrors: true,
7373
userDataDir: pathModule.resolve(__dirname, "../../dump/chrome/" + Date.now())
7474
};
@@ -82,6 +82,7 @@ exports.renderView = function(options, cb) {
8282
try {
8383
log.d('Started rendering images');
8484
var page = await browser.newPage();
85+
await page.setBypassCSP(true);
8586

8687
page.on('console', (msg) => {
8788
log.d("Headless chrome page log", msg.text());

frontend/express/public/core/events/javascripts/countly.details.models.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,9 @@
486486
}
487487
});
488488
}
489+
allEvents.sort(function(a, b) {
490+
return a.label.localeCompare(b.label);
491+
});
489492
return allEvents;
490493
},
491494
getGroupData: function(groupData, selectedEventName) {

plugins/reports/api/api.js

Lines changed: 74 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ var common = require('../../../api/utils/common.js'),
44
moment = require('moment-timezone'),
55
log = require('../../../api/utils/log')('reports:api'),
66
ejs = require("ejs"),
7+
fs = require("fs"),
78
plugins = require('../../pluginManager.js'),
9+
pdf = require('../../../api/utils/pdf'),
810
{ validateCreate, validateRead, validateUpdate, validateDelete, getUserApps, } = require('../../../api/utils/rights.js');
911

1012
const FEATURE_NAME = 'reports';
@@ -414,15 +416,81 @@ const FEATURE_NAME = 'reports';
414416
if (err2) {
415417
common.returnMessage(params, 200, err2);
416418
}
419+
else if (res) {
420+
var html = res.message;
421+
if (result.report_type !== "core") {
422+
html = ejs.render(res.message.template, res.message.data);
423+
}
424+
425+
common.returnRaw(params, 200, html, {'Content-Type': 'text/html; charset=utf-8', 'Access-Control-Allow-Origin': '*'});
426+
}
417427
else {
418-
if (params && params.res) {
419-
var html = res.message;
420-
if (result.report_type !== "core") {
421-
html = ejs.render(res.message.template, res.message.data);
422-
}
428+
common.returnMessage(params, 200, 'No data to report');
429+
}
430+
});
431+
});
432+
});
433+
break;
434+
case 'pdf':
435+
validateRead(paramsInstance, FEATURE_NAME, function() {
436+
var params = paramsInstance;
437+
var argProps = {
438+
'_id': { 'required': true, 'type': 'String'}
439+
},
440+
id = '';
441+
442+
if (!(id = common.validateArgs(params.qstring.args, argProps)._id)) {
443+
common.returnMessage(params, 200, 'Not enough args');
444+
return false;
445+
}
446+
common.db.collection('reports').findOne(recordUpdateOrDeleteQuery(params, id), function(err, result) {
447+
if (err || !result) {
448+
common.returnMessage(params, 200, 'Report not found');
449+
return false;
450+
}
423451

424-
common.returnRaw(params, 200, html, {'Content-Type': 'text/html; charset=utf-8', 'Access-Control-Allow-Origin': '*'});
452+
// TODO: Handle report type check
453+
454+
reports.getReport(common.db, result, function(err2, res) {
455+
if (err2) {
456+
common.returnMessage(params, 200, err2);
457+
}
458+
else if (res) {
459+
var html = res.message;
460+
if (result.report_type !== "core") {
461+
html = ejs.render(res.message.template, res.message.data);
425462
}
463+
const filePath = '/tmp/email_report_' + new Date().getTime() + '.pdf';
464+
const options = { "path": filePath, "width": "1028px", height: "1000px" };
465+
466+
pdf.renderPDF(html, function() {
467+
//output created file to browser
468+
fs.readFile(filePath, function(err3, data) {
469+
if (err3) {
470+
console.log(err3);
471+
common.returnMessage(params, 500, 'Cannot read pdf file');
472+
}
473+
else {
474+
common.returnRaw(params, 200, data, {
475+
'Content-Type': 'application/pdf',
476+
'Content-Disposition': 'inline; filename="report.pdf"',
477+
'Content-Length': data.length,
478+
'Access-Control-Allow-Origin': '*'
479+
});
480+
}
481+
fs.unlink(filePath, function(unlinkErr) {
482+
if (unlinkErr) {
483+
console.log("Cannot remove temp pdf file");
484+
console.log(unlinkErr);
485+
}
486+
});
487+
});
488+
}, options, {
489+
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-web-security'],
490+
}, true);
491+
}
492+
else {
493+
common.returnMessage(params, 200, 'No data to report');
426494
}
427495
});
428496
});

plugins/reports/api/reports.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ var metricProps = {
708708
mail.sendMail(msg, deletePDFCallback);
709709
}
710710
}, options, {
711-
args: ['--no-sandbox', '--disable-setuid-sandbox'],
711+
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-web-security'],
712712
}, true).catch(err => {
713713
log.d(err);
714714
});

plugins/reports/frontend/public/templates/email.html

100755100644
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@
9090
#report-title { font-size: 25px !important; line-height: 30px !important; }
9191
#report-title span { font-size: 20px; }
9292
}
93+
@media print {
94+
.mobile-no-margin {
95+
margin:0px 0px !important;
96+
max-width: 100% !important;
97+
}
98+
}
9399
</style>
94100
</head>
95101
<body style="margin: 0; padding: 0; background-color:#f2f2f2;">
@@ -398,7 +404,8 @@
398404

399405
<% } %>
400406
<% } %>
401-
<tr class=" <td>
407+
<tr class="desktop-table" >
408+
<td>
402409
<!-- ONE COLUMN SECTION -->
403410
<table border="0" cellpadding="0" cellspacing="0" width="100%">
404411
<tr>

0 commit comments

Comments
 (0)