Initial commit
This commit is contained in:
66
lib/assets/javascripts/builder/data/custom-baselayer-model.js
Executable file
66
lib/assets/javascripts/builder/data/custom-baselayer-model.js
Executable file
@@ -0,0 +1,66 @@
|
||||
/* global Image */
|
||||
|
||||
var Backbone = require('backbone');
|
||||
var _ = require('underscore');
|
||||
|
||||
module.exports = Backbone.Model.extend({
|
||||
|
||||
getAttributes: function () {
|
||||
return JSON.parse(JSON.stringify(this.attributes));
|
||||
},
|
||||
|
||||
_generateClassName: function (urlTemplate) {
|
||||
if (urlTemplate) {
|
||||
return urlTemplate.replace(/\s+/g, '').replace(/[^a-zA-Z_0-9 ]/g, '').toLowerCase();
|
||||
} else return '';
|
||||
},
|
||||
|
||||
parse: function (data) {
|
||||
var attrs = {};
|
||||
|
||||
_.extend(attrs, data.options, {
|
||||
id: data.id,
|
||||
className: this._generateClassName(data.options.urlTemplate),
|
||||
type: 'Tiled',
|
||||
order: data.order,
|
||||
parent_id: data.parent_id
|
||||
});
|
||||
|
||||
return attrs;
|
||||
},
|
||||
|
||||
toJSON: function () {
|
||||
var layerOptions = _.clone(_.omit(this.attributes, ['order', 'id']));
|
||||
var json = {
|
||||
kind: 'tiled',
|
||||
options: layerOptions,
|
||||
order: this.get('order'),
|
||||
id: this.id
|
||||
};
|
||||
|
||||
return json;
|
||||
},
|
||||
|
||||
getValue: function () {
|
||||
return this.get('val');
|
||||
},
|
||||
|
||||
/**
|
||||
* validateTemplateURL - Validates current urlTemplate of layer.
|
||||
*
|
||||
* @param {Object} callbacks with success and error functions defined to be called depending on validation outcome.
|
||||
*/
|
||||
validateTemplateURL: function (callbacks) {
|
||||
var subdomains = ['a', 'b', 'c'];
|
||||
var image = new Image();
|
||||
image.onload = callbacks.success;
|
||||
image.onerror = callbacks.error;
|
||||
image.src = this.get('urlTemplate').replace(/\{s\}/g, function () {
|
||||
return subdomains[Math.floor(Math.random() * 3)];
|
||||
})
|
||||
.replace(/\{x\}/g, '0')
|
||||
.replace(/\{y\}/g, '0')
|
||||
.replace(/\{z\}/g, '0');
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user