Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

generate.html 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <title>RPG cards</title>
  5. <meta charset="UTF-8">
  6. <!-- Library: jQuery -->
  7. <script type="text/javascript" src="lib/jquery/jquery.min.js" charset="utf-8"></script>
  8. <!-- Library: Bootstrap -->
  9. <script type="text/javascript" src="lib/bootstrap/js/bootstrap.min.js" charset="utf-8"></script>
  10. <link rel="stylesheet" type="text/css" href="lib/bootstrap/css/bootstrap.min.css" />
  11. <link rel="stylesheet" type="text/css" href="lib/bootstrap/css/bootstrap-theme.min.css" />
  12. <!-- Library: Bootstrap typeahead -->
  13. <script type="text/javascript" src="lib/typeahead/bootstrap3-typeahead.min.js" charset="utf-8"></script>
  14. <!-- Library: Color picker -->
  15. <link href="lib/colorpicker/css/bootstrap-colorselector.css" rel="stylesheet" />
  16. <script type="text/javascript" src="lib/colorpicker/js/bootstrap-colorselector.js" charset="utf-8"></script>
  17. <!-- Data -->
  18. <script type="text/javascript" src="data/card_data_example.js"></script>
  19. <!-- Javascript -->
  20. <script type="text/javascript" src="js/cards.js"></script>
  21. <script type="text/javascript" src="js/colors.js"></script>
  22. <script type="text/javascript" src="js/icons.js"></script>
  23. <script type="text/javascript" defer src="js/ui.js"></script>
  24. <!-- CSS -->
  25. <link href="css/ui.css" rel="stylesheet" />
  26. <link href="css/cards.css" rel="stylesheet" />
  27. <link href="css/card-size.css" rel="stylesheet" />
  28. <link href="css/icons.css" rel="stylesheet" />
  29. <link href="css/class-icons.css" rel="stylesheet" />
  30. <link href="css/custom-icons.css" rel="stylesheet" />
  31. <!-- Fonts -->
  32. <link href='https://fonts.googleapis.com/css?family=Noto+Sans:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
  33. <link href='https://fonts.googleapis.com/css?family=Lora:700' rel='stylesheet' type='text/css'>
  34. </head>
  35. <body>
  36. <div class="container-fluid">
  37. <!--<h1 class="page-header">RPG card generator</h1>-->
  38. <div class="row">
  39. <div class="alert alert-warning alert-dismissible" role="alert">
  40. <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  41. <strong>Note</strong>
  42. Click on "Open help" to display some information about how to use this generator and what to do if you have a feature request or found a bug.
  43. </div>
  44. </div>
  45. <div class="row">
  46. <div class="col-md-12 col-lg-3">
  47. <!--<h3>Menu</h3>-->
  48. <form style="display:none" id="file-load-form">
  49. <input type="file" id="file-load" name="files[]" multiple class="form-control" style="display:none" />
  50. </form>
  51. <form role="form" class="form-horizontal">
  52. <div class="form-group">
  53. <div class="col-sm-6">
  54. <button type="button" class="btn btn-info btn-block" id="button-help">Open Help</button>
  55. </div>
  56. <div class="col-sm-6">
  57. <button type="button" class="btn btn-danger btn-block" id="button-clear">Delete all</button>
  58. </div>
  59. </div>
  60. <div class="form-group">
  61. <div class="col-sm-6">
  62. <button type="button" class="btn btn-primary btn-block" id="button-load-sample">Load sample</button>
  63. </div>
  64. <div class="col-sm-6">
  65. <button type="button" class="btn btn-primary btn-block" id="button-load">Load from file</button>
  66. </div>
  67. </div>
  68. <div class="form-group">
  69. <div class="col-sm-6">
  70. <button type="button" class="btn btn-primary btn-block" id="button-sort">Sort</button>
  71. </div>
  72. <div class="col-sm-6">
  73. <button type="button" class="btn btn-primary btn-block" id="button-save" onclick="ui_save_file()">Save to file</button>
  74. <a href="" download="rpg_cards.json" id="file-save-link" style="display:none">Hidden download link</a>
  75. </div>
  76. </div>
  77. <div class="form-group">
  78. <div class="col-sm-6">
  79. <button type="button" class="btn btn-primary btn-block" id="button-filter">Map/Filter</button>
  80. </div>
  81. <div class="col-sm-6">
  82. <button type="button" class="btn btn-success btn-block" id="button-generate">Generate</button>
  83. </div>
  84. </div>
  85. <!--<span class="help-block">Generated cards open in a new tab or window.</span>-->
  86. </form>
  87. <h3>Page settings</h3>
  88. <form role="form" class="form-horizontal">
  89. <div class="form-group">
  90. <label for="page-size" class="col-sm-4 control-label">Page Size</label>
  91. <div class="col-sm-8">
  92. <select class="form-control" id="page-size" data-option="page_size">
  93. <option value="A4" selected>A4</option>
  94. <option value="Letter">US letter</option>
  95. <option value="25x35">2.5&quot; x 3.5&quot;</option>
  96. </select>
  97. </div>
  98. </div>
  99. <div class="form-group">
  100. <label for="card-size" class="col-sm-4 control-label">Card Size</label>
  101. <div class="col-sm-8">
  102. <select class="form-control" id="card-size" data-option="card_size">
  103. <option value="225x35">2.25&quot; x 3.5&quot; (Bridge)</option>
  104. <option value="25x35">2.5&quot; x 3.5&quot; (Poker)</option>
  105. <option value="35x50">3.5&quot; x 5.0&quot;</option>
  106. <option value="36x54" selected>3.6&quot; x 5.4&quot; (Monster)</option>
  107. <option value="75x50">7.5&quot; x 5.0&quot;</option>
  108. </select>
  109. </div>
  110. </div>
  111. <div class="form-group">
  112. <label for="card-size" class="col-sm-4 control-label">Cards/page</label>
  113. <div class="col-sm-3">
  114. <input type="text" id="page-rows" class="form-control" data-option="page_rows" value="3">
  115. </div>
  116. <div class="col-sm-2">
  117. <p class="form-control-static">x</p>
  118. </div>
  119. <div class="col-sm-3">
  120. <input type="text" id="page-columns" class="form-control" data-option="page_columns" value="3">
  121. </div>
  122. </div>
  123. <div class="form-group">
  124. <label for="card-arrangement" class="col-sm-4 control-label">Arrangement</label>
  125. <div class="col-sm-8">
  126. <select class="form-control" id="card-arrangement" data-option="card_arrangement">
  127. <option value="doublesided" selected>Double sided printing</option>
  128. <option value="front_only">Front side only</option>
  129. <option value="side_by_side">Side by side</option>
  130. </select>
  131. </div>
  132. </div>
  133. <div class="form-group">
  134. <label for="rounded-corners" class="col-sm-4 control-label">Corners</label>
  135. <div class="col-sm-8">
  136. <div class="checkbox">
  137. <label>
  138. <input type="checkbox" checked id="rounded-corners" data-option="rounded_corners" value="1"> Rounded card corners
  139. </label>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="form-group">
  144. <label for="foreground-color" class="col-sm-4 control-label">Front color</label>
  145. <div class="col-sm-8">
  146. <div class="input-group">
  147. <select id="foreground_color_selector" class="colorselector-data"></select>
  148. <input type="text" id="foreground-color" class="form-control" placeholder="Front page color" data-property="color" value="white">
  149. </div>
  150. </div>
  151. </div>
  152. <div class="form-group">
  153. <label for="background-color" class="col-sm-4 control-label">Back color</label>
  154. <div class="col-sm-8">
  155. <div class="input-group">
  156. <select id="background_color_selector" class="colorselector-data"></select>
  157. <input type="text" id="background-color" class="form-control" placeholder="Back page color" data-property="color" value="white">
  158. </div>
  159. </div>
  160. </div>
  161. </form>
  162. <h3>Default values</h3>
  163. <form role="form" class="form-horizontal">
  164. <div class="form-group">
  165. <label for="small-icons" class="col-sm-2 control-label">Icon</label>
  166. <div class="col-sm-10">
  167. <div class="checkbox">
  168. <label>
  169. <input type="checkbox" checked id="small-icons"> Use small front icons
  170. </label>
  171. </div>
  172. </div>
  173. </div>
  174. <div class="form-group">
  175. <label for="default-color" class="col-sm-2 control-label">Color</label>
  176. <div class="col-sm-10">
  177. <div class="input-group">
  178. <select id="default_color_selector" class="colorselector-data"></select>
  179. <input type="text" id="default-color" class="form-control" placeholder="Card color" data-property="color" value="black">
  180. </div>
  181. </div>
  182. </div>
  183. <div class="form-group">
  184. <label for="default-icon" class="col-sm-2 control-label">Icon</label>
  185. <div class="col-sm-10">
  186. <div class="input-group">
  187. <span class="input-group-btn">
  188. <button class="btn btn-default icon-select-button" type="button">Search</button>
  189. </span>
  190. <input type="text" id="default-icon" class="form-control icon-list" placeholder="Icon name">
  191. </div>
  192. </div>
  193. </div>
  194. <div class="form-group">
  195. <label for="default-title-size" class="col-sm-2 control-label">Title</label>
  196. <div class="col-sm-10">
  197. <select class="form-control" id="default-title-size">
  198. <option value="16">16pt font</option>
  199. <option value="15">15pt font</option>
  200. <option value="14">14pt font</option>
  201. <option value="13" selected>13pt font</option>
  202. <option value="12">12pt font</option>
  203. <option value="11">11pt font</option>
  204. <option value="10">10pt font</option>
  205. </select>
  206. </div>
  207. </div>
  208. <div class="form-group">
  209. <div class="col-sm-6">
  210. <button type="button" class="btn btn-primary btn-block" id="button-apply-color">Apply color</button>
  211. </div>
  212. <div class="col-sm-6">
  213. <button type="button" class="btn btn-primary btn-block" id="button-apply-font">Apply title font</button>
  214. </div>
  215. </div>
  216. <div class="form-group">
  217. <div class="col-sm-6">
  218. <button type="button" class="btn btn-primary btn-block" id="button-apply-icon">Apply icon</button>
  219. </div>
  220. <div class="col-sm-6">
  221. <button type="button" class="btn btn-primary btn-block" id="button-apply-icon-back">Apply back icon</button>
  222. </div>
  223. </div>
  224. </form>
  225. </div>
  226. <div class="col-md-12 col-lg-5">
  227. <!--<h3>Card</h3>-->
  228. <form class="form-horizontal" role="form">
  229. <div class="form-group">
  230. <label for="selected-card" class="col-sm-2 control-label">Deck</label>
  231. <div class="col-sm-10">
  232. <p class="form-control-static" id="total_card_count">Deck contains 0 cards.</p>
  233. </div>
  234. </div>
  235. <div class="form-group">
  236. <label for="selected-card" class="col-sm-2 control-label">Card</label>
  237. <div class="col-sm-10">
  238. <select class="form-control" id="selected-card"></select>
  239. </div>
  240. </div>
  241. <div class="form-group">
  242. <label class="col-sm-2 control-label"></label>
  243. <div class="col-sm-4">
  244. <button type="button" class="btn btn-danger btn-block" id="button-delete-card">Delete card</button>
  245. </div>
  246. <div class="col-sm-3">
  247. <button type="button" class="btn btn-primary btn-block" id="button-add-card">Add new card</button>
  248. </div>
  249. <div class="col-sm-3">
  250. <button type="button" class="btn btn-primary btn-block" id="button-duplicate-card">Duplicate card</button>
  251. </div>
  252. </div>
  253. <div class="form-group">
  254. <label for="card-title" class="col-sm-2 control-label">Name</label>
  255. <div class="col-sm-10">
  256. <input type="text" id="card-title" class="form-control" placeholder="Title">
  257. </div>
  258. </div>
  259. <div class="form-group">
  260. <label for="card-title-size" class="col-sm-2 control-label">Title</label>
  261. <div class="col-sm-10">
  262. <select class="form-control" id="card-title-size" data-property="title_size">
  263. <option value="" selected>default font</option>
  264. <option value="16">16pt font</option>
  265. <option value="15">15pt font</option>
  266. <option value="14">14pt font</option>
  267. <option value="13">13pt font</option>
  268. <option value="12">12pt font</option>
  269. <option value="11">11pt font</option>
  270. <option value="10">10pt font</option>
  271. </select>
  272. </div>
  273. </div>
  274. <div class="form-group">
  275. <label for="card-count" class="col-sm-2 control-label">Count</label>
  276. <div class="col-sm-10">
  277. <input type="number" id="card-count" class="form-control" placeholder="Count" data-property="count" value="1">
  278. </div>
  279. </div>
  280. <div class="form-group">
  281. <label for="card-tags" class="col-sm-2 control-label">Tags</label>
  282. <div class="col-sm-10">
  283. <input type="text" id="card-tags" class="form-control" placeholder="Tags">
  284. </div>
  285. </div>
  286. <div class="form-group">
  287. <label for="card-stats" class="col-sm-2 control-label">Stats</label>
  288. <div class="col-sm-10">
  289. <input type="text" id="card-stats" class="form-control" placeholder="SPD|HP|AC" data-property="stats">
  290. </div>
  291. </div>
  292. <div class="form-group">
  293. <label for="card-icon" class="col-sm-2 control-label">Icon</label>
  294. <div class="col-sm-10">
  295. <div class="input-group">
  296. <span class="input-group-btn">
  297. <button class="btn btn-default icon-select-button" type="button">Search</button>
  298. </span>
  299. <input type="text" id="card-icon" class="form-control icon-list" placeholder="Default icon" data-property="icon">
  300. </div>
  301. </div>
  302. </div>
  303. <div class="form-group">
  304. <label for="card-icon-back" class="col-sm-2 control-label">Back icon</label>
  305. <div class="col-sm-10">
  306. <div class="input-group">
  307. <span class="input-group-btn">
  308. <button class="btn btn-default icon-select-button" type="button">Search</button>
  309. </span>
  310. <input type="text" id="card-icon-back" class="form-control icon-list" placeholder="Same as front" data-property="icon_back">
  311. </div>
  312. </div>
  313. </div>
  314. <div class="form-group">
  315. <label for="card-color" class="col-sm-2 control-label">Color</label>
  316. <div class="col-sm-10">
  317. <div class="input-group">
  318. <select id="card_color_selector" class="colorselector-data"></select>
  319. <input type="text" id="card-color" class="form-control" placeholder="Default color" data-property="color">
  320. </div>
  321. </div>
  322. </div>
  323. <div class="form-group">
  324. <label for="card-background" class="col-sm-2 control-label">Background</label>
  325. <div class="col-sm-10">
  326. <input type="text" id="card-background" class="form-control" placeholder="Background image URL" data-property="background_image">
  327. </div>
  328. </div>
  329. <div class="form-group">
  330. <label for="card-contents" class="col-sm-2 control-label">Contents</label>
  331. <div class="col-sm-10">
  332. <textarea class="form-control" rows="14" id="card-contents"></textarea>
  333. </div>
  334. </div>
  335. </form>
  336. </div>
  337. <div class="col-md-12 col-lg-4">
  338. <!--<h3>Preview</h3>-->
  339. <div id="preview-container" class="preview-container">
  340. </div>
  341. </div>
  342. </div>
  343. </div>
  344. <!-- Modal -->
  345. <div class="modal" id="print-modal" tabindex="-1" role="dialog">
  346. <div class="modal-dialog">
  347. <div class="modal-content">
  348. <div class="modal-header">
  349. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  350. <h4 class="modal-title" id="myModalLabel">Printing generated cards</h4>
  351. </div>
  352. <div class="modal-body">
  353. <ul>
  354. <li>The generated cards open in a new tab or window. If you don't see any new tab or window, check your popup and script blockers. If that does not help, try disabling all addons.</li>
  355. <li>Make sure you enable the printing of background images and colors in your browser.</li>
  356. <li>Make sure your printer uses the correct paper size (same as in the editor).</li>
  357. <li>Enable double sided printing (flip on long edge).</li>
  358. <li>Do not scale the document to fit the page. Print at original size.</li>
  359. <li>
  360. Some printers are not very precise (pages print slightly shifted or rotated) and the cards will not line up with the card backs.
  361. If this is the case, there's not much you can do.
  362. Try making the page background the same color as the cards, so that you won't get any white edges on the card.
  363. If that does not help, try a different printer or print single-sided.
  364. </li>
  365. </ul>
  366. </div>
  367. <div class="modal-footer">
  368. <button type="button" class="btn btn-default" data-dismiss="modal">Ok, got it</button>
  369. </div>
  370. </div>
  371. </div>
  372. </div>
  373. <!-- Modal (Info)-->
  374. <div class="modal" id="help-modal" tabindex="-1" role="dialog">
  375. <div class="modal-dialog">
  376. <div class="modal-content">
  377. <div class="modal-header">
  378. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  379. <h4 class="modal-title" id="myModalLabel">RGP card generator</h4>
  380. </div>
  381. <div class="modal-body">
  382. <ul>
  383. <li>Some RPG systems are protected by copyright. Even if some spell/item data is freely available, it does not mean you may redistribute cards containing such data.</li>
  384. <li>If you find a bug or have a feature request, post them at the <a href="https://github.com/crobi/rpg-cards/issues">Github project site</a>.</li>
  385. <li>
  386. The user interface consists of three columns:
  387. <img alt="help" src="img/help/help.png" style="max-width:95%; display:block; padding: 5px; margin: 10px 0 10px 0; border: 1px solid #ebebeb; box-shadow: 0 0 5px #ebebeb;"/>
  388. The left column contains the menu and global settings.
  389. In the middle menu, you can select and edit individual cards.
  390. The right column contains a preview of the selected card.
  391. </li>
  392. <li>
  393. To use the generator, either load the sample card deck ("Load sample"),
  394. load a card deck from a file ("Load from file"),
  395. or manually add some cards.
  396. When you're done, click on "Generate" to generate a document with all your cards, which can then be printed.
  397. </li>
  398. <li>
  399. To learn about what features are available to define a card, inspect the sample deck or
  400. read some basic documentation at the <a href="http://crobi.github.io/rpg-cards/">project site</a>.
  401. </li>
  402. </ul>
  403. </div>
  404. <div class="modal-footer">
  405. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  406. </div>
  407. </div>
  408. </div>
  409. </div>
  410. <!-- Modal (Sort)-->
  411. <div class="modal" id="sort-modal" tabindex="-1" role="dialog">
  412. <div class="modal-dialog">
  413. <div class="modal-content">
  414. <div class="modal-header">
  415. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  416. <h4 class="modal-title" id="myModalLabel">Sort cards</h4>
  417. </div>
  418. <div class="modal-body">
  419. <p>
  420. Enter the comparison function below.
  421. The comparison function is a block of javascript code.
  422. Return -1 if card_a should appear before card_b.
  423. </p>
  424. <textarea class="form-control" rows="10" id="sort-function" wrap="off">
  425. if (card_a.title < card_b.title) {
  426. return -1;
  427. }
  428. else if (card_a.title > card_b.title) {
  429. return 1;
  430. }
  431. else {
  432. return 0;
  433. }
  434. </textarea>
  435. </div>
  436. <div class="modal-footer">
  437. <button type="button" class="btn btn-default" id="sort-execute">Sort</button>
  438. </div>
  439. </div>
  440. </div>
  441. </div>
  442. <!-- Modal (Filter)-->
  443. <div class="modal" id="filter-modal" tabindex="-1" role="dialog">
  444. <div class="modal-dialog">
  445. <div class="modal-content">
  446. <div class="modal-header">
  447. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  448. <h4 class="modal-title" id="myModalLabel">Filter/map cards</h4>
  449. </div>
  450. <div class="modal-body">
  451. <p>
  452. Enter code below that will be executed for each card in the deck.
  453. Return false to remove the current card from the deck.
  454. </p>
  455. <textarea class="form-control" rows="10" id="filter-function" wrap="off">
  456. // Color all spell cards yellow
  457. if (card_has_tag(card, "spell")) {
  458. card.color = "yellow";
  459. }
  460. // Remove all creature cards
  461. if (card_has_tag(card, "creature")) {
  462. return false;
  463. }
  464. </textarea>
  465. </div>
  466. <div class="modal-footer">
  467. <button type="button" class="btn btn-default" id="filter-execute">Filter</button>
  468. </div>
  469. </div>
  470. </div>
  471. </div>
  472. </body>
  473. </html>