-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathexp-show-asset-images.js
115 lines (96 loc) · 2.71 KB
/
exp-show-asset-images.js
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
//!js
const assetFile = async () => {
let response = await Query.request('/api/file/readDir', {
path: '/data/assets'
});
return response.map(file => file.name);
}
const ITEMS_PER_PAGE = 10;
const useControl = (files) => {
let page = 1;
let leftBtn = document.createElement('button');
leftBtn.classList.add('b3-button');
let span = document.createElement('span');
let rightBtn = document.createElement('button');
rightBtn.classList.add('b3-button');
let slice = [];
let total = files.length;
let pages = Math.ceil(total / ITEMS_PER_PAGE);
leftBtn.textContent = 'Previous';
span.textContent = `Page ${page} of ${pages}`;
rightBtn.textContent = 'Next';
const panel = document.createElement('div');
Object.assign(panel.style, {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
gap: '10px'
});
panel.appendChild(leftBtn);
panel.appendChild(span);
panel.appendChild(rightBtn);
const updateSlice = () => {
const start = (page - 1) * ITEMS_PER_PAGE;
const end = start + ITEMS_PER_PAGE;
slice = files.slice(start, end);
};
const left = () => {
if (page > 1) {
page--;
span.textContent = `Page ${page} of ${pages}`;
updateSlice();
}
};
const right = () => {
if (page < pages) {
page++;
span.textContent = `Page ${page} of ${pages}`;
updateSlice();
}
};
updateSlice();
return {
panel,
leftBtn,
rightBtn,
left,
right,
slice: () => slice
};
}
const query = async () => {
let dv = Query.DataView(protyle, item, top);
let files = await assetFile();
files = files.filter(file => {
return file.endsWith('.jpg') || file.endsWith('.png') || file.endsWith('.jpeg');
});
let control = useControl(files);
dv.addele(control.panel);
let ele = dv.addele('Placeholder');
let id = ele.dataset.id;
const createView = (slice) => {
const data = slice.map(item => {
return {
name: item,
img: ``
}
});
return dv.table(data, {
fullwidth: true,
cols: null,
});
}
control.leftBtn.onclick = () => {
control.left();
const slice = control.slice();
dv.replaceView(id, createView(slice))
};
control.rightBtn.onclick = () => {
control.right();
const slice = control.slice();
dv.replaceView(id, createView(slice))
};
dv.replaceView(id, createView(control.slice()))
dv.render();
};
return query();