///
var RegionSelection;
(function (RegionSelection) {
function foreach(data, callback) {
Array.prototype.forEach.call(data, callback);
}
var RegionSelectionBox = (function () {
function RegionSelectionBox(selector) {
this.regions = [];
this.selector = selector;
if (this.selector.data('regions') !== undefined) {
this.fillRegions(this.selector.data('regions'));
}
this.selector.on('click', this.showBox.bind(this));
}
RegionSelectionBox.prototype.fillRegions = function (data) {
var _this = this;
foreach(eval(data), function (value) {
_this.regions.push(new Region(value));
});
};
RegionSelectionBox.prototype.showBox = function (e) {
e.preventDefault();
if (this.box === undefined) {
this.renderBox();
}
this.box.toggle();
};
RegionSelectionBox.prototype.renderBox = function () {
var box = $('
');
var itemTemplate = '{name}';
foreach(this.regions, function (region) {
var item = $(itemTemplate
.replace('{link}', region.link)
.replace('{name}', region.caption));
box.append(item);
});
box.css('display', 'none');
this.selector.parent().append(box);
this.box = box;
};
return RegionSelectionBox;
}());
var Region = (function () {
function Region(data) {
this._id = data.id;
this._caption = data.caption;
this._link = data.link;
this._icon = data.icon;
}
Object.defineProperty(Region.prototype, "id", {
get: function () {
return this._id;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Region.prototype, "caption", {
get: function () {
return this._caption;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Region.prototype, "link", {
get: function () {
return this._link;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Region.prototype, "icon", {
get: function () {
return this._icon;
},
enumerable: true,
configurable: true
});
return Region;
}());
function createSelectionBox($object) {
return new RegionSelectionBox($object);
}
RegionSelection.createSelectionBox = createSelectionBox;
})(RegionSelection || (RegionSelection = {}));