diff --git a/lib/calcms/audio.pm b/lib/calcms/audio.pm
index 177bdc4..4a0510a 100644
--- a/lib/calcms/audio.pm
+++ b/lib/calcms/audio.pm
@@ -11,10 +11,11 @@ sub durationToSeconds($) {
return $duration;
}
-sub formatDuration($$$) {
+sub formatDuration($$$;$) {
my $audioDuration = shift;
my $eventDuration = shift;
my $value = shift;
+ my $mouseOver = shift;
return '' unless $audioDuration;
return '' unless $eventDuration;
@@ -23,28 +24,31 @@ sub formatDuration($$$) {
$audioDuration = durationToSeconds($audioDuration);
$eventDuration = durationToSeconds($eventDuration);
- my $delta = 100 * $audioDuration / $eventDuration;
my $class = "ok";
- my $title = '';
+ my $title = $mouseOver;
+
+ my $delta = 100 * $audioDuration / $eventDuration;
+
if ( $delta > 101 ) {
$class = "warn";
$title = sprintf(
- qq{ title="file is too long! It should be %d minutes, but is %d"},
- $eventDuration / 60,
- $audioDuration / 60
+ qq{file is too long! It should be %d minutes, but is %d},
+ ($eventDuration+0.5) / 60,
+ ($audioDuration+0.5) / 60
);
}
+
if ( $delta < 99.99 ) {
$class = "error";
$title = sprintf(
- qq{ title="file is too short! should be %d minutes, but is %d"},
- $eventDuration / 60,
- $audioDuration / 60
+ qq{file is too short! should be %d minutes, but is %d},
+ ($eventDuration+0.5) / 60,
+ ($audioDuration+0.5) / 60
);
}
- return sprintf( qq{
%s
}, $class, $title, $value );
+ return sprintf( qq{%s
}, $class, $title, $value );
}
sub formatChannels($) {
@@ -60,7 +64,7 @@ sub formatSamplingRate($) {
return '' unless $samplingRate;
my $class = "ok";
$class = "error" if $samplingRate != 44100;
- return sprintf( qq{%s
}, $class, $samplingRate );
+ return sprintf( qq{%s Hz
}, $class, $samplingRate );
}
sub formatBitrate($) {
@@ -82,16 +86,18 @@ sub formatBitrateMode($) {
sub formatLoudness {
my $value = shift;
+ my $prefix = shift || '';
return '' unless $value;
$value = sprintf( "%.1f", $value );
+
my $class = 'ok';
$class = 'warn' if $value > -18.5;
$class = 'error' if $value > -16.0;
$class = 'warn' if $value < -24.0;
$class = 'error' if $value < -27.0;
- return qq{$value dB
};
+ return qq{$prefix$value dB
};
}
# do not delete this line
diff --git a/lib/calcms/playout.pm b/lib/calcms/playout.pm
index d32e6ca..d6e3368 100644
--- a/lib/calcms/playout.pm
+++ b/lib/calcms/playout.pm
@@ -86,9 +86,9 @@ sub get_scheduled($$) {
}
my $conditions = '';
- $conditions = " where " . join( " and ", @conditions ) if scalar @conditions > 0;
+ $conditions = " and " . join( " and ", @conditions ) if scalar @conditions > 0;
- my $order = 'start';
+ my $order = 'p.start';
$order = $condition->{order} if ( defined $condition->{order} ) && ( $condition->{order} ne '' );
my $query = qq{
@@ -119,8 +119,11 @@ sub get_scheduled($$) {
, p.modified_at
, p.updated_at
, TIMESTAMPDIFF(SECOND,e.start,e.end) "event_duration"
- from calcms_playout p left join calcms_events e
- on p.start = e.start
+ from calcms_playout p, calcms_events e, calcms_series_events se
+ where p.start=e.start
+ and e.id=se.event_id
+ and p.studio_id=se.studio_id
+ and p.project_id=se.project_id
$conditions
order by $order
$limit
diff --git a/website/agenda/planung/assign_series.cgi b/website/agenda/planung/assign_series.cgi
index 1422619..f80499a 100755
--- a/website/agenda/planung/assign_series.cgi
+++ b/website/agenda/planung/assign_series.cgi
@@ -99,7 +99,8 @@ sub show_events {
my $project = $projects->[0];
return unless scalar @$projects == 1;
- my $studios = studios::get( $config, { project_id => $params->{project_id}, studio_id => $params->{studio_id} } );
+ my $studios = studios::get( $config,
+ { project_id => $params->{project_id}, studio_id => $params->{studio_id} } );
my $studio = $studios->[0];
return unless scalar @$studios == 1;
diff --git a/website/agenda/planung/audio_recordings.cgi b/website/agenda/planung/audio_recordings.cgi
index ac1d80e..4e5541a 100755
--- a/website/agenda/planung/audio_recordings.cgi
+++ b/website/agenda/planung/audio_recordings.cgi
@@ -310,8 +310,8 @@ sub showAudioRecordings {
getDuration( $recording->{audioDuration} )
);
- $recording->{rmsLeft} = audio::formatLoudness( $recording->{rmsLeft} );
- $recording->{rmsRight} = audio::formatLoudness( $recording->{rmsRight} );
+ $recording->{rmsLeft} = audio::formatLoudness( $recording->{rmsLeft}, 'L:' );
+ $recording->{rmsRight} = audio::formatLoudness( $recording->{rmsRight}, 'R:' );
}
my $now = time();
diff --git a/website/agenda/planung/calendar.cgi b/website/agenda/planung/calendar.cgi
index 297cfce..9259cb8 100755
--- a/website/agenda/planung/calendar.cgi
+++ b/website/agenda/planung/calendar.cgi
@@ -396,11 +396,12 @@ sub showCalendar {
$date->{title} .= audio::formatDuration(
$date->{duration},
$date->{event_duration},
- sprintf( "duration: %.1g h", $date->{duration} / 3600 ) . "
"
+ sprintf( "duration: %.1g h", $date->{duration} / 3600 ) . "
",
+ sprintf( "%d s", $date->{duration} )
) if defined $date->{duration};
- $date->{title} .= "L:" . audio::formatLoudness( $date->{rms_left} ) . ', '
+ $date->{title} .= audio::formatLoudness( $date->{rms_left}, 'L: ' ) . ', '
if defined $date->{rms_left};
- $date->{title} .= "R:" . audio::formatLoudness( $date->{rms_right} ) . '
'
+ $date->{title} .= audio::formatLoudness( $date->{rms_right}, 'R: ' ) . '
'
if defined $date->{rms_right};
$date->{title} .= audio::formatBitrate( $date->{bitrate} ) if defined $date->{bitrate};
$date->{title} .= ' ' . audio::formatBitrateMode( $date->{bitrate_mode} ) . '
'
@@ -447,8 +448,9 @@ sub showCalendar {
for my $date (@$playout_dates) {
$date = events::calc_dates( $config, $date );
if ( defined $events_by_start->{ $date->{start} } ) {
- $events_by_start->{ $date->{start} }->{duration} = $date->{duration} || 0;
- $events_by_start->{ $date->{start} }->{event_duration} = $date->{event_duration} || 0;
+ $events_by_start->{ $date->{start} }->{duration} = $date->{duration} || 0;
+ $events_by_start->{ $date->{start} }->{event_duration} =
+ $date->{event_duration} || 0;
$events_by_start->{ $date->{start} }->{rms_left} = $date->{rms_left} || 0;
$events_by_start->{ $date->{start} }->{rms_right} = $date->{rms_right} || 0;
$events_by_start->{ $date->{start} }->{playout_modified_at} = $date->{modified_at};
@@ -1143,15 +1145,17 @@ sub printTableBody {
if ( $event->{class} eq 'event' ) {
$event->{content} .= '
';
- $event->{content} .=
- audio::formatDuration( $event->{duration}, $event->{event_duration},
- sprintf("%d min", (($event->{duration}+0.5)/60)) )
+ $event->{content} .= audio::formatDuration(
+ $event->{duration},
+ $event->{event_duration},
+ sprintf( "%d min", ( $event->{duration} + 0.5 ) / 60 ),
+ sprintf( "%d s", $event->{duration} )
+ )
. ' '
if defined $event->{duration};
- $event->{content} .= 'L' . audio::formatLoudness( $event->{rms_left} ) . ' '
+ $event->{content} .= audio::formatLoudness( $event->{rms_left}, 'L: ' ) . ' '
if defined $event->{rms_left};
- $event->{content} .=
- 'R' . audio::formatLoudness( $event->{rms_right} )
+ $event->{content} .= audio::formatLoudness( $event->{rms_right}, 'R: ' )
if defined $event->{rms_right};
#$event->{content} .= formatBitrate( $event->{bitrate} ) if defined $event->{bitrate};
@@ -1981,43 +1985,3 @@ sub check_params {
return $checked;
}
-__DATA__
-sub formatLoudness {
- my $label = shift;
- my $value = shift;
- return '' unless defined $value;
- return '' if $value == 0;
- return '' if $value eq '';
-
- #print STDERR "'$value'\n";
- $value = sprintf( "%d", $value + 0.5 );
- my $class = 'ok';
- $class = 'warn' if $value > -18.5;
- $class = 'error' if $value > -16.0;
- $class = 'warn' if $value < -24.0;
- $class = 'error' if $value < -27.0;
- return qq{$label} . $value . qq{dB};
-}
-
-sub formatDuration {
- my $duration = shift;
- return '' unless defined $duration;
- return '' if $duration eq '';
- my $result = int( ( $duration + 30.5 ) % 60 ) - 30;
- my $class = "ok";
- $class = "warn" if abs($result) > 1;
- $class = "error" if abs($result) > 2;
- return sprintf( qq{%ds}, $class, $duration );
-}
-
-sub formatBitrate {
- my $bitrate = shift;
- return '' if $bitrate eq '';
- if ( $bitrate >= 200 ) {
- return qq{$bitrate};
- } elsif ( $bitrate < 190 ) {
- return qq{$bitrate};
- } else {
- return qq{$bitrate};
- }
-}
diff --git a/website/agenda/planung/css/show-playout.css b/website/agenda/planung/css/show-playout.css
index d8d40d6..c69c965 100644
--- a/website/agenda/planung/css/show-playout.css
+++ b/website/agenda/planung/css/show-playout.css
@@ -24,6 +24,16 @@ table{
border-top:1px solid #666;
}
+#content #playout-table td.path{
+ width:15rem;
+ word-break: break-word;
+}
+
+#content #playout-table td div{
+ float:left;
+ margin:3px;
+}
+
#content tr.past{
background:#ccc;
}
@@ -36,15 +46,14 @@ table{
}
#content img{
- width:100%;
+ width:60%;
height:100%;
}
#content div.ok,
#content div.warn,
#content div.error{
- padding-top:3px;
- padding-bottom:3px;
+ padding:3px;
margin:1px;
border-radius:4px;
text-align:center;
diff --git a/website/agenda/planung/show-playout.cgi b/website/agenda/planung/show-playout.cgi
index 16c8dbd..649544a 100755
--- a/website/agenda/planung/show-playout.cgi
+++ b/website/agenda/planung/show-playout.cgi
@@ -98,7 +98,7 @@ sub showPlayout {
{
project_id => $params->{project_id},
studio_id => $params->{studio_id},
- order => 'modified_at asc, start asc',
+ order => 'p.modified_at asc, p.start asc',
from => $startDate
}
);
@@ -114,8 +114,8 @@ sub showPlayout {
$event->{stream_size} =~ s/(\d)(\d\d\d\.\d\d\d)$/$1\.$2/g;
$event->{duration} =~ s/(\d\.\d)(\d+)$/$1/g;
$event->{duration} =~ s/(\d)\.0/$1/g;
- $event->{rms_left} = audio::formatLoudness( $event->{rms_left} );
- $event->{rms_right} = audio::formatLoudness( $event->{rms_right} );
+ $event->{rms_left} = audio::formatLoudness( $event->{rms_left}, 'L:' );
+ $event->{rms_right} = audio::formatLoudness( $event->{rms_right}, 'R:' );
$event->{bitrate} = audio::formatBitrate( $event->{bitrate} );
$event->{bitrate_mode} = audio::formatBitrateMode( $event->{bitrate_mode} );
$event->{sampling_rate} = audio::formatSamplingRate( $event->{sampling_rate} );
@@ -125,10 +125,7 @@ sub showPlayout {
sprintf( "%.1g h", $event->{duration} / 3600)
);
$event->{channels} = audio::formatChannels( $event->{channels} );
-
- if ( $event->{start} lt $today ) {
- $event->{class} = "past";
- }
+ $event->{class} = "past" if $event->{start} lt $today;
}
$params->{events} = $events;
diff --git a/website/agenda/planung/templates/show_playout.html b/website/agenda/planung/templates/show_playout.html
index 61d4ca2..23dc4cb 100644
--- a/website/agenda/planung/templates/show_playout.html
+++ b/website/agenda/planung/templates/show_playout.html
@@ -10,19 +10,15 @@
-
| start |
- playout path |
- seconds |
- loudness |
- format |
+ path |
+ more |
image |
bytes |
- modified at |
@@ -30,13 +26,18 @@
|
- |
- |
- |
- |
+ |
+
+
+
+
+
+
+
+
+ |
 |
|
- |