Ignore:
Timestamp:
04/21/07 16:22:47 (16 years ago)
Author:
bastiaans
Message:

web/addons/job_monarch/overview.php:

  • make our own datasource
  • store the XML data in a session for the clusterimage
  • assign a image map of clickable nodes for the clusterimage

web/addons/job_monarch/templates/overview.tpl:

  • add node_clustermap imagemap block

web/addons/job_monarch/libtoga.php:

web/addons/job_monarch/image.php:

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/addons/job_monarch/libtoga.php

    r313 r326  
    417417        var $data, $ip, $port;
    418418
    419         function DataSource( $ip = '127.0.0.1', $port = 8649 ) {
    420                 $this->ip = $ip;
    421                 $this->port = $port;
     419        //function DataSource( $ip = '127.0.0.1', $port = 8649 ) {
     420        function DataSource() {
     421
     422                global $DATA_SOURCE;
     423
     424                $ds_fields      = explode( ':', $DATA_SOURCE );
     425
     426                $ds_ip          = $ds_fields[0];
     427                $ds_port        = $ds_fields[1];
     428
     429                $this->ip       = $ds_ip;
     430                $this->port     = $ds_port;
     431
    422432        }
    423433
     
    454464        function DataGatherer( $cluster ) {
    455465
    456                 global $DATA_SOURCE;
     466                //global $DATA_SOURCE;
    457467       
    458468                //printf("dg cluster = %s\n", $cluster );
    459                 $ds_fields = explode( ':', $DATA_SOURCE );
    460                 $ds_ip = $ds_fields[0];
    461                 $ds_port = $ds_fields[1];
    462 
    463                 $this->source = new DataSource( $ds_ip, $ds_port );
    464 
    465                 $this->parser = xml_parser_create();
     469                //$ds_fields = explode( ':', $DATA_SOURCE );
     470                //$ds_ip = $ds_fields[0];
     471                //$ds_port = $ds_fields[1];
     472
     473                //$this->source = new DataSource( $ds_ip, $ds_port );
     474
     475                $this->cluster  = $cluster;
    466476                $this->httpvars = $httpvars;
    467                 $this->xmlhandler = new TorqueXMLHandler( $cluster );
     477        }
     478
     479        function parseXML( $data ) {
     480
     481                //$src = &$this->source;
     482                //$this->data = $src->getData();
     483
     484                $this->parser           = xml_parser_create();
     485                $this->xmlhandler       = new TorqueXMLHandler( $this->cluster );
     486
    468487                xml_set_element_handler( $this->parser, array( &$this->xmlhandler, 'startElement' ), array( &$this->xmlhandler, 'stopElement' ) );
    469         }
    470 
    471         function parseXML() {
    472 
    473                 $src = &$this->source;
    474                 $this->data = $src->getData();
    475 
    476                 if ( !xml_parse( $this->parser, $this->data ) )
     488                //if ( !xml_parse( $this->parser, $this->data ) )
     489                if ( !xml_parse( $this->parser, $data ) )
    477490                        $error = sprintf( 'XML error: %s at %d', xml_error_string( xml_get_error_code( $this->parser ) ), xml_get_current_line_number( $this->parser ) );
    478491        }
     
    591604
    592605                        if( !isset( $nodes[$hostname] ) )
    593                                 $nodes[$hostname] = new NodeImage( $hostname );
     606                                $nodes[$hostname] = new NodeImage( $this->proc_cluster, $hostname );
    594607
    595608                } else if( $name == 'METRIC' and strstr( $attrs[NAME], 'MONARCH' ) and $this->proc_cluster == $this->clustername ) {
     
    668681                               
    669682                                                        if( !isset( $nodes[$host] ) )
    670                                                                 $my_node = new NodeImage( $host );
     683                                                                $my_node = new NodeImage( $this->proc_cluster, $host );
    671684                                                        else
    672685                                                                $my_node = $nodes[$host];
     
    767780        var $image, $x, $y, $hostname, $jobs, $tasks, $showinfo;
    768781
    769         function NodeImage( $hostname ) {
     782        function NodeImage( $cluster, $hostname ) {
    770783
    771784                global $SMALL_CLUSTERIMAGE_NODEWIDTH;
     
    778791                $this->hostname = $hostname;
    779792                $this->cpus = $this->determineCpus();
     793                $this->clustername = $cluster;
    780794                $this->showinfo = 1;
    781795                $this->size = $SMALL_CLUSTERIMAGE_NODEWIDTH;
     
    818832                $this->x = $x;
    819833                $this->y = $y;
     834        }
     835
     836        function getImagemapArea() {
     837
     838                $area_topleft           = $this->x . "," . $this->y;
     839                $area_bottomright       = ($this->x + $this->size) . "," . ($this->y + $this->size);
     840                $area_coords            = $area_topleft . "," . $area_bottomright;
     841
     842                $area_href              = "./?c=" . $this->clustername . "&h=" . $this->hostname;
     843                $area_tooltip           = $this->hostname . ": " . implode( " ", $this->jobs );
     844
     845                $tag_href               = "HREF=\"" . $area_href . "\"";
     846                $tag_coords             = "COORDS=\"" . $area_coords . "\"";
     847                $tag_tooltip1           = "ALT=\"" . $area_tooltip . "\"";
     848                $tag_tooltip2           = "TITLE=\"" . $area_tooltip . "\"";
     849
     850                return ("<AREA SHAPE=\"RECT\" " . $tag_coords . " " . $tag_href . " " . $tag_tooltip1 . " " . $tag_tooltip2 . ">");
    820851        }
    821852
     
    929960        var $filtername, $filters;
    930961
    931         function ClusterImage( $clustername ) {
    932 
     962        //function ClusterImage( $clustername ) {
     963        function ClusterImage( $data, $clustername ) {
     964
     965                //$this->dataget                = $dataget;
    933966                $this->dataget          = new DataGatherer( $clustername );
     967                $this->data             = $data;
    934968                $this->clustername      = $clustername;
    935969                $this->filters          = array();
    936970                $this->size             = 's';
     971                $this->width            = 0;
     972                $this->height           = 0;
     973                $this->output           = 1;
     974        }
     975
     976        function getWidth() {
     977                return $this->width;
     978        }
     979        function getHeight() {
     980                return $this->height;
    937981        }
    938982
     
    943987        function setBig() {
    944988                $this->size     = 'b';
     989        }
     990
     991        function setNoimage() {
     992                $this->output   = 0;
    945993        }
    946994
     
    10071055       
    10081056                $mydatag = $this->dataget;
    1009                 $mydatag->parseXML();
     1057                $mydatag->parseXML( $this->data );
    10101058
    10111059                if( $this->isSmall() ) {
     
    10481096                $y_offset       = $fontheight + (2 * $fontspaceing);
    10491097
     1098                $this->width    = $max_width;
     1099                $this->height   = ($y_offset + (($node_rows*$node_width)+1) );
     1100
    10501101                $image = imageCreateTrueColor( $max_width, ($y_offset + (($node_rows*$node_width)+1) ) );
    10511102                $colorwhite = imageColorAllocate( $image, 255, 255, 255 );
     
    10901141                        }
    10911142                }
    1092                
    1093                 header( 'Content-type: image/png' );
    1094                 imagePNG( $image );
    1095                 imageDestroy( $image );
     1143       
     1144                $this->nodes    = &$nodes;
     1145
     1146                if ($this->output) {
     1147                        header( 'Content-type: image/png' );
     1148                        imagePNG( $image );
     1149                        imageDestroy( $image );
     1150                }
     1151        }
     1152
     1153        function getImagemapArea() {
     1154
     1155                $clusterimage_map       = "";
     1156
     1157                foreach( $this->nodes as $hostname => $node ) {
     1158
     1159                        $node_map               = $node->getImagemapArea();
     1160                        $clusterimage_map       .= $node_map;
     1161                }
     1162
     1163                return $clusterimage_map;
    10961164        }
    10971165}
Note: See TracChangeset for help on using the changeset viewer.