Skip to content

Commit 56f2826

Browse files
committed
refactor(tpl/js): reorder function calls
1 parent decf635 commit 56f2826

File tree

2 files changed

+217
-217
lines changed

2 files changed

+217
-217
lines changed

src/tpl/asset/main.js

Lines changed: 114 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,119 @@
22
var classNone = 'none';
33
var classHeader = 'header';
44

5+
function enableFilter() {
6+
if (!document.querySelector) {
7+
var filter = document.getElementById && document.getElementById('panel-filter');
8+
if (filter) {
9+
filter.className += ' none';
10+
}
11+
return;
12+
}
13+
14+
// pre check
15+
var filter = document.body.querySelector('.filter');
16+
if (!filter) {
17+
return;
18+
}
19+
if (!filter.classList || !filter.addEventListener) {
20+
filter.className += ' none';
21+
return;
22+
}
23+
24+
var input = filter.querySelector('input.filter-text');
25+
if (!input) {
26+
return;
27+
}
28+
29+
var selectorNone = '.' + classNone;
30+
var selectorNotNone = ':not(' + selectorNone + ')';
31+
var selectorItem = '.item-list > li:not(.' + classHeader + '):not(.parent)';
32+
var selectorItemNone = selectorItem + selectorNone;
33+
var selectorItemNotNone = selectorItem + selectorNotNone;
34+
35+
// event handler
36+
var timeoutId;
37+
var lastFilterText = '';
38+
var doFilter = function () {
39+
var filterText = input.value.trim().toLowerCase();
40+
if (filterText === lastFilterText) {
41+
return;
42+
}
43+
44+
var selector, items, i;
45+
46+
if (!filterText) { // filter cleared, show all items
47+
selector = selectorItemNone;
48+
items = document.body.querySelectorAll(selector);
49+
for (i = items.length - 1; i >= 0; i--) {
50+
items[i].classList.remove(classNone);
51+
}
52+
} else {
53+
if (filterText.indexOf(lastFilterText) >= 0) { // increment search, find in visible items
54+
selector = selectorItemNotNone;
55+
} else if (lastFilterText.indexOf(filterText) >= 0) { // decrement search, find in hidden items
56+
selector = selectorItemNone;
57+
} else {
58+
selector = selectorItem;
59+
}
60+
61+
items = document.body.querySelectorAll(selector);
62+
for (i = items.length - 1; i >= 0; i--) {
63+
var item = items[i];
64+
var name = item.querySelector('.name');
65+
if (name && name.textContent.toLowerCase().indexOf(filterText) < 0) {
66+
item.classList.add(classNone);
67+
} else {
68+
item.classList.remove(classNone);
69+
}
70+
}
71+
}
72+
73+
lastFilterText = filterText;
74+
};
75+
76+
var onValueMayChange = function () {
77+
clearTimeout(timeoutId);
78+
timeoutId = setTimeout(doFilter, 350);
79+
};
80+
input.addEventListener('input', onValueMayChange, false);
81+
input.addEventListener('change', onValueMayChange, false);
82+
input.addEventListener('keydown', function (e) {
83+
switch (e.key) {
84+
case 'Enter':
85+
clearTimeout(timeoutId);
86+
input.blur();
87+
doFilter();
88+
e.preventDefault();
89+
break;
90+
case 'Escape':
91+
case 'Esc':
92+
clearTimeout(timeoutId);
93+
input.value = '';
94+
doFilter();
95+
e.preventDefault();
96+
break;
97+
}
98+
}, false);
99+
100+
// init
101+
if (sessionStorage) {
102+
var prevSessionFilter = sessionStorage.getItem(location.pathname);
103+
sessionStorage.removeItem(location.pathname);
104+
window.addEventListener('beforeunload', function () {
105+
if (input.value) {
106+
sessionStorage.setItem(location.pathname, input.value);
107+
}
108+
}, false);
109+
if (prevSessionFilter) {
110+
input.value = prevSessionFilter;
111+
}
112+
}
113+
if (input.value) {
114+
doFilter();
115+
}
116+
}
117+
5118
function enableKeyboardNavigate() {
6119
if (
7120
!document.querySelector ||
@@ -297,119 +410,6 @@
297410
upload.addEventListener('drop', onDrop, false);
298411
}
299412

300-
function enableFilter() {
301-
if (!document.querySelector) {
302-
var filter = document.getElementById && document.getElementById('panel-filter');
303-
if (filter) {
304-
filter.className += ' none';
305-
}
306-
return;
307-
}
308-
309-
// pre check
310-
var filter = document.body.querySelector('.filter');
311-
if (!filter) {
312-
return;
313-
}
314-
if (!filter.classList || !filter.addEventListener) {
315-
filter.className += ' none';
316-
return;
317-
}
318-
319-
var input = filter.querySelector('input.filter-text');
320-
if (!input) {
321-
return;
322-
}
323-
324-
var selectorNone = '.' + classNone;
325-
var selectorNotNone = ':not(' + selectorNone + ')';
326-
var selectorItem = '.item-list > li:not(.' + classHeader + '):not(.parent)';
327-
var selectorItemNone = selectorItem + selectorNone;
328-
var selectorItemNotNone = selectorItem + selectorNotNone;
329-
330-
// event handler
331-
var timeoutId;
332-
var lastFilterText = '';
333-
var doFilter = function () {
334-
var filterText = input.value.trim().toLowerCase();
335-
if (filterText === lastFilterText) {
336-
return;
337-
}
338-
339-
var selector, items, i;
340-
341-
if (!filterText) { // filter cleared, show all items
342-
selector = selectorItemNone;
343-
items = document.body.querySelectorAll(selector);
344-
for (i = items.length - 1; i >= 0; i--) {
345-
items[i].classList.remove(classNone);
346-
}
347-
} else {
348-
if (filterText.indexOf(lastFilterText) >= 0) { // increment search, find in visible items
349-
selector = selectorItemNotNone;
350-
} else if (lastFilterText.indexOf(filterText) >= 0) { // decrement search, find in hidden items
351-
selector = selectorItemNone;
352-
} else {
353-
selector = selectorItem;
354-
}
355-
356-
items = document.body.querySelectorAll(selector);
357-
for (i = items.length - 1; i >= 0; i--) {
358-
var item = items[i];
359-
var name = item.querySelector('.name');
360-
if (name && name.textContent.toLowerCase().indexOf(filterText) < 0) {
361-
item.classList.add(classNone);
362-
} else {
363-
item.classList.remove(classNone);
364-
}
365-
}
366-
}
367-
368-
lastFilterText = filterText;
369-
};
370-
371-
var onValueMayChange = function () {
372-
clearTimeout(timeoutId);
373-
timeoutId = setTimeout(doFilter, 350);
374-
};
375-
input.addEventListener('input', onValueMayChange, false);
376-
input.addEventListener('change', onValueMayChange, false);
377-
input.addEventListener('keydown', function (e) {
378-
switch (e.key) {
379-
case 'Enter':
380-
clearTimeout(timeoutId);
381-
input.blur();
382-
doFilter();
383-
e.preventDefault();
384-
break;
385-
case 'Escape':
386-
case 'Esc':
387-
clearTimeout(timeoutId);
388-
input.value = '';
389-
doFilter();
390-
e.preventDefault();
391-
break;
392-
}
393-
}, false);
394-
395-
// init
396-
if (sessionStorage) {
397-
var prevSessionFilter = sessionStorage.getItem(location.pathname);
398-
sessionStorage.removeItem(location.pathname);
399-
window.addEventListener('beforeunload', function () {
400-
if (input.value) {
401-
sessionStorage.setItem(location.pathname, input.value);
402-
}
403-
}, false);
404-
if (prevSessionFilter) {
405-
input.value = prevSessionFilter;
406-
}
407-
}
408-
if (input.value) {
409-
doFilter();
410-
}
411-
}
412-
413413
function enableNonRefreshDelete() {
414414
if (!document.querySelector) {
415415
return;
@@ -462,8 +462,8 @@
462462
}, false);
463463
}
464464

465+
enableFilter();
465466
enableKeyboardNavigate();
466467
enableDragUpload();
467-
enableFilter();
468468
enableNonRefreshDelete();
469469
})();

0 commit comments

Comments
 (0)