blob: f1f7dbd2af0312ccab050d58770c0913a546ae2d (
plain)
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
|
import { writable } from 'svelte/store';
import { getCardDb } from './card_db';
let showingCards = writable([]);
let resultCards = [];
let curVer = 0;
let curPage = 0;
function showCards() {
showingCards.set(resultCards.slice(curPage * 10, curPage * 10 + 10));
}
function changeInput(query) {
curVer += 1;
query = query.split(' ');
setTimeout(()=>{doSearch(curVer, query)}, 0);
}
function doSearch(ver, query) {
let cardDb = getCardDb();
let result = [];
for (let key in cardDb) {
if (ver !== curVer) {
return;
}
let hit = true;
for (let word of query) {
let matched = false;
for (let name of cardDb[key].names) {
if (name.toLowerCase().includes(word.toLowerCase())) {
matched = true;
break;
}
}
if (!matched) {
hit = false;
break;
}
}
if (hit) {
result.push({"id": key, "name": cardDb[key].names[0]})
}
}
if (ver !== curVer) return;
result.sort((a, b) => {
return cardDb[a.id].cid - cardDb[b.id].cid;
});
resultCards = result;
curPage = 0;
showCards();
}
function initSearch() {
doSearch(curVer, "");
}
function onPrevPage() {
if (curPage > 0) {
curPage -= 1;
showCards();
}
}
function onNextPage() {
if (curPage < Math.floor((resultCards.length - 1) / 10)) {
curPage += 1;
showCards();
}
}
export {
changeInput,
onPrevPage,
onNextPage,
showingCards,
initSearch,
};
|