Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

303 rindas
12KB

  1. {% extends "layouts/minimal.html" %}
  2. {% block title %}{_ "KDE Team Deck Listing" _}{% endblock %}
  3. {% block content %}
  4. <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA=="crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  5. <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/textfit/2.4.0/textFit.min.js" integrity="sha512-vLs5rAqfvmv/IpN7JustROkGAvjK/L+vgVDFe7KpdtLztqF8mZDfleK2MZj/xuOrWjma0pW+lPCMcBbPKJVC7g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> -->
  6. <script>
  7. $(document).ready(function() {
  8. toggle_darkness();
  9. // textFit(document.getElementsByClassName('textfit'));
  10. });
  11. function downloadImage() {
  12. html2canvas(document.getElementById('main')).then(function(canvas) {
  13. var a = document.createElement('a');
  14. a.style.display = 'none';
  15. a.href = canvas.toDataURL();
  16. a.download = 'kde-team-listing.png';
  17. a.click();
  18. a.remove();
  19. });
  20. }
  21. </script>
  22. <style>
  23. .table {
  24. border: 2px solid black !important;
  25. border-collapse: collapse !important;
  26. border-spacing: 0 !important;
  27. padding: 0.1rem 0.25rem; !important;
  28. }
  29. .table th, .table td {
  30. border: 1px solid black !important;
  31. border-collapse: collapse !important;
  32. border-spacing: 0 !important;
  33. padding: 0.1rem 0.25rem; !important;
  34. }
  35. .is-size-10 {
  36. font-size: 6pt !important;
  37. white-space: nowrap !important;
  38. }
  39. .has-min-column-width {
  40. width: 30px !important;
  41. }
  42. .columns.no-bottom-padding .column {
  43. margin-bottom: 0 !important;
  44. padding-bottom: 0 !important;
  45. border-collapse: collapse !important;
  46. border-spacing: 0 !important;
  47. }
  48. .columns.no-top-padding .column {
  49. margin-top: 0 !important;
  50. padding-top: 0 !important;
  51. border-collapse: collapse !important;
  52. border-spacing: 0 !important;
  53. }
  54. </style>
  55. <div class="navbar">
  56. <div class="navbar-menu">
  57. <a class="navbar-item is-expanded button is-success"
  58. onclick="downloadImage();"
  59. style="border-radius:0!important;">Click!</a>
  60. </div>
  61. </div>
  62. <div class="section" id="main">
  63. <!-- Top Row -->
  64. <div class="columns is-multiline no-bottom-padding">
  65. <!-- Top Left -->
  66. <div class="column is-6">
  67. <table class="table is-bordered is-fullwidth">
  68. <tr style="border-bottom: 2px solid black !important;">
  69. <td class="has-text-centered has-background-grey-light" colspan="12">
  70. Please write all card names <b>completely</b> and <b>legibly</b>.
  71. <br>
  72. Please include the quantity for each card.
  73. </td>
  74. </tr>
  75. <tr>
  76. <td class="has-background-grey-lighter" style="width: 30% !important">First & Middle Name(s):</td>
  77. <td class="has-background-info-light" colspan="10"></td>
  78. </tr>
  79. <tr>
  80. <td class="has-background-grey-lighter">Last Name(s):</td>
  81. <td class="has-background-info-light" colspan="10"></td>
  82. </tr>
  83. <tr>
  84. <td class="has-background-grey-lighter">CARD GAME ID:</td>
  85. <td class="has-background-info-light"></td>
  86. <td class="has-background-info-light"></td>
  87. <td class="has-background-info-light"></td>
  88. <td class="has-background-info-light"></td>
  89. <td class="has-background-info-light"></td>
  90. <td class="has-background-info-light"></td>
  91. <td class="has-background-info-light"></td>
  92. <td class="has-background-info-light"></td>
  93. <td class="has-background-info-light"></td>
  94. <td class="has-background-info-light"></td>
  95. </tr>
  96. </table>
  97. </div>
  98. <!-- Top Mid -->
  99. <div class="column is-5">
  100. <table class="table is-bordered is-fullwidth">
  101. <tr style="border-bottom: 2px solid black !important;">
  102. <td class="has-text-centered has-background-grey-lighter" colspan="4">Judge Use Only:</td>
  103. <th class="has-text-centered">M</th>
  104. <td></td>
  105. <td></td>
  106. <td></td>
  107. <th class="has-text-centered">S</th>
  108. <td></td>
  109. <td></td>
  110. </tr>
  111. <tr>
  112. <td class="has-background-grey-lighter">Event Date:</td>
  113. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">M</td>
  114. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">M</td>
  115. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">/</td>
  116. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">D</td>
  117. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">D</td>
  118. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">/</td>
  119. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">Y</td>
  120. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">Y</td>
  121. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">Y</td>
  122. <td class="has-text-weight-bold has-text-centered has-background-info-light" style="opacity:25%">Y</td>
  123. </tr>
  124. <tr>
  125. <td class="has-background-grey-lighter">Country of Residency:</td>
  126. <td class="has-background-info-light" colspan="10"></td>
  127. </tr>
  128. <tr>
  129. <td class="has-background-grey-lighter" style="margin:0;padding-bottom:0;padding-top:0">Event Name:</td>
  130. <td class="has-background-info-light" colspan="10"></td>
  131. </tr>
  132. </table>
  133. </div>
  134. <!-- Top Right -->
  135. <div class="column is-1">
  136. <table class="table is-bordered is-fullwidth">
  137. <tr>
  138. <td class="has-text-weight-bold has-text-justified">E</td>
  139. <td class="has-min-column-width"></td>
  140. <td class="has-min-column-width"></td>
  141. </tr>
  142. <tr style="border-bottom:0!important">
  143. <td colspan="3" class="is-size-10 has-text-centered" style="border-bottom:0!important">
  144. Last Name Initial
  145. </td>
  146. </tr>
  147. <tr style="border-top:0!important">
  148. <td colspan="3" class="has-background-info-light" style="border-top:0!important">
  149. &nbsp;<br>
  150. </td>
  151. </tr>
  152. <tr>
  153. <td colspan="3" class="has-text-centered">
  154. <p class="is-size-10">Main Deck Total</p>
  155. <p>{{ main-deck | length }}</p>
  156. </td>
  157. </tr>
  158. </table>
  159. </div>
  160. </div>
  161. <div class="columns no-top-padding">
  162. <div class="column is-fullwidth">
  163. <table class="table is-bordered is-fullwidth">
  164. <tr>
  165. <th class="has-background-grey-lighter" width="150px">Team Name:</th>
  166. <td class="has-background-info-light"></td>
  167. </tr>
  168. </table>
  169. </div>
  170. </div>
  171. <!-- Middle Row -->
  172. <div class="columns is-gapless">
  173. <div class="column is-one-third">
  174. <table class="table is-bordered is-fullwidth">
  175. <tr>
  176. <th class="has-text-centered has-background-grey-light" colspan="2">MONSTER CARDS</th>
  177. </tr>
  178. {% for (count . card) in monster-cards-rle %}
  179. <tr class="{{ card.frame-type | default:"has-background-info-light" }}">
  180. <th class="has-text-centered has-min-column-width">{{ count }}</th>
  181. <td class="textfit">{{ card.name | default:"&nbsp;"| safe }}</td>
  182. </tr>
  183. {% endfor %}
  184. <tr>
  185. <th class="has-text-centered">{{ monster-cards | length }}</th>
  186. <th>&laquo; TOTAL MONSTER CARDS</th>
  187. </tr>
  188. </table>
  189. </div>
  190. <div class="column is-one-third">
  191. <table class="table is-bordered is-fullwidth">
  192. <tr>
  193. <th class="has-text-centered has-background-grey-light" colspan="2">SPELL CARDS</th>
  194. </tr>
  195. {% for (count . card) in spell-cards-rle %}
  196. <tr class="{{ card.frame-type | default:"has-background-info-light" }}">
  197. <th class="has-text-centered has-min-column-width">{{ count }}</th>
  198. <td class="textfit">{{ card.name | default:"&nbsp;"| safe }}</td>
  199. </tr>
  200. {% endfor %}
  201. <tr>
  202. <th class="has-text-centered">{{ spell-cards | length }}</th>
  203. <th>&laquo; TOTAL SPELL CARDS</th>
  204. </tr>
  205. </table>
  206. </div>
  207. <div class="column is-one-third">
  208. <table class="table is-bordered is-fullwidth">
  209. <tr>
  210. <th class="has-text-centered has-background-grey-light" colspan="2">TRAP CARDS</th>
  211. </tr>
  212. {% for (count . card) in trap-cards-rle %}
  213. <tr class="{{ card.frame-type | default:"has-background-info-light" }}">
  214. <th class="has-text-centered has-min-column-width">{{ count }}</th>
  215. <td class="textfit">{{ card.name | default:"&nbsp;"| safe }}</td>
  216. </tr>
  217. {% endfor %}
  218. <tr>
  219. <th class="has-text-centered has-min-column-width">{{ trap-cards | length }}</th>
  220. <th>&laquo; TOTAL TRAP CARDS</th>
  221. </tr>
  222. </table>
  223. </div>
  224. </div>
  225. <div class="columns is-gapless">
  226. <div class="column is-one-third side">
  227. <table class="table is-bordered is-fullwidth">
  228. <tr>
  229. <th class="has-text-centered has-background-grey-light" colspan="2">SIDE DECK</th>
  230. </tr>
  231. {% for (count . card) in side-deck-rle %}
  232. <tr class="{{ card.frame-type | default:"has-background-info-light" }}">
  233. <th class="has-text-centered has-min-column-width">{{ count }}</th>
  234. <td class="textfit">{{ card.name | default:"&nbsp;"| safe }}</td>
  235. </tr>
  236. {% endfor %}
  237. <tr>
  238. <th class="has-text-centered">{{ side-deck | length }}</th>
  239. <th>&laquo; TOTAL SIDE DECK</th>
  240. </tr>
  241. </table>
  242. </div>
  243. <div class="column is-one-third extra">
  244. <table class="table is-bordered is-fullwidth">
  245. <tr>
  246. <th class="has-text-centered has-background-grey-light" colspan="2">EXTRA DECK</th>
  247. </tr>
  248. {% for (count . card) in extra-deck-rle %}
  249. <tr class="{{ card.frame-type | default:"has-background-info-light" }}">
  250. <th class="has-text-centered has-min-column-width">{{ count }}</th>
  251. <td class="textfit">{{ card.name | default:"&nbsp;"| safe }}</td>
  252. </tr>
  253. {% endfor %}
  254. <tr>
  255. <th class="has-text-centered">{{ extra-deck | length }}</th>
  256. <th>&laquo; TOTAL EXTRA DECK</th>
  257. </tr>
  258. </table>
  259. </div>
  260. <div class="column is-one-third" style="padding-left:1rem!important">
  261. <div class="table-container">
  262. <table class="table is-bordered is-fullwidth has-background-grey-lighter">
  263. <tr><th class="has-text-centered" colspan="2">For Judge Use Only</th></tr>
  264. <tr><td colspan="2 ">Deck List Checked?</td></tr>
  265. <tr>
  266. <td>Judge Initials</td>
  267. <td>Infraction:</td>
  268. </tr>
  269. <tr><td colspan="2" style="height:100px !important">Description:</td></tr>
  270. <tr><td colspan="2">Deck Check Round:</td></tr>
  271. <tr>
  272. <td>Judge Initials</td>
  273. <td>Infraction:</td>
  274. </tr>
  275. <tr><td colspan="2" style="height:100px !important">Description:</td></tr>
  276. <tr><td colspan="2">Deck Check Round:</td></tr>
  277. <tr>
  278. <td>Judge Initials</td>
  279. <td>Infraction:</td>
  280. </tr>
  281. <tr><td colspan="2" style="height:100px !important">Description:</td></tr>
  282. </table>
  283. </div>
  284. </div>
  285. </div>
  286. </div>
  287. {% endblock %}