-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgrid.js
More file actions
71 lines (61 loc) · 2.01 KB
/
Copy pathgrid.js
File metadata and controls
71 lines (61 loc) · 2.01 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
import { getRowsData } from "./data/gridData.js";
import { getConfig } from "./config/gridConfig.js";
import { defineFooterContent } from "./config/gridFooterContent.js";
import { setScrollFPS, getScrollFPS, setTime } from "./metricsHelpers.js";
let startSortTime = 0;
let endSortTime = 0;
let startFilterTime = 0;
let endFilterTime = 0;
export function initGrid(id) {
defineFooterContent();
const grid = webix.grid({
...getConfig(),
on: {
onAfterScroll: () => {
const fps = getScrollFPS();
setScrollFPS(fps);
},
onBeforeSort: () => {
startSortTime = performance.now();
},
onAfterSort: () => {
endSortTime = performance.now();
setTime("sort", startSortTime, endSortTime);
},
onBeforeFilter: () => {
startFilterTime = performance.now();
},
onAfterFilter: () => {
endFilterTime = performance.now();
setTime("filter", startFilterTime, endFilterTime);
},
},
container: id,
});
webix.extend(grid, webix.ProgressBar);
const data = getRowsData(100);
const startRenderTime = performance.now();
grid.parse(data).then(() => {
const endRenderTime = performance.now();
setTime("render", startRenderTime, endRenderTime);
});
addSystemTick(grid);
addResizeObserver(grid, id);
return grid;
}
function addResizeObserver(widget, id, debounceMs = 50) {
const container = document.getElementById(id);
let resizeTimeout;
new ResizeObserver(() => {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(() => {
widget.adjust();
}, debounceMs);
}).observe(container);
}
function addSystemTick(grid) {
setInterval(() => webix.callEvent("system:tick", []), 1000);
webix.attachEvent("system:tick", () => {
webix.ui.datafilter.systemStatus.update(grid);
});
}