Author:   Lars Michelsen <[email protected]>
Date:     Tue Aug 20 09:21:26 2013 +0200
Committer:   Lars Michelsen <[email protected]>
Commit-Date: Tue Aug 20 09:21:26 2013 +0200

Added on-demand header template to add quick filter options to on demand 
automaps

---

 ChangeLog                                          |    2 +
 .../nagvis-js/classes/NagVisHeaderMenu.php         |   15 +++++++++++
 share/server/core/classes/CoreModUser.php          |   10 ++++++-
 share/server/core/sources/automap.php              |    1 +
 share/userfiles/templates/default.css              |   11 +++++++-
 share/userfiles/templates/default.header.js        |    8 ++++--
 .../templates/on-demand-filter.header.html         |   26 ++++++++++++++++++++
 7 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a3f0bf3..bcee75b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,8 @@ Frontend:
     request per map.
   * Added optional zoom bar and mousewheel zoom handlers (ALT + wheel move)
     (Must be enabled with option "zoombar=1")
+  * Added "on-demand-filter" header menu to support quick filter mechanism
+    for on demand automaps
   * FIX: Fixed centering of overview tables when opening the sidebar
   * FIX: Fixed mouse pointer confusions when adding a new object and hovering
     another menu which then shows up the hover menu
diff --git a/share/frontend/nagvis-js/classes/NagVisHeaderMenu.php 
b/share/frontend/nagvis-js/classes/NagVisHeaderMenu.php
index 9415686..9bc3574 100644
--- a/share/frontend/nagvis-js/classes/NagVisHeaderMenu.php
+++ b/share/frontend/nagvis-js/classes/NagVisHeaderMenu.php
@@ -264,6 +264,21 @@ class NagVisHeaderMenu {
 
         list($this->aMacros['maps'], $this->aMacros['permittedEditAnyMap']) = 
$this->getMapList('maps', $CORE->getAvailableMaps());
         $this->aMacros['langs'] = $this->getLangList();
+
+        // Specific information for special templates
+        if ($this->templateName == 'on-demand-filter') {
+            global $_BACKEND;
+            $this->aMacros['hostgroups'] = 
$_BACKEND->getBackend($_GET['backend_id'])->getObjects('hostgroup', '', '');
+            array_unshift($this->aMacros['hostgroups'], array('name1' => '', 
'name2' => ''));
+
+            $default = '';
+            $USERCFG = new CoreUserCfg();
+            $cfg = $USERCFG->doGet();
+            if (isset($cfg['params-']) && 
isset($cfg['params-']['filter_group']))
+                $default = $cfg['params-']['filter_group'];
+
+            $this->aMacros['filter_group'] = isset($_GET['filter_group']) ? 
htmlspecialchars($_GET['filter_group']) : $default;
+        }
     }
 
     /**
diff --git a/share/server/core/classes/CoreModUser.php 
b/share/server/core/classes/CoreModUser.php
index 6833c82..f3a5cde 100644
--- a/share/server/core/classes/CoreModUser.php
+++ b/share/server/core/classes/CoreModUser.php
@@ -66,7 +66,13 @@ class CoreModUser extends CoreModule {
     protected function handleResponseSet() {
         $FHANDLER = new CoreRequestHandler($_GET);
         $this->verifyValuesSet($FHANDLER, Array('opts'));
-        return Array('opts' => $FHANDLER->get('opts'));
+        $opts = $FHANDLER->get('opts');
+
+        foreach($opts as $key => $val)
+            if (substr($val, 0, 1) == '{')
+                $opts[$key] = json_decode($val);
+
+        return Array('opts' => $opts);
     }
 }
-?>
\ No newline at end of file
+?>
diff --git a/share/server/core/sources/automap.php 
b/share/server/core/sources/automap.php
index b815498..15d5ac4 100644
--- a/share/server/core/sources/automap.php
+++ b/share/server/core/sources/automap.php
@@ -8,6 +8,7 @@ $selectable = true;
 global $viewParams;
 $viewParams = array(
     'automap' => array(
+        'header_template',
         'root',
         'render_mode',
         'backend_id',
diff --git a/share/userfiles/templates/default.css 
b/share/userfiles/templates/default.css
index 697788b..c714b0b 100644
--- a/share/userfiles/templates/default.css
+++ b/share/userfiles/templates/default.css
@@ -651,7 +651,16 @@ td#popupWindowContent a:hover 
{color:#779D2A;text-decoration:underline}
     text-decoration: none;
 }
 
-#editIndicator span 
{margin:0;padding:0;width:100%;height:31px;padding-left:8px;padding-right:8px;line-height:31px;font-weight:bold;width:90px;color:#ff0000}
+.header ul li span {
+    margin:0;
+    width:100%;
+    height:31px;
+    line-height:31px;
+    font-weight:bold;
+    padding: 0 8px;
+}
+
+#editIndicator span {width:89px;color:#ff0000}
 .dropdown span, .header div#refreshCounterHead 
{display:block;margin:0;padding:0;height:31px;padding-left:8px;padding-right:8px;line-height:31px;width:auto;font-weight:bold;cursor:pointer;background-image:url('../images/templates/default.header.png')}
 .dropdown span:hover 
{background-image:url('../images/templates/default.header_over.png')}
 .dropdown img {vertical-align:middle;margin-left:10px}
diff --git a/share/userfiles/templates/default.header.js 
b/share/userfiles/templates/default.header.js
index d4cca46..a3c87de 100644
--- a/share/userfiles/templates/default.header.js
+++ b/share/userfiles/templates/default.header.js
@@ -153,8 +153,10 @@ function toggleSidebar(store) {
 }
 
 function sidebarOpen() {
-    display = document.getElementById('sidebar').style.display;
-    return !(display  == 'none' || display == '');
+    var o = document.getElementById('sidebar');
+    if (!o)
+        return false;
+    return !(o.style.display  == 'none' || o.style.display == '');
 }
 
 function getSidebarWidth() {
@@ -171,7 +173,7 @@ function sidebarDraw() {
         return;
 
     if(typeof(oUserProperties.sidebar) !== 'undefined' && 
oUserProperties.sidebar === 1)
-    toggleSidebar(false);
+        toggleSidebar(false);
 
     // Initialize value
     if(typeof(oUserProperties.sidebarOpenNodes) === 'undefined')
diff --git a/share/userfiles/templates/on-demand-filter.header.html 
b/share/userfiles/templates/on-demand-filter.header.html
new file mode 100644
index 0000000..8aae167
--- /dev/null
+++ b/share/userfiles/templates/on-demand-filter.header.html
@@ -0,0 +1,26 @@
+<script type="text/javascript" 
src="{$pathTemplates}default.header.js"></script>
+<script type="text/javascript">
+function filter_group(field) \{
+    var grp = field.value;
+    if(workerTimeoutID)
+        window.clearTimeout(workerTimeoutID);
+
+    window.location = makeuri(\{'filter_group': grp});
+    storeUserOption('params-', '\{"filter_group": "'+grp+'"}');
+}
+</script>
+<div id="headershow" class="header"><a href="#" 
onclick="headerToggle(true)"><img 
src="{$pathTemplateImages}default.header_show.png" alt="Show header menu" 
/></a></div>
+<div id="header" class="header">
+<ul class="head">
+  <li><a href="#" onclick="headerToggle(true)"><img 
src="{$pathTemplateImages}default.header_hide.png" alt="Hide header menu" 
/></a></li>
+    <li><span>Filter:</span></li>
+    <li><span>
+      <select onchange="filter_group(this)">
+        {foreach $hostgroups hostgroup}<option {if $filter_group == 
$hostgroup.name1}selected 
{/if}value="{$hostgroup.name1}">{$hostgroup.name2}</option>{/foreach}
+      </select>
+    </span></li>
+  </li>
+</ul>
+</div>
+<div id="headerspacer"></div>
+<script 
type="text/javascript">addDOMLoadEvent(function()\{headerDraw();});</script>


------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Nagvis-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nagvis-checkins

Reply via email to