diff --git a/dist/olHelpers/SortedFeatures.d.ts b/dist/olHelpers/SortedFeatures.d.ts index 4fa25de6f7ffc76acf159d42fad6efab91dcda03..dcd97375ada9055285cd707383c2980dd2149832 100644 --- a/dist/olHelpers/SortedFeatures.d.ts +++ b/dist/olHelpers/SortedFeatures.d.ts @@ -6,11 +6,6 @@ export declare class SortedFeatures { sortedFeatures: Feature[]; propertyName: string; _propertyType: string; - /** - * - * @param {Array<Feature>} features array of ol features - * @param {string} propertyName - the property name to use for lookup - */ constructor(features: Feature[], propertyName: string); /** * recursive search to find the value diff --git a/dist/olHelpers/SortedFeatures.js b/dist/olHelpers/SortedFeatures.js index 7fc78684445d9832c94d4f227fb37447d32e197f..7f94bee4bdd0f1990440088a5dc0722a059d2de9 100644 --- a/dist/olHelpers/SortedFeatures.js +++ b/dist/olHelpers/SortedFeatures.js @@ -9,11 +9,6 @@ let nm = provide_1.default('olHelpers'); * take an array of features and sort by a given property name */ class SortedFeatures { - /** - * - * @param {Array<Feature>} features array of ol features - * @param {string} propertyName - the property name to use for lookup - */ constructor(features, propertyName) { this.sortedFeatures = features; this.propertyName = propertyName; @@ -52,61 +47,62 @@ class SortedFeatures { * @returns {Feature|undefined} the feature matching the lookup */ getFeature(propertyValue, exactMatch = false, sortedFeatures) { - if (typeof sortedFeatures == 'undefined') { - sortedFeatures = this.sortedFeatures; - } - if (sortedFeatures.length == 0) { - return undefined; - } - if (sortedFeatures.length == 1) { - if (exactMatch) { - if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue) { - return sortedFeatures[0]; - } - else { - return undefined; - } - } - else { - return sortedFeatures[0]; - } - } - let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; - let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; - if (exactMatch) { - if (lowProp == propertyValue) { - return sortedFeatures[0]; - } - else if (propertyValue < lowProp) { - return undefined; - } - else if (highProp == propertyValue) { - return sortedFeatures[sortedFeatures.length - 1]; - } - else if (propertyValue > highProp) { - return undefined; - } - } - else { - if (propertyValue <= lowProp) { - return sortedFeatures[0]; - } - else if (propertyValue >= highProp) { - return sortedFeatures[sortedFeatures.length - 1]; - } - } - let midIndex = Math.floor(sortedFeatures.length / 2); - let midFeature = sortedFeatures[midIndex]; - let midProperty = midFeature.getProperties()[this.propertyName]; - if (midProperty === propertyValue) { - return midFeature; - } - if (propertyValue < midProperty) { - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); - } - else { - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); - } + // if (typeof sortedFeatures == 'undefined'){ + // sortedFeatures = this.sortedFeatures; + // } + // + // + // if (sortedFeatures.length == 0){ + // return undefined; + // } + // + // if (sortedFeatures.length == 1){ + // if (exactMatch){ + // if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){ + // return sortedFeatures[0]; + // } else { + // return undefined; + // } + // } else { + // return sortedFeatures[0]; + // } + // } + // + // let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; + // let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; + // + // if (exactMatch){ + // if (lowProp == propertyValue){ + // return sortedFeatures[0]; + // } else if (propertyValue < lowProp){ + // return undefined; + // } else if (highProp == propertyValue){ + // return sortedFeatures[sortedFeatures.length - 1]; + // } else if (propertyValue > highProp){ + // return undefined; + // } + // } else { + // if (propertyValue <= lowProp){ + // return sortedFeatures[0]; + // } else if (propertyValue >= highProp){ + // return sortedFeatures[sortedFeatures.length - 1]; + // } + // } + // + // let midIndex = Math.floor(sortedFeatures.length / 2); + // let midFeature = sortedFeatures[midIndex]; + // let midProperty = midFeature.getProperties()[this.propertyName]; + // + // if (midProperty === propertyValue){ + // return midFeature; + // } + // + // if (propertyValue < midProperty){ + // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); + // } else { + // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); + // } + return null; } } exports.SortedFeatures = SortedFeatures; diff --git a/dist/olHelpers/SortedFeatures.js.map b/dist/olHelpers/SortedFeatures.js.map index 76ba57c77ba4a018ea84c0ef797b34607e86b2b4..e9cc934a3c398de284a507e9ce79213b2c3f6ec6 100644 --- a/dist/olHelpers/SortedFeatures.js.map +++ b/dist/olHelpers/SortedFeatures.js.map @@ -1 +1 @@ -{"version":3,"file":"SortedFeatures.js","sourceRoot":"","sources":["../../src/olHelpers/SortedFeatures.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by gavorhes on 12/23/2015.\r\n */\r\nimport provide from '../util/provide';\r\nimport Feature from 'ol/Feature';\r\nlet nm = provide('olHelpers');\r\n\r\n/**\r\n * take an array of features and sort by a given property name\r\n */\r\nexport class SortedFeatures {\r\n sortedFeatures: Feature[];\r\n propertyName: string;\r\n _propertyType: string;\r\n\r\n /**\r\n *\r\n * @param {Array<Feature>} features array of ol features\r\n * @param {string} propertyName - the property name to use for lookup\r\n */\r\n constructor(features: Feature[], propertyName: string) {\r\n this.sortedFeatures = features;\r\n this.propertyName = propertyName;\r\n\r\n // if (this.sortedFeatures.length > 0) {\r\n // this._propertyType = typeof this.sortedFeatures[0].getProperties()[this.propertyName];\r\n //\r\n // // let __this = this;\r\n // this.sortedFeatures.sort( (a: Feature, b: Feature) : number =>{\r\n // if (this._propertyType == 'number'){\r\n // let aMinusB = a.getProperties()[this.propertyName] - b.getProperties()[this.propertyName];\r\n // if (aMinusB == 0){\r\n // return 0;\r\n // } else {\r\n // return aMinusB > 0 ? 1 : -1;\r\n // }\r\n // } else if (this._propertyType == 'string'){\r\n // let propA = a.getProperties()[this.propertyName] || '';\r\n // let propB = b.getProperties()[this.propertyName] || '';\r\n // propA = propA.toString().trim();\r\n // propB = propB.toString().trim();\r\n //\r\n // if (propA == propB){\r\n // return 0;\r\n // } else {\r\n // return propA > propB ? 1 : 0;\r\n // }\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * recursive search to find the value\r\n * @param {number|string} propertyValue - the property value to search for\r\n * @param {boolean} [exactMatch=false] if only an exact match should be returned\r\n * @param {Array} [sortedFeatures=this.sortedFeatures] - the candidate features\r\n * @returns {Feature|undefined} the feature matching the lookup\r\n */\r\n getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature {\r\n if (typeof sortedFeatures == 'undefined'){\r\n sortedFeatures = this.sortedFeatures;\r\n }\r\n\r\n\r\n if (sortedFeatures.length == 0){\r\n return undefined;\r\n }\r\n\r\n if (sortedFeatures.length == 1){\r\n if (exactMatch){\r\n if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){\r\n return sortedFeatures[0];\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return sortedFeatures[0];\r\n }\r\n }\r\n\r\n let lowProp = sortedFeatures[0].getProperties()[this.propertyName];\r\n let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName];\r\n\r\n if (exactMatch){\r\n if (lowProp == propertyValue){\r\n return sortedFeatures[0];\r\n } else if (propertyValue < lowProp){\r\n return undefined;\r\n } else if (highProp == propertyValue){\r\n return sortedFeatures[sortedFeatures.length - 1];\r\n } else if (propertyValue > highProp){\r\n return undefined;\r\n }\r\n } else {\r\n if (propertyValue <= lowProp){\r\n return sortedFeatures[0];\r\n } else if (propertyValue >= highProp){\r\n return sortedFeatures[sortedFeatures.length - 1];\r\n }\r\n }\r\n\r\n let midIndex = Math.floor(sortedFeatures.length / 2);\r\n let midFeature = sortedFeatures[midIndex];\r\n let midProperty = midFeature.getProperties()[this.propertyName];\r\n\r\n if (midProperty === propertyValue){\r\n return midFeature;\r\n }\r\n\r\n if (propertyValue < midProperty){\r\n return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex));\r\n } else {\r\n return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex));\r\n }\r\n }\r\n}\r\n\r\nnm.SortedFeatures = SortedFeatures;\r\nexport default SortedFeatures;\r\n\r\n"]} \ No newline at end of file +{"version":3,"file":"SortedFeatures.js","sourceRoot":"","sources":["../../src/olHelpers/SortedFeatures.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,6CAAsC;AAEtC,IAAI,EAAE,GAAG,iBAAO,CAAC,WAAW,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAa,cAAc;IAKvB,YAAY,QAAmB,EAAE,YAAoB;QACjD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,wCAAwC;QACxC,6FAA6F;QAC7F,EAAE;QACF,4BAA4B;QAC5B,sEAAsE;QACtE,+CAA+C;QAC/C,yGAAyG;QACzG,iCAAiC;QACjC,4BAA4B;QAC5B,uBAAuB;QACvB,+CAA+C;QAC/C,gBAAgB;QAChB,sDAAsD;QACtD,sEAAsE;QACtE,sEAAsE;QACtE,+CAA+C;QAC/C,+CAA+C;QAC/C,EAAE;QACF,mCAAmC;QACnC,4BAA4B;QAC5B,uBAAuB;QACvB,gDAAgD;QAChD,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,IAAI;IACR,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,aAA4B,EAAE,aAAsB,KAAK,EAAE,cAA+B;QACrG,iDAAiD;QACjD,gDAAgD;QAChD,QAAQ;QACR,EAAE;QACF,EAAE;QACF,uCAAuC;QACvC,4BAA4B;QAC5B,QAAQ;QACR,EAAE;QACF,uCAAuC;QACvC,2BAA2B;QAC3B,0FAA0F;QAC1F,4CAA4C;QAC5C,uBAAuB;QACvB,oCAAoC;QACpC,gBAAgB;QAChB,mBAAmB;QACnB,wCAAwC;QACxC,YAAY;QACZ,QAAQ;QACR,EAAE;QACF,0EAA0E;QAC1E,mGAAmG;QACnG,EAAE;QACF,uBAAuB;QACvB,yCAAyC;QACzC,wCAAwC;QACxC,+CAA+C;QAC/C,gCAAgC;QAChC,iDAAiD;QACjD,gEAAgE;QAChE,iDAAiD;QACjD,gCAAgC;QAChC,YAAY;QACZ,eAAe;QACf,yCAAyC;QACzC,wCAAwC;QACxC,iDAAiD;QACjD,gEAAgE;QAChE,YAAY;QACZ,QAAQ;QACR,EAAE;QACF,4DAA4D;QAC5D,iDAAiD;QACjD,uEAAuE;QACvE,EAAE;QACF,2CAA2C;QAC3C,6BAA6B;QAC7B,QAAQ;QACR,EAAE;QACF,wCAAwC;QACxC,gGAAgG;QAChG,eAAe;QACf,6FAA6F;QAC7F,QAAQ;QACJ,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAtGD,wCAsGC;AAED,EAAE,CAAC,cAAc,GAAG,cAAc,CAAC;AACnC,kBAAe,cAAc,CAAC","sourcesContent":["/**\r\n * Created by gavorhes on 12/23/2015.\r\n */\r\nimport provide from '../util/provide';\r\nimport Feature from 'ol/Feature';\r\nlet nm = provide('olHelpers');\r\n\r\n/**\r\n * take an array of features and sort by a given property name\r\n */\r\nexport class SortedFeatures {\r\n sortedFeatures: Feature[];\r\n propertyName: string;\r\n _propertyType: string;\r\n\r\n constructor(features: Feature[], propertyName: string) {\r\n this.sortedFeatures = features;\r\n this.propertyName = propertyName;\r\n\r\n // if (this.sortedFeatures.length > 0) {\r\n // this._propertyType = typeof this.sortedFeatures[0].getProperties()[this.propertyName];\r\n //\r\n // // let __this = this;\r\n // this.sortedFeatures.sort( (a: Feature, b: Feature) : number =>{\r\n // if (this._propertyType == 'number'){\r\n // let aMinusB = a.getProperties()[this.propertyName] - b.getProperties()[this.propertyName];\r\n // if (aMinusB == 0){\r\n // return 0;\r\n // } else {\r\n // return aMinusB > 0 ? 1 : -1;\r\n // }\r\n // } else if (this._propertyType == 'string'){\r\n // let propA = a.getProperties()[this.propertyName] || '';\r\n // let propB = b.getProperties()[this.propertyName] || '';\r\n // propA = propA.toString().trim();\r\n // propB = propB.toString().trim();\r\n //\r\n // if (propA == propB){\r\n // return 0;\r\n // } else {\r\n // return propA > propB ? 1 : 0;\r\n // }\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * recursive search to find the value\r\n * @param {number|string} propertyValue - the property value to search for\r\n * @param {boolean} [exactMatch=false] if only an exact match should be returned\r\n * @param {Array} [sortedFeatures=this.sortedFeatures] - the candidate features\r\n * @returns {Feature|undefined} the feature matching the lookup\r\n */\r\n getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature {\r\n // if (typeof sortedFeatures == 'undefined'){\r\n // sortedFeatures = this.sortedFeatures;\r\n // }\r\n //\r\n //\r\n // if (sortedFeatures.length == 0){\r\n // return undefined;\r\n // }\r\n //\r\n // if (sortedFeatures.length == 1){\r\n // if (exactMatch){\r\n // if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){\r\n // return sortedFeatures[0];\r\n // } else {\r\n // return undefined;\r\n // }\r\n // } else {\r\n // return sortedFeatures[0];\r\n // }\r\n // }\r\n //\r\n // let lowProp = sortedFeatures[0].getProperties()[this.propertyName];\r\n // let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName];\r\n //\r\n // if (exactMatch){\r\n // if (lowProp == propertyValue){\r\n // return sortedFeatures[0];\r\n // } else if (propertyValue < lowProp){\r\n // return undefined;\r\n // } else if (highProp == propertyValue){\r\n // return sortedFeatures[sortedFeatures.length - 1];\r\n // } else if (propertyValue > highProp){\r\n // return undefined;\r\n // }\r\n // } else {\r\n // if (propertyValue <= lowProp){\r\n // return sortedFeatures[0];\r\n // } else if (propertyValue >= highProp){\r\n // return sortedFeatures[sortedFeatures.length - 1];\r\n // }\r\n // }\r\n //\r\n // let midIndex = Math.floor(sortedFeatures.length / 2);\r\n // let midFeature = sortedFeatures[midIndex];\r\n // let midProperty = midFeature.getProperties()[this.propertyName];\r\n //\r\n // if (midProperty === propertyValue){\r\n // return midFeature;\r\n // }\r\n //\r\n // if (propertyValue < midProperty){\r\n // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex));\r\n // } else {\r\n // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex));\r\n // }\r\n return null;\r\n }\r\n}\r\n\r\nnm.SortedFeatures = SortedFeatures;\r\nexport default SortedFeatures;\r\n\r\n"]} \ No newline at end of file diff --git a/src/olHelpers/SortedFeatures.ts b/src/olHelpers/SortedFeatures.ts index 3a6f56d5dfe043010ee0406ede2a7a3c6179ec21..c1f3bff6473c476ec6d04ec87488ac9161df0fde 100644 --- a/src/olHelpers/SortedFeatures.ts +++ b/src/olHelpers/SortedFeatures.ts @@ -13,11 +13,6 @@ export class SortedFeatures { propertyName: string; _propertyType: string; - /** - * - * @param {Array<Feature>} features array of ol features - * @param {string} propertyName - the property name to use for lookup - */ constructor(features: Feature[], propertyName: string) { this.sortedFeatures = features; this.propertyName = propertyName; @@ -58,61 +53,62 @@ export class SortedFeatures { * @returns {Feature|undefined} the feature matching the lookup */ getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature { - if (typeof sortedFeatures == 'undefined'){ - sortedFeatures = this.sortedFeatures; - } - - - if (sortedFeatures.length == 0){ - return undefined; - } - - if (sortedFeatures.length == 1){ - if (exactMatch){ - if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){ - return sortedFeatures[0]; - } else { - return undefined; - } - } else { - return sortedFeatures[0]; - } - } - - let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; - let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; - - if (exactMatch){ - if (lowProp == propertyValue){ - return sortedFeatures[0]; - } else if (propertyValue < lowProp){ - return undefined; - } else if (highProp == propertyValue){ - return sortedFeatures[sortedFeatures.length - 1]; - } else if (propertyValue > highProp){ - return undefined; - } - } else { - if (propertyValue <= lowProp){ - return sortedFeatures[0]; - } else if (propertyValue >= highProp){ - return sortedFeatures[sortedFeatures.length - 1]; - } - } - - let midIndex = Math.floor(sortedFeatures.length / 2); - let midFeature = sortedFeatures[midIndex]; - let midProperty = midFeature.getProperties()[this.propertyName]; - - if (midProperty === propertyValue){ - return midFeature; - } - - if (propertyValue < midProperty){ - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); - } else { - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); - } + // if (typeof sortedFeatures == 'undefined'){ + // sortedFeatures = this.sortedFeatures; + // } + // + // + // if (sortedFeatures.length == 0){ + // return undefined; + // } + // + // if (sortedFeatures.length == 1){ + // if (exactMatch){ + // if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){ + // return sortedFeatures[0]; + // } else { + // return undefined; + // } + // } else { + // return sortedFeatures[0]; + // } + // } + // + // let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; + // let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; + // + // if (exactMatch){ + // if (lowProp == propertyValue){ + // return sortedFeatures[0]; + // } else if (propertyValue < lowProp){ + // return undefined; + // } else if (highProp == propertyValue){ + // return sortedFeatures[sortedFeatures.length - 1]; + // } else if (propertyValue > highProp){ + // return undefined; + // } + // } else { + // if (propertyValue <= lowProp){ + // return sortedFeatures[0]; + // } else if (propertyValue >= highProp){ + // return sortedFeatures[sortedFeatures.length - 1]; + // } + // } + // + // let midIndex = Math.floor(sortedFeatures.length / 2); + // let midFeature = sortedFeatures[midIndex]; + // let midProperty = midFeature.getProperties()[this.propertyName]; + // + // if (midProperty === propertyValue){ + // return midFeature; + // } + // + // if (propertyValue < midProperty){ + // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); + // } else { + // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); + // } + return null; } }