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