UNPKG

node-red-contrib-tak-registration

Version:

A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK

94 lines (84 loc) 2.47 kB
import ArrayList from '../../../../../java/util/ArrayList' export default class NodeBase { constructor() { NodeBase.constructor_.apply(this, arguments) } static constructor_() { this._items = new ArrayList() this._subnode = new Array(2).fill(null) } static getSubnodeIndex(interval, centre) { let subnodeIndex = -1 if (interval.min >= centre) subnodeIndex = 1 if (interval.max <= centre) subnodeIndex = 0 return subnodeIndex } hasChildren() { for (let i = 0; i < 2; i++) if (this._subnode[i] !== null) return true return false } isPrunable() { return !(this.hasChildren() || this.hasItems()) } addAllItems(items) { items.addAll(this._items) for (let i = 0; i < 2; i++) if (this._subnode[i] !== null) this._subnode[i].addAllItems(items) return items } size() { let subSize = 0 for (let i = 0; i < 2; i++) if (this._subnode[i] !== null) subSize += this._subnode[i].size() return subSize + this._items.size() } addAllItemsFromOverlapping(interval, resultItems) { if (interval !== null && !this.isSearchMatch(interval)) return null resultItems.addAll(this._items) if (this._subnode[0] !== null) this._subnode[0].addAllItemsFromOverlapping(interval, resultItems) if (this._subnode[1] !== null) this._subnode[1].addAllItemsFromOverlapping(interval, resultItems) } hasItems() { return !this._items.isEmpty() } remove(itemInterval, item) { if (!this.isSearchMatch(itemInterval)) return false let found = false for (let i = 0; i < 2; i++) if (this._subnode[i] !== null) { found = this._subnode[i].remove(itemInterval, item) if (found) { if (this._subnode[i].isPrunable()) this._subnode[i] = null break } } if (found) return found found = this._items.remove(item) return found } getItems() { return this._items } depth() { let maxSubDepth = 0 for (let i = 0; i < 2; i++) if (this._subnode[i] !== null) { const sqd = this._subnode[i].depth() if (sqd > maxSubDepth) maxSubDepth = sqd } return maxSubDepth + 1 } nodeSize() { let subSize = 0 for (let i = 0; i < 2; i++) if (this._subnode[i] !== null) subSize += this._subnode[i].nodeSize() return subSize + 1 } add(item) { this._items.add(item) } }