Module: nagvis
Branch: master
Commit: 1b926bfe35b2cf2041cd2afd9e8503aafa95f921
URL:    
http://nagvis.git.sourceforge.net/git/gitweb.cgi?p=nagvis/nagvis;a=commit;h=1b926bfe35b2cf2041cd2afd9e8503aafa95f921

Author: Lars Michelsen <[email protected]>
Date:   Sun Oct 11 19:30:48 2009 +0200

#128 Fixed wrong initial state for summary objects

---

 share/server/core/classes/objects/NagVisMapObj.php |   75 +++++++++++--------
 share/server/core/classes/objects/NagVisObject.php |    6 ++-
 .../core/classes/objects/NagVisStatefulObject.php  |   14 ++++
 3 files changed, 62 insertions(+), 33 deletions(-)

diff --git a/share/server/core/classes/objects/NagVisMapObj.php 
b/share/server/core/classes/objects/NagVisMapObj.php
index 5a09788..c31af40 100755
--- a/share/server/core/classes/objects/NagVisMapObj.php
+++ b/share/server/core/classes/objects/NagVisMapObj.php
@@ -59,7 +59,7 @@ class NagVisMapObj extends NagVisStatefulObject {
                $this->iconset = 'std_medium';
                $this->members = Array();
                $this->linkedMaps = Array();
-               $this->is_summary_object = FALSE;
+               $this->is_summary_object = false;
                
                $this->backend_id = $this->MAPCFG->getValue('global', 0, 
'backend_id');
                
@@ -77,6 +77,42 @@ class NagVisMapObj extends NagVisStatefulObject {
        public function getMembers() {
                return $this->members;
        }
+
+       /**
+        * PUBLIC getStateRelevantMembers()
+        *
+        * Returns an array of state relevant members
+        * textboxes, shapes and "summary objects" are
+        * excluded here
+        *
+        * @return  Array Array with map objects
+        * @author  Lars Michelsen <[email protected]>
+        */
+       public function getStateRelevantMembers() {
+               $a = Array();
+               
+               // Loop all members
+               foreach($this->members AS $OBJ) {
+
+                       // Skip unrelevant object types
+                       if($OBJ->getType() == 'textbox' || $OBJ->getType() == 
'shape') {
+                               continue;
+      }
+
+                       /**
+                        * When the current map object is a summary object skip 
the map
+                        * child for preventing a loop
+                        */
+                       if($OBJ->getType() == 'map' && $this->MAPCFG->getName() 
== $OBJ->MAPCFG->getName() && $this->is_summary_object == true) {
+                               continue;
+                       }
+
+                       // Add relevant objects to array
+                       $a[] = $OBJ;
+    }
+
+    return $a;
+       }
        
        /**
         * PUBLIC getNumMembers()
@@ -162,7 +198,7 @@ class NagVisMapObj extends NagVisStatefulObject {
                                 * When the current map object is a summary 
object skip the map
                                 * child for preventing a loop
                                 */
-                               if($this->MAPCFG->getName() == 
$OBJ->MAPCFG->getName() && $this->is_summary_object) {
+                               if($this->MAPCFG->getName() == 
$OBJ->MAPCFG->getName() && $this->is_summary_object == true) {
                                        continue;
                                }
                                
@@ -173,7 +209,7 @@ class NagVisMapObj extends NagVisStatefulObject {
                                 * See the code above.
                                 */
                                if($this->MAPCFG->getName() == 
$OBJ->MAPCFG->getName()) {
-                                       $OBJ->is_summary_object = TRUE;
+                                       $OBJ->is_summary_object = true;
                                }
                                
                                // Check for indirect loop when the current 
child is a map object
@@ -196,17 +232,12 @@ class NagVisMapObj extends NagVisStatefulObject {
         */
        public function fetchState() {
                // Get state of all member objects
-               foreach($this->getMembers() AS $OBJ) {
-                       // Don't get state from textboxes and shapes
-                       if($OBJ->getType() == 'textbox' || $OBJ->getType() == 
'shape') {
-                               continue;
-                       }
-                       
+               foreach($this->getStateRelevantMembers() AS $OBJ) {
                        $OBJ->fetchState();
                        
                        $OBJ->fetchIcon();
                }
-               
+
                // Also get summary state
                $this->fetchSummaryState();
                
@@ -275,17 +306,7 @@ class NagVisMapObj extends NagVisStatefulObject {
                if($this->hasObjects() && $this->hasStatefulObjects()) {
                        $arrStates = Array('UNREACHABLE' => 0, 'CRITICAL' => 
0,'DOWN' => 0,'WARNING' => 0,'UNKNOWN' => 0,'UP' => 0,'OK' => 0,'ERROR' => 
0,'ACK' => 0,'PENDING' => 0);
                        
-                       foreach($this->getMembers() AS $OBJ) {
-                               // Don't reconize summarize map objects
-                               if($OBJ->getType() == 'map' && 
$OBJ->is_summary_object) {
-                                       continue;
-                               }
-
-                               // Don't recognize textboxes and shapes
-                               if($OBJ->getType() == 'textbox' || 
$OBJ->getType() == 'shape') {
-                                       continue;
-                               }
-                               
+                       foreach($this->getStateRelevantMembers() AS $OBJ) {
                                if(method_exists($OBJ,'getSummaryState')) {
                                        $sState = $OBJ->getSummaryState();
                                        if(isset($arrStates[$sState])) {
@@ -424,17 +445,7 @@ class NagVisMapObj extends NagVisStatefulObject {
        private function fetchSummaryState() {
                if($this->hasObjects() && $this->hasStatefulObjects()) {
                        // Get summary state member objects
-                       foreach($this->getMembers() AS $OBJ) {
-                               // Don't reconize summarize map objects
-                               if($OBJ->getType() == 'map' && 
$OBJ->is_summary_object) {
-                                       continue;
-                               }
-                               
-                               // Don't recognize textboxes and shapes
-                               if($OBJ->getType() == 'textbox' || 
$OBJ->getType() == 'shape') {
-                                       continue;
-                               }
-                               
+                       foreach($this->getStateRelevantMembers() AS $OBJ) {
                                if(method_exists($OBJ,'getSummaryState')) {
                                        $this->wrapChildState($OBJ);
                                }
diff --git a/share/server/core/classes/objects/NagVisObject.php 
b/share/server/core/classes/objects/NagVisObject.php
index a25135d..61e1567 100755
--- a/share/server/core/classes/objects/NagVisObject.php
+++ b/share/server/core/classes/objects/NagVisObject.php
@@ -327,7 +327,7 @@ class NagVisObject {
        public function getSortedObjectMembers($bStateInfo=FALSE) {
                $arr = Array();
                
-               $aTmpMembers = $this->getMembers();
+               $aTmpMembers = $this->getStateRelevantMembers();
                
                // Sort the array of child objects by the sort option
                switch($this->hover_childs_sort) {
@@ -498,6 +498,10 @@ class NagVisObject {
                if(method_exists($OBJ1, 'getSummaryState') && 
method_exists($OBJ2, 'getSummaryState')) {
                        $state1 = $OBJ1->getSummaryState();
                        $state2 = $OBJ2->getSummaryState();
+
+                       if($state1 == '' || $state2 == '') {
+                               return 0;
+                       }
                } else {
                        return 0;
                }
diff --git a/share/server/core/classes/objects/NagVisStatefulObject.php 
b/share/server/core/classes/objects/NagVisStatefulObject.php
index bc1f0ae..9d4a765 100755
--- a/share/server/core/classes/objects/NagVisStatefulObject.php
+++ b/share/server/core/classes/objects/NagVisStatefulObject.php
@@ -76,6 +76,20 @@ class NagVisStatefulObject extends NagVisObject {
                
                parent::__construct($CORE);
        }
+
+       /**
+        * PUBLIC getStateRelevantMembers
+        *
+        * This is a wrapper function. When not implemented by the specific
+        * object it only calls the getMembers() function. It is useful to
+        * exclude uninteresting objects on maps.
+        *
+        * @return  Array  Array of child objects
+        * @author  Lars Michelsen <[email protected]>
+        */
+       public function getStateRelevantMembers() {
+               return $this->getMembers();
+       }
        
        /**
         * PUBLIC getInDowntime()


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Nagvis-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nagvis-checkins

Reply via email to