null+****@clear*****
null+****@clear*****
2012年 4月 6日 (金) 18:39:42 JST
Kouhei Sutou 2012-04-06 18:39:42 +0900 (Fri, 06 Apr 2012)
New Revision: 6cba7786afaf0d516da85899806a903814b0d83d
Log:
admin: create result table as jQuery object instead of HTML
Modified files:
data/html/admin/js/groonga-admin.js
Modified: data/html/admin/js/groonga-admin.js (+46 -37)
===================================================================
--- data/html/admin/js/groonga-admin.js 2012-04-06 17:25:14 +0900 (068a951)
+++ data/html/admin/js/groonga-admin.js 2012-04-06 18:39:42 +0900 (c4fd689)
@@ -362,7 +362,7 @@ jQuery.extend(GroongaAdmin.prototype, {
var $result = $("#suggest-result-tab-" + type);
$result
.empty()
- .append($("<div/>").html(that._createResultTable(response)));
+ .append($("<div/>").append(that._createResultTable(response)));
},
error: function(jqXHR, textStatus, errorThrown) {
}
@@ -426,76 +426,85 @@ jQuery.extend(GroongaAdmin.prototype, {
}
},
_createResultTable: function (result, options) {
+ var that = this;
if (!options) {
options = {};
}
- var elms = ['<table class="records">'];
+ var table = $('<table class="records"/>');
if ($.isArray(result)) {
- elms.push('<thead>');
var nEntries = result.length;
if (nEntries >= 1) {
+ var thead = $('<thead/>');
+ table.append(thead);
var line = result[0];
- elms.push('<thead>');
if ($.isArray(line)) {
- elms.push('<tr>');
+ var tr = $('<tr/>');
+ thead.append(tr);
var m = line.length;
if (options.check) {
- elms.push('<th/>');
+ tr.append($('<th/>'));
}
for (var j = 0; j < m; j++) {
- elms.push('<th>');
- elms.push(prim2html(line[j][0], 128));
- elms.push('<br />');
- elms.push(prim2html(line[j][1], 128));
- elms.push('</th>');
+ var th = $('<th/>');
+ tr.append(th);
+ th.append(prim2html(line[j][0], 128));
+ th.append($('<br />'));
+ th.append(prim2html(line[j][1], 128));
}
if (options.button) {
- elms.push('<th/>');
+ tr.append($('<th/>'));
}
- elms.push('</tr>');
}
- elms.push('</thead>');
- elms.push('<tbody>');
+ var tbody = $('<tbody>');
+ table.append(tbody);
for (var i = 1; i < nEntries; i++) {
line = result[i];
if ($.isArray(line)) {
- elms.push('<tr>');
+ var tr = $('<tr>');
+ table.append(tr);
var m = line.length;
switch(options.check) {// チェックボックスの値を何にするか
case 1: // 1番目の要素(レコード一覧の_id等)
case 2: // 2番目の要素(テーブル・カラム一覧のname等)
- elms.push('<td><input type="checkbox" value="');
- elms.push(line[options.check-1]);
- elms.push('" /></td>');
+ var td = $('<td/>');
+ tr.append(td);
+ td.append($('<input/>')
+ .attr("type", "checkbox")
+ .attr("value", line[options.check-1]));
break;
}
for (var j = 0; j < m; j++) {
- elms.push('<td>');
- elms.push(prim2html(line[j], 128));
- elms.push('</td>');
+ var td = $('<td/>');
+ tr.append(td);
+ td.append(prim2html(line[j], 128));
}
switch(options.button) {
case 1: // Edit record
- // TODO: This doesn't work becuase GroongaAdmin instance has
- // show_edit_record function not GroongaAdmin object.
- elms.push('<td><input type="button" onClick="GroongaAdmin.show_edit_record(');
- elms.push(line[0]);
- elms.push(');" value="編集" /></td>');
+ var td = $('<td/>');
+ tr.append(td);
+ td.append($('<input/>')
+ .attr("type", "button")
+ .attr("value", "編集")
+ .click(function () {
+ that.show_edit_record(line[0]);
+ }));
break;
case 2: // Table
- elms.push('<td><input type="button" onClick="$(\'#side-menu-tablelist-link-');
- elms.push(line[1]);
- elms.push('\').click();" value="詳細" /></td>');
+ var td = $('<td/>');
+ tr.append(td);
+ td.append($('<input/>')
+ .attr("type", "button")
+ .attr("value", "詳細")
+ .click(function () {
+ $("#side-menu-tablelist-link-" + line[1]).click();
+ }));
break;
}
- elms.push('</tr>');
}
}
- elms.push('</tbody>');
}
}
- elms.push('</table>');
- return elms.join('');
+ return table;
},
show_edit_record: function(id) {
$('#table-tabs').tabs('select', 2);
@@ -657,7 +666,7 @@ jQuery.extend(GroongaAdmin.prototype, {
success: function(d) {
if (that.validateajax(d) < 0) { return; }
var b = d[1];
- var table = $(that._createResultTable(b, {check: 2, button: 2}));
+ var table = that._createResultTable(b, {check: 2, button: 2});
$('#tab-tablelist-table').append($('<h1 />').text('テーブル一覧')).append(table);
that.hideloading();
},
@@ -773,7 +782,7 @@ jQuery.extend(GroongaAdmin.prototype, {
.append($('<h1 />').text('レコード一覧: ' + params['table']))
.append($('<p />').text('総件数: ' + all_count))
.append(pager.clone(true))
- .append($('<div />').html(that._createResultTable(recs, {check: 1, button: 1})))
+ .append($('<div />').append(that._createResultTable(recs, {check: 1, button: 1})))
.append(pager);
that.hideloading();
},
@@ -794,7 +803,7 @@ jQuery.extend(GroongaAdmin.prototype, {
success: function(d) {
if (that.validateajax(d) < 0) { return; }
var b = d[1];
- var table = $(that._createResultTable(b, {check: 2}));
+ var table = that._createResultTable(b, {check: 2});
$('#tab-columnlist-table')
.append($('<h1 />').text('カラム一覧: ' + table_name))
.append(table);