@progress/kendo-charts
Version:
Kendo UI platform-independent Charts library
149 lines (113 loc) • 3.63 kB
JavaScript
import {
addClass,
defined,
Observable,
valueOrDefault,
deepExtend,
setDefaultOptions
} from '../common';
import {
appendHtml,
removeChildren
} from './utils';
export var Attribution = (function (Observable) {
function Attribution(element, options) {
Observable.call(this);
this.element = element;
this._initOptions(options);
this.items = [];
addClass(this.element, 'k-widget k-attribution');
}
if ( Observable ) Attribution.__proto__ = Observable;
Attribution.prototype = Object.create( Observable && Observable.prototype );
Attribution.prototype.constructor = Attribution;
Attribution.prototype._initOptions = function _initOptions (options) {
this.options = deepExtend({}, this.options, options);
};
Attribution.prototype.filter = function filter (extent, zoom) {
this._extent = extent;
this._zoom = zoom;
this._render();
};
Attribution.prototype.add = function add (item) {
var newItem = item;
if (defined(item)) {
if (typeof item === 'string') {
newItem = {
text: item
};
}
this.items.push(newItem);
this._render();
}
};
Attribution.prototype.remove = function remove (text) {
var this$1 = this;
var result = [];
for (var i = 0; i < this.items.length; i++) {
var item = this$1.items[i];
if (item.text !== text) {
result.push(item);
}
}
this.items = result;
this._render();
};
Attribution.prototype.clear = function clear () {
this.items = [];
removeChildren(this.element);
};
Attribution.prototype._render = function _render () {
var this$1 = this;
var result = [];
for (var i = 0; i < this.items.length; i++) {
var item = this$1.items[i];
var text = this$1._itemText(item);
if (text !== '') {
result.push(text);
}
}
if (result.length > 0) {
removeChildren(this.element);
var html = result.join(this.options.separator);
appendHtml(html, this.element);
this.showElement();
} else {
this.hideElement();
}
};
Attribution.prototype.hideElement = function hideElement () {
this.element.style.display = "none";
};
Attribution.prototype.showElement = function showElement () {
this.element.style.display = "";
};
Attribution.prototype._itemText = function _itemText (item) {
var text = '';
var inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);
var inArea = this._inArea(item.extent);
if (inZoomLevel && inArea) {
text += item.text;
}
return text;
};
Attribution.prototype._inZoomLevel = function _inZoomLevel (min, max) {
var result = true;
var newMin = valueOrDefault(min, -Number.MAX_VALUE);
var newMax = valueOrDefault(max, Number.MAX_VALUE);
result = this._zoom > newMin && this._zoom < newMax;
return result;
};
Attribution.prototype._inArea = function _inArea (area) {
var result = true;
if (area) {
result = area.contains(this._extent);
}
return result;
};
return Attribution;
}(Observable));
setDefaultOptions(Attribution, {
name: 'Attribution',
separator: ' | '
});