Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

303 строки
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 %}