igniteui-angular-charts
Version:
Ignite UI Angular charting components for building rich data visualizations for modern web apps.
563 lines (562 loc) • 17.6 kB
JavaScript
/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { __extends, __values } from "tslib";
import { Base, runOn, delegateCombine, fromEnum, markType, String_$type } from "igniteui-angular-core";
import { Rect } from "igniteui-angular-core";
import { Dictionary$2 } from "igniteui-angular-core";
import { ITileZoomTile_$type } from "./ITileZoomTile";
import { List$1 } from "igniteui-angular-core";
import { TileZoomTileInfo } from "./TileZoomTileInfo";
import { TileZoomInfo } from "./TileZoomInfo";
import { truncate, logBase, isInfinity, isNaN_ } from "igniteui-angular-core";
import { LinkedList$1 } from "igniteui-angular-core";
/**
* @hidden
*/
var TileZoomManager = /** @class */ /*@__PURE__*/ (function (_super) {
__extends(TileZoomManager, _super);
function TileZoomManager(a, b, c) {
var _this = _super.call(this) || this;
_this.e = null;
_this.av = null;
_this.aw = null;
_this.au = null;
_this.i = false;
_this.v = 0;
_this.k = null;
_this.l = null;
_this.n = null;
_this.q = -1;
_this.ao = null;
_this.p = 1;
_this.r = 1;
_this.y = 0;
_this.o = null;
_this.m = null;
_this.d = null;
_this.f = false;
_this.h = false;
_this.e = a;
var d = _this.e;
d.actualWindowRectChanged = delegateCombine(d.actualWindowRectChanged, runOn(_this, _this.am));
var e = _this.e;
e.gridAreaRectChanged = delegateCombine(e.gridAreaRectChanged, runOn(_this, _this.an));
_this.d = new TileZoomTileCache(c, _this);
_this.o = new List$1(TileZoomTileInfo.$, 0);
_this.m = new List$1(TileZoomTile.$, 0);
_this.k = new Dictionary$2(TileZoomTile.$, ITileZoomTile_$type, 0);
_this.l = new Dictionary$2(TileZoomTile.$, ITileZoomTile_$type, 0);
_this.n = new List$1(ITileZoomTile_$type, 0);
_this.h = b;
_this.ai();
return _this;
}
TileZoomManager.prototype.ai = function () {
this.av = this.e.wk;
this.ao = this.ap(this.av);
var a = this.s();
this.ac();
this.ab();
this.q = a;
this.v = this.t(a);
this.au = new Rect(0, 0, 0, a, a);
};
TileZoomManager.prototype.ap = function (a) {
return new Rect(0, a.left, a.top, a.width * this.p, a.height * this.r);
};
TileZoomManager.prototype.t = function (a) {
var b = a / 512;
var c = logBase(b, 2);
return c;
};
TileZoomManager.prototype.s = function () {
var a = Math.max(this.ao.width, this.ao.height);
var b = 1;
var c = 512;
while (c < a) {
b++;
c = 512 * b;
}
return c;
};
TileZoomManager.prototype.an = function (a, b) {
this.ai();
this.aj();
};
TileZoomManager.prototype.am = function (a, b) {
this.aj();
};
TileZoomManager.prototype.aj = function () {
this.f = true;
this.aw = this.e.v4;
if (this.i) {
if (this.j(this.aw)) {
this.ai();
}
this.af();
this.ak();
this.ag();
}
};
TileZoomManager.prototype.j = function (a) {
var b = 1;
var c = 1;
if (this.g(a)) {
if (a.width > a.height) {
var d = 1;
if (a.height != 0) {
d = a.width / a.height;
}
var e = 0;
var f = 1;
while (f < d) {
e++;
f = truncate(Math.pow(3, e));
}
f = truncate(Math.pow(3, e - 1));
c = f;
if (c == 0 || isInfinity(c) || isNaN_(c)) {
c = 1;
}
}
else {
var g = 1;
if (a.width != 0) {
g = a.height / a.width;
}
var h = 0;
var i = 1;
while (i < g) {
h++;
i = truncate(Math.pow(3, h));
}
i = truncate(Math.pow(3, h - 1));
b = i;
if (isInfinity(b) || isNaN_(b)) {
b = 1;
}
}
}
else {
b = 1;
c = 1;
}
var j = c != this.r || b != this.p;
this.p = b;
this.r = c;
return j;
};
TileZoomManager.prototype.g = function (a) {
return (a.width / a.height) > 3 || (a.height / a.width) > 3;
};
TileZoomManager.prototype.ag = function () {
var e_1, _a;
var a = this.a();
for (var b = 0; b < this.m.count; b++) {
this.aa(a, this.m._inner[b]);
}
var c = new Dictionary$2(Base.$, ITileZoomTile_$type, 0);
try {
for (var _b = __values(fromEnum(this.l.keys)), _c = _b.next(); !_c.done; _c = _b.next()) {
var d = _c.value;
c.addItem(this.l.item(d).content, this.l.item(d));
}
}
catch (e_1_1) {
e_1 = { error: e_1_1 };
}
finally {
try {
if (_c && !_c.done && (_a = _b.return))
_a.call(_b);
}
finally {
if (e_1)
throw e_1.error;
}
}
this.e.c9.b3(c, this.n, 512);
};
TileZoomManager.prototype.aa = function (a, b) {
var c = this.as(b, a);
var d = c.left * a.b;
var e = c.top * a.a;
var f = c.right * a.b;
var g = c.bottom * a.a;
var h = d - a.f.left;
var i = e - a.f.top;
var j = f - d;
var k = g - e;
b.xPosition = h / this.p;
b.yPosition = i / this.r;
b.width = j / this.p;
b.height = k / this.r;
};
TileZoomManager.prototype.ak = function () {
var e_2, _a;
var a = this.a();
this.k.clear();
for (var b = 0; b < this.m.count; b++) {
var c = this.m._inner[b];
this.k.addItem(c, c);
}
this.m.clear();
this.l.clear();
this.n.clear();
for (var d = 0; d < this.o.count; d++) {
var e = this.o._inner[d];
var f = this.d.b(e);
if (f == null) {
f = this.b(e, a);
this.d.f(f);
}
if (this.k.containsKey(f)) {
this.k.removeItem(f);
this.l.addItem(f, f);
}
else {
this.z(f);
this.n.add(f);
}
this.m.add(f);
}
try {
for (var _b = __values(fromEnum(this.k.keys)), _c = _b.next(); !_c.done; _c = _b.next()) {
var g = _c.value;
this.ad(g);
}
}
catch (e_2_1) {
e_2 = { error: e_2_1 };
}
finally {
try {
if (_c && !_c.done && (_a = _b.return))
_a.call(_b);
}
finally {
if (e_2)
throw e_2.error;
}
}
};
TileZoomManager.prototype.ad = function (a) {
};
TileZoomManager.prototype.z = function (a) {
};
TileZoomManager.prototype.b = function (a, b) {
var c = this.c(a);
var d = this.as(c, b);
var e = this.ar();
var f = 1 / e.width;
var g = e.height;
if (e.width > e.height) {
f = e.width;
g = 1 / e.height;
}
var h = (d.left - e.left) * f;
var i = (d.top - e.top) * g;
var j = (d.right - e.left) * f;
var k = (d.bottom - e.top) * g;
d = new Rect(0, h, i, j - h, k - i);
var l = this.e.c9.bh(d, c, truncate(512));
c.content = l;
return c;
};
TileZoomManager.prototype.ar = function () {
var a = this.e.wk;
var b = this.e.v8;
if (b.isEmpty) {
return new Rect(0, 0, 0, 1, 1);
}
var c = (b.left - a.left) / a.width;
var d = (b.top - a.top) / a.height;
var e = (b.right - a.left) / a.width;
var f = (b.bottom - a.top) / a.height;
return new Rect(0, c, d, e - c, f - d);
};
TileZoomManager.prototype.as = function (a, b) {
var c = a.info.xPosition * 512;
var d = a.info.yPosition * 512;
var e = c + 512;
var f = d + 512;
var g = c / b.d;
var h = d / b.c;
var i = 512 / b.d;
var j = 512 / b.c;
return new Rect(0, g, h, i, j);
};
TileZoomManager.prototype.c = function (a) {
var b = 0;
b = this.y;
this.y++;
var c = new TileZoomTile();
c.info = a;
c.iD = b;
return c;
};
TileZoomManager.prototype.a = function () {
var a = this.aq(this.aw);
var b = this.x(a);
var c = Math.pow(2, b) * 512;
var d = c;
var e = (this.ao.width / this.au.width) * c;
var f = (this.ao.height / this.au.height) * d;
var g = (this.ao.width / a.width);
var h = (this.ao.height / a.height);
var i = a.left * g;
var j = a.top * h;
var k = a.right * g;
var l = a.bottom * h;
var m = new TileZoomInfo();
m.f = new Rect(0, i, j, k - i, l - j);
var n = this.at(this.aw, m.f, b, g, h, e, f);
var o = n.left * e;
var p = n.top * f;
var q = n.right * e;
var r = n.bottom * f;
m.g = new Rect(0, o, p, q - o, r - p);
m.e = b;
m.d = e;
m.c = f;
m.b = g;
m.a = h;
return m;
};
TileZoomManager.prototype.aq = function (a) {
return a;
};
TileZoomManager.prototype.at = function (a, b, c, d, e, f, g) {
var h = (a.left + a.right) / 2;
var i = (a.top + a.bottom) / 2;
var j = a.width;
var k = a.height;
j = j * d / f;
k = k * e / g;
var l = j / 2;
var m = k / 2;
return new Rect(0, h - l, i - m, j, k);
};
TileZoomManager.prototype.af = function () {
var a = this.a();
var b = 512 * a.b / a.d;
var c = 512 * a.a / a.c;
var d = truncate(Math.floor(a.f.left / b));
var e = truncate(Math.floor(a.f.top / c));
var f = truncate(Math.floor(a.f.right / b));
var g = truncate(Math.floor(a.f.bottom / c));
this.o.clear();
var _loop_1 = function (h) {
var _loop_2 = function (i) {
this_1.o.add(((function () {
var $ret = new TileZoomTileInfo();
$ret.xPosition = i;
$ret.yPosition = h;
$ret.zoomLevel = a.e;
return $ret;
})()));
};
for (var i = d; i <= f; i++) {
_loop_2(i);
}
};
var this_1 = this;
for (var h = e; h <= g; h++) {
_loop_1(h);
}
};
TileZoomManager.prototype.x = function (a) {
var b = 1 / a.width;
var c = 1 / a.height;
var d;
var e;
if (this.h) {
d = Math.floor(logBase(b, 2));
e = Math.floor(logBase(c, 2));
}
else {
d = Math.ceil(logBase(b, 2));
e = Math.ceil(logBase(c, 2));
}
var f = Math.min(d, e) + (this.v);
return truncate(f);
};
TileZoomManager.prototype.ab = function () {
if (!this.f) {
return;
}
this.f = false;
this.e.c9.b0();
this.d.g();
};
TileZoomManager.prototype.al = function () {
this.i = true;
};
TileZoomManager.prototype.ah = function () {
this.i = false;
this.e.c9.cm();
};
TileZoomManager.prototype.ae = function (a) {
this.e.c9.b1(a);
};
TileZoomManager.prototype.ac = function () {
this.m.clear();
this.o.clear();
this.k.clear();
};
TileZoomManager.$t = markType(TileZoomManager, 'TileZoomManager');
return TileZoomManager;
}(Base));
export { TileZoomManager };
/**
* @hidden
*/
var TileZoomTileCache = /** @class */ /*@__PURE__*/ (function (_super) {
__extends(TileZoomTileCache, _super);
function TileZoomTileCache(a, b) {
var _this = _super.call(this) || this;
_this.c = new Dictionary$2(String_$type, TileZoomTile.$, 0);
_this.d = new LinkedList$1(TileZoomTile.$);
_this.e = 0;
_this.a = null;
_this.e = a;
_this.a = b;
return _this;
}
TileZoomTileCache.prototype.g = function () {
this.c.clear();
this.d = new LinkedList$1(TileZoomTile.$);
};
TileZoomTileCache.prototype.i = function (a) {
this.d.h(a.b);
this.d.f(a);
a.b = this.d.d;
};
TileZoomTileCache.prototype.f = function (a) {
this.d.f(a);
this.c.addItem(a.info.toString(), a);
a.a = this;
a.b = this.d.d;
while (this.c.count > this.e) {
this.h(this.d.c.c);
}
};
TileZoomTileCache.prototype.h = function (a) {
this.d.h(a.b);
this.c.removeItem(a.info.toString());
this.a.ae(a);
};
TileZoomTileCache.prototype.b = function (a) {
if (this.c.containsKey(a.toString())) {
var b = this.c.item(a.toString());
b.touch();
return b;
}
return null;
};
TileZoomTileCache.$t = markType(TileZoomTileCache, 'TileZoomTileCache');
return TileZoomTileCache;
}(Base));
export { TileZoomTileCache };
/**
* @hidden
*/
var TileZoomTile = /** @class */ /*@__PURE__*/ (function (_super) {
__extends(TileZoomTile, _super);
function TileZoomTile() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._info = null;
_this.a = null;
_this.b = null;
_this._content = null;
_this._xPosition = 0;
_this._width = 0;
_this._yPosition = 0;
_this._height = 0;
_this._iD = 0;
return _this;
}
Object.defineProperty(TileZoomTile.prototype, "info", {
get: function () {
return this._info;
},
set: function (a) {
this._info = a;
},
enumerable: false,
configurable: true
});
TileZoomTile.prototype.touch = function () {
if (this.a == null) {
return;
}
this.a.i(this);
};
Object.defineProperty(TileZoomTile.prototype, "content", {
get: function () {
return this._content;
},
set: function (a) {
this._content = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TileZoomTile.prototype, "xPosition", {
get: function () {
return this._xPosition;
},
set: function (a) {
this._xPosition = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TileZoomTile.prototype, "width", {
get: function () {
return this._width;
},
set: function (a) {
this._width = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TileZoomTile.prototype, "yPosition", {
get: function () {
return this._yPosition;
},
set: function (a) {
this._yPosition = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TileZoomTile.prototype, "height", {
get: function () {
return this._height;
},
set: function (a) {
this._height = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TileZoomTile.prototype, "iD", {
get: function () {
return this._iD;
},
set: function (a) {
this._iD = a;
},
enumerable: false,
configurable: true
});
TileZoomTile.$t = markType(TileZoomTile, 'TileZoomTile', Base.$, [ITileZoomTile_$type]);
return TileZoomTile;
}(Base));
export { TileZoomTile };