diff --git a/ckanext/reclinepreview/theme/public/preview_recline.js b/ckanext/reclinepreview/theme/public/preview_recline.js
index c8bf386c5ea..7b700d03e1b 100644
--- a/ckanext/reclinepreview/theme/public/preview_recline.js
+++ b/ckanext/reclinepreview/theme/public/preview_recline.js
@@ -15,7 +15,7 @@ this.ckan.module('reclinepreview', function (jQuery, _) {
jQuery.proxyAll(this, /_on/);
this.el.ready(this._onReady);
// hack to make leaflet use a particular location to look for images
- L.Icon.Default.imagePath = this.options.site_url + 'vendor/leaflet/0.4.4/images'
+ L.Icon.Default.imagePath = this.options.site_url + 'vendor/leaflet/0.4.4/images';
},
_onReady: function() {
@@ -125,9 +125,9 @@ this.ckan.module('reclinepreview', function (jQuery, _) {
var sidebarViews = [
{
- id: 'filterEditor',
+ id: 'valueFilter',
label: 'Filters',
- view: new recline.View.FilterEditor({
+ view: new recline.View.ValueFilter({
model: dataset
})
}
diff --git a/ckanext/reclinepreview/theme/public/vendor/recline/recline.css b/ckanext/reclinepreview/theme/public/vendor/recline/recline.css
index e6437a11baf..c030e764692 100644
--- a/ckanext/reclinepreview/theme/public/vendor/recline/recline.css
+++ b/ckanext/reclinepreview/theme/public/vendor/recline/recline.css
@@ -395,6 +395,18 @@ div.data-table-cell-content-numeric > a.data-table-cell-edit {
width: 175px;
}
+.recline-filter-editor input {
+ margin-top: 0.5em;
+}
+
+.recline-filter-editor .add-filter {
+ margin-top: 1em;
+ margin-bottom: 2em;
+}
+
+.recline-filter-editor .update-filter {
+ margin-top: 1em;
+}
/**********************************************************
* Fields Widget
diff --git a/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.js b/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.js
index 92183702532..7579c2ecaad 100644
--- a/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.js
+++ b/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.js
@@ -309,9 +309,11 @@ my.Record = Backbone.Model.extend({
//
// For the provided Field get the corresponding rendered computed data value
// for this record.
+ //
+ // NB: if field is undefined a default '' value will be returned
getFieldValue: function(field) {
val = this.getFieldValueUnrendered(field);
- if (field.renderer) {
+ if (field && !_.isUndefined(field.renderer)) {
val = field.renderer(val, field, this.toJSON());
}
return val;
@@ -321,7 +323,12 @@ my.Record = Backbone.Model.extend({
//
// For the provided Field get the corresponding computed data value
// for this record.
+ //
+ // NB: if field is undefined a default '' value will be returned
getFieldValueUnrendered: function(field) {
+ if (!field) {
+ return '';
+ }
var val = this.get(field.id);
if (field.deriver) {
val = field.deriver(val, field, this);
diff --git a/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.min.js b/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.min.js
index 441e3937d81..f3298056220 100644
--- a/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.min.js
+++ b/ckanext/reclinepreview/theme/public/vendor/recline/recline.dataset.min.js
@@ -13,8 +13,9 @@ return{fields:fields,records:records};},save:function(){var self=this;return thi
this.trigger('recline:flash',{message:"Updating all visible docs. This could take a while...",persist:true,loader:true});this._store.transform(editFunc).done(function(){self.query();self.trigger('recline:flash',{message:"Records updated successfully"});});},query:function(queryObj){var self=this;var dfd=new Deferred();this.trigger('query:start');if(queryObj){this.queryState.set(queryObj,{silent:true});}
var actualQuery=this.queryState.toJSON();this._store.query(actualQuery,this.toJSON()).done(function(queryResult){self._handleQueryResult(queryResult);self.trigger('query:done');dfd.resolve(self.records);}).fail(function(arguments){self.trigger('query:fail',arguments);dfd.reject(arguments);});return dfd.promise();},_handleQueryResult:function(queryResult){var self=this;self.recordCount=queryResult.total;var docs=_.map(queryResult.hits,function(hit){var _doc=new my.Record(hit);_doc.fields=self.fields;_doc.bind('change',function(doc){self._changes.updates.push(doc.toJSON());});_doc.bind('destroy',function(doc){self._changes.deletes.push(doc.toJSON());});return _doc;});self.records.reset(docs);if(queryResult.facets){var facets=_.map(queryResult.facets,function(facetResult,facetId){facetResult.id=facetId;return new my.Facet(facetResult);});self.facets.reset(facets);}},toTemplateJSON:function(){var data=this.toJSON();data.recordCount=this.recordCount;data.fields=this.fields.toJSON();return data;},getFieldsSummary:function(){var self=this;var query=new my.Query();query.set({size:0});this.fields.each(function(field){query.addFacet(field.id);});var dfd=new Deferred();this._store.query(query.toJSON(),this.toJSON()).done(function(queryResult){if(queryResult.facets){_.each(queryResult.facets,function(facetResult,facetId){facetResult.id=facetId;var facet=new my.Facet(facetResult);self.fields.get(facetId).facets.reset(facet);});}
dfd.resolve(queryResult);});return dfd.promise();},recordSummary:function(record){return record.summary();},_backendFromString:function(backendString){var backend=null;if(recline&&recline.Backend){_.each(_.keys(recline.Backend),function(name){if(name.toLowerCase()===backendString.toLowerCase()){backend=recline.Backend[name];}});}
-return backend;}});my.Record=Backbone.Model.extend({constructor:function Record(){Backbone.Model.prototype.constructor.apply(this,arguments);},initialize:function(){_.bindAll(this,'getFieldValue');},getFieldValue:function(field){val=this.getFieldValueUnrendered(field);if(field.renderer){val=field.renderer(val,field,this.toJSON());}
-return val;},getFieldValueUnrendered:function(field){var val=this.get(field.id);if(field.deriver){val=field.deriver(val,field,this);}
+return backend;}});my.Record=Backbone.Model.extend({constructor:function Record(){Backbone.Model.prototype.constructor.apply(this,arguments);},initialize:function(){_.bindAll(this,'getFieldValue');},getFieldValue:function(field){val=this.getFieldValueUnrendered(field);if(field&&!_.isUndefined(field.renderer)){val=field.renderer(val,field,this.toJSON());}
+return val;},getFieldValueUnrendered:function(field){if(!field){return'';}
+var val=this.get(field.id);if(field.deriver){val=field.deriver(val,field,this);}
return val;},summary:function(record){var self=this;var html='
';this.fields.each(function(field){if(field.id!='id'){html+='
'+field.get('label')+' : '+self.getFieldValue(field)+'
';}});html+='
';return html;},fetch:function(){},save:function(){},destroy:function(){this.trigger('destroy',this);}});my.RecordList=Backbone.Collection.extend({constructor:function RecordList(){Backbone.Collection.prototype.constructor.apply(this,arguments);},model:my.Record});my.Field=Backbone.Model.extend({constructor:function Field(){Backbone.Model.prototype.constructor.apply(this,arguments);},defaults:{label:null,type:'string',format:null,is_derived:false},initialize:function(data,options){if('0'in data){throw new Error('Looks like you did not pass a proper hash with id to Field constructor');}
if(this.attributes.label===null){this.set({label:this.id});}
if(this.attributes.type.toLowerCase()in this._typeMap){this.attributes.type=this._typeMap[this.attributes.type.toLowerCase()];}
diff --git a/ckanext/reclinepreview/theme/public/vendor/recline/recline.js b/ckanext/reclinepreview/theme/public/vendor/recline/recline.js
index adb0ab154fe..f6bc1f46b79 100644
--- a/ckanext/reclinepreview/theme/public/vendor/recline/recline.js
+++ b/ckanext/reclinepreview/theme/public/vendor/recline/recline.js
@@ -66,15 +66,25 @@ this.recline.Backend.Ckan = this.recline.Backend.Ckan || {};
var actualQuery = {
resource_id: dataset.id,
q: queryObj.q,
+ filters: {},
limit: queryObj.size || 10,
offset: queryObj.from || 0
};
+
if (queryObj.sort && queryObj.sort.length > 0) {
var _tmp = _.map(queryObj.sort, function(sortObj) {
return sortObj.field + ' ' + (sortObj.order || '');
});
actualQuery.sort = _tmp.join(',');
}
+
+ if (queryObj.filters && queryObj.filters.length > 0) {
+ _.each(queryObj.filters, function(filter) {
+ if (filter.type === "term") {
+ actualQuery.filters[filter.field] = filter.term;
+ }
+ });
+ }
return actualQuery;
};
@@ -105,15 +115,14 @@ this.recline.Backend.Ckan = this.recline.Backend.Ckan || {};
//
// @param endpoint: CKAN api endpoint (e.g. http://datahub.io/api)
my.DataStore = function(endpoint) {
- var that = {
- endpoint: endpoint || my.API_ENDPOINT
- };
+ var that = {endpoint: endpoint || my.API_ENDPOINT};
+
that.search = function(data) {
var searchUrl = that.endpoint + '/3/action/datastore_search';
var jqxhr = jQuery.ajax({
url: searchUrl,
- data: data,
- dataType: 'json'
+ type: 'POST',
+ data: JSON.stringify(data)
});
return jqxhr;
};
@@ -1650,9 +1659,11 @@ my.Record = Backbone.Model.extend({
//
// For the provided Field get the corresponding rendered computed data value
// for this record.
+ //
+ // NB: if field is undefined a default '' value will be returned
getFieldValue: function(field) {
val = this.getFieldValueUnrendered(field);
- if (field.renderer) {
+ if (field && !_.isUndefined(field.renderer)) {
val = field.renderer(val, field, this.toJSON());
}
return val;
@@ -1662,7 +1673,12 @@ my.Record = Backbone.Model.extend({
//
// For the provided Field get the corresponding computed data value
// for this record.
+ //
+ // NB: if field is undefined a default '' value will be returned
getFieldValueUnrendered: function(field) {
+ if (!field) {
+ return '';
+ }
var val = this.get(field.id);
if (field.deriver) {
val = field.deriver(val, field, this);
@@ -2092,14 +2108,19 @@ my.Flot = Backbone.View.extend({
var xtype = xfield.get('type');
var isDateTime = (xtype === 'date' || xtype === 'date-time' || xtype === 'time');
- if (this.model.records.models[parseInt(x, 10)]) {
- x = this.model.records.models[parseInt(x, 10)].get(this.state.attributes.group);
- if (isDateTime) {
- x = new Date(x).toLocaleDateString();
- }
- } else if (isDateTime) {
- x = new Date(parseInt(x, 10)).toLocaleDateString();
+ if (this.xvaluesAreIndex) {
+ x = parseInt(x, 10);
+ // HACK: deal with bar graph style cases where x-axis items were strings
+ // In this case x at this point is the index of the item in the list of
+ // records not its actual x-axis value
+ x = this.model.records.models[x].get(this.state.attributes.group);
}
+ if (isDateTime) {
+ x = new Date(x).toLocaleDateString();
+ }
+ // } else if (isDateTime) {
+ // x = new Date(parseInt(x, 10)).toLocaleDateString();
+ // }
return x;
},
@@ -2119,13 +2140,13 @@ my.Flot = Backbone.View.extend({
// convert x to a string and make sure that it is not too long or the
// tick labels will overlap
// TODO: find a more accurate way of calculating the size of tick labels
- var label = self._xaxisLabel(x);
+ var label = self._xaxisLabel(x) || "";
if (typeof label !== 'string') {
label = label.toString();
}
- if (self.state.attributes.graphType !== 'bars' && label.length > 8) {
- label = label.slice(0, 5) + "...";
+ if (self.state.attributes.graphType !== 'bars' && label.length > 10) {
+ label = label.slice(0, 10) + "...";
}
return label;
@@ -2134,31 +2155,16 @@ my.Flot = Backbone.View.extend({
var xaxis = {};
xaxis.tickFormatter = tickFormatter;
- // calculate the x-axis ticks
- //
- // the number of ticks should be a multiple of the number of points so that
- // each tick lines up with a point
- if (numPoints) {
- var ticks = [],
- maxTicks = 10,
- x = 1,
- i = 0;
-
- // show all ticks in bar graphs
- // for other graphs only show up to maxTicks ticks
- if (self.state.attributes.graphType !== 'bars') {
- while (x <= maxTicks) {
- if ((numPoints / x) <= maxTicks) {
- break;
- }
- x = x + 1;
- }
- }
-
- for (i = 0; i < numPoints; i = i + x) {
- ticks.push(i);
+ // for labels case we only want ticks at the label intervals
+ // HACK: however we also get this case with Date fields. In that case we
+ // could have a lot of values and so we limit to max 30 (we assume)
+ if (this.xvaluesAreIndex) {
+ var numTicks = Math.min(this.model.records.length, 15);
+ var increment = this.model.records.length / numTicks;
+ var ticks = [];
+ for (i=0; i \
+ Filters \
+ Add filter \
+ \
+ \
+ \
+ ',
+ filterTemplates: {
+ term: ' \
+ \
+ '
+ },
+ events: {
+ 'click .js-remove-filter': 'onRemoveFilter',
+ 'click .js-add-filter': 'onAddFilterShow',
+ 'submit form.js-edit': 'onTermFiltersUpdate',
+ 'submit form.js-add': 'onAddFilter'
+ },
+ initialize: function() {
+ this.el = $(this.el);
+ _.bindAll(this, 'render');
+ this.model.fields.bind('all', this.render);
+ this.model.queryState.bind('change', this.render);
+ this.model.queryState.bind('change:filters:new-blank', this.render);
+ this.render();
+ },
+ render: function() {
+ var self = this;
+ var tmplData = $.extend(true, {}, this.model.queryState.toJSON());
+ // we will use idx in list as the id ...
+ tmplData.filters = _.map(tmplData.filters, function(filter, idx) {
+ filter.id = idx;
+ return filter;
+ });
+ tmplData.fields = this.model.fields.toJSON();
+ tmplData.filterRender = function() {
+ return Mustache.render(self.filterTemplates.term, this);
+ };
+ var out = Mustache.render(this.template, tmplData);
+ this.el.html(out);
+ },
+ updateFilter: function(input) {
+ var self = this;
+ var filters = self.model.queryState.get('filters');
+ var $input = $(input);
+ var filterIndex = parseInt($input.attr('data-filter-id'), 10);
+ var value = $input.val();
+ filters[filterIndex].term = value;
+ },
+ onAddFilterShow: function(e) {
+ e.preventDefault();
+ var $target = $(e.target);
+ $target.hide();
+ this.el.find('form.js-add').show();
+ },
+ onAddFilter: function(e) {
+ e.preventDefault();
+ var $target = $(e.target);
+ $target.hide();
+ var field = $target.find('select.fields').val();
+ this.model.queryState.addFilter({type: 'term', field: field});
+ },
+ onRemoveFilter: function(e) {
+ e.preventDefault();
+ var $target = $(e.target);
+ var filterId = $target.attr('data-filter-id');
+ this.model.queryState.removeFilter(filterId);
+ },
+ onTermFiltersUpdate: function(e) {
+ var self = this;
+ e.preventDefault();
+ var filters = self.model.queryState.get('filters');
+ var $form = $(e.target);
+ _.each($form.find('input'), function(input) {
+ self.updateFilter(input);
+ });
+ self.model.queryState.set({filters: filters, from: 0});
+ self.model.queryState.trigger('change');
+ }
+});
+
+})(jQuery, recline.View);
diff --git a/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.css b/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.css
index db61ee86dd7..ff445f823a8 100644
--- a/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.css
+++ b/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.css
@@ -1 +1 @@
-.recline-flot .graph{height:500px;overflow:hidden}.recline-flot .legend table{width:auto;margin-bottom:0}.recline-flot .legend td{padding:5px;line-height:13px}.recline-flot .graph .alert{width:450px}#recline-flot-tooltip{position:absolute;background-color:#FEE!important;color:#000000!important;opacity:0.8!important;border:1px solid #fdd!important}.recline-graph .graph{height:500px}.recline-graph .legend table{width:auto;margin-bottom:0}.recline-graph .legend td{padding:5px;line-height:13px}.recline-graph .graph .alert{width:450px}.flotr-mouse-value{background-color:#FEE!important;color:#000000!important;opacity:0.8!important;border:1px solid #fdd!important}.flotr-legend{border:none!important}.flotr-legend-bg{display:none}.flotr-legend-color-box{padding:5px}table.recline-grid{table-layout:fixed;width:100%}.recline-grid .btn-group .dropdown-toggle{padding:1px 3px;line-height:auto}.recline-grid td,.recline-grid th{border-left:1px solid #ccc;padding:3px 4px;text-align:left;word-wrap:break-word;white-space:normal}.recline-grid tbody tr{vertical-align:top;border-bottom:solid 1px #ccc}.recline-grid tbody tr:last-child{border-bottom:1px solid #ccc}.recline-grid tbody td:last-child{border-right:1px solid #ccc}.recline-grid th{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),color-stop(25%,#ffffff),to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-moz-linear-gradient(top,#ffffff,#ffffff 25%,#e6e6e6);background-image:-ms-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-o-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all}div.table-container{overflow:auto}html>body div.table-container{overflow:hidden}thead.fixed-header tr{overflow-x:hidden}thead.fixed-header tr{position:relative}html>body thead.fixed-header tr{display:block}tbody.scroll-content{display:block;max-height:500px;overflow:auto}.column-header-menu,a.root-header-menu{float:right}div.data-table-cell-content{line-height:1.2;color:#222;position:relative}div.data-table-cell-content-numeric{text-align:right}a.data-table-cell-edit{position:absolute;top:0;right:0;display:block;width:25px;height:16px;text-decoration:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAQCAYAAABUWyyMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTNEODNFMjVEMDA5MTFERjk5NzhEQzZDRDUwRkEzMUEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTNEODNFMjZEMDA5MTFERjk5NzhEQzZDRDUwRkEzMUEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5M0Q4M0UyM0QwMDkxMURGOTk3OERDNkNENTBGQTMxQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5M0Q4M0UyNEQwMDkxMURGOTk3OERDNkNENTBGQTMxQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpApVmcAAAKVSURBVHjaYvz//z/DcAAsIGLaxjf2QKoLiM2oaPYpIC7L8hc5COI4F9+hmR17e1UOskAFVgCxBJUDyQxqriQ97GCCCpBkATCUGQxVOTHY7KyMDFoKHMhKJXCwCQJgKDNEOAlisHk5mRh8LPgw7GChNEg2HfvI8OnbPzDbwYAH6BkmhmsPflA12EtnPmN4/vY3mF0YKgb2zJYTn5CV/EfxiKgAC4O7CS8DHzczw5PXvxl2nv7E8PP3fxTx87e/o1hipMrFcOfZT6BmVgYZUTawmKUWN8Pxa1+xOkpNhp2hLk6CQVKYleHcrW8MTYteMHz+/g9FfMW+9yh6Ih0FGA5e/MLAAIx5IzUusFiqtzDD7K1vYUpcmZA1+FnxM7z++AccyqBkAgphmMPY2ZiAHvsMFkcGMkAPgMQ+ff3L8PPXPzD++O0vztDtypBmuPXkJziUebiYwSEMcxiID/IYiEYJLKDjQWLP3v1h+AI0G4RhMQQF5UzoDvr5CxIDoJhQlmKHy527/Y3hLjDkD4BCBgsAxSAoiYEwrqQFchAoWcBiAOQge30euBwoJkAh37/6FVb9oBgEeQCE0ZKWC8488vj1LzCmJTgLTKZn0ZIquYAJOURBsQDKB68//GHgYEWkOlBMgPICKIYcoCGIC4BiFRSDuEIUFBtSQizg5AWKHRgAxQSoZALFECy54QKgZAbLKxgegZVAfFxM4LyiLMUGTPeQ0ujAhS9gz7mb8sI9iisWQclSG7UIRgFlM56CM3R3uhTY0bC0DkpOtx//AGd4mEdxxSIoWaIVwQyMoCYKsGanWTsFWM8wQmt2mtkBqmdgMfKCRna8wMGmth2MMI/EAfEdKltwB2ouAz3sYBwurV8mhmECAAIMAEe3EkMWh/DvAAAAAElFTkSuQmCC);background-repeat:no-repeat;visibility:hidden}a.data-table-cell-edit:hover{background-position:-25px 0px}.recline-grid td:hover .data-table-cell-edit{visibility:visible}div.data-table-cell-content-numeric>a.data-table-cell-edit{left:0px;right:auto}.data-table-value-nonstring{color:#282}.data-table-error{color:red}.data-table-cell-editor-editor{overflow:hidden;display:block;width:98%;height:3em;font-family:monospace;margin:3px 0}.data-table-cell-copypaste-editor{overflow:hidden;display:block;width:98%;height:10em;font-family:monospace;margin:3px 0}.data-table-cell-editor-action{float:left;vertical-align:bottom;text-align:center}.data-table-cell-editor-key{font-size:0.8em;color:#999}.recline-read-only .recline-grid .write-op,.recline-read-only .recline-grid a.data-table-cell-edit{display:none}.recline-read-only a.row-header-menu{display:none}.recline-map .map{height:500px}.recline-map .editor{float:right;width:200px;padding-left:0px;margin-left:10px}.recline-map .editor form{padding-left:4px}.recline-map .editor select{width:100%}.recline-map .editor .editor-options{margin-top:10px;border-top:1px solid gray;padding:5px 0}.recline-data-explorer .data-view-container{display:block}.recline-data-explorer .data-view-sidebar{float:right;margin-left:8px;width:220px}.recline-data-explorer .header .navigation{margin-bottom:8px}.recline-data-explorer .header .navigation,.recline-data-explorer .header .pagination,.recline-data-explorer .header .pagination form{display:inline}.recline-data-explorer .header .navigation{float:left}.recline-data-explorer .header .menu-right{float:right;margin-left:5px;padding-left:5px;border-left:solid 2px #ddd}.header .recline-results-info{line-height:28px;margin-left:20px;float:left}.header .recline-query-editor{float:right;height:30px}.header .input-prepend{margin-bottom:auto}.header .add-on{float:left}.header .add-on{margin-left:-27px}.header .input-prepend{vertical-align:top}.header .recline-query-editor form button{vertical-align:top}.header .recline-pager{float:left;margin:auto;display:block;margin-left:20px}.header .recline-pager .pagination input{width:30px;height:18px;padding:2px 4px;margin:0;margin-top:-4px}.header .recline-pager .pagination a{line-height:26px;padding:0 6px}.recline-filter-editor{padding:8px;display:none}.recline-filter-editor .filter-term a{font-size:18px}.recline-filter-editor input,.recline-filter-editor select{width:175px}.recline-fields-view{display:none}.recline-fields-view .fields-list{padding:0}.recline-fields-view .fields-list .accordion-heading,.recline-fields-view .fields-list h3{margin:3px 0 3px 5px}.recline-fields-view .fields-list .accordion-heading a,.recline-fields-view .fields-list .accordion-heading h4{display:inline}.recline-fields-view .fields-list .accordion-heading a{padding:0}.recline-fields-view .fields-list .accordion-heading h4{word-wrap:break-word}.recline-fields-view .clear{clear:both}.recline-fields-view .facet-items{list-style-type:none;margin-left:0}.recline-fields-view .facet-item .term{font-weight:bold}.recline-fields-view .facet-item .count{}.recline-data-explorer .notification-loader{width:18px;margin-left:5px;background-image:url(data:image/gif;base64,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%3D%3D);display:inline-block}.recline-data-explorer .alert-loader{position:absolute;width:200px;left:50%;margin-left:-100px;z-index:10000;padding:40px 0px 40px 0px;margin-top:-10px;text-align:center;font-size:16px;font-weight:bold;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border-top:none}.recline-slickgrid .slick-header-columns .slick-header-column{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),color-stop(25%,#ffffff),to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-moz-linear-gradient(top,#ffffff,#ffffff 25%,#e6e6e6);background-image:-ms-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-o-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-weight:bold;border-right:1px solid #ccc;border-top:1px solid #ccc;border-bottom:1px solid #bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.recline-slickgrid .slick-header-column:hover,.slick-header-column-active{}.recline-slickgrid .slick-headerrow{background:#fafafa}.recline-slickgrid .slick-headerrow-column{background:#fafafa;border-bottom:0;height:100%}.recline-slickgrid .slick-row.ui-state-active{background:#F5F7D7}.recline-slickgrid .slick-row{position:absolute;background:white;border:0px;line-height:20px}.recline-slickgrid .slick-row.selected{z-index:10;background:#DFE8F6}.recline-slickgrid .slick-cell{padding-left:4px;padding-right:4px}.recline-slickgrid .slick-group{border-bottom:2px solid silver}.recline-slickgrid .slick-group-toggle{width:9px;height:9px;margin-right:5px}.recline-slickgrid .slick-group-toggle.expanded{background:url(../images/collapse.gif) no-repeat center center}.recline-slickgrid .slick-group-toggle.collapsed{background:url(../images/expand.gif) no-repeat center center}.recline-slickgrid .slick-group-totals{color:gray;background:white}.recline-slickgrid .slick-cell.selected{background-color:beige}.recline-slickgrid .slick-cell.active{border-color:gray;border-style:solid}.recline-slickgrid .slick-sortable-placeholder{background:silver!important}.recline-slickgrid .slick-row[row$="1"],.slick-row[row$="3"],.slick-row[row$="5"],.slick-row[row$="7"],.slick-row[row$="9"]{background:#fafafa}.recline-slickgrid .slick-row.ui-state-active{background:#F5F7D7}.recline-slickgrid .slick-row.loading{opacity:0.5;filter:alpha(opacity=50)}.recline-slickgrid .slick-cell.invalid{border-color:red}.recline-slickgrid .slick-row .slick-cell:first-child,.recline-slickgrid .slick-header{border-left:1px solid #ccc}.recline-slickgrid .slick-row .slick-cell{margin-right:-1px}.slick-contextmenu{border-radius:5px}.slick-contextmenu li{clear:both;height:24px;cursor:pointer}.slick-contextmenu .divider{cursor:default}.slick-contextmenu>li:hover{background-color:#0088cc}.slick-contextmenu .divider:hover{background-color:#E5E5E5}.slick-contextmenu li:hover>label{color:white}.slick-contextmenu input{float:left;margin-left:15px;margin-top:5px}.slick-contextmenu label{float:left;margin-right:15px;margin-left:5px;margin-top:3px;color:#555;cursor:pointer}.recline-transform{overflow:hidden}.recline-transform .script textarea{width:100%;height:100px;font-family:monospace;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.recline-transform h2{margin-bottom:10px}.recline-transform h2 .okButton{margin-left:10px;margin-top:-2px}.expression-preview-parsing-status{color:#999}.expression-preview-parsing-status.error{color:red}.recline-transform .before-after .after{font-style:italic}.recline-transform .before-after .after.different{font-weight:bold}
\ No newline at end of file
+.recline-flot .graph{height:500px;overflow:hidden}.recline-flot .legend table{width:auto;margin-bottom:0}.recline-flot .legend td{padding:5px;line-height:13px}.recline-flot .graph .alert{width:450px}#recline-flot-tooltip{position:absolute;background-color:#FEE!important;color:#000000!important;opacity:0.8!important;border:1px solid #fdd!important}.recline-graph .graph{height:500px}.recline-graph .legend table{width:auto;margin-bottom:0}.recline-graph .legend td{padding:5px;line-height:13px}.recline-graph .graph .alert{width:450px}.flotr-mouse-value{background-color:#FEE!important;color:#000000!important;opacity:0.8!important;border:1px solid #fdd!important}.flotr-legend{border:none!important}.flotr-legend-bg{display:none}.flotr-legend-color-box{padding:5px}table.recline-grid{table-layout:fixed;width:100%}.recline-grid .btn-group .dropdown-toggle{padding:1px 3px;line-height:auto}.recline-grid td,.recline-grid th{border-left:1px solid #ccc;padding:3px 4px;text-align:left;word-wrap:break-word;white-space:normal}.recline-grid tbody tr{vertical-align:top;border-bottom:solid 1px #ccc}.recline-grid tbody tr:last-child{border-bottom:1px solid #ccc}.recline-grid tbody td:last-child{border-right:1px solid #ccc}.recline-grid th{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),color-stop(25%,#ffffff),to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-moz-linear-gradient(top,#ffffff,#ffffff 25%,#e6e6e6);background-image:-ms-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-o-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all}div.table-container{overflow:auto}html>body div.table-container{overflow:hidden}thead.fixed-header tr{overflow-x:hidden}thead.fixed-header tr{position:relative}html>body thead.fixed-header tr{display:block}tbody.scroll-content{display:block;max-height:500px;overflow:auto}.column-header-menu,a.root-header-menu{float:right}div.data-table-cell-content{line-height:1.2;color:#222;position:relative}div.data-table-cell-content-numeric{text-align:right}a.data-table-cell-edit{position:absolute;top:0;right:0;display:block;width:25px;height:16px;text-decoration:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAQCAYAAABUWyyMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTNEODNFMjVEMDA5MTFERjk5NzhEQzZDRDUwRkEzMUEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTNEODNFMjZEMDA5MTFERjk5NzhEQzZDRDUwRkEzMUEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5M0Q4M0UyM0QwMDkxMURGOTk3OERDNkNENTBGQTMxQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5M0Q4M0UyNEQwMDkxMURGOTk3OERDNkNENTBGQTMxQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpApVmcAAAKVSURBVHjaYvz//z/DcAAsIGLaxjf2QKoLiM2oaPYpIC7L8hc5COI4F9+hmR17e1UOskAFVgCxBJUDyQxqriQ97GCCCpBkATCUGQxVOTHY7KyMDFoKHMhKJXCwCQJgKDNEOAlisHk5mRh8LPgw7GChNEg2HfvI8OnbPzDbwYAH6BkmhmsPflA12EtnPmN4/vY3mF0YKgb2zJYTn5CV/EfxiKgAC4O7CS8DHzczw5PXvxl2nv7E8PP3fxTx87e/o1hipMrFcOfZT6BmVgYZUTawmKUWN8Pxa1+xOkpNhp2hLk6CQVKYleHcrW8MTYteMHz+/g9FfMW+9yh6Ih0FGA5e/MLAAIx5IzUusFiqtzDD7K1vYUpcmZA1+FnxM7z++AccyqBkAgphmMPY2ZiAHvsMFkcGMkAPgMQ+ff3L8PPXPzD++O0vztDtypBmuPXkJziUebiYwSEMcxiID/IYiEYJLKDjQWLP3v1h+AI0G4RhMQQF5UzoDvr5CxIDoJhQlmKHy527/Y3hLjDkD4BCBgsAxSAoiYEwrqQFchAoWcBiAOQge30euBwoJkAh37/6FVb9oBgEeQCE0ZKWC8488vj1LzCmJTgLTKZn0ZIquYAJOURBsQDKB68//GHgYEWkOlBMgPICKIYcoCGIC4BiFRSDuEIUFBtSQizg5AWKHRgAxQSoZALFECy54QKgZAbLKxgegZVAfFxM4LyiLMUGTPeQ0ujAhS9gz7mb8sI9iisWQclSG7UIRgFlM56CM3R3uhTY0bC0DkpOtx//AGd4mEdxxSIoWaIVwQyMoCYKsGanWTsFWM8wQmt2mtkBqmdgMfKCRna8wMGmth2MMI/EAfEdKltwB2ouAz3sYBwurV8mhmECAAIMAEe3EkMWh/DvAAAAAElFTkSuQmCC);background-repeat:no-repeat;visibility:hidden}a.data-table-cell-edit:hover{background-position:-25px 0px}.recline-grid td:hover .data-table-cell-edit{visibility:visible}div.data-table-cell-content-numeric>a.data-table-cell-edit{left:0px;right:auto}.data-table-value-nonstring{color:#282}.data-table-error{color:red}.data-table-cell-editor-editor{overflow:hidden;display:block;width:98%;height:3em;font-family:monospace;margin:3px 0}.data-table-cell-copypaste-editor{overflow:hidden;display:block;width:98%;height:10em;font-family:monospace;margin:3px 0}.data-table-cell-editor-action{float:left;vertical-align:bottom;text-align:center}.data-table-cell-editor-key{font-size:0.8em;color:#999}.recline-read-only .recline-grid .write-op,.recline-read-only .recline-grid a.data-table-cell-edit{display:none}.recline-read-only a.row-header-menu{display:none}.recline-map .map{height:500px}.recline-map .editor{float:right;width:200px;padding-left:0px;margin-left:10px}.recline-map .editor form{padding-left:4px}.recline-map .editor select{width:100%}.recline-map .editor .editor-options{margin-top:10px;border-top:1px solid gray;padding:5px 0}.recline-data-explorer .data-view-container{display:block}.recline-data-explorer .data-view-sidebar{float:right;margin-left:8px;width:220px}.recline-data-explorer .header .navigation{margin-bottom:8px}.recline-data-explorer .header .navigation,.recline-data-explorer .header .pagination,.recline-data-explorer .header .pagination form{display:inline}.recline-data-explorer .header .navigation{float:left}.recline-data-explorer .header .menu-right{float:right;margin-left:5px;padding-left:5px;border-left:solid 2px #ddd}.header .recline-results-info{line-height:28px;margin-left:20px;float:left}.header .recline-query-editor{float:right;height:30px}.header .input-prepend{margin-bottom:auto}.header .add-on{float:left}.header .add-on{margin-left:-27px}.header .input-prepend{vertical-align:top}.header .recline-query-editor form button{vertical-align:top}.header .recline-pager{float:left;margin:auto;display:block;margin-left:20px}.header .recline-pager .pagination input{width:30px;height:18px;padding:2px 4px;margin:0;margin-top:-4px}.header .recline-pager .pagination a{line-height:26px;padding:0 6px}.recline-filter-editor{padding:8px;display:none}.recline-filter-editor .filter-term a{font-size:18px}.recline-filter-editor input,.recline-filter-editor select{width:175px}.recline-filter-editor input{margin-top:0.5em}.recline-filter-editor .add-filter{margin-top:1em;margin-bottom:2em}.recline-filter-editor .update-filter{margin-top:1em}.recline-fields-view{display:none}.recline-fields-view .fields-list{padding:0}.recline-fields-view .fields-list .accordion-heading,.recline-fields-view .fields-list h3{margin:3px 0 3px 5px}.recline-fields-view .fields-list .accordion-heading a,.recline-fields-view .fields-list .accordion-heading h4{display:inline}.recline-fields-view .fields-list .accordion-heading a{padding:0}.recline-fields-view .fields-list .accordion-heading h4{word-wrap:break-word}.recline-fields-view .clear{clear:both}.recline-fields-view .facet-items{list-style-type:none;margin-left:0}.recline-fields-view .facet-item .term{font-weight:bold}.recline-fields-view .facet-item .count{}.recline-data-explorer .notification-loader{width:18px;margin-left:5px;background-image:url(data:image/gif;base64,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%3D%3D);display:inline-block}.recline-data-explorer .alert-loader{position:absolute;width:200px;left:50%;margin-left:-100px;z-index:10000;padding:40px 0px 40px 0px;margin-top:-10px;text-align:center;font-size:16px;font-weight:bold;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border-top:none}.recline-slickgrid .slick-header-columns .slick-header-column{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ffffff),color-stop(25%,#ffffff),to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-moz-linear-gradient(top,#ffffff,#ffffff 25%,#e6e6e6);background-image:-ms-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:-o-linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);background-image:linear-gradient(#ffffff,#ffffff 25%,#e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-weight:bold;border-right:1px solid #ccc;border-top:1px solid #ccc;border-bottom:1px solid #bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.recline-slickgrid .slick-header-column:hover,.slick-header-column-active{}.recline-slickgrid .slick-headerrow{background:#fafafa}.recline-slickgrid .slick-headerrow-column{background:#fafafa;border-bottom:0;height:100%}.recline-slickgrid .slick-row.ui-state-active{background:#F5F7D7}.recline-slickgrid .slick-row{position:absolute;background:white;border:0px;line-height:20px}.recline-slickgrid .slick-row.selected{z-index:10;background:#DFE8F6}.recline-slickgrid .slick-cell{padding-left:4px;padding-right:4px}.recline-slickgrid .slick-group{border-bottom:2px solid silver}.recline-slickgrid .slick-group-toggle{width:9px;height:9px;margin-right:5px}.recline-slickgrid .slick-group-toggle.expanded{background:url(../images/collapse.gif) no-repeat center center}.recline-slickgrid .slick-group-toggle.collapsed{background:url(../images/expand.gif) no-repeat center center}.recline-slickgrid .slick-group-totals{color:gray;background:white}.recline-slickgrid .slick-cell.selected{background-color:beige}.recline-slickgrid .slick-cell.active{border-color:gray;border-style:solid}.recline-slickgrid .slick-sortable-placeholder{background:silver!important}.recline-slickgrid .slick-row[row$="1"],.slick-row[row$="3"],.slick-row[row$="5"],.slick-row[row$="7"],.slick-row[row$="9"]{background:#fafafa}.recline-slickgrid .slick-row.ui-state-active{background:#F5F7D7}.recline-slickgrid .slick-row.loading{opacity:0.5;filter:alpha(opacity=50)}.recline-slickgrid .slick-cell.invalid{border-color:red}.recline-slickgrid .slick-row .slick-cell:first-child,.recline-slickgrid .slick-header{border-left:1px solid #ccc}.recline-slickgrid .slick-row .slick-cell{margin-right:-1px}.slick-contextmenu{border-radius:5px}.slick-contextmenu li{clear:both;height:24px;cursor:pointer}.slick-contextmenu .divider{cursor:default}.slick-contextmenu>li:hover{background-color:#0088cc}.slick-contextmenu .divider:hover{background-color:#E5E5E5}.slick-contextmenu li:hover>label{color:white}.slick-contextmenu input{float:left;margin-left:15px;margin-top:5px}.slick-contextmenu label{float:left;margin-right:15px;margin-left:5px;margin-top:3px;color:#555;cursor:pointer}.recline-transform{overflow:hidden}.recline-transform .script textarea{width:100%;height:100px;font-family:monospace;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.recline-transform h2{margin-bottom:10px}.recline-transform h2 .okButton{margin-left:10px;margin-top:-2px}.expression-preview-parsing-status{color:#999}.expression-preview-parsing-status.error{color:red}.recline-transform .before-after .after{font-style:italic}.recline-transform .before-after .after.different{font-weight:bold}
\ No newline at end of file
diff --git a/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.js b/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.js
index 3ba7d8d831a..6ed057ef33a 100644
--- a/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.js
+++ b/ckanext/reclinepreview/theme/public/vendor/recline/recline.min.js
@@ -1,7 +1,8 @@
this.recline=this.recline||{};this.recline.Backend=this.recline.Backend||{};this.recline.Backend.Ckan=this.recline.Backend.Ckan||{};(function(my){my.__type__='ckan';var Deferred=_.isUndefined(this.jQuery)?_.Deferred:jQuery.Deferred;my.API_ENDPOINT='http://datahub.io/api';my.fetch=function(dataset){if(dataset.endpoint){var wrapper=my.DataStore(dataset.endpoint);}else{var out=my._parseCkanResourceUrl(dataset.url);dataset.id=out.resource_id;var wrapper=my.DataStore(out.endpoint);}
-var dfd=new Deferred();var jqxhr=wrapper.search({resource_id:dataset.id,limit:0});jqxhr.done(function(results){var fields=_.map(results.result.fields,function(field){field.type=field.type in CKAN_TYPES_MAP?CKAN_TYPES_MAP[field.type]:field.type;return field;});var out={fields:fields,useMemoryStore:false};dfd.resolve(out);});return dfd.promise();};my._normalizeQuery=function(queryObj,dataset){var actualQuery={resource_id:dataset.id,q:queryObj.q,limit:queryObj.size||10,offset:queryObj.from||0};if(queryObj.sort&&queryObj.sort.length>0){var _tmp=_.map(queryObj.sort,function(sortObj){return sortObj.field+' '+(sortObj.order||'');});actualQuery.sort=_tmp.join(',');}
+var dfd=new Deferred();var jqxhr=wrapper.search({resource_id:dataset.id,limit:0});jqxhr.done(function(results){var fields=_.map(results.result.fields,function(field){field.type=field.type in CKAN_TYPES_MAP?CKAN_TYPES_MAP[field.type]:field.type;return field;});var out={fields:fields,useMemoryStore:false};dfd.resolve(out);});return dfd.promise();};my._normalizeQuery=function(queryObj,dataset){var actualQuery={resource_id:dataset.id,q:queryObj.q,filters:{},limit:queryObj.size||10,offset:queryObj.from||0};if(queryObj.sort&&queryObj.sort.length>0){var _tmp=_.map(queryObj.sort,function(sortObj){return sortObj.field+' '+(sortObj.order||'');});actualQuery.sort=_tmp.join(',');}
+if(queryObj.filters&&queryObj.filters.length>0){_.each(queryObj.filters,function(filter){if(filter.type==="term"){actualQuery.filters[filter.field]=filter.term;}});}
return actualQuery;};my.query=function(queryObj,dataset){if(dataset.endpoint){var wrapper=my.DataStore(dataset.endpoint);}else{var out=my._parseCkanResourceUrl(dataset.url);dataset.id=out.resource_id;var wrapper=my.DataStore(out.endpoint);}
-var actualQuery=my._normalizeQuery(queryObj,dataset);var dfd=new Deferred();var jqxhr=wrapper.search(actualQuery);jqxhr.done(function(results){var out={total:results.result.total,hits:results.result.records};dfd.resolve(out);});return dfd.promise();};my.DataStore=function(endpoint){var that={endpoint:endpoint||my.API_ENDPOINT};that.search=function(data){var searchUrl=that.endpoint+'/3/action/datastore_search';var jqxhr=jQuery.ajax({url:searchUrl,data:data,dataType:'json'});return jqxhr;};return that;};my._parseCkanResourceUrl=function(url){parts=url.split('/');var len=parts.length;return{resource_id:parts[len-1],endpoint:parts.slice(0,[len-4]).join('/')+'/api'};};var CKAN_TYPES_MAP={'int4':'integer','int8':'integer','float8':'float'};}(this.recline.Backend.Ckan));this.recline=this.recline||{};this.recline.Backend=this.recline.Backend||{};this.recline.Backend.CSV=this.recline.Backend.CSV||{};(function(my){my.__type__='csv';var Deferred=_.isUndefined(this.jQuery)?_.Deferred:jQuery.Deferred;my.fetch=function(dataset){var dfd=new Deferred();if(dataset.file){var reader=new FileReader();var encoding=dataset.encoding||'UTF-8';reader.onload=function(e){var rows=my.parseCSV(e.target.result,dataset);dfd.resolve({records:rows,metadata:{filename:dataset.file.name},useMemoryStore:true});};reader.onerror=function(e){alert('Failed to load file. Code: '+e.target.error.code);};reader.readAsText(dataset.file,encoding);}else if(dataset.data){var rows=my.parseCSV(dataset.data,dataset);dfd.resolve({records:rows,useMemoryStore:true});}else if(dataset.url){jQuery.get(dataset.url).done(function(data){var rows=my.parseCSV(data,dataset);dfd.resolve({records:rows,useMemoryStore:true});});}
+var actualQuery=my._normalizeQuery(queryObj,dataset);var dfd=new Deferred();var jqxhr=wrapper.search(actualQuery);jqxhr.done(function(results){var out={total:results.result.total,hits:results.result.records};dfd.resolve(out);});return dfd.promise();};my.DataStore=function(endpoint){var that={endpoint:endpoint||my.API_ENDPOINT};that.search=function(data){var searchUrl=that.endpoint+'/3/action/datastore_search';var jqxhr=jQuery.ajax({url:searchUrl,type:'POST',data:JSON.stringify(data)});return jqxhr;};return that;};my._parseCkanResourceUrl=function(url){parts=url.split('/');var len=parts.length;return{resource_id:parts[len-1],endpoint:parts.slice(0,[len-4]).join('/')+'/api'};};var CKAN_TYPES_MAP={'int4':'integer','int8':'integer','float8':'float'};}(this.recline.Backend.Ckan));this.recline=this.recline||{};this.recline.Backend=this.recline.Backend||{};this.recline.Backend.CSV=this.recline.Backend.CSV||{};(function(my){my.__type__='csv';var Deferred=_.isUndefined(this.jQuery)?_.Deferred:jQuery.Deferred;my.fetch=function(dataset){var dfd=new Deferred();if(dataset.file){var reader=new FileReader();var encoding=dataset.encoding||'UTF-8';reader.onload=function(e){var rows=my.parseCSV(e.target.result,dataset);dfd.resolve({records:rows,metadata:{filename:dataset.file.name},useMemoryStore:true});};reader.onerror=function(e){alert('Failed to load file. Code: '+e.target.error.code);};reader.readAsText(dataset.file,encoding);}else if(dataset.data){var rows=my.parseCSV(dataset.data,dataset);dfd.resolve({records:rows,useMemoryStore:true});}else if(dataset.url){jQuery.get(dataset.url).done(function(data){var rows=my.parseCSV(data,dataset);dfd.resolve({records:rows,useMemoryStore:true});});}
return dfd.promise();};my.parseCSV=function(s,options){s=chomp(s);var options=options||{};var trm=(options.trim===false)?false:true;var delimiter=options.delimiter||',';var quotechar=options.quotechar||'"';var cur='',inQuote=false,fieldQuoted=false,field='',row=[],out=[],i,processField;processField=function(field){if(fieldQuoted!==true){if(field===''){field=null;}else if(trm===true){field=trim(field);}
if(rxIsInt.test(field)){field=parseInt(field,10);}else if(rxIsFloat.test(field)){field=parseFloat(field,10);}}
return field;};for(i=0;i'+field.get('label')+' : '+self.getFieldValue(field)+'';}});html+='';return html;},fetch:function(){},save:function(){},destroy:function(){this.trigger('destroy',this);}});my.RecordList=Backbone.Collection.extend({constructor:function RecordList(){Backbone.Collection.prototype.constructor.apply(this,arguments);},model:my.Record});my.Field=Backbone.Model.extend({constructor:function Field(){Backbone.Model.prototype.constructor.apply(this,arguments);},defaults:{label:null,type:'string',format:null,is_derived:false},initialize:function(data,options){if('0'in data){throw new Error('Looks like you did not pass a proper hash with id to Field constructor');}
if(this.attributes.label===null){this.set({label:this.id});}
if(this.attributes.type.toLowerCase()in this._typeMap){this.attributes.type=this._typeMap[this.attributes.type.toLowerCase()];}
@@ -102,15 +104,14 @@ facets[fieldId]={terms:{field:fieldId}};this.set({facets:facets},{silent:true});
',initialize:function(options){var self=this;this.graphColors=["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"];this.el=$(this.el);_.bindAll(this,'render','redraw','_toolTip','_xaxisLabel');this.needToRedraw=false;this.model.bind('change',this.render);this.model.fields.bind('reset',this.render);this.model.fields.bind('add',this.render);this.model.records.bind('add',this.redraw);this.model.records.bind('reset',this.redraw);var stateData=_.extend({group:null,series:[],graphType:'lines-and-points'},options.state);this.state=new recline.Model.ObjectState(stateData);this.previousTooltipPoint={x:null,y:null};this.editor=new my.FlotControls({model:this.model,state:this.state.toJSON()});this.editor.state.bind('change',function(){self.state.set(self.editor.state.toJSON());self.redraw();});this.elSidebar=this.editor.el;},render:function(){var self=this;var tmplData=this.model.toTemplateJSON();var htmls=Mustache.render(this.template,tmplData);$(this.el).html(htmls);this.$graph=this.el.find('.panel.graph');this.$graph.on("plothover",this._toolTip);return this;},redraw:function(){var areWeVisible=!jQuery.expr.filters.hidden(this.el[0]);if((!areWeVisible||this.model.records.length===0)){this.needToRedraw=true;return;}
if(this.state.get('group')&&this.state.get('series')){var series=this.createSeries();var options=this.getGraphOptions(this.state.attributes.graphType,series[0].data.length);this.plot=$.plot(this.$graph,series,options);}},show:function(){if(this.needToRedraw){this.redraw();}},_toolTip:function(event,pos,item){if(item){if(this.previousTooltipPoint.x!==item.dataIndex||this.previousTooltipPoint.y!==item.seriesIndex){this.previousTooltipPoint.x=item.dataIndex;this.previousTooltipPoint.y=item.seriesIndex;$("#recline-flot-tooltip").remove();var x=item.datapoint[0].toFixed(2),y=item.datapoint[1].toFixed(2);if(this.state.attributes.graphType==='bars'){x=item.datapoint[1].toFixed(2),y=item.datapoint[0].toFixed(2);}
var content=_.template('<%= group %> = <%= x %>, <%= series %> = <%= y %>',{group:this.state.attributes.group,x:this._xaxisLabel(x),series:item.series.label,y:y});var xLocation,yLocation;if(this.state.attributes.graphType==='bars'){xLocation=item.pageX+15;yLocation=item.pageY-10;}else if(this.state.attributes.graphType==='columns'){xLocation=item.pageX+15;yLocation=item.pageY;}else{xLocation=item.pageX+10;yLocation=item.pageY-20;}
-$(''+content+'
').css({top:yLocation,left:xLocation}).appendTo("body").fadeIn(200);}}else{$("#recline-flot-tooltip").remove();this.previousTooltipPoint.x=null;this.previousTooltipPoint.y=null;}},_xaxisLabel:function(x){var xfield=this.model.fields.get(this.state.attributes.group);var xtype=xfield.get('type');var isDateTime=(xtype==='date'||xtype==='date-time'||xtype==='time');if(this.model.records.models[parseInt(x,10)]){x=this.model.records.models[parseInt(x,10)].get(this.state.attributes.group);if(isDateTime){x=new Date(x).toLocaleDateString();}}else if(isDateTime){x=new Date(parseInt(x,10)).toLocaleDateString();}
-return x;},getGraphOptions:function(typeId,numPoints){var self=this;var tickFormatter=function(x){var label=self._xaxisLabel(x);if(typeof label!=='string'){label=label.toString();}
-if(self.state.attributes.graphType!=='bars'&&label.length>8){label=label.slice(0,5)+"...";}
-return label;};var xaxis={};xaxis.tickFormatter=tickFormatter;if(numPoints){var ticks=[],maxTicks=10,x=1,i=0;if(self.state.attributes.graphType!=='bars'){while(x<=maxTicks){if((numPoints/x)<=maxTicks){break;}
-x=x+1;}}
-for(i=0;i'+content+'').css({top:yLocation,left:xLocation}).appendTo("body").fadeIn(200);}}else{$("#recline-flot-tooltip").remove();this.previousTooltipPoint.x=null;this.previousTooltipPoint.y=null;}},_xaxisLabel:function(x){var xfield=this.model.fields.get(this.state.attributes.group);var xtype=xfield.get('type');var isDateTime=(xtype==='date'||xtype==='date-time'||xtype==='time');if(this.xvaluesAreIndex){x=parseInt(x,10);x=this.model.records.models[x].get(this.state.attributes.group);}
+if(isDateTime){x=new Date(x).toLocaleDateString();}
+return x;},getGraphOptions:function(typeId,numPoints){var self=this;var tickFormatter=function(x){var label=self._xaxisLabel(x)||"";if(typeof label!=='string'){label=label.toString();}
+if(self.state.attributes.graphType!=='bars'&&label.length>10){label=label.slice(0,10)+"...";}
+return label;};var xaxis={};xaxis.tickFormatter=tickFormatter;if(this.xvaluesAreIndex){var numTicks=Math.min(this.model.records.length,15);var increment=this.model.records.length/numTicks;var ticks=[];for(i=0;i \
\
- ',events:{'submit form':'onFormSubmit'},initialize:function(){_.bindAll(this,'render');this.el=$(this.el);this.model.bind('change',this.render);this.render();},onFormSubmit:function(e){e.preventDefault();var query=this.el.find('.text-query input').val();this.model.set({q:query});},render:function(){var tmplData=this.model.toJSON();var templated=Mustache.render(this.template,tmplData);this.el.html(templated);}});})(jQuery,recline.View);
\ No newline at end of file
+ ',events:{'submit form':'onFormSubmit'},initialize:function(){_.bindAll(this,'render');this.el=$(this.el);this.model.bind('change',this.render);this.render();},onFormSubmit:function(e){e.preventDefault();var query=this.el.find('.text-query input').val();this.model.set({q:query});},render:function(){var tmplData=this.model.toJSON();var templated=Mustache.render(this.template,tmplData);this.el.html(templated);}});})(jQuery,recline.View);this.recline=this.recline||{};this.recline.View=this.recline.View||{};(function($,my){my.ValueFilter=Backbone.View.extend({className:'recline-filter-editor well',template:' \
+ \
+
Filters \
+ Add filter \
+ \
+ \
+ \
+ ',filterTemplates:{term:' \
+ \
+ '},events:{'click .js-remove-filter':'onRemoveFilter','click .js-add-filter':'onAddFilterShow','submit form.js-edit':'onTermFiltersUpdate','submit form.js-add':'onAddFilter'},initialize:function(){this.el=$(this.el);_.bindAll(this,'render');this.model.fields.bind('all',this.render);this.model.queryState.bind('change',this.render);this.model.queryState.bind('change:filters:new-blank',this.render);this.render();},render:function(){var self=this;var tmplData=$.extend(true,{},this.model.queryState.toJSON());tmplData.filters=_.map(tmplData.filters,function(filter,idx){filter.id=idx;return filter;});tmplData.fields=this.model.fields.toJSON();tmplData.filterRender=function(){return Mustache.render(self.filterTemplates.term,this);};var out=Mustache.render(this.template,tmplData);this.el.html(out);},updateFilter:function(input){var self=this;var filters=self.model.queryState.get('filters');var $input=$(input);var filterIndex=parseInt($input.attr('data-filter-id'),10);var value=$input.val();filters[filterIndex].term=value;},onAddFilterShow:function(e){e.preventDefault();var $target=$(e.target);$target.hide();this.el.find('form.js-add').show();},onAddFilter:function(e){e.preventDefault();var $target=$(e.target);$target.hide();var field=$target.find('select.fields').val();this.model.queryState.addFilter({type:'term',field:field});},onRemoveFilter:function(e){e.preventDefault();var $target=$(e.target);var filterId=$target.attr('data-filter-id');this.model.queryState.removeFilter(filterId);},onTermFiltersUpdate:function(e){var self=this;e.preventDefault();var filters=self.model.queryState.get('filters');var $form=$(e.target);_.each($form.find('input'),function(input){self.updateFilter(input);});self.model.queryState.set({filters:filters,from:0});self.model.queryState.trigger('change');}});})(jQuery,recline.View);
\ No newline at end of file