-
Notifications
You must be signed in to change notification settings - Fork 85
Expand file tree
/
Copy pathPivotTable.ts
More file actions
149 lines (127 loc) · 4.28 KB
/
Copy pathPivotTable.ts
File metadata and controls
149 lines (127 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
// (C) 2007-2020 GoodData Corporation
import { ISeparators } from "@gooddata/numberjs";
import { AFM } from "@gooddata/typings";
import { isEmpty } from "lodash";
export interface IMenu {
aggregations?: boolean;
aggregationsSubMenu?: boolean;
}
export type DefaultColumnWidth = "viewport" | "unset"; // | "auto" | number; can be added later see ONE-4276
export interface IColumnSizing {
defaultWidth?: DefaultColumnWidth;
growToFit?: boolean;
columnWidths?: ColumnWidthItem[];
}
export interface IPivotTableConfig {
columnSizing?: IColumnSizing;
separators?: ISeparators;
menu?: IMenu;
maxHeight?: number;
}
export interface IMenuAggregationClickConfig {
type: AFM.TotalType;
measureIdentifiers: string[];
attributeIdentifier: string;
include: boolean;
}
export enum ColumnEventSourceType {
AUTOSIZE_COLUMNS = "autosizeColumns",
UI_DRAGGED = "uiColumnDragged",
FIT_GROW = "growToFit",
}
export enum UIClick {
CLICK = 1,
DOUBLE_CLICK = 2,
}
export interface IManuallyResizedColumnsItem {
width: number;
allowGrowToFit?: boolean;
}
export interface IResizedColumns {
[columnIdentifier: string]: IManuallyResizedColumnsItem;
}
export function isAbsoluteColumnWidth(columnWidth: ColumnWidth): columnWidth is IAbsoluteColumnWidth {
return Number(columnWidth.value) === columnWidth.value;
}
export interface IAbsoluteColumnWidth {
value: number;
allowGrowToFit?: boolean;
}
export interface IAutoColumnWidth {
value: "auto";
}
export type ColumnWidth = IAbsoluteColumnWidth | IAutoColumnWidth;
export interface IAttributeColumnWidthItem {
attributeColumnWidthItem: {
width: IAbsoluteColumnWidth;
attributeIdentifier: AFM.Identifier;
};
}
export interface IMeasureColumnWidthItem {
measureColumnWidthItem: {
width: ColumnWidth;
locators: LocatorItem[];
};
}
export interface IAllMeasureColumnWidthItem {
measureColumnWidthItem: {
width: IAbsoluteColumnWidth;
};
}
export interface IWeakMeasureColumnWidthItem {
measureColumnWidthItem: {
width: IAbsoluteColumnWidth;
locator: AFM.IMeasureLocatorItem;
};
}
export type ColumnWidthItem =
| IAttributeColumnWidthItem
| IMeasureColumnWidthItem
| IAllMeasureColumnWidthItem
| IWeakMeasureColumnWidthItem;
type LocatorItem = IAttributeLocatorItem | AFM.IMeasureLocatorItem;
interface IAttributeLocatorItem {
attributeLocatorItem: {
attributeIdentifier: AFM.Identifier;
element?: string; // this is difference from AFM.IAttributeLocatorItem
};
}
export function isAttributeColumnWidthItem(
columnWidthItem: ColumnWidthItem,
): columnWidthItem is IAttributeColumnWidthItem {
return (
!isEmpty(columnWidthItem) &&
(columnWidthItem as IAttributeColumnWidthItem).attributeColumnWidthItem !== undefined
);
}
export function isMeasureColumnWidthItem(
columnWidthItem: ColumnWidthItem,
): columnWidthItem is IMeasureColumnWidthItem {
return (
!isEmpty(columnWidthItem) &&
(columnWidthItem as IMeasureColumnWidthItem).measureColumnWidthItem !== undefined &&
(columnWidthItem as IMeasureColumnWidthItem).measureColumnWidthItem.locators !== undefined
);
}
export function isAllMeasureColumnWidthItem(
columnWidthItem: ColumnWidthItem,
): columnWidthItem is IAllMeasureColumnWidthItem {
return (
!isEmpty(columnWidthItem) &&
(columnWidthItem as IAllMeasureColumnWidthItem).measureColumnWidthItem !== undefined &&
(columnWidthItem as IMeasureColumnWidthItem).measureColumnWidthItem.locators === undefined &&
(columnWidthItem as IWeakMeasureColumnWidthItem).measureColumnWidthItem.locator === undefined
);
}
export function isWeakMeasureColumnWidthItem(
columnWidthItem: ColumnWidthItem,
): columnWidthItem is IWeakMeasureColumnWidthItem {
return (
!isEmpty(columnWidthItem) &&
(columnWidthItem as IWeakMeasureColumnWidthItem).measureColumnWidthItem !== undefined &&
(columnWidthItem as IWeakMeasureColumnWidthItem).measureColumnWidthItem.locator !== undefined
);
}
export function isMeasureLocatorItem(locator: LocatorItem): locator is AFM.IMeasureLocatorItem {
return !isEmpty(locator) && (locator as AFM.IMeasureLocatorItem).measureLocatorItem !== undefined;
}