Browse Source

More card editing functionality

Robert Carnecky 10 years ago
parent
commit
a761d2ea4f
3 changed files with 126 additions and 31 deletions
  1. 17
    11
      generator/generate.html
  2. 8
    3
      generator/js/colors.js
  3. 101
    17
      generator/js/ui.js

+ 17
- 11
generator/generate.html View File

@@ -95,13 +95,13 @@
95 95
                 <span class="help-block">Use this part to edit individual cards.</span>
96 96
                 <form class="form-horizontal" role="form">
97 97
                     <div class="form-group">
98
-                        <label for="selected_card" class="col-sm-2 control-label">Selected card</label>
98
+                        <label for="selected-card" class="col-sm-2 control-label">Selected card</label>
99 99
                         <div class="col-sm-10">
100
-                            <select class="form-control" id="selected_card"></select>
100
+                            <select class="form-control" id="selected-card"></select>
101 101
                         </div>
102 102
                     </div>
103 103
                     <div class="form-group">
104
-                        <label for="card_contents" class="col-sm-2 control-label"></label>
104
+                        <label class="col-sm-2 control-label"></label>
105 105
                         <div class="col-sm-5">
106 106
                             <button type="button" class="btn btn-danger btn-block" id="button-delete-card">Delete selected card</button>
107 107
                         </div>
@@ -110,35 +110,41 @@
110 110
                         </div>
111 111
                     </div>
112 112
                     <div class="form-group">
113
-                        <label for="card_name" class="col-sm-2 control-label">Name</label>
113
+                        <label for="card-title" class="col-sm-2 control-label">Name</label>
114 114
                         <div class="col-sm-10">
115
-                            <input type="text" id="card_title" class="form-control" placeholder="Title" readonly>
115
+                            <input type="text" id="card-title" class="form-control" placeholder="Title">
116 116
                         </div>
117 117
                     </div>
118 118
                     <div class="form-group">
119
-                        <label for="card_icon" class="col-sm-2 control-label">Icon</label>
119
+                        <label for="card-count" class="col-sm-2 control-label">Count</label>
120
+                        <div class="col-sm-10">
121
+                            <input type="number" id="card-count" class="form-control" placeholder="Count" data-property="count">
122
+                        </div>
123
+                    </div>
124
+                    <div class="form-group">
125
+                        <label for="card-icon" class="col-sm-2 control-label">Icon</label>
120 126
                         <div class="col-sm-10">
121 127
                             <div class="input-group">
122 128
                                 <span class="input-group-btn">
123 129
                                     <button class="btn btn-default icon-select-button" type="button">Select</button>
124 130
                                 </span>
125
-                                <input type="text" id="card_icon" class="form-control" placeholder="Icon name" readonly>
131
+                                <input type="text" id="card-icon" class="form-control" placeholder="Icon name" data-property="icon">
126 132
                             </div>
127 133
                         </div>
128 134
                     </div>
129 135
                     <div class="form-group">
130
-                        <label for="card_color" class="col-sm-2 control-label">Color</label>
136
+                        <label for="card-color" class="col-sm-2 control-label">Color</label>
131 137
                         <div class="col-sm-10">
132 138
                             <div class="input-group">
133 139
                                 <select id="card_color_selector" class="colorselector-data"></select>
134
-                                <input type="text" id="card_color" class="form-control" placeholder="Card color" readonly>
140
+                                <input type="text" id="card-color" class="form-control" placeholder="Card color" data-property="color">
135 141
                             </div>
136 142
                         </div>
137 143
                     </div>
138 144
                     <div class="form-group">
139
-                        <label for="card_contents" class="col-sm-2 control-label">Contents</label>
145
+                        <label for="card-contents" class="col-sm-2 control-label">Contents</label>
140 146
                         <div class="col-sm-10">
141
-                            <textarea class="form-control" rows="14" id="card_contents" readonly wrap="off"></textarea>
147
+                            <textarea class="form-control" rows="14" id="card-contents" wrap="off"></textarea>
142 148
                         </div>
143 149
                     </div>
144 150
                 </form>

+ 8
- 3
generator/js/colors.js View File

@@ -144,10 +144,15 @@ var css_color_names = [
144 144
 
145 145
 var card_colors = {
146 146
     "": "",
147
-    "maroon": "maroon",
147
+    "dimgray": "dimgray",
148
+    "black": "black",
148 149
     "darkgoldenrod": "darkgoldenrod",
150
+    "saddlebrown": "saddlebrown",
151
+    "indianred": "indianred",
152
+    "maroon": "maroon",
149 153
     "indigo": "indigo",
154
+    "darkblue": "darkblue",
150 155
     "royalblue": "royalblue",
151
-    "dimgray": "dimgray",
152
-    "black": "black"
156
+    "darkgreen": "darkgreen",
157
+    "#666633": "#666633"
153 158
 }

+ 101
- 17
generator/js/ui.js View File

@@ -50,10 +50,20 @@ function ui_add_cards(data) {
50 50
 function ui_add_new_card() {
51 51
     card_data.push(card_default_data());
52 52
     ui_update_card_list();
53
+    ui_select_card_by_index(card_data.length - 1);
54
+}
55
+
56
+function ui_select_card_by_index(index) {
57
+    $("#selected-card").val(index);
58
+    ui_update_selected_card();
53 59
 }
54 60
 
55 61
 function ui_selected_card_index() {
56
-    return parseInt($("#selected_card").val(), 10);
62
+    return parseInt($("#selected-card").val(), 10);
63
+}
64
+
65
+function ui_selected_card() {
66
+    return card_data[ui_selected_card_index()];
57 67
 }
58 68
 
59 69
 function ui_delete_card() {
@@ -64,10 +74,10 @@ function ui_delete_card() {
64 74
 function ui_update_card_list() {
65 75
     $("#total_card_count").text("Deck contains " + card_data.length + " cards.");
66 76
 
67
-    $('#selected_card').empty();
77
+    $('#selected-card').empty();
68 78
     for (var i = 0; i < card_data.length; ++i) {
69 79
         var card = card_data[i];
70
-        $('#selected_card')
80
+        $('#selected-card')
71 81
             .append($("<option></option>")
72 82
             .attr("value", i)
73 83
             .text(card.title));
@@ -91,22 +101,27 @@ function ui_save_file() {
91 101
 }
92 102
 
93 103
 function ui_update_selected_card() {
94
-    var card = card_data[ui_selected_card_index()];
104
+    var card = ui_selected_card();
95 105
     if (card) {
96
-        $("#card_title").val(card.title);
97
-        $("#card_icon").val(card.icon);
98
-        $("#card_contents").val(card.contents.join("\n"));
99
-        $("#card_color").val(card.color);
100
-
101
-        ui_render_card(card);
106
+        $("#card-title").val(card.title);
107
+        $("#card-count").val(card.count);
108
+        $("#card-icon").val(card.icon);
109
+        $("#card-contents").val(card.contents.join("\n"));
110
+        $("#card-color").val(card.color);
111
+        ui_update_card_color_selector(card.color);
102 112
     }
113
+
114
+    ui_render_selected_card();
103 115
 }
104 116
 
105
-function ui_render_card(card) {
106
-    var front = card_generate_front(card, card_options);
107
-    var back = card_generate_back(card, card_options);
117
+function ui_render_selected_card() {
118
+    var card = ui_selected_card();
108 119
     $('#preview-container').empty();
109
-    $('#preview-container').html(front + "\n" + back);
120
+    if (card) {
121
+        var front = card_generate_front(card, card_options);
122
+        var back = card_generate_back(card, card_options);
123
+        $('#preview-container').html(front + "\n" + back);
124
+    }
110 125
 }
111 126
 
112 127
 function ui_open_help() {
@@ -118,6 +133,7 @@ function ui_select_icon() {
118 133
 }
119 134
 
120 135
 function ui_setup_color_selector() {
136
+    // Insert colors
121 137
     $.each(card_colors, function (name, val) {
122 138
         $(".colorselector-data")
123 139
             .append($("<option></option>")
@@ -126,6 +142,7 @@ function ui_setup_color_selector() {
126 142
             .text(name));
127 143
     });
128 144
     
145
+    // Callbacks for when the user picks a color
129 146
     $('#default_color_selector').colorselector({
130 147
         callback: function (value, color, title) {
131 148
             $("#default_color").val(title);
@@ -134,11 +151,12 @@ function ui_setup_color_selector() {
134 151
     });
135 152
     $('#card_color_selector').colorselector({
136 153
         callback: function (value, color, title) {
137
-            $("#card_color").val(title);
154
+            $("#card-color").val(title);
155
+            ui_set_card_color(value);
138 156
         }
139 157
     });
140
-    $(".dropdown-colorselector").addClass("input-group-addon color-input-addon");
141 158
 
159
+    // Callbacks for when the user enters a color as a text
142 160
     $("#default_color").change(function (e) {
143 161
         var color = $("#default_color").val();
144 162
         if ($("#default_color_selector option[value='" + color + "']").length > 0) {
@@ -149,12 +167,72 @@ function ui_setup_color_selector() {
149 167
         }
150 168
         ui_set_default_color(color);
151 169
     });
170
+
171
+    // Styling
172
+    $(".dropdown-colorselector").addClass("input-group-addon color-input-addon");
152 173
 }
153 174
 
154 175
 function ui_set_default_color(color) {
155 176
     card_options.default_color = color;
156 177
 }
157 178
 
179
+function ui_change_card_title() {
180
+    var title = $("#card-title").val();
181
+    var card = ui_selected_card();
182
+    if (card) {
183
+        card.title = title;
184
+        $("#selected-card option:selected").text(title);
185
+        ui_render_selected_card();
186
+    }
187
+}
188
+
189
+function ui_change_card_property() {
190
+    var property = $(this).attr("data-property");
191
+    var value = $(this).val();
192
+    var card = ui_selected_card();
193
+    if (card) {
194
+        card[property] = value;
195
+        ui_render_selected_card();
196
+    }
197
+}
198
+
199
+function ui_set_card_color(value) {
200
+    var card = ui_selected_card();
201
+    if (card) {
202
+        card.color = value;
203
+        ui_render_selected_card();
204
+    }
205
+}
206
+
207
+function ui_update_card_color_selector(color) {
208
+    if ($("#card_color_selector option[value='" + color + "']").length > 0) {
209
+        // Update the color selector to the entered value
210
+        $("#card_color_selector").colorselector("setValue", color);
211
+    } else {
212
+        // Unknown color - select a neutral color and reset the text value
213
+        $("#card_color_selector").colorselector("setValue", "");
214
+        $("#card-color").val(color);
215
+    }
216
+}
217
+
218
+function ui_change_card_color() {
219
+    var color = $(this).val();
220
+
221
+    ui_update_card_color_selector(color);
222
+    ui_set_card_color(color);
223
+}
224
+
225
+function ui_change_card_contents() {
226
+    var value = $(this).val();
227
+
228
+    var card = ui_selected_card();
229
+    if (card) {
230
+        card.contents = value.split("\n");
231
+        ui_render_selected_card();
232
+    }
233
+}
234
+
235
+
158 236
 $(document).ready(function () {
159 237
     ui_setup_color_selector();
160 238
 
@@ -166,7 +244,13 @@ $(document).ready(function () {
166 244
     $("#button-add-card").click(ui_add_new_card);
167 245
     $("#button-delete-card").click(ui_delete_card);
168 246
     $("#button-help").click(ui_open_help);
169
-    $("#selected_card").change(ui_update_selected_card);
247
+    $("#selected-card").change(ui_update_selected_card);
248
+
249
+    $("#card-title").change(ui_change_card_title);
250
+    $("#card-icon").change(ui_change_card_property);
251
+    $("#card-count").change(ui_change_card_property);
252
+    $("#card-color").change(ui_change_card_color);
253
+    $("#card-contents").change(ui_change_card_contents);
170 254
 
171 255
     $(".icon-select-button").click(ui_select_icon);
172 256
     

Loading…
Cancel
Save