diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2017-02-26 22:48:06 +0100 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2017-04-04 13:39:29 +0000 |
commit | 9009663deb8f0862f419fd99bf0b761c7f923eff (patch) | |
tree | ea25976de0919f9d2161037d83be0eace4c1070b /offapi/com | |
parent | 1931b5b01c6fdaa204d26ec4b9675dad16373cf2 (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/com')
-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.idl | 44 | ||||
-rw-r--r-- | offapi/com/sun/star/chart2/data/XDataReceiver.idl | 2 | ||||
-rw-r--r-- | offapi/com/sun/star/chart2/data/XPivotTableDataProvider.idl | 90 | ||||
-rw-r--r-- | offapi/com/sun/star/table/XTablePivotChart.idl | 36 | ||||
-rw-r--r-- | offapi/com/sun/star/table/XTablePivotCharts.idl | 63 | ||||
-rw-r--r-- | offapi/com/sun/star/table/XTablePivotChartsSupplier.idl | 41 |
7 files changed, 244 insertions, 57 deletions
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: */ |