Skip to main content

excelize_rs/xml/
slicers.rs

1//! Slicer and timeline parts.
2//!
3//! Ported from Go `xmlSlicers.go`.
4
5use serde::{Deserialize, Serialize};
6
7use super::common::{XlsxExtLst, XlsxInnerXml};
8
9/// Directly maps the `slicers` element that specifies a slicer view on the
10/// worksheet.
11#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
12#[serde(rename = "slicers", rename_all = "camelCase")]
13pub struct XlsxSlicers {
14    #[serde(rename = "@xmlns:mc", default)]
15    pub xmlns_mc: Option<String>,
16    #[serde(rename = "@xmlns:x", default)]
17    pub xmlns_x: Option<String>,
18    #[serde(rename = "@xmlns:xr10", default)]
19    pub xmlns_xr10: Option<String>,
20    #[serde(default)]
21    pub slicer: Vec<XlsxSlicer>,
22}
23
24/// A complex type that specifies a slicer view.
25#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct XlsxSlicer {
28    #[serde(rename = "@name", default)]
29    pub name: String,
30    #[serde(rename = "@xr10:uid", default)]
31    pub xr10_uid: Option<String>,
32    #[serde(rename = "@cache", default)]
33    pub cache: String,
34    #[serde(rename = "@caption", default)]
35    pub caption: Option<String>,
36    #[serde(rename = "@startItem", default)]
37    pub start_item: Option<i64>,
38    #[serde(rename = "@columnCount", default)]
39    pub column_count: Option<i64>,
40    #[serde(rename = "@showCaption", default)]
41    pub show_caption: Option<bool>,
42    #[serde(rename = "@level", default)]
43    pub level: Option<i64>,
44    #[serde(rename = "@style", default)]
45    pub style: Option<String>,
46    #[serde(rename = "@lockedPosition", default)]
47    pub locked_position: Option<bool>,
48    #[serde(rename = "@rowHeight", default)]
49    pub row_height: i64,
50}
51
52/// Directly maps the `slicerCacheDefinition` element that specifies a slicer
53/// cache.
54#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
55#[serde(rename = "slicerCacheDefinition", rename_all = "camelCase")]
56pub struct XlsxSlicerCacheDefinition {
57    #[serde(rename = "@xmlns:mc", default)]
58    pub xmlns_mc: Option<String>,
59    #[serde(rename = "@xmlns:x", default)]
60    pub xmlns_x: Option<String>,
61    #[serde(rename = "@xmlns:x15", default)]
62    pub xmlns_x15: Option<String>,
63    #[serde(rename = "@xmlns:xr10", default)]
64    pub xmlns_xr10: Option<String>,
65    #[serde(rename = "@name", default)]
66    pub name: String,
67    #[serde(rename = "@xr10:uid", default)]
68    pub xr10_uid: Option<String>,
69    #[serde(rename = "@sourceName", default)]
70    pub source_name: String,
71    #[serde(default)]
72    pub pivot_tables: Option<XlsxSlicerCachePivotTables>,
73    #[serde(default)]
74    pub data: Option<XlsxSlicerCacheData>,
75    #[serde(default)]
76    pub ext_lst: Option<XlsxExtLst>,
77}
78
79/// A complex type that specifies a group of pivotTable elements that specify
80/// the PivotTable views that are filtered by the slicer cache.
81#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
82#[serde(rename = "pivotTables", rename_all = "camelCase")]
83pub struct XlsxSlicerCachePivotTables {
84    #[serde(default)]
85    pub pivot_table: Vec<XlsxSlicerCachePivotTable>,
86}
87
88/// A complex type that specifies a PivotTable view filtered by a slicer cache.
89#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
90#[serde(rename_all = "camelCase")]
91pub struct XlsxSlicerCachePivotTable {
92    #[serde(rename = "@tabId", default)]
93    pub tab_id: i64,
94    #[serde(rename = "@name", default)]
95    pub name: String,
96}
97
98/// A complex type that specifies a data source for the slicer cache.
99#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
100#[serde(rename_all = "camelCase")]
101pub struct XlsxSlicerCacheData {
102    #[serde(default)]
103    pub olap: Option<XlsxInnerXml>,
104    #[serde(default)]
105    pub tabular: Option<XlsxTabularSlicerCache>,
106}
107
108/// A complex type that specifies non-OLAP slicer items that are cached within
109/// this slicer cache and properties of the slicer cache specific to non-OLAP
110/// slicer items.
111#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
112#[serde(rename_all = "camelCase")]
113pub struct XlsxTabularSlicerCache {
114    #[serde(rename = "@pivotCacheId", default)]
115    pub pivot_cache_id: i64,
116    #[serde(rename = "@sortOrder", default)]
117    pub sort_order: Option<String>,
118    #[serde(rename = "@customListSort", default)]
119    pub custom_list_sort: Option<bool>,
120    #[serde(rename = "@showMissing", default)]
121    pub show_missing: Option<bool>,
122    #[serde(rename = "@crossFilter", default)]
123    pub cross_filter: Option<String>,
124    #[serde(default)]
125    pub items: Option<XlsxTabularSlicerCacheItems>,
126    #[serde(default)]
127    pub ext_lst: Option<XlsxExtLst>,
128}
129
130/// A complex type that specifies non-OLAP slicer items that are cached within
131/// this slicer cache.
132#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
133#[serde(rename = "items", rename_all = "camelCase")]
134pub struct XlsxTabularSlicerCacheItems {
135    #[serde(rename = "@count", default)]
136    pub count: Option<i64>,
137    #[serde(default)]
138    pub i: Vec<XlsxTabularSlicerCacheItem>,
139}
140
141/// A complex type that specifies a non-OLAP slicer item that is cached within
142/// this slicer cache.
143#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
144#[serde(rename = "i", rename_all = "camelCase")]
145pub struct XlsxTabularSlicerCacheItem {
146    #[serde(rename = "@x", default)]
147    pub x: i64,
148    #[serde(rename = "@s", default)]
149    pub s: Option<bool>,
150    #[serde(rename = "@nd", default)]
151    pub nd: Option<bool>,
152}
153
154/// Specifies a table data source for the slicer cache.
155#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
156#[serde(rename = "x15:tableSlicerCache", rename_all = "camelCase")]
157pub struct XlsxTableSlicerCache {
158    #[serde(rename = "@tableId", default)]
159    pub table_id: i64,
160    #[serde(rename = "@column", default)]
161    pub column: i64,
162    #[serde(rename = "@sortOrder", default)]
163    pub sort_order: Option<String>,
164    #[serde(rename = "@customListSort", default)]
165    pub custom_list_sort: Option<bool>,
166    #[serde(rename = "@crossFilter", default)]
167    pub cross_filter: Option<String>,
168    #[serde(default)]
169    pub ext_lst: Option<XlsxExtLst>,
170}
171
172/// Specifies a list of slicer.
173#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
174#[serde(rename = "x14:slicerList", rename_all = "camelCase")]
175pub struct XlsxX14SlicerList {
176    #[serde(default)]
177    pub slicer: Vec<XlsxX14Slicer>,
178}
179
180/// Specifies a slicer view.
181#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
182#[serde(rename = "x14:slicer")]
183pub struct XlsxX14Slicer {
184    #[serde(rename = "@r:id", default)]
185    pub rid: String,
186}
187
188/// Directly maps the `x14:slicerCaches` element.
189#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
190#[serde(rename = "x14:slicerCaches")]
191pub struct XlsxX14SlicerCaches {
192    #[serde(rename = "@xmlns:x14", default)]
193    pub xmlns: String,
194    #[serde(rename = "$value", default)]
195    pub content: String,
196}
197
198/// Directly maps the `x14:slicerCache` element.
199#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
200#[serde(rename = "x14:slicerCache")]
201pub struct XlsxX14SlicerCache {
202    #[serde(rename = "@r:id", default)]
203    pub rid: String,
204}
205
206/// Directly maps the `x15:slicerCaches` element.
207#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
208#[serde(rename = "x15:slicerCaches")]
209pub struct XlsxX15SlicerCaches {
210    #[serde(rename = "@xmlns:x14", default)]
211    pub xmlns: String,
212    #[serde(rename = "$value", default)]
213    pub content: String,
214}
215
216/// Defines the structure used to parse the `x15:tableSlicerCache` element of
217/// the table slicer cache.
218#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
219#[serde(rename = "tableSlicerCache", rename_all = "camelCase")]
220pub struct DecodeTableSlicerCache {
221    #[serde(rename = "@tableId", default)]
222    pub table_id: i64,
223    #[serde(rename = "@column", default)]
224    pub column: i64,
225    #[serde(rename = "@sortOrder", default)]
226    pub sort_order: String,
227}
228
229/// Defines the structure used to parse the `x14:slicerList` element of a list
230/// of slicer.
231#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
232#[serde(rename = "slicerList", rename_all = "camelCase")]
233pub struct DecodeSlicerList {
234    #[serde(default)]
235    pub slicer: Vec<DecodeSlicer>,
236}
237
238/// Defines the structure used to parse the `x14:slicer` element of a slicer.
239#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
240#[serde(rename = "slicer")]
241pub struct DecodeSlicer {
242    #[serde(rename = "@id", default)]
243    pub rid: String,
244}
245
246/// Defines the structure used to parse the `x14:slicerCaches` and
247/// `x15:slicerCaches` element of a slicer cache.
248#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
249#[serde(rename = "slicerCaches")]
250pub struct DecodeSlicerCaches {
251    #[serde(rename = "$value", default)]
252    pub content: String,
253}
254
255/// A mechanism for filtering data in pivot table views, cube functions and
256/// charts based on non-worksheet pivot tables. In the case of using OLAP
257/// Timeline source data, a Timeline is based on a key attribute of an OLAP
258/// hierarchy. In the case of using native Timeline source data, a Timeline is
259/// based on a data table column.
260#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
261#[serde(rename = "timelines", rename_all = "camelCase")]
262pub struct XlsxTimelines {
263    #[serde(rename = "@xmlns:mc", default)]
264    pub xmlns_mc: Option<String>,
265    #[serde(rename = "@xmlns:x", default)]
266    pub xmlns_x: Option<String>,
267    #[serde(rename = "@xmlns:xr10", default)]
268    pub xmlns_xr10: Option<String>,
269    #[serde(default)]
270    pub timeline: Vec<XlsxTimeline>,
271}
272
273/// Timeline view specifies the display of a timeline on a worksheet.
274#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
275#[serde(rename_all = "camelCase")]
276pub struct XlsxTimeline {
277    #[serde(rename = "@name", default)]
278    pub name: String,
279    #[serde(rename = "@xr10:uid", default)]
280    pub xr10_uid: Option<String>,
281    #[serde(rename = "@cache", default)]
282    pub cache: String,
283    #[serde(rename = "@caption", default)]
284    pub caption: Option<String>,
285    #[serde(rename = "@showHeader", default)]
286    pub show_header: Option<bool>,
287    #[serde(rename = "@showSelectionLabel", default)]
288    pub show_selection_label: Option<bool>,
289    #[serde(rename = "@showTimeLevel", default)]
290    pub show_time_level: Option<bool>,
291    #[serde(rename = "@showHorizontalScrollbar", default)]
292    pub show_horizontal_scrollbar: Option<bool>,
293    #[serde(rename = "@level", default)]
294    pub level: i64,
295    #[serde(rename = "@selectionLevel", default)]
296    pub selection_level: i64,
297    #[serde(rename = "@scrollPosition", default)]
298    pub scroll_position: Option<String>,
299    #[serde(rename = "@style", default)]
300    pub style: Option<String>,
301}