mirror of
https://github.com/retailcrm/PHPExcel.git
synced 2024-11-30 01:06:03 +03:00
Fix to x-axis labels for chart rendering
Fix to page orientation for DomPDF renderer
This commit is contained in:
parent
49b0549885
commit
364f581ee4
@ -339,15 +339,15 @@ class PHPExcel_Chart_DataSeries
|
||||
public function refresh(PHPExcel_Worksheet $worksheet) {
|
||||
foreach($this->_plotValues as $plotValues) {
|
||||
if ($plotValues !== NULL)
|
||||
$plotValues->refresh($worksheet);
|
||||
$plotValues->refresh($worksheet, TRUE);
|
||||
}
|
||||
foreach($this->_plotLabel as $plotValues) {
|
||||
if ($plotValues !== NULL)
|
||||
$plotValues->refresh($worksheet);
|
||||
$plotValues->refresh($worksheet, TRUE);
|
||||
}
|
||||
foreach($this->_plotCategory as $plotValues) {
|
||||
if ($plotValues !== NULL)
|
||||
$plotValues->refresh($worksheet);
|
||||
$plotValues->refresh($worksheet, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ class PHPExcel_Chart_DataSeriesValues
|
||||
* FALSE - don't change the value of _dataSource
|
||||
* @return PHPExcel_Chart_DataSeriesValues
|
||||
*/
|
||||
public function setDataValues($dataValues = array(), $refreshDataSource = true) {
|
||||
public function setDataValues($dataValues = array(), $refreshDataSource = TRUE) {
|
||||
$this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($dataValues);
|
||||
$this->_pointCount = count($dataValues);
|
||||
|
||||
@ -277,7 +277,7 @@ class PHPExcel_Chart_DataSeriesValues
|
||||
return $var !== NULL;
|
||||
}
|
||||
|
||||
public function refresh(PHPExcel_Worksheet $worksheet) {
|
||||
public function refresh(PHPExcel_Worksheet $worksheet, $flatten = TRUE) {
|
||||
if ($this->_dataSource !== NULL) {
|
||||
$calcEngine = PHPExcel_Calculation::getInstance();
|
||||
$newDataValues = PHPExcel_Calculation::_unwrapResult(
|
||||
@ -287,9 +287,26 @@ class PHPExcel_Chart_DataSeriesValues
|
||||
$worksheet->getCell('A1')
|
||||
)
|
||||
);
|
||||
|
||||
if ($flatten) {
|
||||
$this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues);
|
||||
} else {
|
||||
$newArray = array_values(array_shift($newDataValues));
|
||||
foreach($newArray as $i => $newDataSet) {
|
||||
$newArray[$i] = array($newDataSet);
|
||||
}
|
||||
|
||||
foreach($newDataValues as $newDataSet) {
|
||||
$i = 0;
|
||||
foreach($newDataSet as $newDataVal) {
|
||||
array_unshift($newArray[$i++],$newDataVal);
|
||||
}
|
||||
}
|
||||
$this->_dataValues = $newArray;
|
||||
}
|
||||
|
||||
$this->_pointCount = count($this->_dataValues);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
} // function _formatPointMarker()
|
||||
|
||||
|
||||
private function _formatDataSetLabels($groupID,$datasetLabels,$rotation = '') {
|
||||
private function _formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation = '') {
|
||||
$datasetLabelFormatCode = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getFormatCode();
|
||||
if (!is_null($datasetLabelFormatCode)) {
|
||||
// Retrieve any label formatting code
|
||||
@ -107,11 +107,8 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
|
||||
$testCurrentIndex = 0;
|
||||
foreach($datasetLabels as $i => $datasetLabel) {
|
||||
// Fill in any missing values in the $datasetLabels array
|
||||
while ($i != $testCurrentIndex) {
|
||||
$datasetLabels[$testCurrentIndex] = '';
|
||||
++$testCurrentIndex;
|
||||
}
|
||||
array_reverse($datasetLabel);
|
||||
|
||||
if (is_array($datasetLabel)) {
|
||||
if ($rotation == 'bar') {
|
||||
$datasetLabel = array_reverse($datasetLabel);
|
||||
@ -266,9 +263,10 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
private function _renderPlotLine($groupID, $filled = false, $combination = false, $dimensions = '2d') {
|
||||
$grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
|
||||
|
||||
$labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
|
||||
if ($labelCount > 0) {
|
||||
$datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
|
||||
if (count($datasetLabels) > 0) {
|
||||
$datasetLabels = $this->_formatDataSetLabels($groupID,$datasetLabels);
|
||||
$datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
|
||||
$this->_graph->xaxis->SetTickLabels($datasetLabels);
|
||||
}
|
||||
|
||||
@ -333,9 +331,10 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
}
|
||||
$grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
|
||||
|
||||
$labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
|
||||
if ($labelCount > 0) {
|
||||
$datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
|
||||
if (count($datasetLabels) > 0) {
|
||||
$datasetLabels = $this->_formatDataSetLabels($groupID,$datasetLabels,$rotation);
|
||||
$datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation);
|
||||
// Rotate for bar rather than column chart
|
||||
if ($rotation == 'bar') {
|
||||
$datasetLabels = array_reverse($datasetLabels);
|
||||
@ -599,23 +598,24 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
$this->_renderPiePlotArea($doughnut);
|
||||
|
||||
$iLimit = ($multiplePlots) ? $groupCount : 1;
|
||||
for($i = 0; $i < $iLimit; ++$i) {
|
||||
$grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotGrouping();
|
||||
$exploded = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotStyle();
|
||||
if ($i == 0) {
|
||||
$datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotCategoryByIndex(0)->getDataValues();
|
||||
if (count($datasetLabels) > 0) {
|
||||
$datasetLabels = $this->_formatDataSetLabels($i,$datasetLabels);
|
||||
for($groupID = 0; $groupID < $iLimit; ++$groupID) {
|
||||
$grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
|
||||
$exploded = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
|
||||
if ($groupID == 0) {
|
||||
$labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
|
||||
if ($labelCount > 0) {
|
||||
$datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
|
||||
$datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
|
||||
}
|
||||
}
|
||||
|
||||
$seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotSeriesCount();
|
||||
$seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
|
||||
$seriesPlots = array();
|
||||
// For pie charts, we only display the first series: doughnut charts generally display all series
|
||||
$jLimit = ($multiplePlots) ? $seriesCount : 1;
|
||||
// Loop through each data series in turn
|
||||
for($j = 0; $j < $jLimit; ++$j) {
|
||||
$dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotValuesByIndex($j)->getDataValues();
|
||||
$dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues();
|
||||
|
||||
// Fill in any missing values in the $dataValues array
|
||||
$testCurrentIndex = 0;
|
||||
@ -646,6 +646,7 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
}
|
||||
|
||||
$seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
|
||||
if (count($datasetLabels) > 0)
|
||||
$seriesPlot->SetLabels(array_fill(0,count($datasetLabels),''));
|
||||
if ($dimensions != '3d') {
|
||||
$seriesPlot->SetGuideLines(false);
|
||||
@ -668,8 +669,8 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
|
||||
$this->_renderRadarPlotArea();
|
||||
|
||||
for($i = 0; $i < $groupCount; ++$i) {
|
||||
$this->_renderPlotRadar($i);
|
||||
for($groupID = 0; $groupID < $groupCount; ++$groupID) {
|
||||
$this->_renderPlotRadar($groupID);
|
||||
}
|
||||
} // function _renderRadarChart()
|
||||
|
||||
@ -679,8 +680,8 @@ class PHPExcel_Chart_Renderer_jpgraph
|
||||
|
||||
$this->_renderCartesianPlotArea();
|
||||
|
||||
for($i = 0; $i < $groupCount; ++$i) {
|
||||
$this->_renderPlotStock($i);
|
||||
for($groupID = 0; $groupID < $groupCount; ++$i) {
|
||||
$this->_renderPlotStock($groupID);
|
||||
}
|
||||
} // function _renderStockChart()
|
||||
|
||||
|
@ -103,9 +103,11 @@ class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHP
|
||||
$paperSize = self::$_paperSizes[$printPaperSize];
|
||||
}
|
||||
|
||||
$orientation = ($orientation == 'L') ? 'landscape' : 'portrait';
|
||||
|
||||
// Create PDF
|
||||
$pdf = new DOMPDF();
|
||||
$pdf->set_paper(strtolower($paperSize), strtolower($orientation));
|
||||
$pdf->set_paper(strtolower($paperSize), $orientation);
|
||||
|
||||
$pdf->load_html(
|
||||
$this->generateHTMLHeader(false) .
|
||||
|
@ -95,7 +95,7 @@ class PHPExcel_Writer_PDF_mPDF extends PHPExcel_Writer_PDF_Core implements PHPEx
|
||||
$orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) ?
|
||||
PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation();
|
||||
}
|
||||
$orientation = strtolower($orientation);
|
||||
$orientation = strtoupper($orientation);
|
||||
|
||||
// Override Paper Size
|
||||
if (!is_null($this->getPaperSize())) {
|
||||
@ -109,7 +109,7 @@ class PHPExcel_Writer_PDF_mPDF extends PHPExcel_Writer_PDF_Core implements PHPEx
|
||||
// Create PDF
|
||||
$pdf = new mpdf();
|
||||
$pdf->_setPageSize(strtoupper($paperSize), $orientation);
|
||||
|
||||
$pdf->DefOrientation = $orientation;
|
||||
// Document info
|
||||
$pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
|
||||
$pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
|
||||
|
@ -109,7 +109,7 @@ foreach($inputFileNames as $inputFileName) {
|
||||
echo ' ' , $chartName , ' - ' , $caption , EOL;
|
||||
echo str_repeat(' ',strlen($chartName)+3);
|
||||
|
||||
$jpegFile = str_replace('.xlsx', '.jpg', $inputFileNameShort);
|
||||
$jpegFile = '35'.str_replace('.xlsx', '.jpg', substr($inputFileNameShort,2));
|
||||
if (file_exists($jpegFile)) {
|
||||
unlink($jpegFile);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user