ソースを参照

More card editing functionality

Robert Carnecky 10年前
コミット
a761d2ea4f
3個のファイルの変更126行の追加31行の削除
  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 ファイルの表示

95
                 <span class="help-block">Use this part to edit individual cards.</span>
95
                 <span class="help-block">Use this part to edit individual cards.</span>
96
                 <form class="form-horizontal" role="form">
96
                 <form class="form-horizontal" role="form">
97
                     <div class="form-group">
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
                         <div class="col-sm-10">
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
                         </div>
101
                         </div>
102
                     </div>
102
                     </div>
103
                     <div class="form-group">
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
                         <div class="col-sm-5">
105
                         <div class="col-sm-5">
106
                             <button type="button" class="btn btn-danger btn-block" id="button-delete-card">Delete selected card</button>
106
                             <button type="button" class="btn btn-danger btn-block" id="button-delete-card">Delete selected card</button>
107
                         </div>
107
                         </div>
110
                         </div>
110
                         </div>
111
                     </div>
111
                     </div>
112
                     <div class="form-group">
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
                         <div class="col-sm-10">
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
                         </div>
116
                         </div>
117
                     </div>
117
                     </div>
118
                     <div class="form-group">
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
                         <div class="col-sm-10">
126
                         <div class="col-sm-10">
121
                             <div class="input-group">
127
                             <div class="input-group">
122
                                 <span class="input-group-btn">
128
                                 <span class="input-group-btn">
123
                                     <button class="btn btn-default icon-select-button" type="button">Select</button>
129
                                     <button class="btn btn-default icon-select-button" type="button">Select</button>
124
                                 </span>
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
                             </div>
132
                             </div>
127
                         </div>
133
                         </div>
128
                     </div>
134
                     </div>
129
                     <div class="form-group">
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
                         <div class="col-sm-10">
137
                         <div class="col-sm-10">
132
                             <div class="input-group">
138
                             <div class="input-group">
133
                                 <select id="card_color_selector" class="colorselector-data"></select>
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
                             </div>
141
                             </div>
136
                         </div>
142
                         </div>
137
                     </div>
143
                     </div>
138
                     <div class="form-group">
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
                         <div class="col-sm-10">
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
                         </div>
148
                         </div>
143
                     </div>
149
                     </div>
144
                 </form>
150
                 </form>

+ 8
- 3
generator/js/colors.js ファイルの表示

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

+ 101
- 17
generator/js/ui.js ファイルの表示

50
 function ui_add_new_card() {
50
 function ui_add_new_card() {
51
     card_data.push(card_default_data());
51
     card_data.push(card_default_data());
52
     ui_update_card_list();
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
 function ui_selected_card_index() {
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
 function ui_delete_card() {
69
 function ui_delete_card() {
64
 function ui_update_card_list() {
74
 function ui_update_card_list() {
65
     $("#total_card_count").text("Deck contains " + card_data.length + " cards.");
75
     $("#total_card_count").text("Deck contains " + card_data.length + " cards.");
66
 
76
 
67
-    $('#selected_card').empty();
77
+    $('#selected-card').empty();
68
     for (var i = 0; i < card_data.length; ++i) {
78
     for (var i = 0; i < card_data.length; ++i) {
69
         var card = card_data[i];
79
         var card = card_data[i];
70
-        $('#selected_card')
80
+        $('#selected-card')
71
             .append($("<option></option>")
81
             .append($("<option></option>")
72
             .attr("value", i)
82
             .attr("value", i)
73
             .text(card.title));
83
             .text(card.title));
91
 }
101
 }
92
 
102
 
93
 function ui_update_selected_card() {
103
 function ui_update_selected_card() {
94
-    var card = card_data[ui_selected_card_index()];
104
+    var card = ui_selected_card();
95
     if (card) {
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
     $('#preview-container').empty();
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
 function ui_open_help() {
127
 function ui_open_help() {
118
 }
133
 }
119
 
134
 
120
 function ui_setup_color_selector() {
135
 function ui_setup_color_selector() {
136
+    // Insert colors
121
     $.each(card_colors, function (name, val) {
137
     $.each(card_colors, function (name, val) {
122
         $(".colorselector-data")
138
         $(".colorselector-data")
123
             .append($("<option></option>")
139
             .append($("<option></option>")
126
             .text(name));
142
             .text(name));
127
     });
143
     });
128
     
144
     
145
+    // Callbacks for when the user picks a color
129
     $('#default_color_selector').colorselector({
146
     $('#default_color_selector').colorselector({
130
         callback: function (value, color, title) {
147
         callback: function (value, color, title) {
131
             $("#default_color").val(title);
148
             $("#default_color").val(title);
134
     });
151
     });
135
     $('#card_color_selector').colorselector({
152
     $('#card_color_selector').colorselector({
136
         callback: function (value, color, title) {
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
     $("#default_color").change(function (e) {
160
     $("#default_color").change(function (e) {
143
         var color = $("#default_color").val();
161
         var color = $("#default_color").val();
144
         if ($("#default_color_selector option[value='" + color + "']").length > 0) {
162
         if ($("#default_color_selector option[value='" + color + "']").length > 0) {
149
         }
167
         }
150
         ui_set_default_color(color);
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
 function ui_set_default_color(color) {
175
 function ui_set_default_color(color) {
155
     card_options.default_color = color;
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
 $(document).ready(function () {
236
 $(document).ready(function () {
159
     ui_setup_color_selector();
237
     ui_setup_color_selector();
160
 
238
 
166
     $("#button-add-card").click(ui_add_new_card);
244
     $("#button-add-card").click(ui_add_new_card);
167
     $("#button-delete-card").click(ui_delete_card);
245
     $("#button-delete-card").click(ui_delete_card);
168
     $("#button-help").click(ui_open_help);
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
     $(".icon-select-button").click(ui_select_icon);
255
     $(".icon-select-button").click(ui_select_icon);
172
     
256
     

読み込み中…
キャンセル
保存