diff options
author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-08-14 15:18:47 +0000 |
---|---|---|
committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-08-14 15:18:47 +0000 |
commit | fe273fd8055bbb22f821d638f87d532664da2cfe (patch) | |
tree | 7f32b6da932794220523c3f94bb70747802f89f9 | |
parent | 0266c585d15a0c85d06940bbc801a2ff8516109e (diff) | |
download | zabbix-fe273fd8055bbb22f821d638f87d532664da2cfe.tar.gz zabbix-fe273fd8055bbb22f821d638f87d532664da2cfe.tar.xz zabbix-fe273fd8055bbb22f821d638f87d532664da2cfe.zip |
- [DEV-199] performance improvements of js scripts in users screen (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5916 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r-- | frontends/php/dashboard.php | 4 | ||||
-rw-r--r-- | frontends/php/include/triggers.inc.php | 9 | ||||
-rw-r--r-- | frontends/php/include/users.inc.php | 80 | ||||
-rw-r--r-- | frontends/php/js/common.js | 4 | ||||
-rw-r--r-- | frontends/php/js/dashboard.js | 2 | ||||
-rw-r--r-- | frontends/php/js/users.js | 103 | ||||
-rw-r--r-- | frontends/php/users.php | 5 |
7 files changed, 198 insertions, 9 deletions
diff --git a/frontends/php/dashboard.php b/frontends/php/dashboard.php index 462aee17..d23964f6 100644 --- a/frontends/php/dashboard.php +++ b/frontends/php/dashboard.php @@ -220,8 +220,8 @@ include_once "include/page_header.php"; make_refresh_menu('hat_webovr',get_profile('web.dahsboard.rf_rate.hat_webovr',60),$menu,$submenu); make_refresh_menu('hat_dscvry',get_profile('web.dahsboard.rf_rate.hat_dscvry',60),$menu,$submenu); - insert_js('var dashboard_menu='.zbx_jsvalue($menu)."\n". - 'var dashboard_submenu='.zbx_jsvalue($submenu)."\n" + insert_js('var dashboard_menu='.zbx_jsvalue($menu).";\n". + 'var dashboard_submenu='.zbx_jsvalue($submenu).";\n" ); // -------------- diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index acbd22c6..85754180 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -1818,26 +1818,25 @@ function get_triggers_overview($groupid,$view_style=null){ global $USER_DETAILS; - $available_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_RES_IDS_ARRAY); + $available_triggers = get_accessible_triggers(PERM_READ_ONLY,PERM_RES_IDS_ARRAY); if(is_null($view_style)) $view_style = get_profile('web.overview.view.style',STYLE_TOP); $table = new CTableInfo(S_NO_TRIGGERS_DEFINED); if($groupid > 0){ - $group_where = ',hosts_groups hg where hg.groupid='.$groupid.' and hg.hostid=h.hostid and'; + $group_where = ',hosts_groups hg WHERE hg.groupid='.$groupid.' AND hg.hostid=h.hostid AND '; } else { - $group_where = ' where'; + $group_where = ' WHERE '; } - $result=DBselect('SELECT DISTINCT t.triggerid,t.description,t.expression,t.value,t.priority,t.lastchange,h.hostid,h.host'. ' FROM hosts h,items i,triggers t, functions f '. $group_where.' h.status='.HOST_STATUS_MONITORED. ' AND h.hostid=i.hostid '. ' AND i.itemid=f.itemid '. ' AND f.triggerid=t.triggerid'. - ' AND '.DBcondition('h.hostid',$available_hosts). + ' AND '.DBcondition('t.triggerid',$available_triggers). ' AND t.status='.TRIGGER_STATUS_ENABLED. ' AND i.status='.ITEM_STATUS_ACTIVE. ' ORDER BY t.description'); diff --git a/frontends/php/include/users.inc.php b/frontends/php/include/users.inc.php index 10a119db..21c64a32 100644 --- a/frontends/php/include/users.inc.php +++ b/frontends/php/include/users.inc.php @@ -417,8 +417,88 @@ } /********************************/ + function get_user_menu_array($userids = array()){ + $menu_all = array(); + $menu_gui_access = array(); + $menu_users_status = array(); + + $res = DBselect('SELECT DISTINCT g.usrgrpid, g.name, g.gui_access, g.users_status'. + ' FROM usrgrp g'. + ' WHERE '.DBin_node('g.usrgrpid', get_current_nodeid(false)). + ' ORDER BY g.name'); + + while($group=DBfetch($res)){ + $group['name'] = htmlspecialchars($group['name']); + + $gui_access = $group['gui_access']; + $users_status = $group['users_status']; + + unset($group['gui_access']); + unset($group['users_status']); + + $menu_all[] = $group; + if($gui_access != GROUP_GUI_ACCESS_SYSTEM){ + $menu_gui_access[] = $group; + } + + if($users_status == GROUP_STATUS_DISABLED){ + $menu_users_status[] = $group; + } + } + insert_js( + 'var menu_usrgrp_all='.zbx_jsvalue($menu_all).";\n". + 'var menu_usrgrp_gui='.zbx_jsvalue($menu_gui_access).";\n". + 'var menu_usrgrp_status='.zbx_jsvalue($menu_users_status).";\n" + ); + + } function get_user_actionmenu($userid){ + $usr_grp_all_in = array(); + $usr_grp_gui_in = array(); + $usr_grp_status_in = array(); + + $sql = 'SELECT DISTINCT g.name, g.usrgrpid, g.gui_access, g.users_status '. + ' FROM users_groups ug, usrgrp g '. + ' WHERE ug.userid='.$userid. + ' AND g.usrgrpid=ug.usrgrpid '. + ' AND '.DBin_node('g.usrgrpid', get_current_nodeid(false)); + if($res = DBselect($sql)){ + while($group = DBFetch($res)){ + $group['name'] = htmlspecialchars($group['name']); + + $gui_access = $group['gui_access']; + $users_status = $group['users_status']; + + unset($group['gui_access']); + unset($group['users_status']); + + $usr_grp_all_in[] = $group; + if($gui_access != GROUP_GUI_ACCESS_SYSTEM){ + $usr_grp_gui_in[] = $groups; + } + if($users_status == GROUP_STATUS_DISABLED){ + $usr_grp_status_in[] = $group; + } + } + } + + $action = new CSpan(S_SELECT); + + $script = new CScript("javascript: create_user_menu(event,". + $userid.",". + zbx_jsvalue($usr_grp_all_in).",". + zbx_jsvalue($usr_grp_gui_in).",". + zbx_jsvalue($usr_grp_status_in).");" + ); + + $action->AddAction('onclick',$script); + $action->AddOption('onmouseover','javascript: this.style.cursor = "pointer";'); + + return $action; + } + + function get_user_actionmenu_old($userid){ global $USER_DETAILS; $action = new CSpan(S_SELECT); diff --git a/frontends/php/js/common.js b/frontends/php/js/common.js index 2dc484bb..ba02fb49 100644 --- a/frontends/php/js/common.js +++ b/frontends/php/js/common.js @@ -593,11 +593,14 @@ function moveListBoxSelectedItem(formname,objname,from,to,action){ for(i = 0; i < from.options.length; i++) { if(from.options[i].selected == true) { +/* var temp = document.createElement('option'); temp.setAttribute('value',from.options[i].value); var caption = IE?from.options[i].innerText:from.options[i].textContent; temp.appendChild(document.createTextNode(caption)); +*/ + var temp = from.options[i].cloneNode(true); if(action.toLowerCase() == 'add'){ result &= create_var(formname, objname+'['+from.options[i].value+']', from.options[i].value, false); @@ -612,5 +615,6 @@ function moveListBoxSelectedItem(formname,objname,from,to,action){ i--; } } + alert('OPA'); return result; }
\ No newline at end of file diff --git a/frontends/php/js/dashboard.js b/frontends/php/js/dashboard.js index 0a8c8270..56f2c90f 100644 --- a/frontends/php/js/dashboard.js +++ b/frontends/php/js/dashboard.js @@ -33,7 +33,7 @@ function setRefreshRate(id,interval){ } function create_menu(e,id){ - if (!e) var e = window.event; + if(!e) var e = window.event; id='menu_'+id; var dbrd_menu = new Array(); diff --git a/frontends/php/js/users.js b/frontends/php/js/users.js new file mode 100644 index 00000000..d05aca70 --- /dev/null +++ b/frontends/php/js/users.js @@ -0,0 +1,103 @@ +// JavaScript Document +//var menu_usrgrp_all = new Array(); +//var menu_usrgrp_gui = new Array(); +//var menu_usrgrp_status = new Array(); + +function create_user_menu(e,userid,usr_grp_all_in,usr_grp_gui_in,usr_grp_status_in){ + if(!e) var e = window.event; + +// ALL GROUPS + var grp_add_to = new Array('Add to',null,null,{'outer' : ['pum_o_submenu'],'inner' : ['pum_i_submenu']}); + grp_add_to.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]); + + var grp_rmv_frm = new Array('Remove from',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']}); + grp_rmv_frm.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]); + +// add to + for(var i=0; i < menu_usrgrp_all.length; i++){ + if((typeof(menu_usrgrp_all[i]) != 'undefined') && !empty(menu_usrgrp_all[i])){ + var row = menu_usrgrp_all[i]; + var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=1&userid="+userid+"&usrgrpid="+row.usrgrpid); + grp_add_to.push(menu_row); + } + } + +// remove from + for(var i=0; i < usr_grp_all_in.length; i++){ + if((typeof(usr_grp_all_in[i]) != 'undefined') && !empty(usr_grp_all_in[i])){ + var row = usr_grp_all_in[i]; + var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=0&userid="+userid+"&usrgrpid="+row.usrgrpid); + grp_rmv_frm.push(menu_row); + } + } + +// GUI ACCESS GROUPS + var grp_gui_add_to = new Array('Add to',null,null,{'outer' : ['pum_o_submenu'],'inner' : ['pum_i_submenu']}); + grp_gui_add_to.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]); + + var grp_gui_rmv_frm = new Array('Remove from',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']}); + grp_gui_rmv_frm.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]); + +// add to + for(var i=0; i < menu_usrgrp_gui.length; i++){ + if((typeof(menu_usrgrp_gui[i]) != 'undefined') && !empty(menu_usrgrp_gui[i])){ + var row = menu_usrgrp_gui[i]; + var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=1&userid="+userid+"&usrgrpid="+row.usrgrpid); + grp_gui_add_to.push(menu_row); + } + } + +// remove from + for(var i=0; i < usr_grp_gui_in.length; i++){ + if((typeof(usr_grp_all_in[i]) != 'undefined') && !empty(usr_grp_gui_in[i])){ + var row = usr_grp_gui_in[i]; + var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=0&userid="+userid+"&usrgrpid="+row.usrgrpid); + grp_gui_rmv_frm.push(menu_row); + } + } + +// DISABLED STATUS GROUPS + var grp_status_add_to = new Array('Add to',null,null,{'outer' : ['pum_o_submenu'],'inner' : ['pum_i_submenu']}); + grp_status_add_to.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]); + + var grp_status_rmv_frm = new Array('Remove from',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']}); + grp_status_rmv_frm.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]); + +// add to + for(var i=0; i < menu_usrgrp_status.length; i++){ + if((typeof(menu_usrgrp_status[i]) != 'undefined') && !empty(menu_usrgrp_status[i])){ + var row = menu_usrgrp_status[i]; + var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=1&userid="+userid+"&usrgrpid="+row.usrgrpid); + grp_status_add_to.push(menu_row); + } + } + +// remove from + for(var i=0; i < usr_grp_status_in.length; i++){ + if((typeof(usr_grp_status_in[i]) != 'undefined') && !empty(usr_grp_status_in[i])){ + var row = usr_grp_status_in[i]; + var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=0&userid="+userid+"&usrgrpid="+row.usrgrpid); + grp_status_rmv_frm.push(menu_row); + } + } +//['<span class="red">Disabled users</span>','users.php?config=0&form=update&grpaction=1&userid=2&usrgrpid=9'] + var grp_menu = new Array( + Array('Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}), + grp_add_to, + grp_rmv_frm, + Array('GUI access',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}), + grp_gui_add_to, + grp_gui_rmv_frm, + Array('Status disabled',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}), + grp_status_add_to, + grp_status_rmv_frm + ); + +//to create a copy of array, but not references!!!! +//alert(id+' : '+dashboard_menu[id]); + + + +//alert(dashboard_menu[id]); + show_popup_menu(e,grp_menu,280);// JavaScript Document +}
\ No newline at end of file diff --git a/frontends/php/users.php b/frontends/php/users.php index 7ec6d593..4e3e4499 100644 --- a/frontends/php/users.php +++ b/frontends/php/users.php @@ -29,6 +29,7 @@ $page['title'] = 'S_USERS'; $page['file'] = 'users.php'; $page['hist_arg'] = array('config'); + $page['scripts'] = array('users.js'); include_once 'include/page_header.php'; @@ -483,7 +484,7 @@ include_once 'include/page_header.php'; S_STATUS, S_ACTIONS )); - + $cond_from = ''; $cond_where = ''; @@ -569,6 +570,8 @@ include_once 'include/page_header.php'; $jsmenu = new CPUMenu(null,270); $jsmenu->InsertJavaScript(); + + get_user_menu_array(); } } else if($_REQUEST['config']==1){ // USER GROUPS |