NxShell Link color based on Objects

Started by thierryc, December 16, 2019, 04:24:34 PM

Previous topic - Next topic

thierryc

Hello,
I am adding links to my maps using nxshell.
With the following code the link is not reflecting the Object status.


from java.util import ArrayList

ltype = NetworkMapLink.NORMAL
cd = NetworkMapLink(ltype,4885,4943)
sList = ArrayList()
sList.add(4917)
sList.add(4943)
cd.setStatusObjects(sList)
cd.setRouting(NetworkMapLink.ROUTING_DIRECT)
cd.setColorSource(LinkConfig.COLOR_SOURCE_OBJECT_STATUS)

amap = s.findObjectById(5036)
mapPage = amap.createMapPage()
mapPage.addLink(cd)
                 
data = NXCObjectModificationData(5036)
data.setMapContent(mapPage.getElements(), mapPage.getLinks())
s.modifyObject(data)


There is a LinkConfig object but I don't see how it should be applied to the Links:


lc = cd.getConfig()
lc.setColorSource(LinkConfig.COLOR_SOURCE_OBJECT_STATUS)
lc.setObjectStatusList(sList)                                       



Filipp Sudanov

There's a couple of minor things that are causing issues here. NetworkMapLink expects IDs within map, not netxms object IDs, so there's a function to convert. And we need to explicitly specify that IDs of status-providing nodes are of type "Long". Here's an example of working script:

from java.util import ArrayList
from java.lang import Long

amap = s.findObjectById(2722)
mapPage = amap.createMapPage()

cd = NetworkMapLink(NetworkMapLink.NORMAL, mapPage.findObjectElement(672).id, mapPage.findObjectElement(674).id)

sList = ArrayList()
sList.add(Long(674))
sList.add(Long(672))

cd.setStatusObjects(sList)

cd.setRouting(NetworkMapLink.ROUTING_DIRECT)
cd.setColorSource(LinkConfig.COLOR_SOURCE_OBJECT_STATUS)

mapPage.addLink(cd)

data = NXCObjectModificationData(2722)
data.setMapContent(mapPage.getElements(), mapPage.getLinks())
s.modifyObject(data)