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
76 lines (73 loc) • 2.22 kB
JavaScript
import MonotoneChainSelectAction from '../../index/chain/MonotoneChainSelectAction'
import ItemVisitor from '../../index/ItemVisitor'
export default class MCIndexPointSnapper {
constructor () {
this._index = null
const index = arguments[0]
this._index = index
}
snap () {
if (arguments.length === 1) {
const hotPixel = arguments[0]
return this.snap(hotPixel, null, -1)
} else if (arguments.length === 3) {
const hotPixel = arguments[0]
const parentEdge = arguments[1]
const hotPixelVertexIndex = arguments[2]
const pixelEnv = hotPixel.getSafeEnvelope()
const hotPixelSnapAction = new HotPixelSnapAction(hotPixel, parentEdge, hotPixelVertexIndex)
this._index.query(pixelEnv, {
interfaces_: function () {
return [ItemVisitor]
},
visitItem: function (item) {
const testChain = item
testChain.select(pixelEnv, hotPixelSnapAction)
}
})
return hotPixelSnapAction.isNodeAdded()
}
}
interfaces_ () {
return []
}
getClass () {
return MCIndexPointSnapper
}
static get HotPixelSnapAction () { return HotPixelSnapAction }
}
class HotPixelSnapAction extends MonotoneChainSelectAction {
constructor () {
super()
this._hotPixel = null
this._parentEdge = null
this._hotPixelVertexIndex = null
this._isNodeAdded = false
const hotPixel = arguments[0]
const parentEdge = arguments[1]
const hotPixelVertexIndex = arguments[2]
this._hotPixel = hotPixel
this._parentEdge = parentEdge
this._hotPixelVertexIndex = hotPixelVertexIndex
}
isNodeAdded () {
return this._isNodeAdded
}
select () {
if (arguments.length === 2) {
const mc = arguments[0]
const startIndex = arguments[1]
const ss = mc.getContext()
if (this._parentEdge !== null) {
if (ss === this._parentEdge && startIndex === this._hotPixelVertexIndex) return null
}
this._isNodeAdded = this._hotPixel.addSnappedNode(ss, startIndex)
} else return MonotoneChainSelectAction.prototype.select.apply(this, arguments)
}
interfaces_ () {
return []
}
getClass () {
return HotPixelSnapAction
}
}