diff options
| author | Mistivia <i@mistivia.com> | 2025-02-20 13:26:43 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-20 13:26:43 +0800 |
| commit | 2ebdfe109bbff27b35a5e9ae208dabddd266191e (patch) | |
| tree | ed63233177008c7bef134606fbf0254754e91fb2 /src/control | |
| parent | a7488d695b3f647d657f6b3482d5333e1e869771 (diff) | |
change project layout
Diffstat (limited to 'src/control')
| -rw-r--r-- | src/control/deck.js | 134 | ||||
| -rw-r--r-- | src/control/left_panel.js | 45 | ||||
| -rw-r--r-- | src/control/loading.js | 57 | ||||
| -rw-r--r-- | src/control/search.js | 79 |
4 files changed, 0 insertions, 315 deletions
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, -}; |
