Yoji SHIDARA
null+****@clear*****
Tue Sep 25 13:29:05 JST 2012
Yoji SHIDARA 2012-09-25 13:29:05 +0900 (Tue, 25 Sep 2012) New Revision: f4077230bdfd08007836735bd50788c8970b27ea https://github.com/groonga/gcs/commit/f4077230bdfd08007836735bd50788c8970b27ea Log: Now search works on ember Modified files: public/js/gcs.js views/index.jade Modified: public/js/gcs.js (+14 -73) =================================================================== --- public/js/gcs.js 2012-09-25 12:28:48 +0900 (602c2cd) +++ public/js/gcs.js 2012-09-25 13:29:05 +0900 (c4f3306) @@ -18,8 +18,8 @@ App.DomainSelectorView = Ember.View.extend({ contentBinding: "App.DomainsController.content" }); -App.SearchController = Ember.ObjectController.extend({ - content: null, +App.SearchController = Ember.ArrayController.extend({ + content: [], query: null, perPage: 5, start: 0, @@ -67,8 +67,18 @@ App.SearchController = Ember.ObjectController.extend({ self.set('resultsAvailable', data.hits.found > 0); self.set('numHits', data.hits.found); self.set('numEnd', start + data.hits.found); - renderResults(data, perPage); - $('#results').show(); + var content = data.hits.hit.map(function(hit, index) { + var pairs = []; + jQuery.each(hit.data, function(columnName, value) { + pairs.push({columnName: columnName, value: value}); + }); + return { + index: start + index + 1, + id: hit.id, + data: pairs + }; + }); + self.set('content', content); } }); } @@ -118,75 +128,6 @@ function getHostAndPort() { return hostAndPort.join(':'); } -function renderResults(data, perPage) { - var rendered = JST['results'](data); - var found = data.hits.found; - var start = data.hits.start; - var returned = data.hits.hit.length; - var nextStart = start + perPage; - var previousStart = data.hits.start - perPage; - $('#results').html(rendered); - - if (previousStart < 0) { - $('#pager .previous').addClass('disabled'); - $('#pager .previous a').click(function() { return false; }); - } else { - $('#pager .previous a').click(function() { - $('form#search input[name="start"]').val(previousStart); - searchExecute(); - }); - } - - if (nextStart >= data.hits.found) { - $('#pager .next').addClass('disabled'); - $('#pager .previous a').click(function() { return false; }); - } else { - $('#pager .next a').click(function() { - $('form#search input[name="start"]').val(nextStart); - searchExecute(); - }); - } - - var from = start + 1; - var to = start + returned; -} - -function renderRequestInformation(data) { - var rendered = JST['request_information'](data); - $('#request-information').html(rendered); -} - -function searchExecute() { - var query = $('form#search input[name="query"]').val(); - var domains = $('#domain-and-id'); - var domain = domains.find('option[value="' + domains.val() + '"]'); - var searchEndpoint = 'http://' + domain.attr('value') + '/2011-02-01/search'; - var fields = domain.attr('data-field-names'); - var perPage = 5; - var start = parseInt($('form#search input[name="start"]').val() || '0', 10); - var params = { - q: query, - size: perPage, - start: start, - 'return-fields': fields - }; - var urlForRawRequest = searchEndpoint + '?' + jQuery.param(params); - renderRequestInformation({urlForRawRequest: urlForRawRequest}); - - $('#results').empty(); - $.ajax({ - type: 'GET', - url: searchEndpoint, - data: params, - dataType: 'jsonp', - success: function(data) { - renderResults(data, perPage); - $('#results').show(); - } - }); - return false; -} - $(document).ready(function($) { $.ajax({ type: 'GET', Modified: views/index.jade (+17 -0) =================================================================== --- views/index.jade 2012-09-25 12:28:48 +0900 (a9b0752) +++ views/index.jade 2012-09-25 13:29:05 +0900 (0157eda) @@ -50,5 +50,22 @@ html {{/if}} {{/if}} + {{#if resultsAvailable}} + //- DOM structure of this table seems to be broken. The issue https://github.com/wycats/handlebars.js/issues/184 may be related with this. + table.table.table-bordered + tbody + {{#each controller}} + tr.id-row + td {{index}} + td.id-cell(colspan=2) {{id}} + {{#each data}} + tr + td + td {{columnName}} + td {{value}} + {{/each}} + {{/each}} + {{/if}} + #results body -------------- next part -------------- HTML����������������������������...Download