]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
colors for different levels of settings inheritance
authorMichael Wiebusch <stratomaster@gmx.net>
Mon, 1 Jul 2013 12:30:24 +0000 (14:30 +0200)
committerMichael Wiebusch <stratomaster@gmx.net>
Mon, 1 Jul 2013 12:30:24 +0000 (14:30 +0200)
config/settings.xml
layout/jtageditor.css
xml_spielwiese/cgitest.pl

index c6ac0bca1a352374f48b85f815503e5eda09e586..82d9e4c56daf6840167ac204b8346767fc8a5f4a 100644 (file)
@@ -1,3 +1,3 @@
 <?xml version="1.0"?>
 <MAPS type="MIMOSA26" specDbFile="MIMOSA26_JTAG_SPEC.xml">
-<register name="DIS_DISCRI"><field name="DisDiscri" value="42"/></register><register name="CONTROL_PIX_REG"><field name="RowMkd" value="42"/><field name="SelPad2" value="42"/></register></MAPS>
+<register name="DAC_BIAS"><field name="ID2PWRS" value="11"/></register><register name="CONTROL_PIX_REG"><field name="SelPad1" value="10"/></register></MAPS>
index dc6a3bf9b9f7730d53a79df7b7d10d54ecd85e91..e329f5336c8623e1e4f332b7ad2e78e0cc7c9d1b 100644 (file)
@@ -66,9 +66,6 @@ input[type="text"]
     height:25px;
 }
 
-.ancestorInfo {
-       height:3em;
-}
 
 table.registers {
   border-collapse:collapse;
@@ -97,15 +94,46 @@ table.fields td {
   height:25px;
 }
 
-
-table.registers td:nth-child(2) {
+table.registers>tbody>tr>td:nth-child(2) {
   background:lightgrey;
   }
 
-table.fields td:nth-child(2) {
-  background:#dea;
-  }
 
+tr.fileLevel
+{
+background:#CCFFCC;
+//background:#dea;
+}
+
+tr.fileLevel1
+{
+background:#CCFFFF;
+}
+
+tr.fileLevel2
+{
+background:#CCCCFF;
+}
+
+tr.fileLevel3
+{
+background:#FFCCFF;
+}
+
+tr.fileLevel4
+{
+background:#FFCCCC;
+}
+
+tr.fileLevel5
+{
+background:#FFFFCC;
+}
+
+tr.fileLevel6
+{
+background:#FFFFFF;
+}
 
 table.fields td.button_move, table.registers td.button_move {
   background:orange;
@@ -117,6 +145,17 @@ table.fields td.button_move, table.registers td.button_move {
   border:2px solid white;
 }
 
+
+table.fields td.button_move_deac {
+  background:grey;
+  cursor:normal;
+  text-align:center;
+  color:black;
+  font-weight:bold;
+  width:25px;
+  border:2px solid white;
+}
+
 .regheader {
   background:lightgrey;
   font-variant:small-caps;
index 13fa84d345b19e418b8f764d27cecc3b3c14a24d..037dbc31dd6d7ea1aa4c1249c958df521384acff 100755 (executable)
@@ -62,6 +62,8 @@ my $setfileName  = "";
 my $spectree;
 my $settree;
 
+my %fileLevelHash;
+
 my $ancestryTree;
 my @ancestryList;
 
@@ -86,11 +88,17 @@ if ( $cgiHash{'print'} eq 'settree' ) {
        print "<div class='header'>Selected Settings</div>\n";
        parseSetAndSpec( $cgiHash{'configFile'} );
        buildAncestry($setfileName);
-       #only for debug
-       $settree = $ancestryTree;
+#      assignFieldColors();#obsolete
+
+       $settree = $ancestryTree; # not so elegant
        print "<div class='ancestorInfo' align='center'>";
        print "inherit settings from:<br>";
-       print join( "<br>", @ancestryList );
+       print "<table>";
+       for my $ancestor (@ancestryList) {
+               print "<tr class=fileLevel".$fileLevelHash{$ancestor}."><td>$ancestor</td></tr>";
+       }
+       print "</table>";
+
        print "</div>";
        print_registers($setfile);
 }
@@ -153,11 +161,13 @@ sub buildAncestry {    # recursive
                $xmltree = $settree;
        }
        else {
+
                # we got an ancestor here
                $xmltree = $parser->parse_file($xmlfile);
+
                # tag all the fields with an heritage attribute
-               for my $field ($xmltree->findnodes("//field")){
-                       $field->setAttribute("isHeritageFrom","$xmlfileName");
+               for my $field ( $xmltree->findnodes("//field") ) {
+                       $field->setAttribute( "isHeritageFrom", "$xmlfileName" );
                }
        }
 
@@ -179,11 +189,17 @@ sub buildAncestry {    # recursive
 
                $ancestryTree = $xmltree;
        }
+       
+       my $counter=1;
+       for my $file (reverse(@ancestryList)){
+               $fileLevelHash{$file}=$counter;
+               if ($counter < 6) {
+                       $counter++;
+               }
+       }
 
 }
 
-
-
 sub mergeTrees
 { # give me two trees, tree1 overwrites everything in tree0 and will consequently be integrated in tree0
        my $tree0 = $_[0];
@@ -216,7 +232,8 @@ sub mergeTrees
 
                        # if field with same name exists in tree0/register0 delete it!
                        my $field0 =
-                         $register0->findnodes( "./field[\@name='" . $fieldName . "'" );
+                         $register0->findnodes( "./field[\@name='" . $fieldName . "']" )
+                         ->shift();
                        unless ( $field0 eq "" ) {
                                $register0->removeChild($field0);
                        }
@@ -284,16 +301,24 @@ sub print_fileSelection {
 
        print '<select name="fileSelectionDropdown" id="fileSelector" >';
 
+       print "<option value='...'>...</option>";
+       my @xmlfiles;
        while ( my $file = readdir(DIR) ) {
 
                # Use a regular expression to ignore files beginning with a period
                next if ( $file =~ m/^\./ );
 
                if ( $file =~ m/\.xml$/ ) {
-                       print '<option value="' . $file . '">' . $file . '</option>';
+                       push( @xmlfiles, $file );
                }
        }
-
+       for my $file ( sort @xmlfiles ) {
+               print '<option value="' . $file . '"';
+               if ( $file eq $configFile ) {
+                       print ' selected ';
+               }
+               print '>' . $file . '</option>';
+       }
        closedir(DIR);
 
        print '</select>';
@@ -404,6 +429,7 @@ sub copyDefaultRegister {
        close SCHREIBEN;
 }
 
+# a sorting directive for fields and registers
 sub by_name {
        my $a_name = $a->findvalue("./\@name");
        my $b_name = $b->findvalue("./\@name");
@@ -418,6 +444,27 @@ sub printHash {
        }
 }
 
+#sub assignFieldColors {
+#
+#      my @fieldColors = (
+#              "#CCFFCC", "#CCFFFF", "#CCCCFF", "#FFCCFF",
+#              "#FFCCCC", "#FFFFCC", "#FFFFFF"
+#      );
+#      
+#      my @ancestryWithChild;
+#      push(@ancestryWithChild,@ancestryList);
+#      push(@ancestryWithChild,$setfileName);
+#      
+#      my $index=0;
+#      for my $fileName (reverse(@ancestryWithChild)){
+#              $fieldColorHash{$fileName}= $fieldColors[$index];
+#              if($index < @fieldColors){
+#                      $index++;
+#              }
+#      }
+#      
+#}
+
 sub print_registers {
        my $xmlfile = $_[0];
        my $xmltree;
@@ -455,12 +502,13 @@ EOF
 
                #print "<td>$registerId</td>";
 
-               if ( $xmlfile eq $setfile ) {
+               if ( $xmlfile eq $setfile ) {  # we are printing the Specifications Tree
                        print <<EOF;
 <td class='button_move' onclick='deleteSettings("$registerName","");'>&nbsp;X&nbsp;</td>
 EOF
                }
-               if ( $xmlfile eq $specfile ) {
+               if ( $xmlfile eq $specfile ) {    # we are printing the Settings Tree
+
                        print <<EOF;
 <td class='button_move' onclick='copyDefaultRegister("$registerName");'>&nbsp;&rarr;&nbsp;</td>
 EOF
@@ -488,10 +536,11 @@ sub print_fields {
        my @fields       = sort by_name $register->findnodes("./field");
        print "<table class=\"fields\">";
        for my $field (@fields) {
-               my $fieldName    = $field->findvalue("./\@name");
-               my $readOnlyFlag = 0;
-               my $fieldValue   = $field->findvalue("./\@value");
-               my $fieldDescr   = prepare_text(
+               my $fieldName      = $field->findvalue("./\@name");
+               my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || "";
+               my $readOnlyFlag   = 0;
+               my $fieldValue     = $field->findvalue("./\@value");
+               my $fieldDescr     = prepare_text(
                        $spectree->findvalue(
                                    "/MAPS/register[\@name='"
                                  . $registerName
@@ -501,14 +550,21 @@ sub print_fields {
                          )
                          || "n/a"
                );
+
+               unless ( $isHeritageFrom eq "" ) {
+                       $fieldDescr =
+                         "Field was inherited from $isHeritageFrom\n\n" . $fieldDescr;
+               }
+
                my $fieldId = $xmlfile . "//" . $registerName . "/" . $fieldName;
                if ( $fieldValue eq "" ) {
                        $fieldValue   = $field->findvalue("./\@defaultValue");
                        $readOnlyFlag = 1;
                }
 
-               print "<tr>";
-               print "<td width=120  title=\"$fieldDescr\">$fieldName</td>";
+               print "<tr class='fileLevel".$fileLevelHash{$isHeritageFrom}."'>";
+               print "<td width=120 title=\"$fieldDescr\"";
+               print ">$fieldName</td>";
                print "<td> &nbsp;=&nbsp;</td>";
                if ($readOnlyFlag) {
                        print <<EOF;
@@ -523,16 +579,24 @@ EOF
 EOF
 
                }
+
                print '</td>';
-               if ( $xmlfile eq $specfile ) {
+               if ( $xmlfile eq $specfile ) { # we are printing the Specifications tree
                        print <<EOF;
 <td class='button_move' onclick='saveSettings("$registerName","$fieldName","$fieldValue");'>&nbsp;&rarr;&nbsp;</td>
 EOF
                }
-               if ( $xmlfile eq $setfile ) {
-                       print <<EOF;
+               if ( $xmlfile eq $setfile ) {    # we are printing the Settings Tree
+
+                       if ( $isHeritageFrom eq "" )
+                       {    # these are actual settings, not inherited!
+                               print <<EOF;
 <td class='button_move' onclick='deleteSettings("$registerName","$fieldName");'>&nbsp;X&nbsp;</td>
 EOF
+                       }
+                       else {
+                               print "<td class='button_move_deac'>&nbsp;X&nbsp;</td>";
+                       }
                }
                print "</tr>";
        }