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 @@ - - - - - + + - @@ -30,13 +26,18 @@ - - - - + + -
startplayout pathsecondsloudnessformatpathmore image bytesmodified at
+ + + + + + + +