instance discovery DCIs not show on object overview page or in object tooltips; objec...
authorVictor Kirhenshtein <victor@netxms.org>
Sat, 28 May 2016 16:40:18 +0000 (19:40 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Sat, 28 May 2016 16:40:18 +0000 (19:40 +0300)
include/nms_cscp.h
src/java/client/netxms-base/src/main/java/org/netxms/base/NXCPCodes.java
src/java/client/netxms-client/src/main/java/org/netxms/client/objects/DataCollectionTarget.java
src/java/netxms-eclipse/ObjectView/src/org/netxms/ui/eclipse/objectview/widgets/RackWidget.java
src/server/core/dctarget.cpp
webui/webapp/ObjectView/src/org/netxms/ui/eclipse/objectview/widgets/RackWidget.java

index c3508b2..44f85e3 100644 (file)
@@ -1125,6 +1125,7 @@ typedef struct
 #define VID_TOP_BOTTOM              ((UINT32)539)
 #define VID_AUTH_TOKEN              ((UINT32)540)
 #define VID_REPOSITORY_ID           ((UINT32)541)
+#define VID_TOOLTIP_DCI_COUNT       ((UINT32)542)
 
 // Base variabe for single threshold in message
 #define VID_THRESHOLD_BASE          ((UINT32)0x00800000)
@@ -1182,6 +1183,9 @@ typedef struct
 // Base value for overview DCI list
 #define VID_OVERVIEW_DCI_LIST_BASE  ((UINT32)0x72000000)
 
+// Base value for tooltip DCI list
+#define VID_TOOLTIP_DCI_LIST_BASE   ((UINT32)0x73000000)
+
 // IP address list base
 #define VID_IP_ADDRESS_LIST_BASE    ((UINT32)0x7F000000)
 
index edccea0..fbd0ef7 100644 (file)
@@ -913,6 +913,7 @@ public class NXCPCodes
    public static final long VID_TOP_BOTTOM = 539;
    public static final long VID_AUTH_TOKEN = 540;
    public static final long VID_REPOSITORY_ID = 541;
+   public static final long VID_TOOLTIP_DCI_COUNT = 542;
 
        public static final long VID_ACL_USER_BASE = 0x00001000L;
        public static final long VID_ACL_USER_LAST = 0x00001FFFL;
@@ -941,6 +942,7 @@ public class NXCPCodes
        public static final long VID_CUSTOM_ATTRIBUTES_BASE = 0x70000000L;
    public static final long VID_MODULE_DATA_BASE = 0x71000000L;
    public static final long VID_OVERVIEW_DCI_LIST_BASE = 0x72000000L;
+   public static final long VID_TOOLTIP_DCI_LIST_BASE = 0x73000000L;
        public static final long VID_RESOURCE_LIST_BASE = 0x20000000L;
        public static final long VID_IP_ADDRESS_LIST_BASE = 0x7F000000L;
    public static final long VID_SYNC_SUBNETS_BASE = 0x28000000L;
index 46a46b4..4a8e29b 100644 (file)
@@ -31,6 +31,7 @@ import org.netxms.client.datacollection.DciValue;
 public class DataCollectionTarget extends GenericObject
 {
    protected List<DciValue> overviewDciData;
+   protected List<DciValue> tooltipDciData;
 
    /**
     * Create new object.
@@ -42,6 +43,7 @@ public class DataCollectionTarget extends GenericObject
    {
       super(id, session);
       overviewDciData = new ArrayList<DciValue>(0);
+      tooltipDciData = new ArrayList<DciValue>(0);
    }
 
    /**
@@ -62,6 +64,15 @@ public class DataCollectionTarget extends GenericObject
          overviewDciData.add(DciValue.createFromMessage(objectId, msg, fieldId));
          fieldId += 50;
       }
+
+      count = msg.getFieldAsInt32(NXCPCodes.VID_TOOLTIP_DCI_COUNT);
+      tooltipDciData = new ArrayList<DciValue>(count);
+      fieldId = NXCPCodes.VID_TOOLTIP_DCI_LIST_BASE;
+      for(int i = 0; i < count; i++)
+      {
+         tooltipDciData.add(DciValue.createFromMessage(objectId, msg, fieldId));
+         fieldId += 50;
+      }
    }
 
    /**
@@ -71,4 +82,12 @@ public class DataCollectionTarget extends GenericObject
    {
       return overviewDciData;
    }
+
+   /**
+    * @return the tooltipDciData
+    */
+   public List<DciValue> getTooltipDciData()
+   {
+      return tooltipDciData;
+   }
 }
index 4e049dc..873be2c 100644 (file)
@@ -327,7 +327,7 @@ public class RackWidget extends Canvas implements PaintListener, DisposeListener
          height += pt.y;
       }
       
-      List<DciValue> values = ((AbstractNode)tooltipObject).getOverviewDciData();
+      List<DciValue> values = ((AbstractNode)tooltipObject).getTooltipDciData();
       if (!values.isEmpty())
       {
          for(DciValue v : values)
index 4244fdf..ada5f0f 100644 (file)
@@ -99,22 +99,36 @@ void DataCollectionTarget::fillMessageInternalStage2(NXCPMessage *msg)
 {
    Template::fillMessageInternalStage2(msg);
 
-   // Sent all DCIs marked for display on overview page
-   UINT32 fieldId = VID_OVERVIEW_DCI_LIST_BASE;
-   UINT32 count = 0;
+   // Sent all DCIs marked for display on overview page or in tooltips
+   UINT32 fieldIdOverview = VID_OVERVIEW_DCI_LIST_BASE;
+   UINT32 countOverview = 0;
+   UINT32 fieldIdTooltip = VID_TOOLTIP_DCI_LIST_BASE;
+   UINT32 countTooltip = 0;
    lockDciAccess(false);
    for(int i = 0; i < m_dcObjects->size(); i++)
        {
       DCObject *dci = m_dcObjects->get(i);
-      if ((dci->getType() == DCO_TYPE_ITEM) && dci->isShowInObjectOverview() && (dci->getStatus() == ITEM_STATUS_ACTIVE))
+      if ((dci->getType() == DCO_TYPE_ITEM) &&
+          (dci->getStatus() == ITEM_STATUS_ACTIVE) &&
+          (((DCItem *)dci)->getInstanceDiscoveryMethod() == IDM_NONE))
                {
-         count++;
-         ((DCItem *)dci)->fillLastValueMessage(msg, fieldId);
-         fieldId += 50;
+         if  (dci->isShowInObjectOverview())
+         {
+            countOverview++;
+            ((DCItem *)dci)->fillLastValueMessage(msg, fieldIdOverview);
+            fieldIdOverview += 50;
+         }
+         if  (dci->isShowOnObjectTooltip())
+         {
+            countTooltip++;
+            ((DCItem *)dci)->fillLastValueMessage(msg, fieldIdTooltip);
+            fieldIdTooltip += 50;
+         }
                }
        }
    unlockDciAccess();
-   msg->setField(VID_OVERVIEW_DCI_COUNT, count);
+   msg->setField(VID_OVERVIEW_DCI_COUNT, countOverview);
+   msg->setField(VID_TOOLTIP_DCI_COUNT, countTooltip);
 }
 
 /**
index 682cda8..216bec7 100644 (file)
@@ -327,7 +327,7 @@ public class RackWidget extends Canvas implements PaintListener, DisposeListener
          height += pt.y;
       }
       
-      List<DciValue> values = ((AbstractNode)tooltipObject).getOverviewDciData();
+      List<DciValue> values = ((AbstractNode)tooltipObject).getTooltipDciData();
       if (!values.isEmpty())
       {
          for(DciValue v : values)