igniteui-react-core
Version:
Ignite UI React Core.
528 lines (527 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 { DependencyObjectNotifier } from "./DependencyObjectNotifier";
import { IList$1_$type, BaseError, delegateCombine, Point_$type, fromEnum, markType, markDep } from "./type";
import { ShapefileRecord } from "./ShapefileRecord";
import { INotifyCollectionChanged_$type } from "./INotifyCollectionChanged";
import { Rect } from "./Rect";
import { DependencyProperty } from "./DependencyProperty";
import { ObservableCollection$1 } from "./ObservableCollection$1";
import { List$1 } from "./List$1";
import { AsyncCompletedEventArgs } from "./AsyncCompletedEventArgs";
import { BinaryReader } from "./BinaryReader";
import { BinaryFileDownloader } from "./BinaryFileDownloader";
import { ShapeFilterRecordEventArgs } from "./ShapeFilterRecordEventArgs";
import { ShapeFileUtil } from "./ShapeFileUtil";
import { PropertyMetadata } from "./PropertyMetadata";
import { isNaN_, isInfinity } from "./number";
/**
* @hidden
*/
export let ShapefileConverter = /*@__PURE__*/ (() => {
class ShapefileConverter extends DependencyObjectNotifier {
get name() {
return this._name;
}
set name(a) {
this._name = a;
}
constructor() {
super();
this._name = null;
this.a8 = null;
this.a7 = Rect.empty;
this._shapeHeader = null;
this.q = false;
this.importPending = null;
this.importCompleted = null;
this.x = null;
this.collectionChanged = null;
this.filter = null;
this.records = new ObservableCollection$1(ShapefileRecord.$, 0);
let a = this.records;
a.collectionChanged = delegateCombine(a.collectionChanged, (a, b) => {
if (this.collectionChanged != null) {
this.collectionChanged(this, b);
}
});
}
get worldRect() {
return this.a8;
}
set worldRect(a) {
if (Rect.l_op_Inequality(this.a8, a)) {
let b = this.a8;
this.a8 = a;
this.aw("WorldRect", b, this.a8);
}
}
get computedWorldRect() {
return this.a7;
}
set computedWorldRect(a) {
if (Rect.l_op_Inequality(this.a7, a)) {
let b = this.a7;
this.a7 = a;
this.aw("ComputedWorldRect", b, this.a7);
}
}
getWorldBounds(a) {
if (a && this.computedWorldRect.isEmpty == false) {
return this.computedWorldRect;
}
return this.worldRect;
}
setWorldBounds(a, b) {
if (a) {
this.computedWorldRect = b;
}
else {
this.worldRect = b;
}
}
get shapeType() {
return this.shapeHeader.a;
}
get shapeHeader() {
return this._shapeHeader;
}
set shapeHeader(a) {
this._shapeHeader = a;
}
aw(a, b, c) {
switch (a) {
case ShapefileConverter.$$p[2]:
case ShapefileConverter.$$p[0]:
if (this.shapefileSource != null && this.databaseSource != null) {
this.at();
}
break;
}
this.j(a);
}
sendImportCompleted() {
if (this.deferImportCompleted && this.q) {
this.deferImportCompleted = false;
if (this.importCompleted != null) {
this.importCompleted(this, new AsyncCompletedEventArgs(null, false, null));
}
}
}
au(a) {
this.q = true;
if (this.deferImportCompleted) {
if (this.importPending != null) {
this.importPending(this, a);
}
return;
}
if (this.importCompleted != null) {
this.importCompleted(this, a);
}
}
at() {
this.q = false;
let a = null;
let b = null;
let c = () => {
if (a != null && b != null) {
this.av(a, b);
this.au(new AsyncCompletedEventArgs(null, false, null));
}
};
BinaryFileDownloader.a(this.shapefileSource, (d) => {
a = new BinaryReader(0, d, false);
c();
}, (d) => {
throw new BaseError(1, "shape file download error: " + d);
});
BinaryFileDownloader.a(this.databaseSource, (d) => {
b = new BinaryReader(0, d, false);
c();
}, (d) => {
throw new BaseError(1, "dbf file download error: " + d);
});
}
av(a, b) {
this.shapeHeader = ShapeFileUtil.a(a, b);
this.worldRect = this.shapeHeader.e;
let c = a.currentPosition;
let d = a.length;
let e = Rect.empty;
while (c < d) {
let f = ShapeFileUtil.f(this.shapeHeader, a, b);
let record_ = f;
let g = true;
if (this.filter != null) {
let h = new ShapeFilterRecordEventArgs();
h.b = true;
h.a = f;
this.filter(this, h);
if (!h.b) {
g = false;
}
}
if (g) {
this.records.add(f);
if (e.isEmpty) {
e = f.bounds;
}
else {
e.union(f.bounds);
}
}
c = a.currentPosition;
d = a.length;
}
this.computedWorldRect = e.isEmpty ? this.worldRect : e;
}
get records() {
return this.x;
}
set records(a) {
this.x = a;
}
indexOf(a) {
return this.x.indexOf(a);
}
insert(a, b) {
this.x.insert(a, b);
}
removeAt(a) {
this.x.removeAt(a);
}
item(a, b) {
if (arguments.length === 2) {
this.x.item(a, b);
return b;
}
else {
return this.x._inner[a];
}
}
add(a) {
this.x.add(a);
}
clear() {
this.x.clear();
}
contains(a) {
return this.x.contains(a);
}
copyTo(a, b) {
this.x.copyTo(a, b);
}
get count() {
return this.x.count;
}
get isReadOnly() {
return this.x.isReadOnly;
}
remove(a) {
return this.x.remove(a);
}
getEnumerator() {
return this.x.getEnumerator();
}
getEnumeratorObject() {
return this.getEnumerator();
}
getPointData() {
return new List$1(ShapefileRecord.$, 1, this.records);
}
getRecordsCount() {
if (this.records == null) {
return 0;
}
return this.records.count;
}
getRecord(a) {
return this.records._inner[a];
}
getRecordBounds(a) {
if (this.records == null) {
return Rect.empty;
}
if (a < 0 || a > this.records.count - 1) {
return Rect.empty;
}
return this.records._inner[a].bounds;
}
getRecordFieldNames(a) {
if (this.records == null) {
return null;
}
if (a < 0 || a > this.records.count - 1) {
return null;
}
let b = this.records._inner[a];
if (b == null || b.fieldsNames == null) {
return null;
}
return b.fieldsNames.toArray();
}
getRecordValue(a, b) {
if (this.records == null) {
return null;
}
if (a < 0 || a > this.records.count - 1) {
return null;
}
let c = this.records._inner[a];
if (c == null || c.fieldsNames == null) {
return null;
}
return c.getFieldValue(b);
}
removeRecord(a) {
if (this.records == null) {
return;
}
if (a < 0 || a > this.records.count - 1) {
return;
}
this.records.removeAt(a);
}
shiftAllShapes(a, b) {
if (this.records == null) {
return;
}
for (let c = 0; c < this.records.count; c++) {
this.shiftShapes(c, a, b);
}
}
shiftShapes(a, b, c) {
if (this.records == null) {
return;
}
if (a < 0 || a > this.records.count - 1) {
return;
}
let d = new List$1(List$1.$.specialize(Point_$type), 0);
let e = this.records._inner[a].points;
for (let f of fromEnum(e)) {
let g = ShapefileConverter.w(f, b, c);
for (let h of fromEnum(g)) {
d.add(h);
}
}
this.records._inner[a].points = d;
}
static ai(a, b) {
return ShapefileConverter.ag(a, b, -180, 180);
}
static ah(a, b) {
return ShapefileConverter.ag(a, b, -85.05112878, 85.05112878);
}
static ag(a, b, c, d) {
let e = a;
if (isNaN_(b) || b == 0) {
return e;
}
if (e + b < c) {
e += 2 * d;
e += b;
}
else if (e + b > d) {
e -= 2 * d;
e += b;
}
else {
e += b;
}
return e;
}
static isValidGeoPoint(a) {
if (a.x < -180 || a.x > 180) {
return false;
}
if (a.y < -90 || a.y > 90) {
return false;
}
return true;
}
static isValidGeoShape(a) {
if (a.count < 3) {
return false;
}
for (let b of fromEnum(a)) {
if (!ShapefileConverter.isValidGeoPoint(b)) {
return false;
}
}
return true;
}
static w(a, b, c, d = "") {
let e = 1.7976931348623157E+308;
let f = -1.7976931348623157E+308;
let g = new List$1(Point_$type, 0);
for (let h of fromEnum(a)) {
let i = ShapefileConverter.ag(h.x, b, -180, 180);
let j = ShapefileConverter.ag(h.y, c, -85.05112878, 85.05112878);
e = Math.min(e, i);
f = Math.max(f, i);
g.add({ $type: Point_$type, x: i, y: j });
}
let k = new List$1(List$1.$.specialize(Point_$type), 0);
let l = ShapefileConverter.ba(g);
let m = l.width;
if (l.left >= -180 && l.right <= 180 && l.width > 180) {
let n = new List$1(Point_$type, 0);
let o = new List$1(Point_$type, 0);
for (let p of fromEnum(g)) {
if (p.x >= -180 && p.x < 0) {
n.add(p);
}
else {
o.add(p);
}
}
let q = ShapefileConverter.ba(n);
let r = q.width;
let s = ShapefileConverter.ba(o);
let t = s.width;
if (ShapefileConverter.isValidGeoShape(n)) {
k.add(n);
}
if (ShapefileConverter.isValidGeoShape(o)) {
k.add(o);
}
}
else {
if (ShapefileConverter.isValidGeoShape(g)) {
k.add(g);
}
}
return k;
}
getMaxLongitude(a, b, c, d) {
if (this.records == null) {
return NaN;
}
if (a < 0 || a > this.records.count - 1) {
return NaN;
}
let e = this.records._inner[a].points;
let f = c;
if (b) {
let g = ShapefileConverter.v(e);
for (let h of fromEnum(g)) {
if (h.x < d) {
f = Math.max(f, h.x);
}
}
}
else {
for (let i of fromEnum(e)) {
for (let j of fromEnum(i)) {
if (j.x < d) {
f = Math.max(f, j.x);
}
}
}
}
return f;
}
setRecordValue(a, b, c) {
if (this.records == null) {
return;
}
if (a < 0 || a > this.records.count - 1) {
return;
}
let d = this.records._inner[a];
if (d == null || d.fieldsNames == null) {
return;
}
d.setFieldValue(b, c);
}
getRecordValues(a) {
if (this.records == null) {
return null;
}
let b = new Array(this.records.count);
for (let c = 0; c < this.records.count; c++) {
let d = this.getRecordValue(c, a);
b[c] = d;
}
return b;
}
setRecordValues(a, b) {
if (this.records == null) {
return;
}
let c = Math.min(b.length, this.records.count);
for (let d = 0; d < c; d++) {
this.setRecordValue(d, a, b[d]);
}
}
static ba(a) {
let b = Number.POSITIVE_INFINITY;
let c = Number.POSITIVE_INFINITY;
let d = Number.NEGATIVE_INFINITY;
let e = Number.NEGATIVE_INFINITY;
for (let f = 0; f < a.count; f++) {
let g = a._inner[f];
b = Math.min(b, g.x);
c = Math.min(c, g.y);
d = Math.max(d, g.x);
e = Math.max(e, g.y);
}
if (isInfinity(b) || isInfinity(c) || isInfinity(c) || isInfinity(e)) {
return Rect.empty;
}
return new Rect(0, b, c, d - b, e - c);
}
getLargestShapeBoundsForRecord(a) {
if (this.records == null) {
return Rect.empty;
}
if (a < 0 || a > this.records.count - 1) {
return Rect.empty;
}
let b = this.records._inner[a];
if (b == null || b.fieldsNames == null) {
return Rect.empty;
}
let c = ShapefileConverter.v(b.points);
return ShapefileConverter.ba(c);
}
static v(a) {
let b = new List$1(Point_$type, 0);
let c = -1.7976931348623157E+308;
for (let d of fromEnum(a)) {
let e = 1.7976931348623157E+308;
let f = -1.7976931348623157E+308;
let g = 1.7976931348623157E+308;
let h = -1.7976931348623157E+308;
for (let i of fromEnum(d)) {
g = Math.min(g, i.y);
h = Math.max(h, i.y);
e = Math.min(e, i.x);
f = Math.max(f, i.x);
}
let j = f - e;
let k = h - g;
let l = new Rect(0, e, g, j, k);
let m = l.width * l.height;
if (m > c) {
c = m;
b = d;
}
}
return b;
}
}
ShapefileConverter.$t = /*@__PURE__*/ markType(ShapefileConverter, 'ShapefileConverter', DependencyObjectNotifier.$, [/*@__PURE__*/ IList$1_$type.specialize(ShapefileRecord.$), INotifyCollectionChanged_$type]);
ShapefileConverter.minLatitude = -85.05112878;
ShapefileConverter.maxLatitude = 85.05112878;
ShapefileConverter.minLongitude = -180;
ShapefileConverter.maxLongitude = 180;
ShapefileConverter.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, ShapefileConverter, 'aw', ['DatabaseSource', [2, null], 'DeferImportCompleted', [0, false], 'ShapefileSource', [2, null]]);
return ShapefileConverter;
})();