my $spectree;
my $settree;
+my %fileLevelHash;
+
my $ancestryTree;
my @ancestryList;
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);
}
$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" );
}
}
$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];
# 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);
}
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>';
close SCHREIBEN;
}
+# a sorting directive for fields and registers
sub by_name {
my $a_name = $a->findvalue("./\@name");
my $b_name = $b->findvalue("./\@name");
}
}
+#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;
#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","");'> X </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");'> → </td>
EOF
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
)
|| "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> = </td>";
if ($readOnlyFlag) {
print <<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");'> → </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");'> X </td>
EOF
+ }
+ else {
+ print "<td class='button_move_deac'> X </td>";
+ }
}
print "</tr>";
}