aboutsummaryrefslogtreecommitdiff
path: root/src/control
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-02-05 14:03:38 +0800
committerMistivia <i@mistivia.com>2025-02-05 14:03:38 +0800
commitf4d9dd9e349b377431fbc9a3b2a086c29cd6826e (patch)
treefa2850216f252ffb54ab0068e2f75563cc808038 /src/control
parent781917675a1f7a81d61dca8e5134fb4867750685 (diff)
impl left panel and card thumbnail
Diffstat (limited to 'src/control')
-rw-r--r--src/control/deck.svelte.js0
-rw-r--r--src/control/left_panel.svelte.js45
2 files changed, 45 insertions, 0 deletions
diff --git a/src/control/deck.svelte.js b/src/control/deck.svelte.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/control/deck.svelte.js
diff --git a/src/control/left_panel.svelte.js b/src/control/left_panel.svelte.js
new file mode 100644
index 0000000..7c52e2f
--- /dev/null
+++ b/src/control/left_panel.svelte.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,
+};