From 6aeea88a6e4c5c913109a9d25f1dc708e6bd00e6 Mon Sep 17 00:00:00 2001 From: mindline Date: Mon, 25 Apr 2022 14:14:28 +0200 Subject: [PATCH 1/2] Feat: series data labels hide option/ number format - only write data label xml block, if at least one data label should be displayed - adds data label number format to all chart types --- .../Writer/PowerPoint2007/PptCharts.php | 1073 +++++++++-------- 1 file changed, 601 insertions(+), 472 deletions(-) diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 4d03776f1..9d3936c58 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -734,32 +734,49 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, bool $incl $this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords); $objWriter->endElement(); - // c:ser > c:dLbls - // @link : https://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.charts.areachartseries.aspx - $objWriter->startElement('c:dLbls'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:ser > c:dLbls + // @link : https://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.charts.areachartseries.aspx + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + //c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:ser > c:dLbls > c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:ser > c:dLbls > c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:ser > c:dLbls > c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:ser > c:dLbls > c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:ser > c:dLbls > c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:ser > c:dLbls > c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:ser > c:dLbls > c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:ser > c:dLbls > c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:ser > ##c:dLbls - $objWriter->endElement(); - - if (Fill::FILL_NONE != $series->getFill()->getFillType()) { - // c:spPr - $objWriter->startElement('c:spPr'); - // Write fill - $this->writeFill($objWriter, $series->getFill()); - // ## c:spPr + // c:ser > ##c:dLbls $objWriter->endElement(); + + if (Fill::FILL_NONE != $series->getFill()->getFillType()) { + // c:spPr + $objWriter->startElement('c:spPr'); + // Write fill + $this->writeFill($objWriter, $series->getFill()); + // ## c:spPr + $objWriter->endElement(); + } } // Write X axis data @@ -863,92 +880,101 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, bool $includ $objWriter->endElement(); } - // c:dLbls - $objWriter->startElement('c:dLbls'); - - if ($series->hasDlblNumFormat()) { - //c:numFmt - $objWriter->startElement('c:numFmt'); - $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); - $objWriter->writeAttribute('sourceLinked', '0'); - $objWriter->endElement(); - } + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + // c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr'); + // a:bodyPr + $objWriter->writeElement('a:bodyPr'); - // a:lstStyle - $objWriter->writeElement('a:lstStyle'); + // a:lstStyle + $objWriter->writeElement('a:lstStyle'); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - // a:solidFill - $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); - // >a:solidFill - $objWriter->endElement(); - // a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - // >a:latin - $objWriter->endElement(); + // a:solidFill + $objWriter->startElement('a:solidFill'); + $this->writeColor($objWriter, $series->getFont()->getColor()); + // >a:solidFill + $objWriter->endElement(); + // a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + // >a:latin + $objWriter->endElement(); - // >a:defRPr - $objWriter->endElement(); - // >a:pPr - $objWriter->endElement(); + // >a:defRPr + $objWriter->endElement(); + // >a:pPr + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - // >a:p - $objWriter->endElement(); - // >a:lstStyle - $objWriter->endElement(); + // >a:p + $objWriter->endElement(); + // >a:lstStyle + $objWriter->endElement(); - // c:dLblPos - $this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition()); + // c:dLblPos + $this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition()); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:separator - $objWriter->writeElement('c:separator', $series->hasShowSeparator() ? $series->getSeparator() : ''); + // c:separator + $objWriter->writeElement('c:separator', $series->hasShowSeparator() ? $series->getSeparator() : ''); - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - $objWriter->endElement(); + $objWriter->endElement(); + } // c:spPr if (Fill::FILL_NONE != $series->getFill()->getFillType()) { @@ -1075,77 +1101,94 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, bool $in $objWriter->endElement(); } - // c:dLbls - $objWriter->startElement('c:dLbls'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + //c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr', null); + // a:bodyPr + $objWriter->writeElement('a:bodyPr', null); - // a:lstStyle - $objWriter->writeElement('a:lstStyle', null); + // a:lstStyle + $objWriter->writeElement('a:lstStyle', null); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - // Font - a:solidFill - $objWriter->startElement('a:solidFill'); + // Font - a:solidFill + $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); + $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + $objWriter->endElement(); - // Font - a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // Font - a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - $objWriter->endElement(); + $objWriter->endElement(); + } // c:spPr if (Fill::FILL_NONE != $series->getFill()->getFillType()) { @@ -1279,80 +1322,89 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, bo } if (isset($series) && is_object($series) && $series instanceof Chart\Series) { - // c:dLbls - $objWriter->startElement('c:dLbls'); - - $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - $this->writeElementWithValAttribute($objWriter, 'c:showBubbleSize', '0'); - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - - if ($series->hasDlblNumFormat()) { - //c:numFmt - $objWriter->startElement('c:numFmt'); - $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); - $objWriter->writeAttribute('sourceLinked', '0'); - $objWriter->endElement(); - } - - // c:dLbls\c:txPr - $objWriter->startElement('c:txPr'); - $objWriter->writeElement('a:bodyPr', null); - $objWriter->writeElement('a:lstStyle', null); - - // c:dLbls\c:txPr\a:p - $objWriter->startElement('a:p'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + // c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:dLbls\c:txPr\a:p\a:pPr - $objWriter->startElement('a:pPr'); + $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showBubbleSize', '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + + // c:dLbls\c:txPr + $objWriter->startElement('c:txPr'); + $objWriter->writeElement('a:bodyPr', null); + $objWriter->writeElement('a:lstStyle', null); + + // c:dLbls\c:txPr\a:p + $objWriter->startElement('a:p'); + + // c:dLbls\c:txPr\a:p\a:pPr + $objWriter->startElement('a:pPr'); + + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr + $objWriter->startElement('a:defRPr'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:solidFill + $objWriter->startElement('a:solidFill'); + $this->writeColor($objWriter, $series->getFont()->getColor()); + $objWriter->endElement(); - // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr - $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - - // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:solidFill - $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\ + $objWriter->endElement(); + // c:dLbls\c:txPr\a:p\a:pPr\ + $objWriter->endElement(); - // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\ - $objWriter->endElement(); - // c:dLbls\c:txPr\a:p\a:pPr\ - $objWriter->endElement(); + // c:dLbls\c:txPr\a:p\a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - // c:dLbls\c:txPr\a:p\a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // c:dLbls\c:txPr\a:p\ + $objWriter->endElement(); + // c:dLbls\c:txPr\ + $objWriter->endElement(); - // c:dLbls\c:txPr\a:p\ - $objWriter->endElement(); - // c:dLbls\c:txPr\ - $objWriter->endElement(); + $separator = $series->getSeparator(); + if (!empty($separator) && PHP_EOL != $separator) { + // c:dLbls\c:separator + $objWriter->writeElement('c:separator', $separator); + } - $separator = $series->getSeparator(); - if (!empty($separator) && PHP_EOL != $separator) { - // c:dLbls\c:separator - $objWriter->writeElement('c:separator', $separator); + // c:dLbls\ + $objWriter->endElement(); } - - // c:dLbls\ - $objWriter->endElement(); } $this->writeElementWithValAttribute($objWriter, 'c:firstSliceAng', '0'); @@ -1415,91 +1467,100 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, bool $includ $objWriter->endElement(); } - // c:dLbls - $objWriter->startElement('c:dLbls'); - - if ($series->hasDlblNumFormat()) { - //c:numFmt - $objWriter->startElement('c:numFmt'); - $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); - $objWriter->writeAttribute('sourceLinked', '0'); - $objWriter->endElement(); - } + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + // c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr', null); + // a:bodyPr + $objWriter->writeElement('a:bodyPr', null); - // a:lstStyle - $objWriter->writeElement('a:lstStyle', null); + // a:lstStyle + $objWriter->writeElement('a:lstStyle', null); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - // Font - a:solidFill - $objWriter->startElement('a:solidFill'); + // Font - a:solidFill + $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); + $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + $objWriter->endElement(); - // Font - a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // Font - a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // c:dLblPos - $this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition()); + // c:dLblPos + $this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition()); - // c:showLegendKey - $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); + // c:showLegendKey + $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - $objWriter->endElement(); + $objWriter->endElement(); + } // Write X axis data $axisXData = array_keys($series->getValues()); @@ -1585,80 +1646,97 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, bool $in $objWriter->endElement(); } - // c:dLbls - $objWriter->startElement('c:dLbls'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + //c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr', null); + // a:bodyPr + $objWriter->writeElement('a:bodyPr', null); - // a:lstStyle - $objWriter->writeElement('a:lstStyle', null); + // a:lstStyle + $objWriter->writeElement('a:lstStyle', null); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - // Font - a:solidFill - $objWriter->startElement('a:solidFill'); + // Font - a:solidFill + $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); + $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + $objWriter->endElement(); - // Font - a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // Font - a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // c:dLblPos - $this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition()); + // c:dLblPos + $this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition()); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - $objWriter->endElement(); + $objWriter->endElement(); + } // Write X axis data $axisXData = array_keys($series->getValues()); @@ -1736,78 +1814,95 @@ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, bool $incl // Marker $this->writeSeriesMarker($objWriter, $series->getMarker()); - // c:dLbls - $objWriter->startElement('c:dLbls'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + // c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr', null); + // a:bodyPr + $objWriter->writeElement('a:bodyPr', null); - // a:lstStyle - $objWriter->writeElement('a:lstStyle', null); + // a:lstStyle + $objWriter->writeElement('a:lstStyle', null); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - // Font - a:solidFill - $objWriter->startElement('a:solidFill'); + // Font - a:solidFill + $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); + $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + $objWriter->endElement(); - // Font - a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // Font - a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - // > c:dLbls - $objWriter->endElement(); + // > c:dLbls + $objWriter->endElement(); + } // Write X axis data $axisXData = array_keys($series->getValues()); @@ -1901,80 +1996,97 @@ protected function writeTypeRadar(XMLWriter $objWriter, Radar $subject, bool $in // Marker $this->writeSeriesMarker($objWriter, $series->getMarker()); - // c:dLbls - $objWriter->startElement('c:dLbls'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + //c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr', null); + // a:bodyPr + $objWriter->writeElement('a:bodyPr', null); - // a:lstStyle - $objWriter->writeElement('a:lstStyle', null); + // a:lstStyle + $objWriter->writeElement('a:lstStyle', null); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '30000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-25000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '30000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-25000'); - // Font - a:solidFill - $objWriter->startElement('a:solidFill'); + // Font - a:solidFill + $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); + $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + $objWriter->endElement(); - // Font - a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // Font - a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // c:showLegendKey - $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); + // c:showLegendKey + $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - $objWriter->endElement(); + $objWriter->endElement(); + } // c:spPr $objWriter->startElement('c:spPr'); @@ -2081,87 +2193,104 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, bool // Marker $this->writeSeriesMarker($objWriter, $series->getMarker()); - // c:dLbls - $objWriter->startElement('c:dLbls'); + // DataLabels + if ( + $series->hasShowSeriesName() || + $series->hasShowCategoryName() || + $series->hasShowLegendKey() || + $series->hasShowValue() || + $series->hasShowPercentage() + ) { + // c:dLbls + $objWriter->startElement('c:dLbls'); + + if ($series->hasDlblNumFormat()) { + //c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } - // c:txPr - $objWriter->startElement('c:txPr'); + // c:txPr + $objWriter->startElement('c:txPr'); - // a:bodyPr - $objWriter->writeElement('a:bodyPr', null); + // a:bodyPr + $objWriter->writeElement('a:bodyPr', null); - // a:lstStyle - $objWriter->writeElement('a:lstStyle', null); + // a:lstStyle + $objWriter->writeElement('a:lstStyle', null); - // a:p - $objWriter->startElement('a:p'); + // a:p + $objWriter->startElement('a:p'); - // a:pPr - $objWriter->startElement('a:pPr'); + // a:pPr + $objWriter->startElement('a:pPr'); - // a:defRPr - $objWriter->startElement('a:defRPr'); + // a:defRPr + $objWriter->startElement('a:defRPr'); - $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); - $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); - $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); - $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); - $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); - // Font - a:solidFill - $objWriter->startElement('a:solidFill'); + // Font - a:solidFill + $objWriter->startElement('a:solidFill'); - $this->writeColor($objWriter, $series->getFont()->getColor()); + $this->writeColor($objWriter, $series->getFont()->getColor()); - $objWriter->endElement(); + $objWriter->endElement(); - // Font - a:latin - $objWriter->startElement('a:latin'); - $objWriter->writeAttribute('typeface', $series->getFont()->getName()); - $objWriter->endElement(); + // Font - a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // a:endParaRPr - $objWriter->startElement('a:endParaRPr'); - $objWriter->writeAttribute('lang', 'en-US'); - $objWriter->writeAttribute('dirty', '0'); - $objWriter->endElement(); + // a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - $objWriter->endElement(); + $objWriter->endElement(); - // c:showLegendKey - $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); + // c:showLegendKey + $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); - // c:showVal - $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + // c:showVal + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); - // c:showCatName - $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + // c:showCatName + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); - // c:showSerName - $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + // c:showSerName + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); - // c:showPercent - $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + // c:showPercent + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); - // c:separator - $separator = $series->getSeparator(); - if (!empty($separator) && PHP_EOL != $separator) { - // c:dLbls\c:separator - $objWriter->writeElement('c:separator', $separator); - } + // c:separator + $separator = $series->getSeparator(); + if (!empty($separator) && PHP_EOL != $separator) { + // c:dLbls\c:separator + $objWriter->writeElement('c:separator', $separator); + } - // c:showLeaderLines - $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + // c:showLeaderLines + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - $objWriter->endElement(); + $objWriter->endElement(); + } // Write X axis data $axisXData = array_keys($series->getValues()); From 4c8eef3d930e390bab2b3b44bd639fd25ba9f6c9 Mon Sep 17 00:00:00 2001 From: mindline Date: Mon, 25 Apr 2022 14:31:14 +0200 Subject: [PATCH 2/2] Docs: updates changelog --- docs/changes/1.1.0.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changes/1.1.0.md b/docs/changes/1.1.0.md index 47613d194..da1bf39ab 100644 --- a/docs/changes/1.1.0.md +++ b/docs/changes/1.1.0.md @@ -1,7 +1,10 @@ -# 1.0.0 - WIP +# 1.1.0 - WIP ## Features - +- Improve series data labels - [@mindline](https://github.com/mindline-analytics) GH-709 + - adds data labels number format for all chart types + - skips data labels xml if no lables should be shown + - PowerPoint2007 Writer - Support for axis options - [@mindline](https://github.com/mindline-analytics) GH-676 - Axis intersection point (axis crossing) through `setCrossesAt`/ `getCrossesAt` - Reverse axis order through `setIsReversedOrder`/ `isReversedOrder`