We want to show _groups_ on the big screen, not _rounds_
authorSteinar H. Gunderson <sesse@samfundet.no>
Sat, 19 Feb 2005 14:23:37 +0000 (14:23 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Sat, 19 Feb 2005 14:23:37 +0000 (14:23 +0000)
html/do-set-active-tournament.pl
html/show-tournament.pl
html/templates/show-tournament.tmpl
sql/ccbs.sql

index 4405e42..c27ebf5 100755 (executable)
@@ -10,7 +10,7 @@ my $cgi = new CGI;
 my $tournament = $cgi->param('tournament');
 $dbh->{AutoCommit} = 0;
 
-$dbh->do('DELETE FROM bigscreen.active_rounds');
+$dbh->do('DELETE FROM bigscreen.active_groups');
 $dbh->do('DELETE FROM bigscreen.active_tournament');
 if ($tournament != -1) {
        $dbh->do('INSERT INTO bigscreen.active_tournament VALUES (?)', undef, $tournament);
index 602e5cb..7be0036 100755 (executable)
@@ -24,8 +24,8 @@ if ($ref->{'num_incomplete'} == 0) {
        $closing_valid = 0;
 }
 
-# Find all rounds currently shown on the bigscreen.
-my $active_rounds = $dbh->selectall_hashref('SELECT round FROM bigscreen.active_rounds WHERE tournament=?', 'round', undef, $id);
+# Find all groups currently shown on the bigscreen.
+my $active_groups = ccbs::db_fetch_all($dbh, 'SELECT * FROM bigscreen.active_groups WHERE tournament=?', $id);
 
 # Swoop all the data in in a big join, then order it over to quasi-sane Perl objects.
 # (round -> parallel -> player -> songs -> title,chosen,score)
@@ -41,12 +41,6 @@ for my $score (@$scores) {
                $round = $score->{'round'};
                push @rounds, { round => $round, parallels => [], locked => 0 };
                $parallel = -1;
-
-               if (defined($active_rounds->{$round})) {
-                       $rounds[$#rounds]->{'bigscreen'} = 1;
-               } else {
-                       $rounds[$#rounds]->{'bigscreen'} = 0;
-               }
        }
        my $p = $rounds[$#rounds]->{'parallels'};
        if ($score->{'parallel'} != $parallel) {
@@ -54,6 +48,15 @@ for my $score (@$scores) {
                push @$p, { parallel => $parallel, players => [], songs => [], num_songs => 0 };
                $player = '';
 
+               # suboptimal, but heck :-)
+               $p->[$#$p]->{'bigscreen'} = 0;
+               for my $ag (@$active_groups) {
+                       if ($ag->{'round'} == $round && $ag->{'parallel'} == $parallel) {
+                               $p->[$#$p]->{'bigscreen'} = 1;
+                               last;
+                       }
+               }
+
                # Information on songs is not selected from roundrandomsongs etc.,
                # but is filled in the first time the song is seen for this round
                # (ie. below)
index 82a05d3..86854cd 100644 (file)
 
   <div>
 
+  [% FOR p = r.parallels %]
   <form method="post" action="do-set-active-round.pl">
     <p>
       <input type="hidden" name="tournament" value="[% tournament.tournament %]" />
       <input type="hidden" name="round" value="[% r.round %]" />
+      <input type="hidden" name="parallel" value="[% p.parallel %]" />
   [% IF p.bigscreen %]
       <input type="hidden" name="show" value="false" />
       <input type="submit" value="Fjern fra storskjerm" />
     </p>
   </form>
   
-  [% FOR p = r.parallels %]
   <form method="post" action="do-edit-scores.pl">
   <table class="scores">
     <tr>
index 0140141..c3005d1 100644 (file)
@@ -163,11 +163,12 @@ CREATE SCHEMA bigscreen;
 CREATE TABLE bigscreen.active_tournament (
        tournament INTEGER NOT NULL PRIMARY KEY REFERENCES tournaments
 );
-CREATE TABLE bigscreen.active_rounds (
+CREATE TABLE bigscreen.active_groups (
        tournament INTEGER NOT NULL REFERENCES bigscreen.active_tournament,
        round INTEGER NOT NULL,
+       parallel INTEGER NOT NULL,
 
-       PRIMARY KEY ( tournament, round ),
-       FOREIGN KEY ( tournament, round ) REFERENCES rounds
+       PRIMARY KEY ( tournament, round, parallel ),
+       FOREIGN KEY ( tournament, round, parallel ) REFERENCES groups
 );
 );