aboutsummaryrefslogtreecommitdiff
path: root/src/control
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-02-20 13:26:43 +0800
committerMistivia <i@mistivia.com>2025-02-20 13:26:43 +0800
commit2ebdfe109bbff27b35a5e9ae208dabddd266191e (patch)
treeed63233177008c7bef134606fbf0254754e91fb2 /src/control
parenta7488d695b3f647d657f6b3482d5333e1e869771 (diff)
change project layout
Diffstat (limited to 'src/control')
-rw-r--r--src/control/deck.js134
-rw-r--r--src/control/left_panel.js45
-rw-r--r--src/control/loading.js57
-rw-r--r--src/control/search.js79
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,
-};