瀏覽代碼

Update generator

crobi 10 年之前
父節點
當前提交
50de736478
共有 5 個文件被更改,包括 107 次插入36 次删除
  1. 21
    0
      generator/css/card-size.css
  2. 15
    16
      generator/css/cards.css
  3. 15
    2
      generator/generate.html
  4. 51
    17
      generator/js/cards.js
  5. 5
    1
      generator/js/ui.js

+ 21
- 0
generator/css/card-size.css 查看文件

41
     height: 278mm; /* full: 279.4mm (11.0in) */
41
     height: 278mm; /* full: 279.4mm (11.0in) */
42
 }
42
 }
43
 
43
 
44
+page[size="25x35"] {
45
+    width: 63.6mm;
46
+    height: 89.0mm;
47
+}
48
+
44
 /* Default card size */
49
 /* Default card size */
45
 .card {
50
 .card {
46
     width:2.5in;
51
     width:2.5in;
54
     min-width:2.25in;
59
     min-width:2.25in;
55
     height:3.5in;
60
     height:3.5in;
56
 }
61
 }
62
+.card-size-225x35 .card-back-icon {
63
+    width: 1in;
64
+    height: 1in;
65
+}
57
 
66
 
58
 /* Poker / Magic card size */
67
 /* Poker / Magic card size */
59
 .card-size-25x35 {
68
 .card-size-25x35 {
61
     min-width:2.5in;
70
     min-width:2.5in;
62
     height:3.5in;
71
     height:3.5in;
63
 }
72
 }
73
+.card-size-25x35 .card-back-icon {
74
+    width: 1in;
75
+    height: 1in;
76
+}
64
 
77
 
65
 /* Poker / Magic card size */
78
 /* Poker / Magic card size */
66
 .card-size-35x50 {
79
 .card-size-35x50 {
68
     min-width:3.5in;
81
     min-width:3.5in;
69
     height:5.0in;
82
     height:5.0in;
70
 }
83
 }
84
+.card-size-35x50 .card-back-icon {
85
+    width: 1.5in;
86
+    height: 1.5in;
87
+}
71
 
88
 
72
 /* Landscape big card */
89
 /* Landscape big card */
73
 .card-size-75x50 {
90
 .card-size-75x50 {
75
     min-width:7.5in;
92
     min-width:7.5in;
76
     height:5.0in;
93
     height:5.0in;
77
 }
94
 }
95
+.card-size-75x50 .card-back-icon {
96
+    width: 2in;
97
+    height: 2in;
98
+}
78
 
99
 
79
 .page[size="A4"] .card-size-full3x3 {
100
 .page[size="A4"] .card-size-full3x3 {
80
     width:69mm;
101
     width:69mm;

+ 15
- 16
generator/css/cards.css 查看文件

26
     background-color: white;
26
     background-color: white;
27
     border-radius: 4mm;
27
     border-radius: 4mm;
28
     border-color: inherit;
28
     border-color: inherit;
29
-    margin: 2mm;
29
+    margin: 1mm;
30
     flex: 1;
30
     flex: 1;
31
     display: flex;
31
     display: flex;
32
 }
32
 }
33
 
33
 
34
 .card-back-inner {
34
 .card-back-inner {
35
-    margin: 2mm;
35
+    margin: 3mm;
36
     border: 1mm solid;
36
     border: 1mm solid;
37
     border-color: inherit;
37
     border-color: inherit;
38
     border-radius: 4mm;
38
     border-radius: 4mm;
45
 }
45
 }
46
 
46
 
47
 .card-back-icon {
47
 .card-back-icon {
48
-    width: 30mm;
49
-    height: 30mm;
48
+    width: 1in;
49
+    height: 1in;
50
     border: 4mm solid;
50
     border: 4mm solid;
51
     border-color: inherit;
51
     border-color: inherit;
52
     border-radius: 4mm;
52
     border-radius: 4mm;
130
 .card-subtitle {
130
 .card-subtitle {
131
     height: 18px;
131
     height: 18px;
132
     line-height: 18px;
132
     line-height: 18px;
133
-    margin-bottom: 1mm;
133
+    margin-bottom: 0.0em;
134
     font-family: 'Noto Sans', 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
134
     font-family: 'Noto Sans', 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
135
     font-size: 10pt;
135
     font-size: 10pt;
136
     font-style: italic;
136
     font-style: italic;
158
     font-weight: normal;
158
     font-weight: normal;
159
     letter-spacing: 1px;
159
     letter-spacing: 1px;
160
     margin: 0;
160
     margin: 0;
161
-    margin-bottom: 0.3em;
161
+    margin-bottom: -0.2em;
162
     border-color: inherit;
162
     border-color: inherit;
163
 }
163
 }
164
 
164
 
165
 .card-p {
165
 .card-p {
166
-    margin-top: 0.0em;
167
-    margin-bottom: 0.5em;
168
-    font-size: inherit;
166
+
169
 }
167
 }
170
 
168
 
171
 .card-fill {flex:1;}
169
 .card-fill {flex:1;}
172
 
170
 
173
 .card-description-line {
171
 .card-description-line {
174
-    margin-bottom: 0.5em;
172
+    margin-top: 0.5em;
173
+    margin-bottom: 0.0em;
175
     font-size: inherit;
174
     font-size: inherit;
176
     color: black;
175
     color: black;
177
 }
176
 }
178
 .card-description-name {
177
 .card-description-name {
179
     display: inline;
178
     display: inline;
180
     font-size: inherit;
179
     font-size: inherit;
180
+    font-style: italic;
181
+}
182
+.card-description-name::after {
183
+    content: ".";
181
 }
184
 }
182
 .card-description-text {
185
 .card-description-text {
183
     display: inline;
186
     display: inline;
186
 .card-ruler {
189
 .card-ruler {
187
     width: 100%;
190
     width: 100%;
188
     height: 1.0mm;
191
     height: 1.0mm;
189
-    margin-top: 0.5em;
190
-    margin-bottom: 0.2em;
192
+    margin-top: 0.3em;
193
+    margin-bottom: 0.3em;
191
 }
194
 }
192
 
195
 
193
 .card-bullet-line {
196
 .card-bullet-line {
203
     margin-bottom: 0;
206
     margin-bottom: 0;
204
     margin-top: 0;
207
     margin-top: 0;
205
     font-size: inherit;
208
     font-size: inherit;
206
-}
207
-
208
-.card-element:last-of-type{
209
-    margin-bottom: 0;
210
 }
209
 }

+ 15
- 2
generator/generate.html 查看文件

45
         <div class="row">
45
         <div class="row">
46
             <div class="col-md-12 col-lg-3">
46
             <div class="col-md-12 col-lg-3">
47
                 <!--<h3>Menu</h3>-->
47
                 <!--<h3>Menu</h3>-->
48
-                <form role="form" class="form-horizontal">
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" />
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">
50
                     <div class="form-group">
52
                     <div class="form-group">
51
                         <div class="col-sm-6">
53
                         <div class="col-sm-6">
52
                             <button type="button" class="btn btn-info btn-block" id="button-help">Open Help</button>
54
                             <button type="button" class="btn btn-info btn-block" id="button-help">Open Help</button>
90
                             <select class="form-control" id="page-size" data-option="page_size">
92
                             <select class="form-control" id="page-size" data-option="page_size">
91
                                 <option value="A4" selected>A4</option>
93
                                 <option value="A4" selected>A4</option>
92
                                 <option value="Letter">US letter</option>
94
                                 <option value="Letter">US letter</option>
95
+                                <option value="25x35">2.5&quot; x 3.5&quot;</option>
93
                             </select>
96
                             </select>
94
                         </div>
97
                         </div>
95
                     </div>
98
                     </div>
116
                             <input type="text" id="page-columns" class="form-control" data-option="page_columns" value="3">
119
                             <input type="text" id="page-columns" class="form-control" data-option="page_columns" value="3">
117
                         </div>
120
                         </div>
118
                     </div>
121
                     </div>
122
+                    <div class="form-group">
123
+                        <label for="card-arrangement" class="col-sm-4 control-label">Arrangement</label>
124
+                        <div class="col-sm-8">
125
+                            <select class="form-control" id="card-arrangement" data-option="card_arrangement">
126
+                                <option value="doublesided" selected>Double sided printing</option>
127
+                                <option value="front_only">Front side only</option>
128
+                                <option value="side_by_side">Side by side</option>
129
+                            </select>
130
+                        </div>
131
+                    </div>
119
                 </form>
132
                 </form>
120
                 <h3>Default values</h3>
133
                 <h3>Default values</h3>
121
                 <form role="form" class="form-horizontal">
134
                 <form role="form" class="form-horizontal">
134
                         <div class="col-sm-10">
147
                         <div class="col-sm-10">
135
                             <div class="input-group">
148
                             <div class="input-group">
136
                                 <select id="default_color_selector" class="colorselector-data"></select>
149
                                 <select id="default_color_selector" class="colorselector-data"></select>
137
-                                <input type="text" id="default-color" class="form-control" placeholder="Card color" data-property="color">
150
+                                <input type="text" id="default-color" class="form-control" placeholder="Card color" data-property="color" value="black">
138
                             </div>
151
                             </div>
139
                         </div>
152
                         </div>
140
                     </div>
153
                     </div>

+ 51
- 17
generator/js/cards.js 查看文件

9
         page_size: "A4",
9
         page_size: "A4",
10
         page_rows: 3,
10
         page_rows: 3,
11
         page_columns: 3,
11
         page_columns: 3,
12
+        card_arrangement: "doublesided",
12
         card_size: "25x35",
13
         card_size: "25x35",
13
         icon_inline: true
14
         icon_inline: true
14
     }
15
     }
137
     return '<div>Unknown element: ' + params.join('<br />') + '</div>';
138
     return '<div>Unknown element: ' + params.join('<br />') + '</div>';
138
 }
139
 }
139
 
140
 
141
+function card_element_empty(params, card_data, options) {
142
+    return '';
143
+}
144
+
140
 var card_element_generators = {
145
 var card_element_generators = {
141
     subtitle: card_element_subtitle,
146
     subtitle: card_element_subtitle,
142
     property: card_element_property,
147
     property: card_element_property,
146
     text: card_element_text,
151
     text: card_element_text,
147
     bullet: card_element_bullet,
152
     bullet: card_element_bullet,
148
     fill: card_element_fill,
153
     fill: card_element_fill,
149
-    section: card_element_section
154
+    section: card_element_section,
155
+    disabled: card_element_empty
150
 };
156
 };
151
 
157
 
152
 // ============================================================================
158
 // ============================================================================
273
     }
279
     }
274
 }
280
 }
275
 
281
 
282
+function card_pages_interleave_cards(front_cards, back_cards, options) {
283
+    var result = [];
284
+    var i = 0;
285
+    while (i < front_cards.length) {
286
+        result.push(front_cards[i]);
287
+        result.push(back_cards[i]);
288
+        if (options.page_columns > 2) {
289
+            result.push(card_generate_empty(options.page_columns - 2, options));
290
+        }
291
+        ++i;
292
+    }
293
+    return result;
294
+}
295
+
276
 function card_pages_wrap(pages, options) {
296
 function card_pages_wrap(pages, options) {
277
     var size = options.page_size || "A4";
297
     var size = options.page_size || "A4";
278
 
298
 
279
     var result = "";
299
     var result = "";
280
     for (var i = 0; i < pages.length; ++i) {
300
     for (var i = 0; i < pages.length; ++i) {
281
-        result += '<page class="page page-preview" size="' + size + '">\n';
301
+        var style = "";
302
+        if ((options.card_arrangement == "doublesided") &&  (i % 2 == 1)) {
303
+            style += 'style="background-color:'+options.default_color+'"';
304
+        }
305
+        result += '<page class="page page-preview" size="' + size + '" ' + style + '>\n';
282
         result += pages[i].join("\n");
306
         result += pages[i].join("\n");
283
         result += '</page>\n';
307
         result += '</page>\n';
284
     }
308
     }
301
         back_cards = back_cards.concat(card_repeat(back, count));
325
         back_cards = back_cards.concat(card_repeat(back, count));
302
     });
326
     });
303
 
327
 
304
-    // Add padding cards so that the last page is full of cards
305
-    front_cards = card_pages_add_padding(front_cards, options);
306
-    back_cards = card_pages_add_padding(back_cards, options);
307
-
308
-    // Split cards to pages
309
-    var front_pages = card_pages_split(front_cards, rows, cols);
310
-    var back_pages = card_pages_split(back_cards, rows, cols);
311
-
312
-    // Shuffle back cards so that they line up with their corresponding front cards
313
-    back_pages = back_pages.map(function (page) {
314
-        return cards_pages_flip_left_right(page, rows, cols);
315
-    });
316
-
317
-    // Interleave front and back pages so that we can print double-sided
318
-    var pages = card_pages_merge(front_pages, back_pages);
328
+    var pages = [];
329
+    if (options.card_arrangement == "doublesided") {
330
+        // Add padding cards so that the last page is full of cards
331
+        front_cards = card_pages_add_padding(front_cards, options);
332
+        back_cards = card_pages_add_padding(back_cards, options);
333
+
334
+        // Split cards to pages
335
+        var front_pages = card_pages_split(front_cards, rows, cols);
336
+        var back_pages = card_pages_split(back_cards, rows, cols);
337
+
338
+        // Shuffle back cards so that they line up with their corresponding front cards
339
+        back_pages = back_pages.map(function (page) {
340
+            return cards_pages_flip_left_right(page, rows, cols);
341
+        });
342
+
343
+        // Interleave front and back pages so that we can print double-sided
344
+        pages = card_pages_merge(front_pages, back_pages);
345
+    } else if (options.card_arrangement == "front_only") {
346
+        var cards = card_pages_add_padding(front_cards, options);
347
+        pages = card_pages_split(cards, rows, cols);
348
+    } else if (options.card_arrangement == "side_by_side") {
349
+        var cards = card_pages_interleave_cards(front_cards, back_cards, options);
350
+        cards = card_pages_add_padding(cards, options);
351
+        pages = card_pages_split(cards, rows, cols);
352
+    }
319
 
353
 
320
     // Wrap all pages in a <page> element
354
     // Wrap all pages in a <page> element
321
     return card_pages_wrap(pages, options);
355
     return card_pages_wrap(pages, options);

+ 5
- 1
generator/js/ui.js 查看文件

63
 }
63
 }
64
 
64
 
65
 function ui_load_files(evt) {
65
 function ui_load_files(evt) {
66
-    ui_clear_all();
66
+    // ui_clear_all();
67
 
67
 
68
     var files = evt.target.files;
68
     var files = evt.target.files;
69
 
69
 
77
 
77
 
78
         reader.readAsText(f);
78
         reader.readAsText(f);
79
     }
79
     }
80
+
81
+    // Reset file input
82
+    $("#file-load-form")[0].reset();
80
 }
83
 }
81
 
84
 
82
 function ui_add_cards(data) {
85
 function ui_add_cards(data) {
385
     $("#page-size").change(ui_change_option);
388
     $("#page-size").change(ui_change_option);
386
     $("#page-rows").change(ui_change_option);
389
     $("#page-rows").change(ui_change_option);
387
     $("#page-columns").change(ui_change_option);
390
     $("#page-columns").change(ui_change_option);
391
+    $("#card-arrangement").change(ui_change_option);
388
     $("#card-size").change(ui_change_option);
392
     $("#card-size").change(ui_change_option);
389
 
393
 
390
     $("#default-color").change(ui_change_default_color);
394
     $("#default-color").change(ui_change_default_color);

Loading…
取消
儲存