[Libreoffice-commits] core.git: chart2/qa include/oox oox/source

Balazs Varga (via logerrit) logerrit at kemper.freedesktop.org
Mon Mar 9 10:38:05 UTC 2020


 chart2/qa/extras/chart2export.cxx       |   13 +++++++++++++
 chart2/qa/extras/data/odt/tdf131143.odt |binary
 include/oox/export/chartexport.hxx      |    2 +-
 oox/source/export/chartexport.cxx       |   10 ++++++----
 4 files changed, 20 insertions(+), 5 deletions(-)

New commits:
commit 45413702b0b71ee56aee57d215b4041d3ea6067b
Author:     Balazs Varga <balazs.varga991 at gmail.com>
AuthorDate: Thu Mar 5 11:28:23 2020 +0100
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Mon Mar 9 11:37:27 2020 +0100

    tdf#131143 OOXML chart: fix missing data points of scatter chart
    
    If "values-x" property is empty, export X-Y (scatter) chart category
    labels in c:xVal/c:strRef/c:strCache/c:pt/c:v to avoid missing data
    points at next import.
    
    Change-Id: Ib5ed99bd1186bd1cfa3e2559aff1c8d214547017
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90011
    Tested-by: László Németh <nemeth at numbertext.org>
    Reviewed-by: László Németh <nemeth at numbertext.org>

diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index c3bd2283bf4e..323a026594d8 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -49,6 +49,7 @@ public:
     void testCrosses();
     void testScatterChartTextXValues();
     void testScatterXAxisValues();
+    void testScatterXAxisCategories();
     void testChartDataTable();
     void testChartExternalData();
     void testEmbeddingsGrabBag();
@@ -171,6 +172,7 @@ public:
     CPPUNIT_TEST(testCrosses);
     CPPUNIT_TEST(testScatterChartTextXValues);
     CPPUNIT_TEST(testScatterXAxisValues);
+    CPPUNIT_TEST(testScatterXAxisCategories);
     CPPUNIT_TEST(testChartDataTable);
     CPPUNIT_TEST(testChartExternalData);
     CPPUNIT_TEST(testEmbeddingsGrabBag);
@@ -710,6 +712,17 @@ void Chart2ExportTest::testScatterXAxisValues()
     assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:pt[4]/c:v", "16");
 }
 
+void Chart2ExportTest::testScatterXAxisCategories()
+{
+    load("/chart2/qa/extras/data/odt/", "tdf131143.odt");
+
+    xmlDocPtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text");
+    CPPUNIT_ASSERT(pXmlDoc);
+    assertXPath(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:ptCount", "val", "4");
+    assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:pt[1]/c:v", "Row 1");
+    assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:pt[2]/c:v", "Row 2");
+}
+
 void Chart2ExportTest::testChartDataTable()
 {
     load("/chart2/qa/extras/data/docx/", "testChartDataTable.docx");
diff --git a/chart2/qa/extras/data/odt/tdf131143.odt b/chart2/qa/extras/data/odt/tdf131143.odt
new file mode 100644
index 000000000000..e8ffeaf5a962
Binary files /dev/null and b/chart2/qa/extras/data/odt/tdf131143.odt differ
diff --git a/include/oox/export/chartexport.hxx b/include/oox/export/chartexport.hxx
index ac22a18b8957..951819703a76 100644
--- a/include/oox/export/chartexport.hxx
+++ b/include/oox/export/chartexport.hxx
@@ -175,7 +175,7 @@ private:
     void exportSeriesText(
         const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq );
     void exportSeriesCategory(
-        const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq );
+        const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq, sal_Int32 nValueType = XML_cat );
     void exportSeriesValues(
         const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq, sal_Int32 nValueType = XML_val );
     void exportShapeProps( const css::uno::Reference< css::beans::XPropertySet >& xPropSet );
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index cf586257ccf7..aecfe3948d33 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -2304,6 +2304,8 @@ void ChartExport::exportSeries( const Reference<chart2::XChartType>& xChartType,
                             if( xValues.is() )
                                 exportSeriesValues( xValues, XML_xVal );
                         }
+                        else if( mxCategoriesValues.is() )
+                            exportSeriesCategory( mxCategoriesValues, XML_xVal );
                     }
 
                     if( eChartType == chart::TYPEID_BUBBLE )
@@ -2429,13 +2431,13 @@ void ChartExport::exportSeriesText( const Reference< chart2::data::XDataSequence
     pFS->endElement( FSNS( XML_c, XML_tx ) );
 }
 
-void ChartExport::exportSeriesCategory( const Reference< chart2::data::XDataSequence > & xValueSeq )
+void ChartExport::exportSeriesCategory( const Reference< chart2::data::XDataSequence > & xValueSeq, sal_Int32 nValueType )
 {
     FSHelperPtr pFS = GetFS();
-    pFS->startElement(FSNS(XML_c, XML_cat));
+    pFS->startElement(FSNS(XML_c, nValueType));
 
     OUString aCellRange = xValueSeq.is() ? xValueSeq->getSourceRangeRepresentation() : OUString();
-    const Sequence< Sequence< OUString >> aFinalSplitSource = getSplitCategoriesList(aCellRange);
+    const Sequence< Sequence< OUString >> aFinalSplitSource = (nValueType == XML_cat) ? getSplitCategoriesList(aCellRange) : Sequence< Sequence< OUString>>(0);
     aCellRange = parseFormula( aCellRange );
 
     if(aFinalSplitSource.getLength() > 1)
@@ -2496,7 +2498,7 @@ void ChartExport::exportSeriesCategory( const Reference< chart2::data::XDataSequ
         pFS->endElement(FSNS(XML_c, XML_strRef));
     }
 
-    pFS->endElement( FSNS( XML_c, XML_cat ) );
+    pFS->endElement( FSNS( XML_c, nValueType ) );
 }
 
 void ChartExport::exportSeriesValues( const Reference< chart2::data::XDataSequence > & xValueSeq, sal_Int32 nValueType )


More information about the Libreoffice-commits mailing list