Prev Next Links when in Timeline view
Prev Next Links when in Timeline view
I have a problem when viewing events while using the timeline viewer.
While using the timeline view filtered for specific camera's events, the prev and next buttons in the video viewer window do not work as expected. Instead of moving though the events that are filtered accoring to the events in the timeline window, they move through all events in the database according to the cronological order. If I click the list button from the timeline view, the query that is used to display the timeline is re-run (as evidenced by the new query windows that executes) and you can run through the filtered events as expected.
It's like the query for the events when passed to the viewer window from the timeline view is dropping any non-time oriented filters in the query. I am assuming that the query in the viewer window when run from the timeline view is re-executed each time that you click the next and prev buttons since the way that the query is executed in the viewer window when in a timetime view is sort of an open ended query since you should be able to step through all the events in the database (since the timeline is open ended).
Thanks for the help.
Skydiver
While using the timeline view filtered for specific camera's events, the prev and next buttons in the video viewer window do not work as expected. Instead of moving though the events that are filtered accoring to the events in the timeline window, they move through all events in the database according to the cronological order. If I click the list button from the timeline view, the query that is used to display the timeline is re-run (as evidenced by the new query windows that executes) and you can run through the filtered events as expected.
It's like the query for the events when passed to the viewer window from the timeline view is dropping any non-time oriented filters in the query. I am assuming that the query in the viewer window when run from the timeline view is re-executed each time that you click the next and prev buttons since the way that the query is executed in the viewer window when in a timetime view is sort of an open ended query since you should be able to step through all the events in the database (since the timeline is open ended).
Thanks for the help.
Skydiver
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact:
I think this is correct and is by design (if I remember correctly). When you initially select the timeline view you will see a range that should include all the events that the filter outputs. I figured it would confuse people who selected all the events for a day if clicking on the prev button didn't ust select events before that day. So I think any time elements in the filter are removed once you start to navigate from the initial view. I can't really think of an easy and consistent way to do otherwise without users missing events because they don't appear in the view, though I guess I could prohibit navigate prior to or after the filtered range full stop.
The timeline feature is still in beta so it is good to get feedback about how people might expect it to work.
The timeline feature is still in beta so it is good to get feedback about how people might expect it to work.
Phil
What is confusing for me is that when you want to watch events as they are displayed in the timeline view (ie. filtered by camera) then the progression of events in the viewer don't match the timeline.
I understand that you shouldn't pass a limited list of events from the timeline view to the viewer and execute the prev/next based on that limited array of events in that passed list since you may want to logically view events that weren't contained in the original query set as displayed in the timeline (open ended times in the list). You could pass other (non-time type of filters) settings to the viewer to be used in each query executed when the prev/next buttons to limit the list to the cameras in question.
Is the query recreated each time you select prev/next when you launch the viewer from a timeline view? If this is how you are doing it, then I am assuming that you only pass the specific event to the timeline view to the viewer then execute each successive queryies ased on the time of the event passed. If you could pass the cameras that were filtered from the timeline to the viewer then use that as a part of the query's that would solve the problem that I am having.
Does anyone else seem to have problems with the logic as I describe here ? If not then I will either live with it.
Thanks.
I understand that you shouldn't pass a limited list of events from the timeline view to the viewer and execute the prev/next based on that limited array of events in that passed list since you may want to logically view events that weren't contained in the original query set as displayed in the timeline (open ended times in the list). You could pass other (non-time type of filters) settings to the viewer to be used in each query executed when the prev/next buttons to limit the list to the cameras in question.
Is the query recreated each time you select prev/next when you launch the viewer from a timeline view? If this is how you are doing it, then I am assuming that you only pass the specific event to the timeline view to the viewer then execute each successive queryies ased on the time of the event passed. If you could pass the cameras that were filtered from the timeline to the viewer then use that as a part of the query's that would solve the problem that I am having.
Does anyone else seem to have problems with the logic as I describe here ? If not then I will either live with it.
Thanks.
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact:
I'm not sure I understand this paragraph. Can you elaborate and/or give examples?skydiver wrote:Is the query recreated each time you select prev/next when you launch the viewer from a timeline view? If this is how you are doing it, then I am assuming that you only pass the specific event to the timeline view to the viewer then execute each successive queryies ased on the time of the event passed. If you could pass the cameras that were filtered from the timeline to the viewer then use that as a part of the query's that would solve the problem that I am having.
Phil
I was asking the logic used to navigate to the prev/next events when the viewer is executed from the timeline viewer.
Before the timeline viewer, when you filtered events and then clicked on an event to view it from the list created by the filter, the prev/next buttons worked by moving back and forth through the array of events that was created by execution of the query in the filtered list. I assume that you created an array of events based on the query then stepped through this array using the prev/next button.
When you use the timeline, what changes is that the events shown in the timeline don't really have a start and end time filtering the events since you can navigate through the timeline past what is displayed in the timeline window (I know that this isn't programatically true since each portion of the timeline is a snapshot of the whole timeline, zoomed according to the settings selected and therefore each view has a limit of the events shown in a query).
What I was trying to figure out was what information was passed to the event viewer when you selected an event from the timeline viewer. Since I don't see a configured filter pop up when you go from the timeline to the viewer windows, I assumed that you are only passing the eventID that was selected to the viewer window. If you were to pass not only the specific event ID but the additonal filters (ie. What cameras, archive status, etc) that were in effect to display the events in the timeline, you would be able to execute the prev/next buttons in the way that I am trying to use them.
Here is a better example:
Go to Filters. Execute a filtered list based on the following settings:
Now once the list is displayed click the Timeline viewer.
The timeline will show all the events that matched the filtered list. If you were to click on the event farthest on the left in the timeline viewer, the event shown inthe viewer will be what you expect, but if you click the next button, you may get an event that is unarchived from camera 2, not from either camera 1 or 3 as the filtered list shows in the timeline. Conversely if you select the previous button (to an event that is not on the current timeline view) you would expect that the event should display according to the filter with the change being in an adjusment ot the first date/time filter.
The way to ensure that the events display this way would be to pass all the filters that were used to create the array of events listed ijnthe timeline to the viewer windows with the exception of the start/end filters used to create the timeline. Instead, extract the time of the event or the event ID from the passed filter. Using this as a moment in time, each time the prev/next button is clicked, a new query selects the next event in time or ID order that matches all the other filterers from the list.
Does this help clarify what I am asking?
Before the timeline viewer, when you filtered events and then clicked on an event to view it from the list created by the filter, the prev/next buttons worked by moving back and forth through the array of events that was created by execution of the query in the filtered list. I assume that you created an array of events based on the query then stepped through this array using the prev/next button.
When you use the timeline, what changes is that the events shown in the timeline don't really have a start and end time filtering the events since you can navigate through the timeline past what is displayed in the timeline window (I know that this isn't programatically true since each portion of the timeline is a snapshot of the whole timeline, zoomed according to the settings selected and therefore each view has a limit of the events shown in a query).
What I was trying to figure out was what information was passed to the event viewer when you selected an event from the timeline viewer. Since I don't see a configured filter pop up when you go from the timeline to the viewer windows, I assumed that you are only passing the eventID that was selected to the viewer window. If you were to pass not only the specific event ID but the additonal filters (ie. What cameras, archive status, etc) that were in effect to display the events in the timeline, you would be able to execute the prev/next buttons in the way that I am trying to use them.
Here is a better example:
Go to Filters. Execute a filtered list based on the following settings:
Code: Select all
( Monitor ID equal to 1
or Monitor ID equal to 3)
and Archive Status equal to Unarchived Only
and Date/Time greater than or equal to 2006-03-22 8:00
and Date/Time less than or equal to 2006-03-23 8:00
The timeline will show all the events that matched the filtered list. If you were to click on the event farthest on the left in the timeline viewer, the event shown inthe viewer will be what you expect, but if you click the next button, you may get an event that is unarchived from camera 2, not from either camera 1 or 3 as the filtered list shows in the timeline. Conversely if you select the previous button (to an event that is not on the current timeline view) you would expect that the event should display according to the filter with the change being in an adjusment ot the first date/time filter.
The way to ensure that the events display this way would be to pass all the filters that were used to create the array of events listed ijnthe timeline to the viewer windows with the exception of the start/end filters used to create the timeline. Instead, extract the time of the event or the event ID from the passed filter. Using this as a moment in time, each time the prev/next button is clicked, a new query selects the next event in time or ID order that matches all the other filterers from the list.
Does this help clarify what I am asking?
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact:
Yes, I think so. Currently the filter used is not passed to the event viewer window, though it is from the list view. The primary reason for ths is just the size and complexity of page that would be generated, possibly with hundreds of links in. If they all had the filter information then it would take a long time to render.
A possible way around this would be to save each search as a temporary saved filter and just pass the name or id around. This may be a better way to do things in general, so I'll have a look at this, though it will likely be a 1.22.2 mod at the earliest.
A possible way around this would be to save each search as a temporary saved filter and just pass the name or id around. This may be a better way to do things in general, so I'll have a look at this, though it will likely be a 1.22.2 mod at the earliest.
Phil
Thanks. That would be great.
What information (if any) ARE you passing from the event viewer windows to the playback window? It looks like you are passing just the event selected then using some on the fly query to select the next event before or after the current event when you select the next/prev button links in the playback window. If this is the case, just pass the limiting filters (non-time oriented filters would be excluded) to be uses that as the base for each successive prev/next query. Don't actually execute the query so that you can limit the the size of the array, just pass the query shell. Then when you execute the next/previous all you should need to do is select the next/previous that first matches the filter then is next imediately before/after the current event. This should eliminate having to prime a very large array.
In fact, I don't know whether you are passing the whole filtered array of events when you go to the playback window from the event list view or not, but it seems to me that this would be good logic to use when passing the arrays to the playback window from there.
Let me know if you want help to beta the feature when you are ready.
Skydiver
What information (if any) ARE you passing from the event viewer windows to the playback window? It looks like you are passing just the event selected then using some on the fly query to select the next event before or after the current event when you select the next/prev button links in the playback window. If this is the case, just pass the limiting filters (non-time oriented filters would be excluded) to be uses that as the base for each successive prev/next query. Don't actually execute the query so that you can limit the the size of the array, just pass the query shell. Then when you execute the next/previous all you should need to do is select the next/previous that first matches the filter then is next imediately before/after the current event. This should eliminate having to prime a very large array.
In fact, I don't know whether you are passing the whole filtered array of events when you go to the playback window from the event list view or not, but it seems to me that this would be good logic to use when passing the arrays to the playback window from there.
Let me know if you want help to beta the feature when you are ready.
Skydiver
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact:
- zoneminder
- Site Admin
- Posts: 5215
- Joined: Wed Jul 09, 2003 2:07 pm
- Location: Bristol, UK
- Contact: