From: <ro...@us...> - 2012-11-02 17:23:17
|
Revision: 2861 http://nscldaq.svn.sourceforge.net/nscldaq/?rev=2861&view=rev Author: ron-fox Date: 2012-11-02 17:23:10 +0000 (Fri, 02 Nov 2012) Log Message: ----------- - Get top level summary statistics page completed and working. Modified Paths: -------------- branches/nscldaq-10.2-development/daq/eventbuilder/barriers.tcl branches/nscldaq-10.2-development/daq/eventbuilder/connectionList.tcl branches/nscldaq-10.2-development/daq/eventbuilder/inputStatistics.tcl branches/nscldaq-10.2-development/daq/eventbuilder/outputStatistics.tcl Added Paths: ----------- branches/nscldaq-10.2-development/daq/eventbuilder/GUI.tcl Added: branches/nscldaq-10.2-development/daq/eventbuilder/GUI.tcl =================================================================== --- branches/nscldaq-10.2-development/daq/eventbuilder/GUI.tcl (rev 0) +++ branches/nscldaq-10.2-development/daq/eventbuilder/GUI.tcl 2012-11-02 17:23:10 UTC (rev 2861) @@ -0,0 +1,204 @@ +# This software is Copyright by the Board of Trustees of Michigan +# State University (c) Copyright 2005. +# +# You may use this software under the terms of the GNU public license +# (GPL). The terms of this license are described at: +# +# http://www.gnu.org/licenses/gpl.txt +# +# Author: +# Ron Fox +# NSCL +# Michigan State University +# + +## +# @file GUI.tcl +# @brief Provides the top level GUI widgets and other related stuff. + +# Add here to the package include path if it's not there already: + +set here [file dirname [info script]] +if {[lsearch $::auto_path $here] == -1} { + lappend ::auto_path $here +} + +# Package provides and requires: + +package provide EVB::GUI 1.0 +package require Tk +package require snit + +package require EVB::inputStatistics +package require EVB::outputStatistics +package require EVB::barriers +package require EVB::connectionList + +# Establish the EVB namespace into which we're going to squeeze: + +namespace eval ::EVB { + +} + +#----------------------------------------------------------------------------- +# +# Widgets for each tab +# + +## +# @class ::EVB::summary +# +# This class is a widget that displays the top level summary counters. +# Specifically input statistics, timestmpa information, output statistices +# Barrier summary and the connection list are displayed as shown in LAYOUT +# +# This is a widgetadaptor in order to allow a ttk::frame to be used as the +# hull. +# +# LAYOUT: +# +# Note in most cases the blocks shown below are themselves megawidgets. +# +# +# +------------------------------------------------------+ +# |inputstatistics:: | Output summary | +# | summaryDisplay +-------------------------+ +# | | Barrier summary | +# +----------------------------+-------------------------+ +# | Connection list/status | +# +------------------------------------------------------+ +# +# @note the connection list/statis widget is fully autonomous. +# +# OPTIONS +# +# Delegated to the input summary: +# +# - -infragments - total number of in flight fragments. +# - -oldest - Oldest in-flight timestamp. +# - -newest - Newest in-flight timestamp. +# - -deepestid - If of deepest input queue. +# - -deepestdepth - Depth of deepest input queue. +# +# Delegated to the output summary: +# +# - -outfragments - Number of fragments that have been output. +# - -hottestoutid - Id from which the most fragments have been written. + +# - -hottestoutcount - Number of fragments written from hottestoutid. +# - -coldestoutid - Id from which the fewest fragments have been written. +# - -coldestoutcount - Number of fragments written from coldestoutid. +# +# Delegated to the barrier summary: +# +# - -completebarriers - Number of complete barriers seen. +# - -incompletebarriers - Number of incomplete barriers seen +# - -mixedbarriers - Number of barriers with heterogeneous counts. +# +# +snit::widgetadaptor ::EVB::summary { + component inputSummary + component outputSummary + component barrierSummary + component connectionList + + # Delegate the input summary options: + + delegate option -infragments to inputSummary as -fragments + delegate option -oldest to inputSummary + delegate option -newest to inputSummary + delegate option -deepestid to inputSummary + delegate option -deepestdepth to inputSummary + + # Delegate output summary options: + + delegate option -outfragments to outputSummary as -fragments + delegate option -hottestoutid to outputSummary as -hottestid + delegate option -hottestoutcount to outputSummary as -hottestcount + delegate option -coldestoutid to outputSummary as -coldestid + delegate option -coldestoutcount to outputSummary as -coldestcount + + # Delegate barrier summary + + delegate option -completebarriers to barrierSummary as -completecount + delegate option -incompletebarriers to barrierSummary as -incompletecount + delegate option -mixedbarriers to barrierSummary as -heterogenouscount + + + + ## + # constructor + # + # @param args - configuration option/value pairs. + # + constructor args { + + # Install the hull and its components. + + installhull using ttk::frame + install inputSummary using ::EVB::inputStatistics::summaryDisplay \ + $win.insummary -text {Input Statistics} + + install outputSummary using ::EVB::outputSummary \ + $win.outsummary -text {Output Statistics} + + install barrierSummary using EVB::BarrierStats::Summary \ + $win.barriers -text {Barrier Statistics} + + install connectionList using ::EVB::connectionList \ + $win.connections -text {Connections} + + # layout the widgets: + + grid $inputSummary -row 0 -column 0 -rowspan 2 -sticky nsew + grid $outputSummary -row 0 -column 1 -sticky nsew + grid $barrierSummary -row 1 -column 1 -sticky nsew + grid $connectionList -row 2 -column 0 -columnspan 2 -sticky nsew + + + $self configurelist $args + } +} +## +# @class EVB::sourceStatistics +# +# Displays detailed source and barrier statistics by source. +# See LAYOUT below for details. This is a snit::widgetadaptor to allow +# ttk::frame to be the hull without any tomfoolery with the snit valid hull +# list. +# +# LAYOUT: +# +------------------------------------------------------------------------+ +# | Per queue source statistics | Per queue barrier statistics | +# | (EVB::inputStatstics::queueStats | EVB::BarrierStats::queueBarriers | +# +------------------------------------------------------------------------+ +# +# OPTIONS: +# +# METHODS: + +# +snit::widgetadaptor ::EVB::sourceStatistics { + +} +#----------------------------------------------------------------------------- +# +# The overall GUI widget. +# + + +#----------------------------------------------------------------------------- +# +# Stuff to maintain the status of the UI. +# + + + +## Testing stubs + +proc ::EVB::getConnections {} { + return [list \ + [list localhost "Dummy connection" ACTIVE No] \ + [list remote.host.here "Second connection" FORMING "Yes"] \ + ] +} \ No newline at end of file Modified: branches/nscldaq-10.2-development/daq/eventbuilder/barriers.tcl =================================================================== --- branches/nscldaq-10.2-development/daq/eventbuilder/barriers.tcl 2012-11-01 20:15:34 UTC (rev 2860) +++ branches/nscldaq-10.2-development/daq/eventbuilder/barriers.tcl 2012-11-02 17:23:10 UTC (rev 2861) @@ -27,7 +27,7 @@ lappend auto_path $here } -package provide barriers 1.0 +package provide EVB::barriers 1.0 package require Tk package require snit @@ -63,12 +63,14 @@ # | <complete> <incomplete> <heterogenous> | # +--------------------------------------------+ # -snit::widget EVB::BarrierStats::Summary { +snit::widgetadaptor EVB::BarrierStats::Summary { option -completecount -default 0 option -incompletecount -default 0 option -heterogenouscount -default 0 + delegate option -text to hull constructor args { + installhull using ttk::labelframe # # Create the widgets Modified: branches/nscldaq-10.2-development/daq/eventbuilder/connectionList.tcl =================================================================== --- branches/nscldaq-10.2-development/daq/eventbuilder/connectionList.tcl 2012-11-01 20:15:34 UTC (rev 2860) +++ branches/nscldaq-10.2-development/daq/eventbuilder/connectionList.tcl 2012-11-02 17:23:10 UTC (rev 2861) @@ -26,11 +26,15 @@ # each element has host, description and State colums: # # -snit::widget EVB::connectionList { +snit::widgetadaptor EVB::connectionList { option -updaterate -default 1; # Update rate in seconds. variable lastConnections [list] + delegate option -text to hull + constructor args { + installhull using ttk::labelframe + ## # TODO: Put this in a scrolling box. # @@ -43,6 +47,7 @@ grid $win.table -sticky nsew + $self configurelist $args $self _update; # Stock the table and reschedule the update periodicity. } Modified: branches/nscldaq-10.2-development/daq/eventbuilder/inputStatistics.tcl =================================================================== --- branches/nscldaq-10.2-development/daq/eventbuilder/inputStatistics.tcl 2012-11-01 20:15:34 UTC (rev 2860) +++ branches/nscldaq-10.2-development/daq/eventbuilder/inputStatistics.tcl 2012-11-02 17:23:10 UTC (rev 2861) @@ -85,9 +85,9 @@ delegate method * to innerHull constructor args { - $self configurelist $args + - install innerHull using ttk::frame $win.hull + install innerHull using ttk::labelframe $win.innerhull # # Define the widgets: @@ -119,6 +119,8 @@ grid $innerHull.deepdepth -row 3 -column 3 grid $innerHull -sticky nsew + + $self configurelist $args } } Modified: branches/nscldaq-10.2-development/daq/eventbuilder/outputStatistics.tcl =================================================================== --- branches/nscldaq-10.2-development/daq/eventbuilder/outputStatistics.tcl 2012-11-01 20:15:34 UTC (rev 2860) +++ branches/nscldaq-10.2-development/daq/eventbuilder/outputStatistics.tcl 2012-11-02 17:23:10 UTC (rev 2861) @@ -37,7 +37,7 @@ package require snit package require EVBUtilities -package provide EVB::ouputStatistics 1.0 +package provide EVB::outputStatistics 1.0 ## # Ensure that the EVB namespace is defined so that we can put stuff into it. @@ -71,15 +71,18 @@ # +-----------------------------------------+ # \endverbatim # -snit::widget ::EVB::outputSummary { +snit::widgetadaptor ::EVB::outputSummary { option -fragments -default 0 option -hottestid -default "" option -hottestcount -default "" option -coldestid -default "" option -coldestcount -default "" + delegate option -text to hull constructor args { + installhull using ttk::labelframe + # Create the widgets (all ttk::label s) ttk::label $win.fragl -text {Total fragments} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |