Skip to content

Commit c2fccb1

Browse files
Add support for no sort field. No longer default to StartDateTime
1 parent 8a6b597 commit c2fccb1

File tree

1 file changed

+17
-39
lines changed

1 file changed

+17
-39
lines changed

scripts/ZoneMinder/lib/ZoneMinder/Filter.pm

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -360,46 +360,24 @@ sub Sql {
360360
if ( @auto_terms ) {
361361
$sql .= ' AND ( '.join(' or ', @auto_terms).' )';
362362
}
363-
if ( !$filter_expr->{sort_field} ) {
364-
$filter_expr->{sort_field} = 'StartDateTime';
365-
$filter_expr->{sort_asc} = 0;
366-
}
367-
my $sort_column = '';
368-
if ( $filter_expr->{sort_field} eq 'Id' ) {
369-
$sort_column = 'E.Id';
370-
} elsif ( $filter_expr->{sort_field} eq 'MonitorName' ) {
371-
$sql = 'SELECT E.*, unix_timestamp(E.StartDateTime) as Time, M.Name as MonitorName
372-
FROM Events as E INNER JOIN Monitors as M on M.Id = E.MonitorId';
373-
$sort_column = 'M.Name';
374-
} elsif ( $filter_expr->{sort_field} eq 'Name' ) {
375-
$sort_column = 'E.Name';
376-
} elsif ( $filter_expr->{sort_field} eq 'StartDateTime' ) {
377-
$sort_column = 'E.StartDateTime';
378-
} elsif ( $filter_expr->{sort_field} eq 'StartTime' ) {
379-
$sort_column = 'E.StartDateTime';
380-
} elsif ( $filter_expr->{sort_field} eq 'EndTime' ) {
381-
$sort_column = 'E.EndDateTime';
382-
} elsif ( $filter_expr->{sort_field} eq 'EndDateTime' ) {
383-
$sort_column = 'E.EndDateTime';
384-
} elsif ( $filter_expr->{sort_field} eq 'Secs' ) {
385-
$sort_column = 'E.Length';
386-
} elsif ( $filter_expr->{sort_field} eq 'Frames' ) {
387-
$sort_column = 'E.Frames';
388-
} elsif ( $filter_expr->{sort_field} eq 'AlarmFrames' ) {
389-
$sort_column = 'E.AlarmFrames';
390-
} elsif ( $filter_expr->{sort_field} eq 'TotScore' ) {
391-
$sort_column = 'E.TotScore';
392-
} elsif ( $filter_expr->{sort_field} eq 'AvgScore' ) {
393-
$sort_column = 'E.AvgScore';
394-
} elsif ( $filter_expr->{sort_field} eq 'MaxScore' ) {
395-
$sort_column = 'E.MaxScore';
396-
} elsif ( $filter_expr->{sort_field} eq 'DiskSpace' ) {
397-
$sort_column = 'E.DiskSpace';
398-
} else {
399-
$sort_column = 'E.StartDateTime';
363+
if ($filter_expr->{sort_field}) {
364+
my $sort_column = '';
365+
if ( $filter_expr->{sort_field} eq 'MonitorName' ) {
366+
$sql = 'SELECT E.*, unix_timestamp(E.StartDateTime) as Time, M.Name as MonitorName
367+
FROM Events as E INNER JOIN Monitors as M on M.Id = E.MonitorId';
368+
$sort_column = 'M.Name';
369+
} elsif ( $filter_expr->{sort_field} eq 'StartTime' ) {
370+
$sort_column = 'E.StartDateTime';
371+
} elsif ( $filter_expr->{sort_field} eq 'EndTime' ) {
372+
$sort_column = 'E.EndDateTime';
373+
} elsif ( $filter_expr->{sort_field} eq 'Secs' ) {
374+
$sort_column = 'E.Length';
375+
} else {
376+
$sort_column = 'E.'.$filter_expr->{sort_field};
377+
}
378+
my $sort_order = $filter_expr->{sort_asc} ? 'ASC' : 'DESC';
379+
$sql .= ' ORDER BY '.$sort_column.' '.$sort_order;
400380
}
401-
my $sort_order = $filter_expr->{sort_asc} ? 'ASC' : 'DESC';
402-
$sql .= ' ORDER BY '.$sort_column.' '.$sort_order;
403381
if ( $filter_expr->{limit} ) {
404382
$sql .= ' LIMIT 0,'.$filter_expr->{limit};
405383
}

0 commit comments

Comments
 (0)