diff --git a/ckanext/reclinepreview/theme/public/css/recline.css b/ckanext/reclinepreview/theme/public/css/recline.css index 3ce4be8ab08..148e8ebddce 100644 --- a/ckanext/reclinepreview/theme/public/css/recline.css +++ b/ckanext/reclinepreview/theme/public/css/recline.css @@ -7,6 +7,12 @@ body { overflow: auto; } +.recline-record-count { + float: left; + margin-left: 10px; + line-height: 26px; +} + .loading-dialog { width: 120px; } diff --git a/ckanext/reclinepreview/theme/public/preview_recline.js b/ckanext/reclinepreview/theme/public/preview_recline.js index 85ac9d06d3b..69057fccccb 100644 --- a/ckanext/reclinepreview/theme/public/preview_recline.js +++ b/ckanext/reclinepreview/theme/public/preview_recline.js @@ -104,6 +104,7 @@ this.ckan.module('reclinepreview', function (jQuery, _) { view = new recline.View.SlickGrid({model: dataset}); controls = [ new recline.View.Pager({model: view.model.queryState}), + new recline.View.RecordCount({model: dataset}), new recline.View.QueryEditor({model: view.model.queryState}) ]; } diff --git a/ckanext/reclinepreview/theme/public/resource.config b/ckanext/reclinepreview/theme/public/resource.config index 9759082faad..d6e6b101c9e 100644 --- a/ckanext/reclinepreview/theme/public/resource.config +++ b/ckanext/reclinepreview/theme/public/resource.config @@ -32,6 +32,7 @@ main = vendor/recline/recline.js + widget.recordcount.js preview_recline.js vendor/bootstrap/2.0.2/css/bootstrap.css diff --git a/ckanext/reclinepreview/theme/public/widget.recordcount.js b/ckanext/reclinepreview/theme/public/widget.recordcount.js new file mode 100644 index 00000000000..b47cacaacf7 --- /dev/null +++ b/ckanext/reclinepreview/theme/public/widget.recordcount.js @@ -0,0 +1,29 @@ +/*jshint multistr:true */ + +this.recline = this.recline || {}; +this.recline.View = this.recline.View || {}; + +(function($, my) { + "use strict"; + +my.RecordCount = Backbone.View.extend({ + className: 'recline-record-count', + template: ' \ + {{recordCount}} records \ + ', + + initialize: function() { + _.bindAll(this, 'render'); + this.model.bind('query:done', this.render); + this.render(); + }, + + render: function() { + var tmplData = this.model.toTemplateJSON(); + tmplData.recordCount = tmplData.recordCount || 'Unknown number of'; + var templated = Mustache.render(this.template, tmplData); + this.$el.html(templated); + } +}); + +})(jQuery, recline.View);