cartodb/lib/assets/javascripts/builder/data/data-observatory/regions-collection.js
2020-06-15 10:58:47 +08:00

36 lines
1.3 KiB
JavaScript

var BaseCollection = require('./data-observatory-base-collection');
var BaseModel = require('builder/components/custom-list/custom-list-item-model');
var REGIONS_QUERY = "SELECT count(*) num_measurements, tag.key region_id, tag.value region_name FROM (SELECT * FROM OBS_GetAvailableNumerators() WHERE jsonb_pretty(numer_tags) LIKE '%subsection/%') numers, Jsonb_Each(numers.numer_tags) tag WHERE tag.key like 'section%' GROUP BY tag.key, tag.value ORDER BY region_name";
module.exports = BaseCollection.extend({
buildQuery: function () {
return REGIONS_QUERY;
},
model: function (attrs, opts) {
// label and val to custom list compatibility
var o = {};
o.val = attrs.region_id;
o.label = attrs.region_name.replace(/["]+/g, '');
o.renderOptions = {
measurements: attrs.num_measurements
};
return new BaseModel(o);
},
fetch: function (options) {
this.stateModel.set('state', 'fetching');
// check if the geometry type is available, if not wait until it's finished
if (this._nodeDefModel.queryGeometryModel.isFetched()) {
BaseCollection.prototype.fetch.call(this, options);
} else {
this._nodeDefModel.queryGeometryModel.once('change:status', function () {
BaseCollection.prototype.fetch.call(this, options);
}, this);
}
}
});