Copy Deck
This commit is contained in:
@@ -174,6 +174,7 @@ textarea { resize: vertical; }
|
|||||||
<button class="btn" id="cancelBtn" onclick="exitEditMode(true)" style="display:none">Cancel</button>
|
<button class="btn" id="cancelBtn" onclick="exitEditMode(true)" style="display:none">Cancel</button>
|
||||||
<button class="btn" id="sortBtn" onclick="toggleSort()" style="display:none">Sort: Default</button>
|
<button class="btn" id="sortBtn" onclick="toggleSort()" style="display:none">Sort: Default</button>
|
||||||
<button class="btn btn-blue" id="dlBtn" onclick="copyTTSUrl()" style="display:none">Copy URL</button>
|
<button class="btn btn-blue" id="dlBtn" onclick="copyTTSUrl()" style="display:none">Copy URL</button>
|
||||||
|
<button class="btn btn-blue" id="copyListBtn" onclick="copyMoxfieldList()" style="display:none">Copy List</button>
|
||||||
<button class="btn btn-red" id="delBtn" onclick="deleteDeck()" style="display:none">Delete</button>
|
<button class="btn btn-red" id="delBtn" onclick="deleteDeck()" style="display:none">Delete</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-area" id="cardArea"><div class="placeholder">Select a deck or submit a new one.</div></div>
|
<div class="card-area" id="cardArea"><div class="placeholder">Select a deck or submit a new one.</div></div>
|
||||||
@@ -286,6 +287,7 @@ function updateHeader(d) {
|
|||||||
const terminal = complete || d.status === "failed";
|
const terminal = complete || d.status === "failed";
|
||||||
const isMox = d.source === "moxfield";
|
const isMox = d.source === "moxfield";
|
||||||
document.getElementById("dlBtn").style.display = complete && !editMode ? "" : "none";
|
document.getElementById("dlBtn").style.display = complete && !editMode ? "" : "none";
|
||||||
|
document.getElementById("copyListBtn").style.display = !editMode ? "" : "none";
|
||||||
document.getElementById("delBtn").style.display = terminal && !editMode ? "" : "none";
|
document.getElementById("delBtn").style.display = terminal && !editMode ? "" : "none";
|
||||||
document.getElementById("editBtn").style.display = terminal && !editMode && !isMox ? "" : "none";
|
document.getElementById("editBtn").style.display = terminal && !editMode && !isMox ? "" : "none";
|
||||||
document.getElementById("syncBtn").style.display = terminal && !editMode && isMox ? "" : "none";
|
document.getElementById("syncBtn").style.display = terminal && !editMode && isMox ? "" : "none";
|
||||||
@@ -689,6 +691,39 @@ async function copyTTSUrl() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildMoxfieldText() {
|
||||||
|
const deck = deckData[activeDeck];
|
||||||
|
if (!deck) return "";
|
||||||
|
const counts = new Map();
|
||||||
|
currentCards.forEach(c => {
|
||||||
|
if (c.is_token) return;
|
||||||
|
counts.set(c.name, (counts.get(c.name) || 0) + 1);
|
||||||
|
});
|
||||||
|
const commanders = (deck.commander || "").split("\n").map(s => s.trim()).filter(Boolean);
|
||||||
|
const lines = commanders.map(name => {
|
||||||
|
const left = (counts.get(name) || 1) - 1;
|
||||||
|
if (left > 0) counts.set(name, left); else counts.delete(name);
|
||||||
|
return `1 ${name}`;
|
||||||
|
});
|
||||||
|
if (commanders.length) lines.push("");
|
||||||
|
for (const [name, qty] of counts) lines.push(`${qty} ${name}`);
|
||||||
|
return lines.join("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyMoxfieldList() {
|
||||||
|
if (!activeDeck) return;
|
||||||
|
const text = buildMoxfieldText();
|
||||||
|
const btn = document.getElementById("copyListBtn");
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(text);
|
||||||
|
const orig = btn.textContent;
|
||||||
|
btn.textContent = "Copied!";
|
||||||
|
setTimeout(() => btn.textContent = orig, 1500);
|
||||||
|
} catch {
|
||||||
|
prompt("Copy this list:", text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function esc(s) {
|
function esc(s) {
|
||||||
return String(s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");
|
return String(s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user