1 | import { renderers } from './renderer/renderers';
|
2 | import { toolbarActions, toolbarDialogAddons } from './ui/toolbar';
|
3 | import { Column, Ranking, IGroupData, IGroupItem } from './model';
|
4 | import { IDataProvider } from './provider';
|
5 | import { ICellRendererFactory, ERenderMode } from './renderer';
|
6 | import { IToolbarAction, IToolbarDialogAddon } from './ui';
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | export interface IDynamicHeight {
|
12 | |
13 |
|
14 |
|
15 | defaultHeight: number;
|
16 |
|
17 | |
18 |
|
19 |
|
20 |
|
21 |
|
22 | height(item: IGroupItem | IGroupData): number;
|
23 |
|
24 | |
25 |
|
26 |
|
27 |
|
28 |
|
29 | padding(item: IGroupItem | IGroupData | null): number;
|
30 | }
|
31 |
|
32 | export interface ILineUpFlags {
|
33 | |
34 |
|
35 |
|
36 |
|
37 | disableFrozenColumns: boolean;
|
38 | |
39 |
|
40 |
|
41 |
|
42 | advancedRankingFeatures: boolean;
|
43 | |
44 |
|
45 |
|
46 |
|
47 | advancedModelFeatures: boolean;
|
48 | |
49 |
|
50 |
|
51 |
|
52 | advancedUIFeatures: boolean;
|
53 | }
|
54 |
|
55 | export interface IToolbarLookup<T> {
|
56 | [key: string]: T;
|
57 | }
|
58 |
|
59 | export interface ILivePreviewOptions {
|
60 | search: boolean;
|
61 | filter: boolean;
|
62 | vis: boolean;
|
63 | sort: boolean;
|
64 | group: boolean;
|
65 | groupSort: boolean;
|
66 | colorMapping: boolean;
|
67 | dataMapping: boolean;
|
68 | reduce: boolean;
|
69 | rename: boolean;
|
70 | cutOff: boolean;
|
71 | }
|
72 |
|
73 | export interface ILineUpOptions {
|
74 | |
75 |
|
76 |
|
77 |
|
78 | summaryHeader: boolean;
|
79 | |
80 |
|
81 |
|
82 |
|
83 | animated: boolean;
|
84 | |
85 |
|
86 |
|
87 |
|
88 | expandLineOnHover: boolean;
|
89 | |
90 |
|
91 |
|
92 |
|
93 | sidePanel: boolean;
|
94 | |
95 |
|
96 |
|
97 |
|
98 | sidePanelCollapsed: boolean;
|
99 | |
100 |
|
101 |
|
102 |
|
103 | hierarchyIndicator: boolean;
|
104 |
|
105 | |
106 |
|
107 |
|
108 |
|
109 | onDialogBackgroundClick: 'cancel' | 'confirm';
|
110 |
|
111 | |
112 |
|
113 |
|
114 |
|
115 | livePreviews: Partial<ILivePreviewOptions>;
|
116 |
|
117 | |
118 |
|
119 |
|
120 |
|
121 | defaultSlopeGraphMode: 'item' | 'band';
|
122 |
|
123 | |
124 |
|
125 |
|
126 |
|
127 | labelRotation: number;
|
128 |
|
129 | |
130 |
|
131 |
|
132 |
|
133 | rowHeight: number;
|
134 | |
135 |
|
136 |
|
137 |
|
138 | rowPadding: number;
|
139 | |
140 |
|
141 |
|
142 |
|
143 | groupHeight: number;
|
144 | |
145 |
|
146 |
|
147 |
|
148 | groupPadding: number;
|
149 |
|
150 | |
151 |
|
152 |
|
153 |
|
154 |
|
155 | levelOfDetail: (rowIndex: number) => 'high' | 'low';
|
156 | |
157 |
|
158 |
|
159 |
|
160 |
|
161 |
|
162 | dynamicHeight: (data: (IGroupItem | IGroupData)[], ranking: Ranking) => IDynamicHeight | null;
|
163 | |
164 |
|
165 |
|
166 |
|
167 |
|
168 | customRowUpdate: (row: HTMLElement, rowIndex: number) => void;
|
169 |
|
170 | |
171 |
|
172 |
|
173 | toolbarActions: IToolbarLookup<IToolbarAction>;
|
174 | toolbarDialogAddons: IToolbarLookup<IToolbarDialogAddon>;
|
175 |
|
176 | |
177 |
|
178 |
|
179 | resolveToolbarActions: (col: Column, keys: string[], lookup: IToolbarLookup<IToolbarAction>) => IToolbarAction[];
|
180 | |
181 |
|
182 |
|
183 | resolveToolbarDialogAddons: (
|
184 | col: Column,
|
185 | keys: string[],
|
186 | lookup: IToolbarLookup<IToolbarDialogAddon>
|
187 | ) => IToolbarDialogAddon[];
|
188 |
|
189 | |
190 |
|
191 |
|
192 | renderers: { [type: string]: ICellRendererFactory };
|
193 |
|
194 | |
195 |
|
196 |
|
197 | canRender: (type: string, renderer: ICellRendererFactory, col: Column, mode: ERenderMode) => boolean;
|
198 |
|
199 | |
200 |
|
201 |
|
202 | flags: Partial<ILineUpFlags>;
|
203 |
|
204 | |
205 |
|
206 |
|
207 |
|
208 | ignoreUnsupportedBrowser: boolean;
|
209 | }
|
210 |
|
211 | export interface ITaggleOptions extends ILineUpOptions {
|
212 | |
213 |
|
214 |
|
215 |
|
216 | overviewMode: boolean;
|
217 | }
|
218 |
|
219 | export interface ILineUpLike {
|
220 | readonly node: HTMLElement;
|
221 | readonly data: IDataProvider;
|
222 |
|
223 | dump(): any;
|
224 |
|
225 | destroy(): void;
|
226 | }
|
227 |
|
228 | function resolveToolbarActions(col: Column, keys: string[], lookup: IToolbarLookup<IToolbarAction>) {
|
229 | const actions: IToolbarAction[] = [];
|
230 |
|
231 | keys.forEach((key) => {
|
232 | if (lookup.hasOwnProperty(key)) {
|
233 | actions.push(lookup[key]);
|
234 | } else {
|
235 | console.warn(`cannot find toolbar action of type: "${col.desc.type}" with key "${key}"`);
|
236 | }
|
237 | });
|
238 | return actions;
|
239 | }
|
240 |
|
241 | function resolveToolbarDialogAddons(col: Column, keys: string[], lookup: IToolbarLookup<IToolbarDialogAddon>) {
|
242 | const actions: IToolbarDialogAddon[] = [];
|
243 |
|
244 | keys.forEach((key) => {
|
245 | if (lookup.hasOwnProperty(key)) {
|
246 | actions.push(lookup[key]);
|
247 | } else {
|
248 | console.warn(`cannot find toolbar dialog addon of type: "${col.desc.type}" with key "${key}"`);
|
249 | }
|
250 | });
|
251 | return actions;
|
252 | }
|
253 |
|
254 | export function defaultOptions(): ITaggleOptions {
|
255 | return {
|
256 | toolbarActions,
|
257 | toolbarDialogAddons,
|
258 | resolveToolbarActions,
|
259 | resolveToolbarDialogAddons,
|
260 | renderers: Object.assign({}, renderers),
|
261 | canRender: () => true,
|
262 |
|
263 | labelRotation: 0,
|
264 | summaryHeader: true,
|
265 | animated: true,
|
266 | expandLineOnHover: false,
|
267 | sidePanel: true,
|
268 | sidePanelCollapsed: false,
|
269 | hierarchyIndicator: true,
|
270 | defaultSlopeGraphMode: 'item',
|
271 | overviewMode: false,
|
272 |
|
273 | livePreviews: {
|
274 | search: true,
|
275 | filter: true,
|
276 | vis: true,
|
277 | sort: true,
|
278 | group: true,
|
279 | groupSort: true,
|
280 | colorMapping: true,
|
281 | },
|
282 | onDialogBackgroundClick: 'cancel',
|
283 |
|
284 | rowHeight: 18,
|
285 | groupHeight: 40,
|
286 | groupPadding: 5,
|
287 | rowPadding: 2,
|
288 |
|
289 | levelOfDetail: () => 'high',
|
290 | customRowUpdate: () => undefined,
|
291 | dynamicHeight: () => null,
|
292 |
|
293 | flags: {
|
294 | disableFrozenColumns: true,
|
295 | advancedRankingFeatures: true,
|
296 | advancedModelFeatures: true,
|
297 | advancedUIFeatures: true,
|
298 | },
|
299 |
|
300 | ignoreUnsupportedBrowser: false,
|
301 | };
|
302 | }
|