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
47 lines (46 loc) • 1.35 kB
JavaScript
import Node from './Node'
import GraphComponent from './GraphComponent'
export default class Edge extends GraphComponent {
constructor() {
super()
Edge.constructor_.apply(this, arguments)
}
static constructor_() {
this._dirEdge = null
if (arguments.length === 0) {} else if (arguments.length === 2) {
const de0 = arguments[0], de1 = arguments[1]
this.setDirectedEdges(de0, de1)
}
}
isRemoved() {
return this._dirEdge === null
}
setDirectedEdges(de0, de1) {
this._dirEdge = [de0, de1]
de0.setEdge(this)
de1.setEdge(this)
de0.setSym(de1)
de1.setSym(de0)
de0.getFromNode().addOutEdge(de0)
de1.getFromNode().addOutEdge(de1)
}
getDirEdge() {
if (Number.isInteger(arguments[0])) {
const i = arguments[0]
return this._dirEdge[i]
} else if (arguments[0] instanceof Node) {
const fromNode = arguments[0]
if (this._dirEdge[0].getFromNode() === fromNode) return this._dirEdge[0]
if (this._dirEdge[1].getFromNode() === fromNode) return this._dirEdge[1]
return null
}
}
remove() {
this._dirEdge = null
}
getOppositeNode(node) {
if (this._dirEdge[0].getFromNode() === node) return this._dirEdge[0].getToNode()
if (this._dirEdge[1].getFromNode() === node) return this._dirEdge[1].getToNode()
return null
}
}