Survey: Fix PDF export BT#17835

pull/3725/head
Julio Montoya 5 years ago
parent 5b9a517087
commit 44518897cd
  1. 16
      main/survey/reporting.php
  2. 37
      main/survey/surveyUtil.class.php

@ -161,7 +161,7 @@ async function exportToPdf() {
await html2canvas(table).then(function(canvas) { await html2canvas(table).then(function(canvas) {
var pageData = canvas.toDataURL("image/jpeg", 1); var pageData = canvas.toDataURL("image/jpeg", 1);
headerY = 530.28/canvas.width * canvas.height; headerY = 530.28/canvas.width * canvas.height;
pdf.addImage(pageData, "JPEG", 40, 60, 530, headerY); pdf.addImage(pageData, "JPEG", 35, 60, 530, headerY);
}); });
var divs = doc.getElementsByClassName("question-item"); var divs = doc.getElementsByClassName("question-item");
@ -174,7 +174,7 @@ async function exportToPdf() {
pages[page] = 0; pages[page] = 0;
} }
var positionY = 160; var positionY = 150;
pages[page] += 1; pages[page] += 1;
var diff = 250; var diff = 250;
if (page > 1) { if (page > 1) {
@ -183,17 +183,17 @@ async function exportToPdf() {
diff = 220; diff = 220;
} }
if (pages[page] > 1) { if (pages[page] > 1) {
positionY = pages[page] * diff + 10; positionY = pages[page] * diff + 5;
} }
const title = $(divs[i]).find(".title-question"); const title = $(divs[i]).find(".title-question");
pdf.setFontSize(12); pdf.setFontSize(10);
pdf.text(40, positionY, title.text()); pdf.text(40, positionY, title.text());
var svg = divs[i].querySelector("svg"); var svg = divs[i].querySelector("svg");
svg2pdf(svg, pdf, { svg2pdf(svg, pdf, {
xOffset: 10, xOffset: 150,
yOffset: positionY + 10, yOffset: positionY,
scale: 0.45 scale: 0.45
}); });
@ -201,8 +201,8 @@ async function exportToPdf() {
var config= {}; var config= {};
for (var j = 0; j < tables.length; j += 1) { for (var j = 0; j < tables.length; j += 1) {
await html2canvas(tables[j], config).then(function(canvas) { await html2canvas(tables[j], config).then(function(canvas) {
var pageData = canvas.toDataURL("image/jpeg", 0.8); var pageData = canvas.toDataURL("image/jpeg", 0.7);
pdf.addImage(pageData, "JPEG", 40, positionY + 200, 500, 500/canvas.width * canvas.height); pdf.addImage(pageData, "JPEG", 40, positionY + 175, 500, 500/canvas.width * canvas.height);
}); });
} }

@ -734,7 +734,7 @@ class SurveyUtil
array_push($chartData, ['option' => $optionText, 'votes' => $votes]); array_push($chartData, ['option' => $optionText, 'votes' => $votes]);
} }
$chartContainerId = 'chartContainer'.$question['question_id']; $chartContainerId = 'chartContainer'.$question['question_id'];
echo '<div id="'.$chartContainerId.'" >'; echo '<div id="'.$chartContainerId.'" style="text-align:center;">';
echo self::drawChart($chartData, false, $chartContainerId, false); echo self::drawChart($chartData, false, $chartContainerId, false);
echo '</div>'; echo '</div>';
@ -3911,23 +3911,23 @@ class SurveyUtil
$serieValue = isset($chartDataElement['serie']) ? $chartDataElement['serie'] : null; $serieValue = isset($chartDataElement['serie']) ? $chartDataElement['serie'] : null;
if (!$hasSerie) { if (!$hasSerie) {
$data .= get_lang("Option").'":"'.$option.'", "'; $data .= get_lang('Option').'":"'.$option.'", "';
array_push($order, $option); array_push($order, $option);
} else { } else {
if (!is_array($serieValue)) { if (!is_array($serieValue)) {
$data .= $data .=
get_lang("Option").'":"'.$serieValue.'", "'. get_lang('Option').'":"'.$serieValue.'", "'.
get_lang("Score").'":"'.$option.'", "'; get_lang('Score').'":"'.$option.'", "';
array_push($serie, $serieValue); array_push($serie, $serieValue);
} else { } else {
$data .= $data .=
get_lang("Serie").'":"'.$serieValue[0].'", "'. get_lang('Serie').'":"'.$serieValue[0].'", "'.
get_lang("Option").'":"'.$serieValue[1].'", "'. get_lang('Option').'":"'.$serieValue[1].'", "'.
get_lang("Score").'":"'.$option.'", "'; get_lang('Score').'":"'.$option.'", "';
} }
} }
$data .= get_lang("Votes").'":"'.$chartDataElement['votes'].'"},'; $data .= get_lang('Votes').'":"'.$chartDataElement['votes'].'"},';
rtrim($data, ","); rtrim($data, ',');
} }
if ($loadLibs) { if ($loadLibs) {
@ -3937,14 +3937,18 @@ class SurveyUtil
$htmlChart .= ' $htmlChart .= '
<script> <script>
var svg = dimple.newSvg("#'.$chartContainerId.'", "100%", 400); var svg = dimple.newSvg("#'.$chartContainerId.'", 600, 400);
var data = ['.$data.']; var data = ['.$data.'];
var myChart = new dimple.chart(svg, data); var myChart = new dimple.chart(svg, data);
myChart.addMeasureAxis("y", "'.get_lang("Votes").'");'; myChart.setBounds(50, 30, 550, 300);
var yAxis = myChart.addMeasureAxis("y", "'.get_lang('Votes').'");
yAxis.fontSize = "14px";
';
if (!$hasSerie) { if (!$hasSerie) {
$htmlChart .= ' $htmlChart .= '
var xAxisCategory = myChart.addCategoryAxis("x", "'.get_lang("Option").'"); var xAxisCategory = myChart.addCategoryAxis("x", "'.get_lang("Option").'");
xAxisCategory.fontSize = "14px";
xAxisCategory.addOrderRule('.json_encode($order).'); xAxisCategory.addOrderRule('.json_encode($order).');
myChart.addSeries("'.get_lang("Option").'", dimple.plot.bar);'; myChart.addSeries("'.get_lang("Option").'", dimple.plot.bar);';
} else { } else {
@ -3952,14 +3956,15 @@ class SurveyUtil
$serie = array_values(array_unique($serie)); $serie = array_values(array_unique($serie));
$htmlChart .= ' $htmlChart .= '
var xAxisCategory = var xAxisCategory =
myChart.addCategoryAxis("x", ["'.get_lang("Option").'","'.get_lang("Score").'"]); myChart.addCategoryAxis("x", ["'.get_lang('Option').'","'.get_lang("Score").'"]);
xAxisCategory.addOrderRule('.json_encode($serie).'); xAxisCategory.addOrderRule('.json_encode($serie).');
xAxisCategory.addGroupOrderRule("'.get_lang("Score").'"); xAxisCategory.addGroupOrderRule("'.get_lang('Score').'");
myChart.addSeries("'.get_lang("Option").'", dimple.plot.bar);';
myChart.addSeries("'.get_lang('Option').'", dimple.plot.bar);';
} else { } else {
$htmlChart .= ' $htmlChart .= '
myChart.addCategoryAxis("x", ["'.get_lang("Option").'","'.get_lang("Score").'"]); myChart.addCategoryAxis("x", ["'.get_lang('Option').'","'.get_lang("Score").'"]);
myChart.addSeries("'.get_lang("Serie").'", dimple.plot.bar);'; myChart.addSeries("'.get_lang('Serie').'", dimple.plot.bar);';
} }
} }

Loading…
Cancel
Save