Commit Graph

35 Commits

Author SHA1 Message Date
Isaac Connor
eae89025ee refactor: rename RTSP2WebStream to StreamChannel
Rename applies to Go2RTC, Janus, and RTSP2Web streaming options.
Update enum values from Primary/Secondary to Restream/CameraDirectPrimary/CameraDirectSecondary.

- Add db migration zm_update-1.37.79.sql to rename column and migrate data
- Update C++ enum StreamChannelOption and member stream_channel
- Update PHP getStreamChannelOptions() method
- Update all JavaScript references
- Auto-select CameraDirectPrimary when Restream option becomes disabled

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 19:37:08 -05:00
Isaac Connor
cbbdeb2910 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2026-01-30 11:41:09 -05:00
Isaac Connor
41d3a25964 Use a smarted calculation to determine an optimal streaming scale. 2026-01-30 11:40:33 -05:00
BHMSD-bdailey
0b2d14d552 Fix Issue when a current recording is occurring and a thumbnail is attempted to be made. 2026-01-29 21:56:40 -05:00
Ben Dailey
fd5bd63808 feat: add status bar to thumbnail overlay with LIVE indicator and wall clock time
- Add status bar below video with LIVE indicator for live streams
- Show pulsing red dot animation for live streams
- Display wall clock time that updates as recorded video plays
- Add event start time data attribute to console and events pages
- Hide status bar when no content to display

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 21:09:57 -05:00
Ben Dailey
d51790531a feat: add live streaming support to console thumbnail hover overlay
- Support go2rtc, RTSP2Web, and Janus streaming in thumbnail popups
- Separate still thumbnail logic from hover overlay streaming
- Still thumbnails use event snapshot when not decoding
- Hover overlay prioritizes live streaming over recorded video
- Refactor thumbnail JS into focused helper functions
- Fix video-stream.js path for dynamic import

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:50:50 -05:00
Ben Dailey
3f69df433b Merge branch 'master' into ChangeThumbnails
Resolved conflict in web/ajax/console.php:
- Incorporated master's improved $streamSrc computation (modifies $options in place)
- Kept our streaming priority logic (go2rtc > rtsp2web > janus > event fallback)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:03:36 -05:00
Ben Dailey
7c2dd47c75 fix: prioritize external streaming over event fallback in console thumbnails
Go2rtc, rtsp2web, and janus work independently of ZM's decode/analyze
processes. Check for these external streaming methods before checking
Analysing/Decoding state to ensure live streaming is used when available.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 17:44:52 -05:00
Isaac Connor
b373f44476 Ensure that we have mode=jpeg in the stream-src. Also remove frames option so that it actually streams. Hopefully fixes thumbnails not working 2026-01-28 10:40:08 -05:00
Ben Dailey
ee229d4257 feat: add event thumbnail fallback and go2rtc support for console hover overlay
When a monitor is not analyzing or decoding, the console thumbnail now
shows the most recent event's snapshot instead of attempting a live
stream. The hover overlay plays the event replay (with mp4 support if
available).

For active monitors with go2rtc enabled, the hover overlay now uses
go2rtc WebRTC streaming via the video-stream custom element, with a
3-second fallback to MJPEG if the connection fails.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 10:39:34 -05:00
Isaac Connor
5162df68dd Make tfoot elements clickable the way they were before 2026-01-28 10:02:58 -05:00
Isaac Connor
2260243a9c Don't check for overall canViewMonitors because if we are limiting the monitors that a user can view, Monitors=None 2026-01-27 07:55:32 -05:00
Isaac Connor
e1c41a980c Actually include Manufacturer and Model in results 2026-01-20 22:18:55 -05:00
Isaac Connor
41ce8a2541 Add Manufacturer and Model to console 2026-01-17 12:32:47 -05:00
copilot-swe-agent[bot]
dd657bb5d2 fix: Use 'Monitor' attribute instead of 'MonitorId' in filter
This matches the existing filter attribute naming convention used throughout ZoneMinder.

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-09 14:30:55 +00:00
copilot-swe-agent[bot]
c97e2b4090 feat: Add StartDateTime filters to console event count links
- Modified web/ajax/console.php to generate filter querystrings for each event period (Hour, Day, Week, Month, Archived, Total)
- Modified web/skins/classic/views/js/console.js to use filter querystrings in event links
- Links now include proper date filters matching old console.php implementation

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-09 14:29:48 +00:00
copilot-swe-agent[bot]
a0f9194280 Add Sequence field to AJAX response data for proper sorting
- Added Sequence field to row data in ajax/console.php
- Sequence is now available for bootstrap-table to sort by (already configured as default)
- Sequence column remains hidden (not defined in table headers)
- Ensures table sorts by monitor sequence order by default

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 18:05:44 +00:00
copilot-swe-agent[bot]
ba316a9c83 Make ajax/console.php stateless by using REQUEST instead of SESSION
- Removed session access and manipulation code
- Changed from session_filters to request_filters using $_REQUEST directly
- Removed zm_session_start() and session_write_close() calls
- AJAX handler now stateless, getting all filter values from request parameters

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 17:45:03 +00:00
copilot-swe-agent[bot]
5a7b18620e Add missing MonitorId filter implementation in AJAX console handler
- Added MonitorId to session_filters array
- Implemented MonitorId filtering logic to filter monitors by selected IDs
- Handles both single value and array of monitor IDs

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 17:10:42 +00:00
copilot-swe-agent[bot]
579e9a1d6c Add params.data initialization and improve type handling
- Initialize params.data to empty object if undefined to prevent errors
- Improve validation logic to consistently handle arrays vs strings
- Make type checking more explicit and readable

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 16:48:03 +00:00
copilot-swe-agent[bot]
400b44b823 Improve array field handling and value validation
- Fixed array field detection in ajaxRequest using endsWith('[]')
- Improved multi-value field detection in monitorFilterOnChange
- Fixed empty value check to properly handle '0' as valid value
- Added proper initialization of array fields in params.data

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 16:46:17 +00:00
copilot-swe-agent[bot]
7bcbde9639 Fix cookie naming consistency and simplify empty check
- Fixed cookie naming to use consistent names without array brackets
- Updated JavaScript to separate field names from cookie names
- Simplified empty value check in AJAX handler using empty()
- Consolidated cookie restoration logic in _monitor_filters.php

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 16:43:58 +00:00
copilot-swe-agent[bot]
cd0f1b9b07 Add cookie fallback for filter persistence and fix empty array check
- Added cookie restoration in _monitor_filters.php as fallback when session is empty
- Fixed empty array comparison in AJAX console handler

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 16:38:58 +00:00
copilot-swe-agent[bot]
62e86716af Fix monitor filter AJAX and Group dropdown onChange handler
- Updated Group::get_group_dropdown() to accept view parameter and use monitorFilterOnChange for console view
- Updated ajaxRequest in console.js to include filter form data in params.data
- Added session update logic in AJAX console handler to persist filter selections
- Added cookie storage in monitorFilterOnChange for client-side persistence

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 16:36:53 +00:00
copilot-swe-agent[bot]
61137ac78c Add bandwidth units to Function column display
Merged commit 52ea542 from SteveGilvarry/ZoneMinder.

Bandwidth was showing as a raw number without units, making it
difficult to interpret. Now formats bandwidth with appropriate
units (B/s, kB/s, MB/s, GB/s) using human_filesize() function
with 1024 as the conversion step.

Server-side formatting is consistent with event disk space
formatting and reduces client-side processing.

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 14:50:02 +00:00
copilot-swe-agent[bot]
185651b659 Add dynamic footer totals generation via AJAX
Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-07 00:33:03 +00:00
copilot-swe-agent[bot]
9f67994025 Fix filtering and remove unnecessary ZM_WEB_LIST_THUMBS variable
Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-06 22:56:05 +00:00
copilot-swe-agent[bot]
81bcdb4567 Address code review feedback: improve efficiency and fix event bindings
Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2025-12-26 17:31:52 +00:00
copilot-swe-agent[bot]
f02d74c4ed Fix session handling and monitor ID extraction in bootstrap-table implementation
Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2025-12-26 17:29:21 +00:00
copilot-swe-agent[bot]
9528502ea7 Implement bootstrap-table with AJAX for console view
Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2025-12-26 17:26:30 +00:00
Alejandro Criado-Pérez
6fd119157a Text corrections 2023-08-27 02:00:59 +02:00
Isaac Connor
969baa3891 Convert user from an array to a User object 2023-04-23 12:57:29 -04:00
Isaac Connor
dd0ce50c17 quotes and improve the output of the ajaxError to say what the action was and who the user was 2020-02-06 13:21:30 -05:00
Isaac Connor
8dd8888975 Php namespace (#2537)
* experiment with namespaces on the Server class

* experiment with namespaces on the Server class

* Implement the ZM namespace on objects

* Implement the ZM namespace on objects

* Implement the ZM namespace on objects
2019-02-22 09:19:07 -05:00
Isaac Connor
b9736ad2f2 merge from sa the ajax file to apply the sorting. 2017-05-25 14:08:04 -04:00