67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
|
var Backbone = require('backbone');
|
||
|
var _ = require('underscore');
|
||
|
|
||
|
/**
|
||
|
* Model for general frontend configuration.
|
||
|
* Ported from old cdb.config, since we can't reuse the older model that's tied to v3 of cartodb.js
|
||
|
*
|
||
|
* Also, rather than putting it as a global object, it's intended to be instantiated at the entry point and passed as
|
||
|
* a collaborator object the models that needs it, e.g.:
|
||
|
* var myModel = new MyModel({ id: 123, … }, {
|
||
|
* configModel: configModel
|
||
|
* })
|
||
|
*/
|
||
|
module.exports = Backbone.Model.extend({
|
||
|
|
||
|
defaults: {
|
||
|
base_url: '/CHANGEME' // expected to be set when model is created
|
||
|
},
|
||
|
|
||
|
urlVersion: function (modelName, method, defaultVersion) {
|
||
|
method = method || '';
|
||
|
var version = this.get(modelName + '_' + method + '_url_version');
|
||
|
return version || defaultVersion || 'v1';
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* @param {String} [version=v2] Version of API to use
|
||
|
* @return {String} the full sql api url, including the api endpoint, e.g. http://user.carto.com/api/v2/sql
|
||
|
*/
|
||
|
getSqlApiUrl: function (version) {
|
||
|
version = version || 'v2';
|
||
|
return this._getSqlApiBaseUrl() + '/api/' + version + '/sql';
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* @return {String} returns the base url to compose the final url, e.g. http://user.carto.com/
|
||
|
*/
|
||
|
_getSqlApiBaseUrl: function () {
|
||
|
var url;
|
||
|
if (this.get('sql_api_template')) {
|
||
|
url = this.get('sql_api_template').replace('{user}', this.get('user_name'));
|
||
|
} else {
|
||
|
url = this.get('sql_api_protocol') + '://' +
|
||
|
this.get('user_name') + '.' +
|
||
|
this.get('sql_api_domain') + ':' +
|
||
|
this.get('sql_api_port');
|
||
|
}
|
||
|
return url;
|
||
|
},
|
||
|
|
||
|
dataServiceEnabled: function (name) {
|
||
|
var dataServices = this.get('dataservices_enabled');
|
||
|
if (!dataServices || !_.size(dataServices) || !name) {
|
||
|
return false;
|
||
|
}
|
||
|
return !!dataServices[name];
|
||
|
},
|
||
|
|
||
|
dataLibraryEnabled: function () {
|
||
|
return this.get('data_library_enabled');
|
||
|
},
|
||
|
|
||
|
isHosted: function () {
|
||
|
return this.get('cartodb_com_hosted');
|
||
|
}
|
||
|
});
|