summaryrefslogtreecommitdiff
path: root/storage/mroonga/vendor/groonga/data/html/admin/js/groonga-admin.js
diff options
context:
space:
mode:
Diffstat (limited to 'storage/mroonga/vendor/groonga/data/html/admin/js/groonga-admin.js')
-rw-r--r--storage/mroonga/vendor/groonga/data/html/admin/js/groonga-admin.js1372
1 files changed, 0 insertions, 1372 deletions
diff --git a/storage/mroonga/vendor/groonga/data/html/admin/js/groonga-admin.js b/storage/mroonga/vendor/groonga/data/html/admin/js/groonga-admin.js
deleted file mode 100644
index 8d07beadc52..00000000000
--- a/storage/mroonga/vendor/groonga/data/html/admin/js/groonga-admin.js
+++ /dev/null
@@ -1,1372 +0,0 @@
-// -*- js2-basic-offset: 2; indent-tabs-mode: nil -*-
-
-"use strict";
-
-function prim2html(prim, limit) {
- switch(typeof prim) {
- case 'undefined':
- return 'undefined';
- case 'boolean':
- return prim ? 'true' : 'false';
- case 'number':
- return String(prim);
- case 'string':
- if (prim.length > limit) {
- prim = prim.substring(0, limit) + '...';
- }
- return escapeHTML(prim);
- case 'array':
- case 'object':
- if (prim == null) {
- return 'null';
- } else if ($.isArray(prim)) {
- return 'array'; /* TODO: implement */
- } else {
- return 'object'; /* TODO: implement */
- }
- default:
- return 'ERROR';
- }
-}
-
-function escapeHTML(str) {
- return str.replace(/&/g, "&")
- .replace(/"/g, """)
- .replace(/</g, "&lt;")
- .replace(/>/g, "&gt;");
-}
-var Groonga = {
- key_type_list: ['Int8', 'UInt8', 'Int16', 'UInt16', 'Int32', 'UInt32',
- 'Int64', 'UInt64', 'Float', 'Time', 'ShortText',
- 'TokyoGeoPoint', 'WGS84GeoPoint'],
- value_type_list: ['Object', 'Bool',
- 'Int8', 'UInt8', 'Int16', 'UInt16', 'Int32', 'UInt32',
- 'Int64', 'UInt64', 'Float', 'Time'],
- column_type_list: ['Object', 'Bool',
- 'Int8', 'UInt8', 'Int16', 'UInt16', 'Int32', 'UInt32',
- 'Int64', 'UInt64', 'Float', 'Time', 'ShortText',
- 'Text', 'LongText', 'TokyoGeoPoint', 'WGS84GeoPoint'],
- tokenizer_list: ['TokenDelimit', 'TokenUnigram', 'TokenBigram', 'TokenTrigram', 'TokenMecab'],
- GRN_OBJ_PERSISTENT: (0x01<<15),
-
- GRN_OBJ_TABLE_TYPE_MASK: (0x07),
- GRN_OBJ_TABLE_HASH_KEY: (0x00),
- GRN_OBJ_TABLE_PAT_KEY: (0x01),
- GRN_OBJ_TABLE_NO_KEY: (0x03),
-
- GRN_OBJ_KEY_WITH_SIS: (0x01<<6),
- GRN_OBJ_KEY_NORMALIZE: (0x01<<7),
-
- GRN_OBJ_COLUMN_TYPE_MASK: (0x07),
- GRN_OBJ_COLUMN_SCALAR: (0x00),
- GRN_OBJ_COLUMN_VECTOR: (0x01),
- GRN_OBJ_COLUMN_INDEX: (0x02),
-
- GRN_OBJ_COMPRESS_MASK: (0x07<<4),
- GRN_OBJ_COMPRESS_NONE: (0x00<<4),
- GRN_OBJ_COMPRESS_ZLIB: (0x01<<4),
- GRN_OBJ_COMPRESS_LZO: (0x02<<4),
-
- GRN_OBJ_WITH_SECTION: (0x01<<7),
- GRN_OBJ_WITH_WEIGHT: (0x01<<8),
- GRN_OBJ_WITH_POSITION: (0x01<<9)
-};
-
-$.widget("ui.paginate", {
- version: "1.0",
- options: {
- total: 0,
- nItemsPerPage: 10,
- currentPage: 0,
- nShowLinks: 10,
- callback: null
- },
- _create: function() {
- var that = this;
- var element = this.element;
- element.addClass("pager");
-
- var total = this.options.total;
- var nItemsPerPage = this.options.nItemsPerPage;
- var currentPage = this.options.currentPage;
- var nShowLinks = this.options.nShowLinks;
- var lastPage = Math.floor((total - 1) / nItemsPerPage) + 1;
- var start = currentPage - Math.floor(nShowLinks / 2);
- start = (start < 1) ? 1 : start;
- var end = start + nShowLinks - 1;
- end = (end > lastPage) ? lastPage : end;
-
- var callback = this.options.callback;
- if (start > 1) {
- element.append($('<span />')
- .addClass('pager')
- .append($('<a />')
- .attr('href', '#')
- .text('1')
- .click(function () {callback(0)})));
- element.append($('<span />').text('....'));
- }
- for (var i = start; i <= end; i++) {
- var page = $('<span />').append($('<a />')
- .attr('href', '#')
- .text(String(i))
- .click(function () {
- callback(Number($(this).text()) - 1);
- }));
- if (i == currentPage) {
- page.addClass('pager-current');
- } else {
- page.addClass('pager');
- }
- element.append(page);
- }
- if (end < lastPage) {
- element.append($('<span />')
- .text('....'));
- element.append($('<span />')
- .addClass('pager')
- .append($('<a />')
- .attr('href', '#')
- .text(String(lastPage))
- .click(function () {callback(lastPage - 1);})));
- }
- }
-});
-
-function GroongaAdmin() {
- this.current_table = null;
- this.statusTimer = null;
- this.semaphore = new Array();
- this.current_status = 0;
- this.reload_record_func = function(){};
-
- var that = this;
- this._initializeTabs();
-
- $('#tab-tablelist-link').click(function() {
- that.tablelist();
- });
- $('#tab-columnlist-link').click(function() {
- that.columnlist(that.current_table);
- });
- $('#tab-createrecord-link').click(function() {
- that.update_createrecord(that.current_table);
- });
- $('#tab-recordlist-link').click(function() {
- that.reload_record_func();
- });
- $('#createtable-add-table').click(function() {
- that.createtable();
- });
- $('#createrecord-add-record').click(function() {
- that.createrecord();
- });
- $('#createcolumn-add-column').click(function() {
- that.createcolumn();
- });
- $('#recordlist-remove-record').click(function() {
- that.removerecord();
- });
- $('#columnlist-remove-column').click(function() {
- that.removecolumn();
- });
- $('#tablelist-remove-table').click(function() {
- that.removetable();
- });
- $('#tab-recordlist-form').submit(function() {
- if ($('#table-tab-recordlist-full-checkbox').attr('checked')) {
- // full
- var d = {
- 'table': that.current_table
- }
- $.each(that.SELECT_PARAMS, function(i, val) {
- var e = $('#tab-recordlist-' + val);
- if (e.val()) {
- d[val] = e.val();
- }
- });
- that.recordlist(d, true);
- } else {
- // simple
- that.recordlist_simple(
- that.current_table,
- $('#tab-recordlist-simplequery').val(),
- $('#tab-recordlist-simplequerytype').val(),
- 1);
- }
- return false;
- });
- this._initializeSideMenu();
- this.update_tablelist();
-
- var e1 = $('#createtable-key-type-builtin');
- $.each(Groonga.key_type_list, function(i, val) {
- e1.append($('<option />').val(val).text(val));
- });
-
- e1 = $('#createtable-value-type-builtin');
- e1.append($('<option />').val('').text('None'));
- $.each(Groonga.value_type_list, function(i, val) {
- e1.append($('<option />').val(val).text(val));
- });
-
- e1 = $('#createtable-default-tokenizer-builtin');
- e1.append($('<option />').val('').text('None'));
- $.each(Groonga.tokenizer_list, function(i, val) {
- e1.append($('<option />').val(val).text(val));
- });
-
- e1 = $('#createcolumn-type-builtin');
- $.each(Groonga.column_type_list, function(i, val) {
- e1.append($('<option />').val(val).text(val));
- });
-
- $('#tab-recordlist-simplequerytype').change(function() {
- if ($(this).val() == 'scorer') {
- $('#tab-recordlist-incremental').hide();
- $('#tab-recordlist-incremental-label').hide();
- } else {
- $('#tab-recordlist-incremental').show();
- $('#tab-recordlist-incremental-label').show();
- }
- $('#tab-recordlist-incremental').change();
-
- var selectedOption = $(this).find(':selected');
- $('#tab-recordlist-simplequery').attr(
- 'placeholder', selectedOption.data('placeholder')
- );
- }).change();
-
- $('#table-tab-recordlist-full-checkbox').change(function() {
- if ($(this).attr('checked')) {
- $('#table-tab-recordlist-form-simple').hide();
- $('#table-tab-recordlist-form-full').show();
- } else {
- $('#table-tab-recordlist-form-simple').show();
- $('#table-tab-recordlist-form-full').hide();
- }
- }).change();
-
- $('#tab-recordlist-incremental').change(function() {
- $('#tab-recordlist-simplequery').unbind('keyup');
- if ($(this).attr('checked') &&
- $('#tab-recordlist-simplequerytype').val() != 'scorer') {
- $('#tab-recordlist-simplequery').keyup(function(e) {
- that.recordlist_simple(
- that.current_table,
- $('#tab-recordlist-simplequery').val(),
- $('#tab-recordlist-simplequerytype').val(),
- 1,
- true);
- });
- }
- }).change();
-
- $('#createcolumn-type').change(function(e) {
- var s = $('#createcolumn-type-table option:selected');
- var cs = $('#createcolumn-source');
- if (s.length > 0) {
- cs.empty().removeAttr('disabled');
- that.showloading(
- $.ajax({
- url: '/d/column_list',
- data: {'table': s.val()},
- dataType: 'json',
- success: function(d) {
- if(that.validateajax(d) < 0) { return; }
- var idx;
- var b = d[1];
- $.each(b[0], function(i, val) {
- if (val[0] == 'name') { idx = i; }
- });
- if (idx) {
- b.shift();
- $.each(b, function(i, val) {
- cs.append($('<option />').val(val[idx]).text(val[idx]));
- });
- }
- that.hideloading();
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- } else {
- cs.empty().attr('disabled', 'disabled');
- }
- });
-
- this.recordlist_count = 30;
-};
-
-jQuery.extend(GroongaAdmin.prototype, {
- SELECT_PARAMS: [
- 'match_columns', 'query', 'filter',
- 'scorer',
- 'output_columns',
- 'sortby', 'offset', 'limit',
- 'drilldown',
- 'drilldown_output_columns',
- 'drilldown_sortby', 'drilldown_offset', 'drilldown_limit'
- ],
- _initializeTabs: function() {
- this._initializeDatabaseTab();
- this._initializeTableTab();
- this._initializeSuggestTab();
- this._selectTab("database");
- },
- _initializeDatabaseTab: function() {
- var that = this;
-
- this._$databaseTabs = $('#database-tabs').tabs({
- show: function(e, ui) {
- that.stop_status_timer();
- if (ui.panel.id == 'database-tab-summary') {
- that.start_status_timer();
- }
- }
- });
- },
- _initializeTableTab: function() {
- this._$tableTabs = $('#table-tabs').tabs({
- show: function(e, ui) {
- }
- });
- },
- _initializeSuggestTab: function() {
- var that = this;
-
- this._$suggestTabs = $('#suggest-tabs').tabs({
- show: function(e, ui) {
- }
- });
-
- this._initializeSuggestDatasetComplete();
- this._initializeSuggestQueryComplete();
- this._initializeSuggestSubmit();
- this._initializeSuggestResult();
- },
- _initializeSuggestDatasetComplete: function() {
- var that = this;
- var $dataset = $("#suggest-dataset");
- this._$suggestDataset = $dataset;
- $dataset.autocomplete({
- minLength: 0,
- source: function (request, response) {
- var datasets = [];
- $.each(that._tables, function(i, table_name) {
- var suggestTableMatch = /^item_(.+)$/.exec(table_name);
- if (suggestTableMatch) {
- var dataset = suggestTableMatch[1];
- datasets.push(dataset);
- }
- });
-
- datasets = $.ui.autocomplete.filter(datasets, request.term);
- response(datasets);
- }
- });
- $dataset.focus(function (event) {
- $dataset.autocomplete("search", $dataset.val());
- });
- },
- _suggestParameters: function(query, dataset, type) {
- var nItemsPerPage = 30;
- return {
- query: query,
- types: type,
- table: "item_" + dataset,
- column: "kana",
- offset: 0,
- limit: nItemsPerPage,
- };
- },
- _initializeSuggestQueryComplete: function() {
- var that = this;
- this._$suggestQuery = $("#suggest-query").autocomplete({
- source: function (request, response) {
- var $dataset = $("#suggest-dataset");
- var dataset = $dataset.val();
- $("#suggest-submit").click();
- $.ajax({
- url: "/d/suggest",
- data: that._suggestParameters(request.term, dataset, "complete"),
- dataType: "jsonp",
- success: function (data, textStatus, jqXHR) {
- var completions = data[1]["complete"];
- var items = [];
- if (completions && completions.length > 2) {
- completions.shift();
- completions.shift();
- $.each(completions, function(i, item) {
- var key = item[0];
- items.push(key);
- if (items.length >= 3) {
- return false;
- }
- return true;
- });
- }
- response(items);
- },
- error: function(jqXHR, textStatus, errorThrown) {
- }
- });
- }
- });
- },
- _initializeSuggestSubmit: function() {
- var that = this;
- $("#suggest-submit").click(function (event) {
- var dataset = $("#suggest-dataset").val();
- var query = $("#suggest-query").val();
- var type = that._suggestResultType;
- var parameters = that._suggestParameters(query, dataset, type);
- $.ajax({
- url: "/d/suggest",
- data: parameters,
- dataType: "jsonp",
- success: function (data, textStatus, jqXHR) {
- var response = data[1][type];
- response.shift();
- var $result = $("#suggest-result-tab-" + type);
- $result
- .empty()
- .append($("<div/>").append(that._createResultTable(response)));
- },
- error: function(jqXHR, textStatus, errorThrown) {
- }
- });
- });
- },
- _initializeSuggestResult: function() {
- var that = this;
- $("#suggest-result-tabs").tabs({
- show: function (event, ui) {
- that._suggestResultType = ui.panel.id.replace(/^suggest-result-tab-/, "");
- $("#suggest-submit").click();
- }
- });
- },
- _selectTab: function(name) {
- this.stop_status_timer();
- this._$databaseTabs.hide();
- this._$tableTabs.hide();
- this._$suggestTabs.hide();
- switch (name) {
- case "table":
- this._$tableTabs.show();
- break;
- case "suggest":
- this._$suggestTabs.show();
- break;
- case "database":
- default:
- this._$databaseTabs.show();
- break;
- }
- },
- _initializeSideMenu: function () {
- var that = this;
- $('#side-menu-summary').click(function() {
- that.current_table = null;
- that._selectTab("database");
- that._$databaseTabs.tabs("select", "#database-tab-summary");
- });
- $('#side-menu-suggest').click(function() {
- that.current_table = null;
- that._selectTab("suggest");
- });
- },
- start_status_timer: function() {
- var that = this;
- this.stop_status_timer();
- this.status();
- this.statusTimer = setInterval(function() {that.status()}, 1000);
- },
- change_status_timer: function(time) {
- var that = this;
- this.stop_status_timer();
- this.statusTimer = setInterval(function() {that.status()}, time);
- },
- stop_status_timer: function() {
- if (this.statusTimer) {
- clearInterval(this.statusTimer);
- this.statusTimer = null;
- }
- },
- _createResultTable: function (result, options) {
- var that = this;
- if (!options) {
- options = {};
- }
- var table = $('<table class="records"/>');
- if ($.isArray(result)) {
- var nEntries = result.length;
- if (nEntries >= 1) {
- var thead = $('<thead/>');
- table.append(thead);
- var line = result[0];
- if ($.isArray(line)) {
- var tr = $('<tr/>');
- thead.append(tr);
- var m = line.length;
- if (options.check) {
- tr.append($('<th/>'));
- }
- for (var j = 0; j < m; j++) {
- 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) {
- tr.append($('<th/>'));
- }
- }
- var tbody = $('<tbody>');
- table.append(tbody);
- for (var i = 1; i < nEntries; i++) {
- line = result[i];
- if ($.isArray(line)) {
- var tr = $('<tr>');
- table.append(tr);
- var m = line.length;
- switch(options.check) {// チェックボックスの値を何にするか
- case 1: // 1番目の要素(レコード一覧の_id等)
- case 2: // 2番目の要素(テーブル・カラム一覧のname等)
- 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++) {
- var td = $('<td/>');
- tr.append(td);
- td.append(prim2html(line[j], 128));
- }
- switch(options.button) {
- case 1: // Edit record
- var td = $('<td/>');
- tr.append(td);
- td.append($('<input/>')
- .attr("type", "button")
- .attr("value", "Edit")
- .attr("data-record-id", line[0])
- .click(function () {
- that.show_edit_record($(this).attr("data-record-id"));
- }));
- break;
- case 2: // Table
- var td = $('<td/>');
- tr.append(td);
- td.append($('<input/>')
- .attr("type", "button")
- .attr("value", "Detail")
- .attr("data-table-name", line[1])
- .click(function () {
- var tableName = $(this).attr("data-table-name");
- $("#side-menu-tablelist-link-" + tableName).click();
- }));
- break;
- }
- }
- }
- }
- }
- return table;
- },
- show_edit_record: function(id) {
- $('#table-tabs').tabs('select', 2);
- this.update_createrecord(this.current_table, id);
- },
- format_unix_time: function(unix_time) {
- var date = new Date();
- date.setTime(unix_time * 1000);
- return date.toLocaleString();
- },
- format_duration: function(duration_in_seconds) {
- var duration = "";
- var days = Math.floor(duration_in_seconds / 3600 / 24);
- var hours = Math.floor(duration_in_seconds / 3600 % 24);
- var minutes = Math.floor(duration_in_seconds / 60 % 60);
- var seconds = Math.floor(duration_in_seconds % 60);
-
- if (days > 0) {
- duration += days;
- if (days == 1) {
- duration += " day, ";
- } else {
- duration += " days, ";
- }
- }
- if (days > 0 || hours > 0) {
- duration += hours + ":" + minutes + ":" + seconds;
- } else if (minutes > 0) {
- duration += minutes + ":" + seconds;
- } else {
- duration += seconds;
- }
-
- return duration;
- },
- maxThroughput: 0,
- lastNQueries: -1,
- keepLastNData: 100,
- throughputData: [],
- throughputChart: null,
- updateThroughputChart: function(statusData) {
- var maxThroughputUpdated = false;
- if (this.lastNQueries >= 0) {
- var throughput = statusData.n_queries - this.lastNQueries;
- this.throughputData.push(throughput);
- if (this.maxThroughput < throughput) {
- this.maxThroughput = throughput;
- maxThroughputUpdated = true;
- }
- }
- if (this.throughputData.length > this.keepLastNData) {
- this.throughputData.shift();
- }
- if (!this.throughputChart) {
- this.throughputChart = $.plot($("#throughput-chart"),
- [[]],
- {xaxis: {min: -(this.keepLastNData - 1),
- max: 0},
- yaxis: {min: 0}});
- }
- var that = this;
- var chartSeries = $.map(this.throughputData, function(n, i) {
- return [[-(that.throughputData.length - i) + 1, n]];
- });
- this.throughputChart.setData([chartSeries]);
- if (maxThroughputUpdated) {
- this.throughputChart.setupGrid();
- }
- this.throughputChart.draw();
- this.lastNQueries = statusData.n_queries;
- },
- status: function() {
- if (this.current_status > 0) { return; }
- this.current_status++;
- var that = this;
- $.ajax({
- url: '/d/status',
- data: {},
- dataType: 'json',
- success: function(b) {
- that.current_status--;
- if (!b) {
- that.change_status_timer(10000);
- return;
- }
- var d = b[1];
- $('#status-starttime').text(that.format_unix_time(d.starttime));
- $('#status-uptime').text(that.format_duration(d.uptime));
- $('#status-n-queries').text(d.n_queries);
- $('#status-cache-hit-rate').text(d.cache_hit_rate);
- that.updateThroughputChart(d);
- that.change_status_timer(1000);
- },
- error: function() {
- that.current_status--;
- that.change_status_timer(10000);
- }
- });
- },
- update_tablelist: function() {
- var that = this;
- this._tables = [];
- this.showloading(
- $.ajax({
- url: '/d/table_list',
- data: {},
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- d.shift();
- var tl = $('#side-menu-tablelist').empty();
- var tt = $('#createtable-key-type-table').empty();
- var vt = $('#createtable-value-type-table').empty();
- var ct = $('#createcolumn-type-table').empty();
- var b = d.shift();
- b.shift();
- $.each(b, function(i, val) {
- var table_name = val[1];
- that._tables.push(table_name);
- tl.append(
- $('<li />').append(
- $('<a />')
- .attr('id', 'side-menu-tablelist-link-' + table_name)
- .attr('href', '#side-menu-tablelist-' + table_name)
- .text(table_name)
- .click(function() {
- that.current_table = table_name;
- $('#database-tabs').hide();
- $('#suggest-tabs').hide();
- that.stop_status_timer();
- $('#table-tabs').show();
- that.columnlist(table_name);
- $('#tab-recordlist-simplequery').val('');
- that.recordlist_simple(table_name, null, null, 1);
- that.update_createrecord(that.current_table);
- })
- )
- );
- tt.append($('<option />').val(val[1]).text(val[1]));
- vt.append($('<option />').val(val[1]).text(val[1]));
- ct.append($('<option />').val(val[1]).text(val[1]));
- });
- that.hideloading();
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- tablelist: function() {
- $('#tab-tablelist-table').empty();
- var that = this;
- this.showloading(
- $.ajax({
- url: '/d/table_list',
- data: {},
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- var b = d[1];
- var table = that._createResultTable(b, {check: 2, button: 2});
- $('#tab-tablelist-table').append($('<h1 />').text('List of table')).append(table);
- that.hideloading();
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- recordlist_simple: function(table_name, simplequery, simplequery_type, page, hide_dialog) {
- var d = {
- 'table': table_name,
- 'offset': (page - 1) * this.recordlist_count,
- 'limit': this.recordlist_count
- }
- switch (simplequery_type) {
- case 'query':
- case 'filter':
- case null:
- if (simplequery) {
- d[simplequery_type] = simplequery;
- }
- this.recordlist(d, true, hide_dialog);
- break;
- }
- },
- recordlist: function(params, show_pager, hide_dialog) {
- var that = this;
- this.reload_record_func = function(){
- that.recordlist(params, show_pager, hide_dialog);
- };
- this.showloading(
- $.ajax({
- url: '/d/select',
- data: params,
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d, hide_dialog) < 0) { return; }
- var rc = d.shift();
- if (rc[0] != 0) {
- alert('error: ' + rc[3]);
- that.hideloading();
- return false;
- }
- var body = d.shift();
- var recs = body.shift();
- var all_count = recs.shift()[0];
- var pager;
- if (show_pager) {
- var offset = params['offset'] || 0;
- var rows = params['limit'] || 10;
- if (rows < 0){
- rows = all_count + parseInt(rows) + 1;
- }
- if (rows != '' && !parseInt(rows)) {
- pager = $('<span />');
- } else {
- pager = $("<div/>");
- pager.paginate({
- total: all_count,
- nItemsPerPage: rows,
- currentPage: Math.floor(offset/rows)+1,
- callback: function(page) {
- params['offset'] = page * rows;
- that.recordlist(params, true, false);
- return false;
- }
- });
- }
- } else {
- pager = $('<span />');
- }
- $('#tab-recordlist-table')
- .empty()
- .append($('<h1 />').text('List of records: ' + params['table']))
- .append($('<p />').text('Total count: ' + all_count))
- .append(pager.clone(true))
- .append($('<div />').append(that._createResultTable(recs, {check: 1, button: 1})))
- .append(pager);
- that.hideloading();
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest, hide_dialog);
- }
- })
- ,hide_dialog);
- },
- columnlist: function(table_name) {
- var that = this;
- $('#tab-columnlist-table').empty();
- this.showloading(
- $.ajax({
- url: '/d/column_list',
- data: {'table': table_name},
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- var b = d[1];
- var table = that._createResultTable(b, {check: 2});
- $('#tab-columnlist-table')
- .append($('<h1 />').text('List of columns: ' + table_name))
- .append(table);
- that.hideloading();
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- add_record_inputbox: function(type, value) {
- var inputbox = null;
- switch(type){
- case "Bool":
- inputbox = $('<input />')
- .attr("type","checkbox")
- .attr("value","true");
- if (value) {
- inputbox.attr("checked","");
- }
- break;
- case "UInt8":
- case "UInt16":
- case "UInt32":
- case "UInt64":
- case "Int8":
- case "Int16":
- case "Int32":
- case "Int64":
- case "Float":
- inputbox = $('<input />')
- .attr("type", "text")
- .val(isNaN(value) ? "" : value);
- break;
- case "Text":
- case "ShortText":
- case "LongText":
- inputbox = $('<textarea />')
- .attr("cols", "50")
- .attr("rows", "2")
- .text(value ? value : "");
- break;
- case "TokyoGeoPoint":
- case "WGS84GeoPoint":
- case "Time":
- inputbox = $('<input />')
- .attr("type", "text")
- .attr("size", "40")
- .val(value ? value : "");
- break;
- case "Object":
- inputbox = $('<input />')
- .attr("type", "text")
- .attr("disabled", "disabled");
- break;
- default:
- inputbox = $('<input />')
- .attr("type", "text")
- .val(value ? value : "");
- }
- inputbox.addClass('column_values');
- return inputbox;
- },
- add_record_deletebutton: function(){
- var ret =
- $('<span />')
- .append("[×]")
- .css('cursor', 'pointer')
- .click(function() {
- $(this).prev().remove();
- $(this).next().remove();
- $(this).remove();
- });
- return ret;
- },
- update_createrecord_loadcomplete: function(d_sel, d_col) {
- var that = this;
- var b = d_sel[1][0];
- var columns = $('<tbody />');
- var listofs = b[1].length - (d_col[1].length - 1);
- for (var i = 1; i < b[1].length; i++) {
- var line = b[1][i];
- var value = null;
- if (b[2]) value = b[2][i];
- if ($.isArray(line)) {
- var tr = $('<tr/ >')
- .addClass('create-record-columns')
- .append(
- $('<td />')
- .addClass('columnname')
- .append(prim2html(line[0], 128))
- )
- .append(
- $('<td />')
- .addClass('columntype')
- .append("(")
- .append($('<span />')
- .append(prim2html(line[1], 128))
- )
- .append(")")
- );
- var inputtd = $('<td />').addClass('columnval');
- if (i >= listofs && d_col[1][i - listofs + 1][4].indexOf("COLUMN_VECTOR") >= 0){
- var type = line[1];
- if (value != null) {
- for (var j = 0; j < value.length; j++) {
- inputtd
- .append(this.add_record_inputbox(line[1], value[j]))
- .append(this.add_record_deletebutton())
- .append('<br />');
- }
- }
- inputtd
- .append($('<span />')
- .append("[Add value]")
- .css('cursor', 'pointer')
- .click(function() {
- var target = $(this).parent();
- target
- .append(that.add_record_inputbox($(this).parent().prev().children().text()))
- .append(that.add_record_deletebutton())
- .append("<br />");
- $(this).appendTo(target);
- })
- );
- } else {
- inputtd.append(this.add_record_inputbox(line[1], value));
- if (line[0] == "_key" && value != null) {
- inputtd.children().attr("disabled", "disabled");
- }
- }
- tr.append(inputtd);
- columns.append(tr);
- }
- }
- $("#table-createrecord").append(columns);
- this.hideloading();
- },
- update_createrecord: function(table_name, id) {
- var that = this;
- var d_sel = null;
- var d_col = null;
- $('#table-createrecord').empty();
- this.showloading(
- $.ajax({
- url: '/d/select',
- data: {
- 'table' : table_name,
- 'limit' : 1,
- 'query' : '_id:' + id
- },
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- d_sel = d;
- if (d_col) {
- that.update_createrecord_loadcomplete(d_sel, d_col);
- }
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- this.showloading(
- $.ajax({
- url: '/d/column_list',
- data: {
- 'table' : table_name
- },
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- d_col = d;
- if (d_sel) {
- that.update_createrecord_loadcomplete(d_sel, d_col);
- }
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- createtable: function() {
- var that = this;
- var flags = 0;
- $('#createtable-flags>input:checked').each(function() {
- flags |= Groonga[$(this).val()];
- });
- flags |= Groonga[$('#createtable-key-index').val()];
- this.showloading(
- $.ajax({
- url: '/d/table_create',
- data: {
- name: $('#createtable-name').val(),
- 'flags': flags,
- key_type: $('#createtable-key-type').val(),
- value_type: $('#createtable-value-type').val(),
- default_tokenizer: $('#createtable-default-tokenizer').val()
- },
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- that.hideloading();
- alert('Table is created.');
- that.update_tablelist();
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- createcolumn: function() {
- var that = this;
- var flags = 0;
- $('#createcolumn-flags>input:checked').each(function() {
- flags |= Groonga[$(this).val()];
- });
- $('#createcolumn-ii-flags>input:checked').each(function() {
- flags |= Groonga[$(this).val()];
- });
- flags |= Groonga[$('#createcolumn-column-type').val()];
- flags |= Groonga[$('#createcolumn-column-compress').val()];
- var d = {
- table: this.current_table,
- name: $('#createcolumn-name').val(),
- 'flags': flags,
- type: $('#createcolumn-type').val()
- };
- if ($('#createcolumn-source').val()) {
- d['source'] = $('#createcolumn-source').val();
- }
- this.showloading(
- $.ajax({
- url: '/d/column_create',
- data: d,
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- that.hideloading();
- alert('Column is created.');
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- createrecord_getvalue: function(type, inputbox) {
- switch(type){
- case "Bool":
- if (inputbox.is('input:checked')) {
- return true;
- } else {
- return false;
- }
- default:
- return inputbox.val();
- }
- },
- createrecord: function() {
- var that = this;
- var d = {};
- $('.create-record-columns').each(function() {
- if (!$(this).children('.columnval').children().attr('disabled')
- || $(this).children('.columnname').text() == "_key") {
- var type = $(this).children('.columntype').children().text();
- if ($(this).children('.columnval').children('span').length) {
- var arr = [];
- $(this).children('.columnval').children('.column_values').each(function() {
- arr.push(that.createrecord_getvalue(type, $(this)));
- });
- d[$(this).children('.columnname').text()] = arr;
- } else {
- d[$(this).children('.columnname').text()] =
- that.createrecord_getvalue(type, $(this).children('.columnval').children());
- }
- }
- });
- this.showloading(
- $.ajax({
- url: '/d/load',
- data: {
- "table" : this.current_table,
- "input_type" : "json",
- "output_type" : "json",
- "values" : JSON.stringify([d])
- },
- dataType: 'json',
- success: function(d) {
- if (that.validateajax(d) < 0) { return; }
- that.hideloading();
- alert('Record is created.');
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- },
- removerecord: function() {
- var that = this;
- var checklist = $("#tab-recordlist-table").find("input:checked");
- var completecount = checklist.length;
- if (completecount > 0) {
- $('<div />')
- .append("Delete selected " + completecount + " records?")
- .dialog({
- modal: true,
- buttons: {
- 'No': function() {
- $(this).dialog('close');
- },
- 'Yes': function() {
- $(this).dialog('close');
- checklist.each(function(i, val) {
- that.showloading(
- $.ajax({
- url: '/d/delete',
- data: {
- "table" : that.current_table,
- "id" : val.value
- },
- dataType: 'json',
- success: function() {
- if (--completecount == 0) {
- $('#tab-recordlist-form').submit();
- alert('Records are deleted.');
- } else if (completecount < 0){
- that.hideloading();
- }
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- completecount = 0;
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- });
- }
- }
- });
- }
- },
- removecolumn: function() {
- var that = this;
- var checklist = $("#tab-columnlist-table").find("input:checked");
- var completecount = checklist.length;
- if (completecount) {
- $('<div />')
- .append("Delete selected " + completecount + " columns?")
- .dialog({
- modal: true,
- buttons: {
- 'No': function() {
- $(this).dialog('close');
- },
- 'Yes': function() {
- $(this).dialog('close');
- checklist.each(function(i, val) {
- that.showloading(
- $.ajax({
- url: '/d/column_remove',
- data: {
- "table" : that.current_table,
- "name" : val.value
- },
- dataType: 'json',
- success: function() {
- if (!(--completecount)) {
- that.columnlist(that.current_table);
- alert('Columns are deleted.');
- } else if (completecount < 0){
- that.hideloading();
- }
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- completecount = 0;
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- });
- }
- }
- });
- }
- },
- removetable: function() {
- var that = this;
- var checklist = $("#tab-tablelist-table").find("input:checked");
- var completecount = checklist.length;
- if (completecount > 0) {
- $('<div />')
- .append("Delete selected " + completecount + " tables?")
- .dialog({
- modal: true,
- buttons: {
- 'No': function() {
- $(this).dialog('close');
- },
- 'Yes': function() {
- $(this).dialog('close');
- checklist.each(function(i, val) {
- that.showloading(
- $.ajax({
- url: '/d/table_remove',
- data: {
- "name" : val.value
- },
- dataType: 'json',
- success: function() {
- if (--completecount == 0) {
- that.tablelist();
- that.update_tablelist();
- alert('Table are deleted.');
- } else if (completecount < 0){
- that.hideloading();
- }
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- completecount = 0;
- that.errorloading(XMLHttpRequest);
- }
- })
- );
- });
- }
- }
- });
- }
- },
- showloading: function(obj, hide_dialog) {
- var that = this;
- if (obj == null) { return; }
- this.semaphore[this.semaphore.length] = obj;
- if ( $("#loadingdialog").size() > 0 || hide_dialog) { return; }
- $("<div />")
- .attr("id", "loadingdialog")
- .attr("style", "text-align: center;")
- .append($("<img />").attr("src", "images/loading.gif"))
- .append(" Loading...")
- .dialog({
- title: "",
- width: 200,
- height: 110,
- minHeight: 110,
- modal: true,
- resizable: false,
- draggable: false,
- position: ["right", "bottom"],
- autoOpen: false,
- buttons: {
- 'Abort': function() {
- if (obj) { obj.abort(); }
- that.hideloading();
- }
- }
- });
- $("#loadingdialog").parents(".ui-dialog").children(".ui-dialog-titlebar").remove();
- $("#loadingdialog").dialog("open");
- $(".ui-widget-overlay").css("opacity", "0.0");
- },
- hideloading: function() {
- for (var i = 0; i < this.semaphore.length; i++) {
- if ( this.semaphore[i].readyState == 4) {
- this.semaphore.splice(i, 1);
- i--;
- }
- }
- if ( this.semaphore.length == 0) {
- $("#loadingdialog").dialog("close");
- $("#loadingdialog").remove();
- }
- },
- errorloading: function(ajax, hide_dialog) {
- var that = this;
- var json = null;
- if (ajax) {
- json = JSON.parse(ajax.responseText);
- }
- this.hideloading();
- for (var i = 0; i < this.semaphore.length; i++) {
- this.semaphore[i].abort();
- this.semaphore.splice(i, 1);
- i--;
- }
- if ( $("#loadingdialog").size() == 0 && !hide_dialog) {
- var error_label;
- var error_message;
- if (json){
- error_label = "Groonga reports error.";
- error_message = json[0][3] + "(" + json[0][0] + ")";
- } else if (ajax) {
- error_label = "Connection error is occured.";
- error_message = "" + ajax.status + ": " + ajax.statusText;
- } else {
- error_label = "Connection error is occured.";
- error_message = "";
- }
- $("<div />")
- .append($("<div />").text(error_label))
- .append($("<div />").text(error_message))
- .attr("id", "loadingdialog")
- .dialog({
- title: "",
- width: 340,
- height: 160,
- minHeight: 160,
- modal: true,
- resizable: false,
- draggable: false,
- open: function() {
- $(this).parents(".ui-dialog").children(".ui-dialog-titlebar").remove();
- },
- buttons: { OK: function() { that.hideloading(); } }
- });
- }
- },
- validateajax: function(d, hide_dialog) {
- if (!d) {
- this.errorloading(null, hide_dialog);
- return -1;
- }
- return 0;
- }
-});