aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-06-08 20:26:03 -0500
committerFlorian Fischer <florian.fischer@muhq.space>2025-07-03 22:01:22 -0400
commit70d8630a5bcb405a0bed101eb73cf4d1c6ece8bb (patch)
treed0b97afd3fe5b6e8fe443f5d2da9c670fbc413be
parent4f22bc472086a857fc4b04617421b861fa575a44 (diff)
downloadmuhqs-game-70d8630a5bcb405a0bed101eb73cf4d1c6ece8bb.tar.gz
muhqs-game-70d8630a5bcb405a0bed101eb73cf4d1c6ece8bb.zip
retrieve draft rates in card listings
-rw-r--r--html/js/recvDraftRates.js41
-rw-r--r--html/template.html4
-rwxr-xr-xscripts/generate_card.py13
-rwxr-xr-xscripts/generate_card_listing.py12
4 files changed, 66 insertions, 4 deletions
diff --git a/html/js/recvDraftRates.js b/html/js/recvDraftRates.js
new file mode 100644
index 00000000..802066ec
--- /dev/null
+++ b/html/js/recvDraftRates.js
@@ -0,0 +1,41 @@
+/*
+@licstart The following is the entire license notice for the
+JavaScript code in this page.
+
+Copyright (C) 2025 Florian Fischer
+
+The JavaScript code in this page is free software: you can
+redistribute it and/or modify it under the terms of the GNU
+General Public License (GNU GPL) as published by the Free Software
+Foundation, either version 3 of the License, or any later version.
+The code is distributed WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
+
+As additional permission under GNU GPL version 3 section 7, you
+may distribute non-source (e.g., minimized or compacted) forms of
+that code without the copy of the GNU GPL normally required by
+section 4, provided you include this license notice and a URL
+through which recipients can access the Corresponding Source.
+
+@licend The above is the entire license notice
+for the JavaScript code in this page.
+*/
+const draftBlogUrl = "https://muhq.space/muhqs-game/html/build/blog/draftsim.html"
+const ratesApi = "https://draft.muhq.space/stats"
+function retrieveDraftRates() {
+ console.log(ratesApi);
+ let r = new Request(ratesApi);
+ fetch(r).then((response) => {
+ let draftRates = response.json()
+ for (let e of document.querySelectorAll(".draft-rate")) {
+ const cardName = e.parentNode.getAttribute("data-canonical-name");
+ const rate = draftRates[cardName] || 0;
+ e.textContent = "DR: " + rate
+ e.onclick = () => {document.location.href = draftBlogUrl};
+ }
+ }, err => {console.log(err);});
+}
+window.onload = function() {
+ retrieveDraftRates();
+}
diff --git a/html/template.html b/html/template.html
index 00f07880..8ae9a6d9 100644
--- a/html/template.html
+++ b/html/template.html
@@ -261,6 +261,10 @@ li.linkable-rule:active, li.linkable-rule:hover {
background-color: #d79921;
list-style-image: url(link.svg);
}
+
+.draft-rate {
+ padding-left: 1em;
+}
</style>
$for(css)$
diff --git a/scripts/generate_card.py b/scripts/generate_card.py
index ce14d5a4..c80271e3 100755
--- a/scripts/generate_card.py
+++ b/scripts/generate_card.py
@@ -140,22 +140,27 @@ def generate_markdown(card: MutableMapping, language='en', indentation=3):
"""Output a markdown enumeration"""
name = get_field(card, 'name', language)
- print(f'{"#" * indentation} {name}')
# always use the englisch name as file name
file_name = file_for_card(get_field(card, 'name', 'en'), "")
+ print(f'{"#" * indentation} {name} {{data-canonical-name="{file_name}"}}')
+
yml_card_path = f'../cards-data/{card["set"]}/{file_name}.yml'
built_card_path = f'../latex-build/{language}/{card["set"]}/{file_name}'
- gen_png_link_text = lambda _: 'png'
- gen_png_link_target = lambda c, l: f'{built_card_path}.png'
+ def gen_png_link_text(_):
+ return 'png'
+
+ def gen_png_link_target(c, l):
+ return f'{built_card_path}.png'
+
png_hover_link = generate_card_hover_links.gen_hoverable_link(
str(file_name), gen_png_link_text, gen_png_link_target,
'../latex-build', language)
print(
- f'\n[pdf]({built_card_path}.pdf) {png_hover_link} [yml]({yml_card_path})\n'
+ f'\n[pdf]({built_card_path}.pdf) {png_hover_link} [yml]({yml_card_path}) <span class="draft-rate"></span>\n'
)
for key in KEYS:
diff --git a/scripts/generate_card_listing.py b/scripts/generate_card_listing.py
index a2952e03..03f0ad66 100755
--- a/scripts/generate_card_listing.py
+++ b/scripts/generate_card_listing.py
@@ -3,12 +3,22 @@
import argparse
from pathlib import Path
+from string import Template
import sys
import yaml
import generate_card
+META_DATA = """---
+header-includes: <script src="../js/recvDraftRates.js"></script>
+title: ${title}
+---
+"""
+
+title = {"de": "Karten", "en": "Cards"}
+
+
def main():
"""Generate a markdown card listing"""
@@ -33,6 +43,8 @@ def main():
file=sys.stderr)
sys.exit(1)
+ md = Template(META_DATA)
+ print(md.safe_substitute({"title": title[args.language]}))
for set_dir in set_dirs:
set_name = set_dir.name
print(