Sfoglia il codice sorgente

Card arrangement options

crobi 10 anni fa
parent
commit
757e7c4723
3 ha cambiato i file con 53 aggiunte e 17 eliminazioni
  1. 11
    1
      generator/generate.html
  2. 41
    16
      generator/js/cards.js
  3. 1
    0
      generator/js/ui.js

+ 11
- 1
generator/generate.html Vedi File

119
                             <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">
120
                         </div>
120
                         </div>
121
                     </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>
122
                 </form>
132
                 </form>
123
                 <h3>Default values</h3>
133
                 <h3>Default values</h3>
124
                 <form role="form" class="form-horizontal">
134
                 <form role="form" class="form-horizontal">
137
                         <div class="col-sm-10">
147
                         <div class="col-sm-10">
138
                             <div class="input-group">
148
                             <div class="input-group">
139
                                 <select id="default_color_selector" class="colorselector-data"></select>
149
                                 <select id="default_color_selector" class="colorselector-data"></select>
140
-                                <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">
141
                             </div>
151
                             </div>
142
                         </div>
152
                         </div>
143
                     </div>
153
                     </div>

+ 41
- 16
generator/js/cards.js Vedi File

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
     }
278
     }
279
     }
279
 }
280
 }
280
 
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
+
281
 function card_pages_wrap(pages, options) {
296
 function card_pages_wrap(pages, options) {
282
     var size = options.page_size || "A4";
297
     var size = options.page_size || "A4";
283
 
298
 
284
     var result = "";
299
     var result = "";
285
     for (var i = 0; i < pages.length; ++i) {
300
     for (var i = 0; i < pages.length; ++i) {
286
         var style = "";
301
         var style = "";
287
-        if (i % 2 == 1) {
302
+        if ((options.card_arrangement == "doublesided") &&  (i % 2 == 1)) {
288
             style += 'style="background-color:'+options.default_color+'"';
303
             style += 'style="background-color:'+options.default_color+'"';
289
         }
304
         }
290
         result += '<page class="page page-preview" size="' + size + '" ' + style + '>\n';
305
         result += '<page class="page page-preview" size="' + size + '" ' + style + '>\n';
310
         back_cards = back_cards.concat(card_repeat(back, count));
325
         back_cards = back_cards.concat(card_repeat(back, count));
311
     });
326
     });
312
 
327
 
313
-    // Add padding cards so that the last page is full of cards
314
-    front_cards = card_pages_add_padding(front_cards, options);
315
-    back_cards = card_pages_add_padding(back_cards, options);
316
-
317
-    // Split cards to pages
318
-    var front_pages = card_pages_split(front_cards, rows, cols);
319
-    var back_pages = card_pages_split(back_cards, rows, cols);
320
-
321
-    // Shuffle back cards so that they line up with their corresponding front cards
322
-    back_pages = back_pages.map(function (page) {
323
-        return cards_pages_flip_left_right(page, rows, cols);
324
-    });
325
-
326
-    // Interleave front and back pages so that we can print double-sided
327
-    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
+    }
328
 
353
 
329
     // Wrap all pages in a <page> element
354
     // Wrap all pages in a <page> element
330
     return card_pages_wrap(pages, options);
355
     return card_pages_wrap(pages, options);

+ 1
- 0
generator/js/ui.js Vedi File

388
     $("#page-size").change(ui_change_option);
388
     $("#page-size").change(ui_change_option);
389
     $("#page-rows").change(ui_change_option);
389
     $("#page-rows").change(ui_change_option);
390
     $("#page-columns").change(ui_change_option);
390
     $("#page-columns").change(ui_change_option);
391
+    $("#card-arrangement").change(ui_change_option);
391
     $("#card-size").change(ui_change_option);
392
     $("#card-size").change(ui_change_option);
392
 
393
 
393
     $("#default-color").change(ui_change_default_color);
394
     $("#default-color").change(ui_change_default_color);

Loading…
Annulla
Salva