crobi 10 anos atrás
pai
commit
ac09f2382d
3 arquivos alterados com 93 adições e 57 exclusões
  1. 21
    3
      generator/css/cards.css
  2. 1
    1
      generator/data/card_data_example.js
  3. 71
    53
      generator/js/cards.js

+ 21
- 3
generator/css/cards.css Ver arquivo

@@ -78,14 +78,32 @@
78 78
     border-color: inherit;
79 79
 }
80 80
 
81
+.title-inlineicon {
82
+    width: 7mm;
83
+    height: 7mm;
84
+    background-repeat: no-repeat;
85
+    background-size: contain;
86
+    background-color: inherit;
87
+    border-color: inherit;
88
+}
89
+.title-inlineicon-container {
90
+    position: absolute;
91
+    right: -1mm;
92
+    top: -1mm;
93
+    border: 1mm solid;
94
+    border-radius: 1mm;
95
+    background-color: inherit;
96
+    border-color: inherit;
97
+}
98
+
81 99
 .title {
82
-    height: 28px;
83
-    line-height: 23px;
100
+    height: 8mm;
101
+    line-height: 6mm;
84 102
     padding-left: 2mm;
85 103
     font-family: Lora, 'Calisto MT', 'Bookman Old Style', Bookman, 'Goudy Old Style', Garamond, 'Hoefler Text', 'Bitstream Charter', Georgia, serif;
86 104
     font-variant: small-caps;
87 105
     font-weight: bold;
88
-    font-size: 13pt;
106
+    font-size: 14pt;
89 107
     background-color: inherit;
90 108
     color: white;
91 109
 }

+ 1
- 1
generator/data/card_data_example.js Ver arquivo

@@ -2,7 +2,7 @@ var card_data = [
2 2
     {
3 3
         "count": 1,
4 4
         "color": "maroon",
5
-        "title": "Burning Hands",
5
+        "title": "Protection from Energy",
6 6
         "icon": "custom-spell-1",
7 7
         "icon_back": "custom-class-arcane",
8 8
         "contents": [

+ 71
- 53
generator/js/cards.js Ver arquivo

@@ -1,51 +1,68 @@
1
+// ============================================================================
2
+// Card definition related functions
3
+// ============================================================================
4
+function card_default_options() {
5
+    return {
6
+        default_color: "black",
7
+        default_icon: "ace",
8
+        page_size: "A4",
9
+        page_rows: 3,
10
+        page_columns: 3,
11
+        icon_inline: true
12
+    }
13
+}
14
+
1 15
 // ============================================================================
2 16
 // Card definition related functions
3 17
 // ============================================================================
4 18
 
5
-function card_data_color_front(card_data) {
6
-    return card_data.color_front || card_data.color || "black";
19
+function card_data_color_front(card_data, options) {
20
+    return card_data.color_front || card_data.color || options.default_color || "black";
7 21
 }
8 22
 
9
-function card_data_color_back(card_data) {
10
-    return card_data.color_back || card_data.color || "black";
23
+function card_data_color_back(card_data, options) {
24
+    return card_data.color_back || card_data.color || options.default_color || "black";
11 25
 }
12 26
 
13
-function card_data_icon_front(card_data) {
14
-    return card_data.icon_front || card_data.icon || "ace";
27
+function card_data_icon_front(card_data, options) {
28
+    return card_data.icon_front || card_data.icon || options.default_icon || "ace";
15 29
 }
16 30
 
17
-function card_data_icon_back(card_data) {
18
-    return card_data.icon_back || card_data.icon || "ace";
31
+function card_data_icon_back(card_data, options) {
32
+    return card_data.icon_back || card_data.icon || options.default_icon || "ace";
19 33
 }
20 34
 
21 35
 // ============================================================================
22 36
 // Card element generating functions
23 37
 // ============================================================================
24 38
 
25
-function card_element_title(card_data) {
39
+function card_element_title(card_data, options) {
26 40
     var title = card_data.title || "";
27 41
     return '<div class="title">' + title + '</div>';
28 42
 }
29 43
 
30
-function card_element_icon(card_data) {
31
-    var icon = card_data_icon_front(card_data);
32
-    var result = "";
33
-    if (icon) {
34
-        result += '<div class="title-icon-container">';
35
-        result += '    <div class="title-icon icon-' + icon + '">';
36
-        result += '    </div>';
37
-        result += '</div>';
44
+function card_element_icon(card_data, options) {
45
+    var icon = card_data_icon_front(card_data, options);
46
+    var classname = "icon";
47
+    if (options.icon_inline) {
48
+        classname = "inlineicon";
38 49
     }
50
+
51
+    var result = "";
52
+    result += '<div class="title-'+classname+'-container">';
53
+    result += '    <div class="title-' + classname + ' icon-' + icon + '">';
54
+    result += '    </div>';
55
+    result += '</div>';
39 56
     return result;
40 57
 }
41 58
 
42
-function card_element_subtitle(params, card_data) {
59
+function card_element_subtitle(params, card_data, options) {
43 60
     var subtitle = params[0] || "";
44 61
     return '<div class="subtitle">' + subtitle + '</div>';
45 62
 }
46 63
 
47
-function card_element_ruler(params, card_data) {
48
-    var color = card_data_color_front(card_data);
64
+function card_element_ruler(params, card_data, options) {
65
+    var color = card_data_color_front(card_data, options);
49 66
     var fill = 'fill="' + color + '"';
50 67
     var stroke = 'stroke="' + color + '"';
51 68
 
@@ -56,7 +73,7 @@ function card_element_ruler(params, card_data) {
56 73
     return result;
57 74
 }
58 75
 
59
-function card_element_property(params, card_data) {
76
+function card_element_property(params, card_data, options) {
60 77
     var result = "";
61 78
     result += '<div class="property-line">';
62 79
     result += '   <h4 class="property-name">' + params[0] + '</h4>';
@@ -65,7 +82,7 @@ function card_element_property(params, card_data) {
65 82
     return result;
66 83
 }
67 84
 
68
-function card_element_description(params, card_data) {
85
+function card_element_description(params, card_data, options) {
69 86
     var result = "";
70 87
     result += '<div class="description-line">';
71 88
     result += '   <h4 class="description-name">' + params[0] + '</h4>';
@@ -74,7 +91,7 @@ function card_element_description(params, card_data) {
74 91
     return result;
75 92
 }
76 93
 
77
-function card_element_text(params, card_data) {
94
+function card_element_text(params, card_data, options) {
78 95
     var result = "";
79 96
     result += '<div class="description-line">';
80 97
     result += '   <p class="description-text">' + params[0] + '</p>';
@@ -82,19 +99,19 @@ function card_element_text(params, card_data) {
82 99
     return result;
83 100
 }
84 101
 
85
-function card_element_section(params, card_data) {
86
-    var color = card_data.color_front || card_data.color;
102
+function card_element_section(params, card_data, options) {
103
+    var color = card_data_color_front(card_data, options);
87 104
     var section = params[0] || "";
88 105
     return '<h3 style="color:' + color + '">' + section + '</h3>';
89 106
 }
90 107
 
91
-function card_element_fill(params, card_data) {
108
+function card_element_fill(params, card_data, options) {
92 109
     var flex = params[0] || "1";
93 110
     return '<div class="fill" style="flex:' + flex + '"></div>';
94 111
 }
95 112
 
96
-function card_element_unknown(params, card_data) {
97
-    return '<div>' + params.join('<br />') + '</div>';
113
+function card_element_unknown(params, card_data, options) {
114
+    return '<div>Unknown element: ' + params.join('<br />') + '</div>';
98 115
 }
99 116
 
100 117
 var card_element_generators = {
@@ -111,7 +128,7 @@ var card_element_generators = {
111 128
 // Card generating functions
112 129
 // ============================================================================
113 130
 
114
-function card_generate_contents(contents, card_data) {
131
+function card_generate_contents(contents, card_data, options) {
115 132
     var result = "";
116 133
     result += '<div class="content-container">';
117 134
     result += contents.map(function (value) {
@@ -120,9 +137,9 @@ function card_generate_contents(contents, card_data) {
120 137
         var element_params = parts.splice(1);
121 138
         var element_generator = card_element_generators[element_name];
122 139
         if (element_generator) {
123
-            return element_generator(element_params, card_data);
140
+            return element_generator(element_params, card_data, options);
124 141
         } else {
125
-            return card_element_unknown(element_params, card_data);
142
+            return card_element_unknown(element_params, card_data, options);
126 143
         }
127 144
     }).join("\n");
128 145
     result += '</div>';
@@ -137,34 +154,34 @@ function card_repeat(card, count) {
137 154
     return result;
138 155
 }
139 156
 
140
-function card_generate_color_style(color) {
157
+function card_generate_color_style(color, options) {
141 158
     return 'style="color:' + color + '; border-color:' + color + '; background-color:' + color + '"';
142 159
 }
143 160
 
144
-function card_generate_color_gradient_style(color) {
161
+function card_generate_color_gradient_style(color, options) {
145 162
     return 'style="background: radial-gradient(ellipse at center, white 20%, ' + color + ' 120%)"';
146 163
 }
147 164
 
148
-function card_generate_front(data) {
149
-    var color = card_data_color_front(data);
150
-    var style_color = card_generate_color_style(color);
165
+function card_generate_front(data, options) {
166
+    var color = card_data_color_front(data, options);
167
+    var style_color = card_generate_color_style(color, options);
151 168
     var count = data.count || 1;
152 169
 
153 170
     var result = "";
154 171
     result += '<div class="card" ' + style_color + '>';
155
-    result += card_element_icon(data);
156
-    result += card_element_title(data);
157
-    result += card_generate_contents(data.contents, data);
172
+    result += card_element_icon(data, options);
173
+    result += card_element_title(data, options);
174
+    result += card_generate_contents(data.contents, data, options);
158 175
     result += '</div>';
159 176
 
160 177
     return card_repeat(result, count);
161 178
 }
162 179
 
163
-function card_generate_back(data) {
164
-    var color = card_data_color_back(data)
165
-    var style_color = card_generate_color_style(color);
166
-    var style_gradient = card_generate_color_gradient_style(color);
167
-    var icon = card_data_icon_back(data);
180
+function card_generate_back(data, options) {
181
+    var color = card_data_color_back(data, options)
182
+    var style_color = card_generate_color_style(color, options);
183
+    var style_gradient = card_generate_color_gradient_style(color, options);
184
+    var icon = card_data_icon_back(data, options);
168 185
     var count = data.count || 1;
169 186
 
170 187
     var result = "";
@@ -179,7 +196,7 @@ function card_generate_back(data) {
179 196
     return card_repeat(result, count);
180 197
 }
181 198
 
182
-function card_generate_empty(count) {
199
+function card_generate_empty(count, options) {
183 200
     var style_color = card_generate_color_style("white");
184 201
 
185 202
     var result = "";
@@ -233,8 +250,8 @@ function card_pages_add_padding(cards, rows, cols) {
233 250
     }
234 251
 }
235 252
 
236
-function card_pages_wrap(pages) {
237
-    var size = "A4";
253
+function card_pages_wrap(pages, options) {
254
+    var size = options.page_size || "A4";
238 255
 
239 256
     var result = "";
240 257
     for (var i = 0; i < pages.length; ++i) {
@@ -245,16 +262,17 @@ function card_pages_wrap(pages) {
245 262
     return result;
246 263
 }
247 264
 
248
-function card_pages_generate_html(card_data) {
249
-    var rows = 3;
250
-    var cols = 3;
265
+function card_pages_generate_html(card_data, options) {
266
+    options = options || card_default_options();
267
+    var rows = options.page_rows || 3;
268
+    var cols = options.page_columns || 3;
251 269
 
252 270
     // Generate the HTML for each card
253 271
     var front_cards = [];
254 272
     var back_cards = [];
255 273
     card_data.forEach(function (data) {
256
-        front_cards = front_cards.concat(card_generate_front(data));
257
-        back_cards = back_cards.concat(card_generate_back(data));
274
+        front_cards = front_cards.concat(card_generate_front(data, options));
275
+        back_cards = back_cards.concat(card_generate_back(data, options));
258 276
     });
259 277
 
260 278
     // Add padding cards so that the last page is full of cards
@@ -274,7 +292,7 @@ function card_pages_generate_html(card_data) {
274 292
     var pages = card_pages_merge(front_pages, back_pages);
275 293
 
276 294
     // Wrap all pages in a <page> element
277
-    return card_pages_wrap(pages);
295
+    return card_pages_wrap(pages, options);
278 296
 }
279 297
 
280 298
 function card_pages_insert_into(card_data, container) {

Carregando…
Cancelar
Salvar