summaryrefslogtreecommitdiff
path: root/offapi
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2017-02-26 22:48:06 +0100
committerTomaž Vajngerl <quikee@gmail.com>2017-04-04 13:39:29 +0000
commit9009663deb8f0862f419fd99bf0b761c7f923eff (patch)
treeea25976de0919f9d2161037d83be0eace4c1070b /offapi
parent1931b5b01c6fdaa204d26ec4b9675dad16373cf2 (diff)
tdf#83257 [API-CHANGE] Pivot chart implementation
This is a squashed commit of the pivot chart implementation. Some of the changes: - Add pivot chart specific (pivot table) data provider which provides the data from a pivot table to the associated chart. - When inserting a chart and the cursor is in a pivot table, in that case insert a pivot chart - Modify the pivot chart when the pivot table changes - Collect and set the number format for the values - isDataFromSpreadsheet check for the creation wizard - In ChartView (and VLegend) check if the data provider is a pivot chart data provider and get the pivot table field names to create the buttons on the UI. - Adds the functionallity to show a filter pop-up (from calc) when clicking on row / column / page field buttons. - Remove (X)PopupRequest as we won't need it. - Add ODF import/export for pivot charts: + Added loext:data-pilot-source attribute on chart:chart which is the internal name of the pivot table with which the pivot chart is associated with. If the element is present, then the it means the chart is a pivot chart, else it is a normal chart + Added service to create pivot chart data provider through UNO + Add new methods to XPivotChartDataProvider to create value and label data sequences separately from the data source, which is needed for pivot chart import + When importing defer setting the data provider until a later time when we know if we are creating a chart od a pivot chart - Pivot chart ODF round-trip test - Add table pivot chart supplier API: This adds the XTablePivotChartSupplier and related interfaces so we can access, create, delete pivot charts from UNO in a sheet document. With this we now distinguish between normal charts and pivot charts. This was mainly needed because we can't extend the "published" interfaces of TableChartSupplier. - Added an extensive test, which uses the API to create a new pivot chart when there was none, and checks that the pivot chart updates when the pivot table updates. Change-Id: Ia9ed96fd6b1d342e61c2f7f9fa33a5e03dda21af Reviewed-on: https://gerrit.libreoffice.org/36023 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'offapi')
-rw-r--r--offapi/UnoApi_offapi.mk7
-rw-r--r--offapi/com/sun/star/chart2/data/PivotTableFieldEntry.idl (renamed from offapi/com/sun/star/chart2/data/XPopupRequest.idl)25
-rw-r--r--offapi/com/sun/star/chart2/data/PopupRequest.idl44
-rw-r--r--offapi/com/sun/star/chart2/data/XDataReceiver.idl2
-rw-r--r--offapi/com/sun/star/chart2/data/XPivotTableDataProvider.idl90
-rw-r--r--offapi/com/sun/star/table/XTablePivotChart.idl36
-rw-r--r--offapi/com/sun/star/table/XTablePivotCharts.idl63
-rw-r--r--offapi/com/sun/star/table/XTablePivotChartsSupplier.idl41
8 files changed, 249 insertions, 59 deletions
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 49602b9555e7..ded4b7039c12 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -88,6 +88,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,com/sun/star/chart2,\
$(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,com/sun/star/chart2/data,\
DatabaseDataProvider \
LabeledDataSequence \
+ PivotTableFieldEntry \
))
$(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,com/sun/star/configuration,\
ReadOnlyAccess \
@@ -658,7 +659,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,com/sun/star/chart2/data,\
DataSequence \
DataSink \
DataSource \
- PopupRequest \
RangeHighlighter \
RangeHighlightListener \
TabularDataProviderArguments \
@@ -2058,7 +2058,7 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/chart2/data,\
XLabeledDataSequence \
XLabeledDataSequence2 \
XNumericalDataSequence \
- XPopupRequest \
+ XPivotTableDataProvider \
XRangeHighlighter \
XRangeXMLConversion \
XSheetDataProvider \
@@ -3639,6 +3639,9 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/table,\
XTableChart \
XTableCharts \
XTableChartsSupplier \
+ XTablePivotChart \
+ XTablePivotCharts \
+ XTablePivotChartsSupplier \
XTableColumns \
XTableRows \
))
diff --git a/offapi/com/sun/star/chart2/data/XPopupRequest.idl b/offapi/com/sun/star/chart2/data/PivotTableFieldEntry.idl
index 07116789b311..4d8973ff355b 100644
--- a/offapi/com/sun/star/chart2/data/XPopupRequest.idl
+++ b/offapi/com/sun/star/chart2/data/PivotTableFieldEntry.idl
@@ -7,11 +7,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*/
-
-#ifndef com_sun_star_chart2_data_XPopupRequest_idl
-#define com_sun_star_chart2_data_XPopupRequest_idl
-
-#include <com/sun/star/uno/XInterface.idl>
+#ifndef com_sun_star_chart2_data_PivotTableFieldEntry_idl
+#define com_sun_star_chart2_data_PivotTableFieldEntry_idl
module com
{
@@ -25,17 +22,21 @@ module data
{
/**
- @since LibreOffice 5.4
+ *
+ * @since LibreOffice 5.4
*/
-interface XPopupRequest : com::sun::star::awt::XRequestCallback
+struct PivotTableFieldEntry
{
+ string Name;
+
+ long DimensionIndex;
};
-} ; // data
-} ; // chart2
-} ; // com
-} ; // sun
-} ; // star
+}; // data
+}; // chart2
+}; // com
+}; // sun
+}; // star
#endif
diff --git a/offapi/com/sun/star/chart2/data/PopupRequest.idl b/offapi/com/sun/star/chart2/data/PopupRequest.idl
deleted file mode 100644
index f83ccc09a56b..000000000000
--- a/offapi/com/sun/star/chart2/data/PopupRequest.idl
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- */
-
-#ifndef com_sun_star_chart2_data_PopupRequest_idl
-#define com_sun_star_chart2_data_PopupRequest_idl
-
-#include <com/sun/star/chart2/data/XPopupRequest.idl>
-
-module com
-{
-module sun
-{
-module star
-{
-module chart2
-{
-module data
-{
-
-/** @since LibreOffice 5.4
- */
-service PopupRequest
-{
- /**
- */
- interface XPopupRequest;
-};
-
-} ; // data
-} ; // chart2
-} ; // com
-} ; // sun
-} ; // star
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/chart2/data/XDataReceiver.idl b/offapi/com/sun/star/chart2/data/XDataReceiver.idl
index abfbc830dd51..a7c853b1f9e6 100644
--- a/offapi/com/sun/star/chart2/data/XDataReceiver.idl
+++ b/offapi/com/sun/star/chart2/data/XDataReceiver.idl
@@ -92,7 +92,7 @@ interface XDataReceiver : ::com::sun::star::uno::XInterface
@since LibreOffice 5.4
*/
- XPopupRequest getPopupRequest();
+ com::sun::star::awt::XRequestCallback getPopupRequest();
};
} ; // data
diff --git a/offapi/com/sun/star/chart2/data/XPivotTableDataProvider.idl b/offapi/com/sun/star/chart2/data/XPivotTableDataProvider.idl
new file mode 100644
index 000000000000..731988bc2167
--- /dev/null
+++ b/offapi/com/sun/star/chart2/data/XPivotTableDataProvider.idl
@@ -0,0 +1,90 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef com_sun_star_chart2_data_XPivotTableDataProvider_idl
+#define com_sun_star_chart2_data_XPivotTableDataProvider_idl
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/chart2/data/PivotTableFieldEntry.idl>
+
+module com { module sun { module star { module chart2 { module data {
+
+/**
+ * Data provider specific for pivot chart data.
+ *
+ * @since LibreOffice 5.4
+ */
+interface XPivotTableDataProvider : com::sun::star::uno::XInterface
+{
+ /** names of column fields from the associated pivot table
+ *
+ * @since LibreOffice 5.4
+ */
+ sequence<com::sun::star::chart2::data::PivotTableFieldEntry> getColumnFields();
+
+ /** names of row fields from the associated pivot table
+ *
+ * @since LibreOffice 5.4
+ */
+ sequence<com::sun::star::chart2::data::PivotTableFieldEntry> getRowFields();
+
+ /** names of page fields from the associated pivot table
+ *
+ * @since LibreOffice 5.4
+ */
+ sequence<com::sun::star::chart2::data::PivotTableFieldEntry> getPageFields();
+
+ /** names of data fields from the associated pivot table
+ *
+ * @since LibreOffice 5.4
+ */
+ sequence<com::sun::star::chart2::data::PivotTableFieldEntry> getDataFields();
+
+ /** get the associated pivot table name
+ *
+ * @since LibreOffice 5.4
+ */
+ string getPivotTableName();
+
+ /** set the associated pivot table name
+ *
+ * @since LibreOffice 5.4
+ */
+ void setPivotTableName([in] string sPivotTableName);
+
+ /** creates a single data sequence of values for the given data series index.
+ *
+ * @param nIndex
+ * index of the data series
+ *
+ * @since LibreOffice 5.4
+ */
+ XDataSequence createDataSequenceOfValuesByIndex([in] long nIndex);
+
+ /** creates a single data sequence of label(s) for the given data series index.
+ *
+ * @param nIndex
+ * index of the data series
+ *
+ * @since LibreOffice 5.4
+ */
+ XDataSequence createDataSequenceOfLabelsByIndex([in] long nIndex);
+
+ /** creates a single data sequence of categories.
+ *
+ * @since LibreOffice 5.4
+ */
+ XDataSequence createDataSequenceOfCategories();
+};
+
+};};};};};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/table/XTablePivotChart.idl b/offapi/com/sun/star/table/XTablePivotChart.idl
new file mode 100644
index 000000000000..b6c53d6fe97d
--- /dev/null
+++ b/offapi/com/sun/star/table/XTablePivotChart.idl
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef __com_sun_star_table_XTablePivotChart_idl__
+#define __com_sun_star_table_XTablePivotChart_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+
+module com { module sun { module star { module table {
+
+
+/** provides access to the settings of a pivot chart object in a
+ table or spreadsheet.
+
+ @since LibreOffice 5.4
+ */
+interface XTablePivotChart: com::sun::star::uno::XInterface
+{
+ /** returns the pivot table name of the associated pivot table
+
+ @since LibreOffice 5.4
+ */
+ string getPivotTableName();
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/table/XTablePivotCharts.idl b/offapi/com/sun/star/table/XTablePivotCharts.idl
new file mode 100644
index 000000000000..e16b74b0ceac
--- /dev/null
+++ b/offapi/com/sun/star/table/XTablePivotCharts.idl
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef __com_sun_star_table_XTablePivotCharts_idl__
+#define __com_sun_star_table_XTablePivotCharts_idl__
+
+#include <com/sun/star/container/XNameAccess.idl>
+#include <com/sun/star/awt/Rectangle.idl>
+
+
+module com { module sun { module star { module table {
+
+
+/** provides methods to access pivot charts via name and to insert
+ and remove pivot charts.
+
+ @since LibreOffice 5.4
+ */
+interface XTablePivotCharts: com::sun::star::container::XNameAccess
+{
+
+ /** creates a pivot chart and adds it to the collection.
+
+ @param aName
+ is the name of the chart. This name is used to reference the
+ chart in the collection.
+
+ @param aRect
+ contains the rectangular location of the chart within the table
+ (in 1/100th mm).
+
+ @param aPivotTableName
+ the name of the pivot table (data pilot) to associate the pivot chart with
+
+ @since LibreOffice 5.4
+ */
+ void addNewByName(
+ [in] string aName,
+ [in] com::sun::star::awt::Rectangle aRect,
+ [in] string aPivotTableName);
+
+
+ /** removes a pivot chart from the collection.
+
+ @param aName
+ is the name of the chart to remove.
+
+ @since LibreOffice 5.4
+ */
+ void removeByName([in] string aName);
+};
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/table/XTablePivotChartsSupplier.idl b/offapi/com/sun/star/table/XTablePivotChartsSupplier.idl
new file mode 100644
index 000000000000..44017411c7b7
--- /dev/null
+++ b/offapi/com/sun/star/table/XTablePivotChartsSupplier.idl
@@ -0,0 +1,41 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef __com_sun_star_table_XTablePivotChartsSupplier_idl__
+#define __com_sun_star_table_XTablePivotChartsSupplier_idl__
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/table/XTablePivotCharts.idl>
+
+
+module com { module sun { module star { module table {
+
+
+/** provides a method to access a collection of pivot charts in a table
+ or spreadsheet.
+
+ @since LibreOffice 5.4
+ */
+interface XTablePivotChartsSupplier: com::sun::star::uno::XInterface
+{
+
+ /** returns the collection of pivot charts.
+
+ @since LibreOffice 5.4
+ */
+ com::sun::star::table::XTablePivotCharts getPivotCharts();
+
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */