From 2ebdfe109bbff27b35a5e9ae208dabddd266191e Mon Sep 17 00:00:00 2001 From: Mistivia Date: Thu, 20 Feb 2025 13:26:43 +0800 Subject: change project layout --- src/App.svelte | 14 ---- src/app.svelte | 14 ++++ src/card_db.js | 25 ++++++ src/components/CardThumb.svelte | 35 -------- src/components/LeftPanel.svelte | 80 ------------------ src/components/Loading.svelte | 52 ------------ src/components/MainPanel.svelte | 171 -------------------------------------- src/components/RightPanel.svelte | 97 --------------------- src/components/card_thumb.svelte | 33 ++++++++ src/components/left_panel.svelte | 80 ++++++++++++++++++ src/components/loading.svelte | 52 ++++++++++++ src/components/main_panel.svelte | 171 ++++++++++++++++++++++++++++++++++++++ src/components/right_panel.svelte | 97 +++++++++++++++++++++ src/control/deck.js | 134 ----------------------------- src/control/left_panel.js | 45 ---------- src/control/loading.js | 57 ------------- src/control/search.js | 79 ------------------ src/data/cardDb.js | 25 ------ src/deck.js | 134 +++++++++++++++++++++++++++++ src/left_panel.js | 45 ++++++++++ src/loading.js | 57 +++++++++++++ src/main.ts | 2 +- src/search.js | 79 ++++++++++++++++++ 23 files changed, 788 insertions(+), 790 deletions(-) delete mode 100644 src/App.svelte create mode 100644 src/app.svelte create mode 100644 src/card_db.js delete mode 100644 src/components/CardThumb.svelte delete mode 100644 src/components/LeftPanel.svelte delete mode 100644 src/components/Loading.svelte delete mode 100644 src/components/MainPanel.svelte delete mode 100644 src/components/RightPanel.svelte create mode 100644 src/components/card_thumb.svelte create mode 100644 src/components/left_panel.svelte create mode 100644 src/components/loading.svelte create mode 100644 src/components/main_panel.svelte create mode 100644 src/components/right_panel.svelte delete mode 100644 src/control/deck.js delete mode 100644 src/control/left_panel.js delete mode 100644 src/control/loading.js delete mode 100644 src/control/search.js delete mode 100644 src/data/cardDb.js create mode 100644 src/deck.js create mode 100644 src/left_panel.js create mode 100644 src/loading.js create mode 100644 src/search.js diff --git a/src/App.svelte b/src/App.svelte deleted file mode 100644 index 09b69c3..0000000 --- a/src/App.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/src/app.svelte b/src/app.svelte new file mode 100644 index 0000000..399214b --- /dev/null +++ b/src/app.svelte @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/card_db.js b/src/card_db.js new file mode 100644 index 0000000..b9b991f --- /dev/null +++ b/src/card_db.js @@ -0,0 +1,25 @@ +let cardDb = {}; +let altId = {}; + +function setCardDb(d) { + cardDb = d; +} + +function getCardDb() { + return cardDb; +} + +function getAltId() { + return altId; +} + +function setAltId(x) { + altId = x; +} + +export { + getCardDb, + setCardDb, + getAltId, + setAltId, +}; diff --git a/src/components/CardThumb.svelte b/src/components/CardThumb.svelte deleted file mode 100644 index 2f722a9..0000000 --- a/src/components/CardThumb.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - -{#if id} - yugioh card {id} -{/if} - - diff --git a/src/components/LeftPanel.svelte b/src/components/LeftPanel.svelte deleted file mode 100644 index 90937f2..0000000 --- a/src/components/LeftPanel.svelte +++ /dev/null @@ -1,80 +0,0 @@ - - -
-
-
- {#if $leftPanelCardId} - card img - {/if} -
-
-
{$leftPanelCardDesc}
-
-

- GitHub -
关注 Mistivia 谢谢喵~ -

-
-
-
-
- - diff --git a/src/components/Loading.svelte b/src/components/Loading.svelte deleted file mode 100644 index 5fb6f9a..0000000 --- a/src/components/Loading.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - -{#if $isLoading} -
-
-
-
-

加载中...

-
-
-{/if} - - - diff --git a/src/components/MainPanel.svelte b/src/components/MainPanel.svelte deleted file mode 100644 index f023dd9..0000000 --- a/src/components/MainPanel.svelte +++ /dev/null @@ -1,171 +0,0 @@ - - - - -
-
- - - - -
-
-
-

主卡组({$deck.main.length})

-
e.preventDefault()} ondrop={(e)=>onDrop("main", e, -1)} class="card-grid main-deck"> - {#each $deck.main as card, i} -
e.preventDefault()} ondrop={(e)=>onDrop("main", e, i)}> - -
- {/each} -
-
-
-

额外卡组({$deck.extra.length})

-
e.preventDefault()} ondrop={(e)=>onDrop("extra", e, -1)} class="card-grid extra-deck"> - {#each $deck.extra as card, i} -
e.preventDefault()} ondrop={(e)=>onDrop("extra", e, i)}> - -
- {/each} -
-
-
-

副卡组({$deck.side.length})

-
e.preventDefault()} ondrop={(e)=>onDrop("side", e, -1)} class="card-grid side-deck"> - {#each $deck.side as card, i} -
e.preventDefault()} ondrop={(e)=>onDrop("side", e, i)}> - -
- {/each} -
-
-
-
- - diff --git a/src/components/RightPanel.svelte b/src/components/RightPanel.svelte deleted file mode 100644 index c9904fa..0000000 --- a/src/components/RightPanel.svelte +++ /dev/null @@ -1,97 +0,0 @@ - - -
e.preventDefault()} ondrop={onDrop}> - -
- {#each $showingCards as card} -
-
- -
- {card.name} -
- {/each} -
- -
- - - diff --git a/src/components/card_thumb.svelte b/src/components/card_thumb.svelte new file mode 100644 index 0000000..8e701ea --- /dev/null +++ b/src/components/card_thumb.svelte @@ -0,0 +1,33 @@ + + +{#if id} + yugioh card {id} +{/if} + + diff --git a/src/components/left_panel.svelte b/src/components/left_panel.svelte new file mode 100644 index 0000000..d69199e --- /dev/null +++ b/src/components/left_panel.svelte @@ -0,0 +1,80 @@ + + +
+
+
+ {#if $leftPanelCardId} + card img + {/if} +
+
+
{$leftPanelCardDesc}
+
+

+ GitHub +
关注 Mistivia 谢谢喵~ +

+
+
+
+
+ + diff --git a/src/components/loading.svelte b/src/components/loading.svelte new file mode 100644 index 0000000..fb49495 --- /dev/null +++ b/src/components/loading.svelte @@ -0,0 +1,52 @@ + + +{#if $isLoading} +
+
+
+
+

加载中...

+
+
+{/if} + + + diff --git a/src/components/main_panel.svelte b/src/components/main_panel.svelte new file mode 100644 index 0000000..2db7a34 --- /dev/null +++ b/src/components/main_panel.svelte @@ -0,0 +1,171 @@ + + + + +
+
+ + + + +
+
+
+

主卡组({$deck.main.length})

+
e.preventDefault()} ondrop={(e)=>onDrop("main", e, -1)} class="card-grid main-deck"> + {#each $deck.main as card, i} +
e.preventDefault()} ondrop={(e)=>onDrop("main", e, i)}> + +
+ {/each} +
+
+
+

额外卡组({$deck.extra.length})

+
e.preventDefault()} ondrop={(e)=>onDrop("extra", e, -1)} class="card-grid extra-deck"> + {#each $deck.extra as card, i} +
e.preventDefault()} ondrop={(e)=>onDrop("extra", e, i)}> + +
+ {/each} +
+
+
+

副卡组({$deck.side.length})

+
e.preventDefault()} ondrop={(e)=>onDrop("side", e, -1)} class="card-grid side-deck"> + {#each $deck.side as card, i} +
e.preventDefault()} ondrop={(e)=>onDrop("side", e, i)}> + +
+ {/each} +
+
+
+
+ + diff --git a/src/components/right_panel.svelte b/src/components/right_panel.svelte new file mode 100644 index 0000000..816687e --- /dev/null +++ b/src/components/right_panel.svelte @@ -0,0 +1,97 @@ + + +
e.preventDefault()} ondrop={onDrop}> + +
+ {#each $showingCards as card} +
+
+ +
+ {card.name} +
+ {/each} +
+ +
+ + + diff --git a/src/control/deck.js b/src/control/deck.js deleted file mode 100644 index 43c784f..0000000 --- a/src/control/deck.js +++ /dev/null @@ -1,134 +0,0 @@ -import { writable } from "svelte/store"; -import { parseYdke } from '../utils'; -import { getCardDb, getAltId } from '../data/cardDb'; - -let deck = writable({main: [], extra: [], side: []}); -let deckState = {main: [], extra: [], side: []}; - -function sanitizeDeck(deck) { - let cardDb = getCardDb(); - let altId = getAltId(); - let ret = []; - for (let id of deck) { - if (altId[id] !== undefined) { - id = altId[id]; - } - if (cardDb[id] !== undefined) { - ret.push(id); - } - } - return ret; -} - -function setDeck(d) { - d.main = sanitizeDeck(d.main); - d.side = sanitizeDeck(d.side); - d.extra = sanitizeDeck(d.extra); - deckState = d; - deck.set(d); - localStorage.setItem('cachedDeck', JSON.stringify(d)); -}; - -function canAdd(d, id) { - let count = 0; - for (let c of d.main) { - if (c === id) count += 1; - } - for (let c of d.side) { - if (c === id) count += 1; - } - for (let c of d.extra) { - if (c === id) count += 1; - } - if (count + 1 > 3) return false; - return true; -} - -let deckOps = { - "deleteCard": (from, idx) => { - if (from === 'main') { - deckState.main.splice(idx, 1); - setDeck(deckState); - } else if (from === 'side') { - deckState.side.splice(idx, 1); - setDeck(deckState); - } else if (from === 'extra') { - deckState.extra.splice(idx, 1); - setDeck(deckState); - } - }, - "move": (from, to, fromIdx, toIdx) => { - let cardDb = getCardDb(); - let id = deckState[from][fromIdx]; - if (cardDb[id].isExtra && to === 'main') return; - if (!cardDb[id].isExtra && to === 'extra') return; - deckState[from].splice(fromIdx, 1); - if (toIdx === -1) deckState[to].push(id); - else deckState[to].splice(toIdx, 0, id); - setDeck(deckState); - }, - "add2extra": (id, targetIdx) => { - let cardDb = getCardDb(); - if (!cardDb[id].isExtra) return; - let d = deckState; - if (canAdd(d, id)) { - if (targetIdx === -1) - d.extra.push(id); - else { - d.extra.splice(targetIdx, 0, id); - } - setDeck(d); - } - }, - "add2main": (id, targetIdx) => { - let cardDb = getCardDb(); - console.log(targetIdx); - if (cardDb[id].isExtra) return; - let d = deckState; - if (canAdd(d, id)) { - if (targetIdx === -1) - d.main.push(id); - else { - d.main.splice(targetIdx, 0, id); - } - setDeck(d); - } - }, - "add2side": (id, targetIdx) => { - let d = deckState; - if (canAdd(d, id)) { - if (targetIdx === -1) - d.side.push(id); - else { - d.side.splice(targetIdx, 0, id); - } - setDeck(d); - } - } -}; - -function initDeck() { - let url = window.location.href.split('#'); - if (url.length === 2) { - let deck = parseYdke(url[1]); - if (deck.main.length > 0 || deck.extra.length > 0 || deck.extra.length > 0) { - setDeck(deck); - window.location.href = url[0]; - return; - } - } - let cachedDeck = localStorage.getItem('cachedDeck'); - if (cachedDeck !== null) { - cachedDeck = JSON.parse(cachedDeck); - setDeck(cachedDeck) - return; - } -} - -export { - deck, - setDeck, - deckOps, - initDeck, -}; - diff --git a/src/control/left_panel.js b/src/control/left_panel.js deleted file mode 100644 index 87d8a4a..0000000 --- a/src/control/left_panel.js +++ /dev/null @@ -1,45 +0,0 @@ -import { writable } from 'svelte/store'; - -let leftPanelCardId = writable(''); -let leftPanelCardDesc = writable(''); - -let curVersion = 0; -let descCache = new Map(); - -function setLeftPanelCard(id) { - leftPanelCardId.set(id); - curVersion += 1; - leftPanelCardDesc.set('加载中...'); - let ver = curVersion; - setDesc(ver, id); -} - -function setDesc(version, id) { - if (descCache.has(id)) { - leftPanelCardDesc.set(descCache.get(id)); - return; - } - let descUrl = 'https://oss.nebula.moe/ygo-card-text/' + id + '.txt'; - fetch(descUrl) - .then((response) => { - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - return response.text(); - }) - .then((desc) => { - descCache.set(id, desc); - if (version === curVersion) { - leftPanelCardDesc.set(desc); - } - }) - .catch((error) => { - console.error('Error fetching the file:', error); - }); -} - -export { - leftPanelCardId, - leftPanelCardDesc, - setLeftPanelCard, -}; diff --git a/src/control/loading.js b/src/control/loading.js deleted file mode 100644 index 2d0b1ce..0000000 --- a/src/control/loading.js +++ /dev/null @@ -1,57 +0,0 @@ -import { writable } from 'svelte/store'; -import { initSearch } from './search'; -import { initDeck } from './deck'; -import { setCardDb, setAltId } from '../data/cardDb'; - -let isLoading = writable(true); - -async function fetchCardDb() { - let localVer = localStorage.getItem('card_db_ver'); - try { - // load card db - let response = await fetch("https://raye.mistivia.com/card_db_parts/version"); - if (!response.ok) { - throw new Error('Network response was not ok'); - } - let data = await response.json(); - data = String(data) - if (localVer === data && localStorage.getItem('card_db') !== null) { - setCardDb(JSON.parse(localStorage.getItem('card_db'))); - } else { - localVer = data; - response = await fetch("https://raye.mistivia.com/card_db_parts/index.json"); - if (!response.ok) { - throw new Error('Network response was not ok'); - } - data = await response.json(); - let tasks = data.map((i)=>fetch('https://raye.mistivia.com/card_db_parts/' + i)); - let datas = await Promise.all(tasks); - datas = await Promise.all(datas.map((x) => x.text())); - data = JSON.parse(datas.join('')); - setCardDb(data); - localStorage.setItem('card_db_ver', localVer); - localStorage.setItem('card_db', datas.join('')); - } - - // load alt id - response = await fetch("https://ygocdb.com/api/v0/idChangelog.jsonp"); - if (!response.ok) { - throw new Error('Network response was not ok'); - } - data = await response.json(); - setAltId(data); - } catch (error) { - console.log(error); - alert("加载失败!请刷新重试"); - return; - } - isLoading.set(false); - initDeck(); - initSearch(); -} - -fetchCardDb(); - -export { - isLoading, -}; diff --git a/src/control/search.js b/src/control/search.js deleted file mode 100644 index 5927950..0000000 --- a/src/control/search.js +++ /dev/null @@ -1,79 +0,0 @@ -import { writable } from 'svelte/store'; -import { getCardDb} from '../data/cardDb'; - -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, -}; diff --git a/src/data/cardDb.js b/src/data/cardDb.js deleted file mode 100644 index b9b991f..0000000 --- a/src/data/cardDb.js +++ /dev/null @@ -1,25 +0,0 @@ -let cardDb = {}; -let altId = {}; - -function setCardDb(d) { - cardDb = d; -} - -function getCardDb() { - return cardDb; -} - -function getAltId() { - return altId; -} - -function setAltId(x) { - altId = x; -} - -export { - getCardDb, - setCardDb, - getAltId, - setAltId, -}; diff --git a/src/deck.js b/src/deck.js new file mode 100644 index 0000000..285320b --- /dev/null +++ b/src/deck.js @@ -0,0 +1,134 @@ +import { writable } from "svelte/store"; +import { parseYdke } from './utils'; +import { getCardDb, getAltId } from './card_db'; + +let deck = writable({main: [], extra: [], side: []}); +let deckState = {main: [], extra: [], side: []}; + +function sanitizeDeck(deck) { + let cardDb = getCardDb(); + let altId = getAltId(); + let ret = []; + for (let id of deck) { + if (altId[id] !== undefined) { + id = altId[id]; + } + if (cardDb[id] !== undefined) { + ret.push(id); + } + } + return ret; +} + +function setDeck(d) { + d.main = sanitizeDeck(d.main); + d.side = sanitizeDeck(d.side); + d.extra = sanitizeDeck(d.extra); + deckState = d; + deck.set(d); + localStorage.setItem('cachedDeck', JSON.stringify(d)); +}; + +function canAdd(d, id) { + let count = 0; + for (let c of d.main) { + if (c === id) count += 1; + } + for (let c of d.side) { + if (c === id) count += 1; + } + for (let c of d.extra) { + if (c === id) count += 1; + } + if (count + 1 > 3) return false; + return true; +} + +let deckOps = { + "deleteCard": (from, idx) => { + if (from === 'main') { + deckState.main.splice(idx, 1); + setDeck(deckState); + } else if (from === 'side') { + deckState.side.splice(idx, 1); + setDeck(deckState); + } else if (from === 'extra') { + deckState.extra.splice(idx, 1); + setDeck(deckState); + } + }, + "move": (from, to, fromIdx, toIdx) => { + let cardDb = getCardDb(); + let id = deckState[from][fromIdx]; + if (cardDb[id].isExtra && to === 'main') return; + if (!cardDb[id].isExtra && to === 'extra') return; + deckState[from].splice(fromIdx, 1); + if (toIdx === -1) deckState[to].push(id); + else deckState[to].splice(toIdx, 0, id); + setDeck(deckState); + }, + "add2extra": (id, targetIdx) => { + let cardDb = getCardDb(); + if (!cardDb[id].isExtra) return; + let d = deckState; + if (canAdd(d, id)) { + if (targetIdx === -1) + d.extra.push(id); + else { + d.extra.splice(targetIdx, 0, id); + } + setDeck(d); + } + }, + "add2main": (id, targetIdx) => { + let cardDb = getCardDb(); + console.log(targetIdx); + if (cardDb[id].isExtra) return; + let d = deckState; + if (canAdd(d, id)) { + if (targetIdx === -1) + d.main.push(id); + else { + d.main.splice(targetIdx, 0, id); + } + setDeck(d); + } + }, + "add2side": (id, targetIdx) => { + let d = deckState; + if (canAdd(d, id)) { + if (targetIdx === -1) + d.side.push(id); + else { + d.side.splice(targetIdx, 0, id); + } + setDeck(d); + } + } +}; + +function initDeck() { + let url = window.location.href.split('#'); + if (url.length === 2) { + let deck = parseYdke(url[1]); + if (deck.main.length > 0 || deck.extra.length > 0 || deck.extra.length > 0) { + setDeck(deck); + window.location.href = url[0]; + return; + } + } + let cachedDeck = localStorage.getItem('cachedDeck'); + if (cachedDeck !== null) { + cachedDeck = JSON.parse(cachedDeck); + setDeck(cachedDeck) + return; + } +} + +export { + deck, + setDeck, + deckOps, + initDeck, +}; + diff --git a/src/left_panel.js b/src/left_panel.js new file mode 100644 index 0000000..87d8a4a --- /dev/null +++ b/src/left_panel.js @@ -0,0 +1,45 @@ +import { writable } from 'svelte/store'; + +let leftPanelCardId = writable(''); +let leftPanelCardDesc = writable(''); + +let curVersion = 0; +let descCache = new Map(); + +function setLeftPanelCard(id) { + leftPanelCardId.set(id); + curVersion += 1; + leftPanelCardDesc.set('加载中...'); + let ver = curVersion; + setDesc(ver, id); +} + +function setDesc(version, id) { + if (descCache.has(id)) { + leftPanelCardDesc.set(descCache.get(id)); + return; + } + let descUrl = 'https://oss.nebula.moe/ygo-card-text/' + id + '.txt'; + fetch(descUrl) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.text(); + }) + .then((desc) => { + descCache.set(id, desc); + if (version === curVersion) { + leftPanelCardDesc.set(desc); + } + }) + .catch((error) => { + console.error('Error fetching the file:', error); + }); +} + +export { + leftPanelCardId, + leftPanelCardDesc, + setLeftPanelCard, +}; diff --git a/src/loading.js b/src/loading.js new file mode 100644 index 0000000..2fed39f --- /dev/null +++ b/src/loading.js @@ -0,0 +1,57 @@ +import { writable } from 'svelte/store'; +import { initSearch } from './search'; +import { initDeck } from './deck'; +import { setCardDb, setAltId } from './card_db'; + +let isLoading = writable(true); + +async function fetchCardDb() { + let localVer = localStorage.getItem('card_db_ver'); + try { + // load card db + let response = await fetch("https://raye.mistivia.com/card_db_parts/version"); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + let data = await response.json(); + data = String(data) + if (localVer === data && localStorage.getItem('card_db') !== null) { + setCardDb(JSON.parse(localStorage.getItem('card_db'))); + } else { + localVer = data; + response = await fetch("https://raye.mistivia.com/card_db_parts/index.json"); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + data = await response.json(); + let tasks = data.map((i)=>fetch('https://raye.mistivia.com/card_db_parts/' + i)); + let datas = await Promise.all(tasks); + datas = await Promise.all(datas.map((x) => x.text())); + data = JSON.parse(datas.join('')); + setCardDb(data); + localStorage.setItem('card_db_ver', localVer); + localStorage.setItem('card_db', datas.join('')); + } + + // load alt id + response = await fetch("https://ygocdb.com/api/v0/idChangelog.jsonp"); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + data = await response.json(); + setAltId(data); + } catch (error) { + console.log(error); + alert("加载失败!请刷新重试"); + return; + } + isLoading.set(false); + initDeck(); + initSearch(); +} + +fetchCardDb(); + +export { + isLoading, +}; diff --git a/src/main.ts b/src/main.ts index 928b6c5..7b9d006 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,5 @@ import { mount } from 'svelte' -import App from './App.svelte' +import App from './app.svelte' const app = mount(App, { target: document.getElementById('app')!, diff --git a/src/search.js b/src/search.js new file mode 100644 index 0000000..f1f7dbd --- /dev/null +++ b/src/search.js @@ -0,0 +1,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, +}; -- cgit v1.0