Changeset 87

Show
Ignore:
Timestamp:
03/11/08 02:28:38 (5 years ago)
Author:
divagater
Message:

Implemented the comments panel. Various other minor updates.

Location:
trunk
Files:
1 added
10 modified

Legend:

Unmodified
Added
Removed
  • trunk/controllers/comments.php

    r65 r87  
    1414 * @version             $Id: $ 
    1515 */ 
     16 
     17require_once("include/auth.php"); 
    1618 
    1719/** 
     
    6971 
    7072    /** 
     73     * getHostComments 
     74     *  
     75     * An accessor method to return all host comments 
     76     * 
     77     * @return string   json output 
     78     */ 
     79    function getHostComments() { 
     80        $results = $this->flattenArray($this->comments(null, 'o.objecttype_id = 1')); 
     81        return($this->jsonOutput($results)); 
     82    } 
     83 
     84    /** 
     85     * getServiceComments 
     86     *  
     87     * An accessor method to return all service comments 
     88     * 
     89     * @return string   json output 
     90     */ 
     91    function getServiceComments() { 
     92        $results = $this->flattenArray($this->comments(null, 'o.objecttype_id = 2')); 
     93        return($this->jsonOutput($results)); 
     94    } 
     95 
     96    /** 
     97     * deleteAllHostComments 
     98     *  
     99     * Delete all host comments. 
     100     * 
     101     * @return string   json output 
     102     */ 
     103    function deleteAllHostComments() { 
     104 
     105        require_once("plugins/npc/controllers/nagios.php"); 
     106 
     107        $seen = array(); 
     108 
     109        $results = $this->flattenArray($this->comments(null, 'o.objecttype_id = 1')); 
     110         
     111        for ($i = 0; $i < count($results); $i++) { 
     112            $host = $results[$i]['host_name']; 
     113            if (!isset($seen[$host])) { 
     114                $params = array( 
     115                    'command' => 'DEL_ALL_HOST_COMMENTS', 
     116                    'host_name' => $host 
     117                ); 
     118                NpcNagiosController::command($params); 
     119                $seen[$host] = 1; 
     120            }    
     121        } 
     122    } 
     123 
     124    /** 
     125     * deleteAllServiceComments 
     126     *  
     127     * Delete all service comments. 
     128     * 
     129     * @return string   json output 
     130     */ 
     131    function deleteAllServiceComments() { 
     132 
     133        require_once("plugins/npc/controllers/nagios.php"); 
     134 
     135        $seen = array(); 
     136 
     137        $results = $this->flattenArray($this->comments(null, 'o.objecttype_id = 2')); 
     138         
     139        for ($i = 0; $i < count($results); $i++) { 
     140            $host = $results[$i]['host_name']; 
     141            $service = $results[$i]['service_description']; 
     142            if (!isset($seen[$host][$service])) { 
     143                $params = array( 
     144                    'command' => 'DEL_ALL_SVC_COMMENTS', 
     145                    'host_name' => $host, 
     146                    'service_description' => $service, 
     147                ); 
     148                NpcNagiosController::command($params); 
     149                $seen[$host][$service] = 1; 
     150            }    
     151        } 
     152    } 
     153 
     154    /** 
    71155     * comments 
    72156     *  
  • trunk/controllers/hosts.php

    r84 r87  
    233233 
    234234        $cs = array( 
    235             '0'  => '<img src="images/icons/greendot.gif">', 
    236             '1'  => '<img src="images/icons/reddot.gif">', 
    237             '2'  => '<img src="images/icons/reddot.gif">', 
    238             '-1' => '<img src="images/icons/bluedot.gif">' 
     235            '0'  => '<img ext:qtip="UP" src="images/icons/greendot.gif">', 
     236            '1'  => '<img ext:qtip="DOWN" src="images/icons/reddot.gif">', 
     237            '2'  => '<img ext:qtip="UNREACHABLE" src="images/icons/reddot.gif">', 
     238            '-1' => '<img ext:qtip="PENDING" src="images/icons/bluedot.gif">' 
    239239        ); 
    240240 
  • trunk/controllers/layout.php

    r86 r87  
    6161          <script type="text/javascript" src="<?php echo $config["url_path"]; ?>plugins/npc/js/servicegroupGrid.js"></script> 
    6262          <script type="text/javascript" src="<?php echo $config["url_path"]; ?>plugins/npc/js/servicegroupOverview.js"></script> 
     63          <script type="text/javascript" src="<?php echo $config["url_path"]; ?>plugins/npc/js/comments.js"></script> 
    6364           
    6465          <script type="text/javascript"> 
  • trunk/controllers/nagios.php

    r70 r87  
    1616 * @version             $Id: $ 
    1717 */ 
     18 
     19require_once("plugins/npc/nagioscmd.php"); 
    1820 
    1921/** 
     
    4042     */ 
    4143    function command($params) { 
    42  
    43         include("plugins/npc/nagioscmd.php"); 
    4444 
    4545        $nagios = new NagiosCmd; 
  • trunk/controllers/services.php

    r84 r87  
    243243 
    244244        $cs = array( 
    245             '0'  => '<img src="images/nagios/recovery.png">', 
    246             '1'  => '<img src="images/nagios/warning.png">', 
    247             '2'  => '<img src="images/nagios/critical.png">', 
    248             '3'  => '<img src="images/nagios/unknown.png">', 
    249             '-1' => '<img src="images/nagios/info.png">' 
     245            '0'  => '<img ext:qtip="OK" src="images/icons/greendot.gif">', 
     246            '1'  => '<img ext:qtip="WARNING" src="images/icons/yellowdot.gif">', 
     247            '2'  => '<img ext:qtip="CRITICAL" src="images/icons/reddot.gif">', 
     248            '3'  => '<img ext:qtip="UNKNOWN" src="images/icons/orangedot.gif">', 
     249            '-1' => '<img ext:qtip="PENDING" src="images/icons/bluedot.gif">' 
    250250        ); 
    251251 
  • trunk/js/hostDetail.js

    r84 r87  
    8484        // '<img src="/graph_image.php?action=view&local_graph_id='.$this->local_graph_id.'&rra_id=1&graph_height='.$this->height.'&graph_width='.$this->width.'">'; 
    8585        return(val); 
    86     } 
    87  
    88     function renderCommentType(val) { 
    89         var s; 
    90         switch(val) { 
    91             case '1': 
    92                 s = 'User'; 
    93                 break; 
    94             case '2': 
    95                 s = 'Scheduled Downtime'; 
    96                 break; 
    97             case '3': 
    98                 s = 'Flap Detection'; 
    99                 break; 
    100             case '4': 
    101                 s = 'Acknowledgement'; 
    102                 break; 
    103         } 
    104         return String.format('{0}', s); 
    105     } 
    106  
    107     function renderPersistent(val) { 
    108         var s; 
    109         switch(val) { 
    110             case '0': 
    111                 s = 'No'; 
    112                 break; 
    113             case '1': 
    114                 s = 'Yes'; 
    115                 break; 
    116         } 
    117         return String.format('{0}', s); 
    11886    } 
    11987 
     
    393361            'comment_id', 
    394362            'instance_id', 
    395             {name: 'entry_time', type: 'date', dateFormat: 'Y-m-d H:i:s'}, 
     363            {name: 'comment_time', type: 'date', dateFormat: 'Y-m-d H:i:s'}, 
    396364            'entry_type', 
    397365            'author_name', 
     
    406374    var hcCm = new Ext.grid.ColumnModel([{ 
    407375        header:"Entry Time", 
    408         dataIndex:'entry_time', 
     376        dataIndex:'comment_time', 
    409377        renderer: npc.app.formatDate, 
    410378        width:120 
     
    420388        header:"Persistent", 
    421389        dataIndex:'is_persistent', 
    422         renderer:renderPersistent, 
     390        renderer:npc.app.renderPersistent, 
    423391        width:80 
    424392    },{ 
    425393        header:"Type", 
    426394        dataIndex:'entry_type', 
    427         renderer:renderCommentType, 
     395        renderer:npc.app.renderCommentType, 
    428396        width:100 
    429397    },{ 
    430398        header:"Expires", 
    431399        dataIndex:'expiration_time', 
    432         renderer: npc.app.formatDate, 
     400        renderer: npc.app.renderCommentExpires, 
    433401        width:120 
    434402    },{ 
     
    488456            displayInfo: true 
    489457        }) 
    490         // The search field won't render :( 
    491         //plugins:[new Ext.ux.grid.Search({ 
    492         //    mode:'remote', 
    493         //    iconCls:false 
    494         //})] 
    495458    }); 
    496459 
  • trunk/js/npc.js

    r86 r87  
    277277        hostStatusImage: function(val){ 
    278278            var img; 
     279            var state; 
    279280            if (val == 0) { 
    280281                img = 'greendot.gif'; 
     282                state = "UP"; 
    281283            } else if (val == 1) { 
    282284                img = 'reddot.gif'; 
     285                state = "DOWN"; 
    283286            } else if (val == 2) { 
    284287                img = 'reddot.gif'; 
     288                state = "UNREACHABLE"; 
    285289            } else if (val == -1) { 
    286290                img = 'bluedot.gif'; 
    287             } 
    288             return String.format('<p align="center"><img src="images/icons/{0}"></p>', img); 
     291                state = "PENDING"; 
     292            } 
     293            return String.format('<p align="center"><img ext:qtip="{0}" src="images/icons/{1}"></p>', state, img); 
    289294        }, 
    290295 
    291296        serviceStatusImage: function(val){ 
    292297            var img; 
     298            var state; 
    293299            if (val == 0) { 
    294300                img = 'greendot.gif'; 
     301                state = "OK"; 
    295302            } else if (val == 1) { 
    296303                img = 'yellowdot.gif'; 
     304                state = "WARNING"; 
    297305            } else if (val == 2) { 
    298306                img = 'reddot.gif'; 
     307                state = "CRITICAL"; 
    299308            } else if (val == 3) { 
    300309                img = 'orangedot.gif'; 
     310                state = "UNKNOWN"; 
    301311            } else if (val == -1) { 
    302312                img = 'bluedot.gif'; 
    303             } 
    304             return String.format('<p align="center"><img src="images/icons/{0}"></p>', img); 
     313                state = "PENDING"; 
     314            } 
     315            return String.format('<p align="center"><img ext:qtip="{0}" src="images/icons/{1}"></p>', state, img); 
    305316        }, 
    306317 
     
    309320            if (record.data.problem_has_been_acknowledged == 1) { 
    310321                var ack = record.data.acknowledgement.split("*|*"); 
    311                 img = String.format('&nbsp;<img ext:qtitle="Acknowledged by {0}" ext:qtip=\'{1}\' src="images/icons/wrench.png">', ack[0], ack[1]); 
     322                var by = ''; 
     323                if (ack[0]) { 
     324                    by = 'by ' + ack[0]; 
     325                } 
     326                img = String.format('&nbsp;<img ext:qtip="This problem has been acknowledged {0}" src="images/icons/wrench.png">', by); 
    312327            } 
    313328            if (record.data.notifications_enabled == 0) { 
     
    315330            } 
    316331            if (record.data.comment) { 
    317                 var c = record.data.comment.split("*|*"); 
    318                 img = String.format('&nbsp;<img qtitle="{0}" ext:qtip=\'{1}\' src="images/icons/comment.png">', c[0], c[1]) + img; 
     332                //var c = record.data.comment.split("*|*"); 
     333                img = String.format('&nbsp;<img ext:qtip="There are comments for this item" src="images/icons/comment.png">') + img; 
    319334            } 
    320335            if (record.data.is_flapping) { 
     
    327342            } 
    328343            return String.format('<div><div style="float: left;">{0}</div><div style="float: right;">{1}</div></div>', val, img); 
     344        }, 
     345 
     346        renderCommentType: function(val) { 
     347            var s; 
     348            switch(val) { 
     349                case '1': 
     350                    s = 'User'; 
     351                    break; 
     352                case '2': 
     353                    s = 'Scheduled Downtime'; 
     354                    break; 
     355                case '3': 
     356                    s = 'Flap Detection'; 
     357                    break; 
     358                case '4': 
     359                    s = 'Acknowledgement'; 
     360                    break; 
     361            } 
     362            return String.format('{0}', s); 
     363        }, 
     364 
     365        renderPersistent: function(val) { 
     366            var s; 
     367            switch(val) { 
     368                case '0': 
     369                    s = 'No'; 
     370                    break; 
     371                case '1': 
     372                    s = 'Yes'; 
     373                    break; 
     374            } 
     375            return String.format('{0}', s); 
     376        }, 
     377 
     378        renderCommentExpires: function(val, p, record) { 
     379            if (record.data.is_persistent == 1) { 
     380                return String.format('NA'); 
     381            } 
     382            if(typeof val == "object") { 
     383                if(val.getYear() == '69') { 
     384                    return String.format('NA'); 
     385                } else { 
     386                    return String.format(val.dateFormat(npc.app.params.npc_date_format + ' ' + npc.app.params.npc_time_format)); 
     387                } 
     388            } 
     389            return val; 
    329390        }, 
    330391 
     
    631692                                            text:'Comments', 
    632693                                            iconCls:'tleaf', 
    633                                             leaf:true  
     694                                            leaf:true, 
     695                                                listeners: { 
     696                                                    click: function() { 
     697                                                        npc.app.comments(); 
     698                                                    } 
     699                                                } 
    634700                                        },{ 
    635701                                            text:'Downtime', 
     
    742808                    var sgHSC = sgHS.isVisible(); 
    743809 
     810                    var hgSS = Ext.getCmp('hostgroupServiceStatus'); 
     811                    var hgSSC = hgSS.isVisible(); 
     812 
     813                    var hgHS = Ext.getCmp('hostgroupHostStatus'); 
     814                    var hgHSC = hgHS.isVisible(); 
     815 
    744816                    var form = new Ext.form.FormPanel({ 
    745817                        //title: 'Show/hide portlets', 
     
    819891                            } 
    820892                        },{ 
     893                            boxLabel: 'Hostgroup: Service Status', 
     894                            hideLabel: true, 
     895                            xtype:'checkbox', 
     896                            checked: sgSSC, 
     897                            listeners: { 
     898                                check: function(cb, checked) { 
     899                                    if (checked) { 
     900                                        hgSS.show(); 
     901                                    } else { 
     902                                        hgSS.hide(); 
     903                                    } 
     904                                } 
     905                            } 
     906                        },{ 
     907                            boxLabel: 'Hostgroup: Host Status', 
     908                            hideLabel: true, 
     909                            xtype:'checkbox', 
     910                            checked: sgHSC, 
     911                            listeners: { 
     912                                check: function(cb, checked) { 
     913                                    if (checked) { 
     914                                        hgHS.show(); 
     915                                    } else { 
     916                                        hgHS.hide(); 
     917                                    } 
     918                                } 
     919                            } 
     920                        },{ 
    821921                            boxLabel: 'Servicegroup: Service Status', 
    822922                            hideLabel: true, 
  • trunk/js/serviceDetail.js

    r84 r87  
    8484        // '<img src="/graph_image.php?action=view&local_graph_id='.$this->local_graph_id.'&rra_id=1&graph_height='.$this->height.'&graph_width='.$this->width.'">'; 
    8585        return(val); 
    86     } 
    87  
    88     function renderCommentType(val) { 
    89         var s; 
    90         switch(val) { 
    91             case '1': 
    92                 s = 'User'; 
    93                 break; 
    94             case '2': 
    95                 s = 'Scheduled Downtime'; 
    96                 break; 
    97             case '3': 
    98                 s = 'Flap Detection'; 
    99                 break; 
    100             case '4': 
    101                 s = 'Acknowledgement'; 
    102                 break; 
    103         } 
    104         return String.format('{0}', s); 
    105     } 
    106  
    107     function renderPersistent(val) { 
    108         var s; 
    109         switch(val) { 
    110             case '0': 
    111                 s = 'No'; 
    112                 break; 
    113             case '1': 
    114                 s = 'Yes'; 
    115                 break; 
    116         } 
    117         return String.format('{0}', s); 
    11886    } 
    11987 
     
    407375    var scCm = new Ext.grid.ColumnModel([{ 
    408376        header:"Entry Time", 
    409         dataIndex:'entry_time', 
     377        dataIndex:'comment_time', 
    410378        renderer: npc.app.formatDate, 
    411379        width:120 
     
    421389        header:"Persistent", 
    422390        dataIndex:'is_persistent', 
    423         renderer:renderPersistent, 
     391        renderer:npc.app.renderPersistent, 
    424392        width:80 
    425393    },{ 
    426394        header:"Type", 
    427395        dataIndex:'entry_type', 
    428         renderer:renderCommentType, 
     396        renderer:npc.app.renderCommentType, 
    429397        width:100 
    430398    },{ 
    431399        header:"Expires", 
    432400        dataIndex:'expiration_time', 
    433         renderer: npc.app.formatDate, 
     401        renderer: npc.app.renderCommentExpires, 
    434402        width:120 
    435403    },{ 
  • trunk/js/services.js

    r85 r87  
    155155    centerTabPanel.doLayout(); 
    156156 
    157     // Add button to toggle betwen handled and unhandled problems 
    158     /* 
    159     if (filter == 'not_ok') { 
    160         var bbar = grid.getBottomToolbar(); 
    161         bbar.addSeparator(); 
    162         bbar.addButton({ 
    163             id:'unhandledButton', 
    164             text:'Unhandled', 
    165             enableToggle: true, 
    166             iconCls:'errorGo', 
    167             handler : function(){ 
    168                 if (Ext.getCmp('unhandledButton').pressed) { 
    169                     grid.store.load({params:{start:0, limit:pageSize, unhandled:1}}); 
    170                 } else { 
    171                     grid.store.load({params:{start:0, limit:pageSize}}); 
    172                 } 
    173             } 
    174         }); 
    175     } 
    176     */ 
    177  
    178157    // Render the grid 
    179158    grid.render(); 
  • trunk/setup.php

    r86 r87  
    4141                    'url'           => 'http://cactiusers.org/cacti/versions.php' 
    4242    ); 
     43} 
     44 
     45function npc_top_graph_refresh() { 
     46    // Don't want to refresh so set very high 
     47    return('2592000'); 
    4348} 
    4449