* Add eslint to travis.yml
* Update eslint package versions and apply new indent rules
* Enable the brace-style and block-style eslint rules
* Enable the 'curly' eslint rule
* Enable the 'keyword-spacing' eslint rule
* Enable the 'key-spacing' eslint rule
* Enable the 'object-curly-spacing' eslint rule
* Enable the 'no-new-object' eslint rule
* Only disable the no-caller eslint rule in the one affected file
* Enable the 'no-unused-vars' eslint rule for local variables
* Add linting of JS in .php files
* monitor.php: Add nonce and move <script> inside </body>
* export_functions.php: Untested: Add @nonce to <script>
* blank.php: Add @nonce to <script> and add to CSP enforced views
* Enforce CSP on login and privacy views
* group.php: Add nonce and move <script> inside </body>
* filter.php: Add @nonce to <script>
* Fix updateButtons argument on the filter page upon change and page load
* events.php: Add @nonce to <script>
* Add Content-Security-Policy-Report-Only: script-src 'self' 'nonce-' policy
* Use @data-on-click-this to attach inline click event handlers which expect being called with 'this'
Only handle ones that don't return a value.
* Use @data-on-click to attach inline click event handlers with no args and no return value
* Use @data-on-click-true to attach inline click event handlers with 'true' as the only argument
* Enforce a script-src CSP on views without inline JS
* Convert some onchange attributes to data-on-change
* Move <script> before </body>
* Change makePopupLink to not use onclick
* Change makePopupButton to not use onclick
* Use .popup-link in control_functions.php
* Use makePopupButton in controlcaps.php
* Prevent double-encoding in makePopup*
* Use makePopupButton in devices.php
* Use makePopupButton in logout.php
* Use makePopupLink in monitor.php
* Use makePopupLink and .popup-link in montage.php
* Use makePopupButton in options.php
* Use makePopupButton, makePopupLink, and .popup-link in zones.php
Things like the we require javascript message, and any other messages like error messages.
Use this on the monitor and console view to stick an error message at the top when saving a monitor fails.
This is a pretty quick, crude implementation.
* Fix nearEventsQuery
Removed dbEscape from getNearEvents previous event because it only returns 0. Now matches next. Changed getEventDefaultVideoPath function to return a web path rather than the absolute path based on ic0ns branch. Also added start times to allow for videoJS replaymode.
* Unescape filters
Filters need to be unescaped
* Add initial values to page load
* Add replay modes to videojs
* rough in figuring out a frame in between bulk frames
* Add alarmCues
Add a graphical indication of where alarm frames happened in an event. Similar to what zmNinja shows.
* Add remaining buttons to videojs
Functionality for all buttons on videojs streams. FF/RW buttons show as active when they are active.
* Whitespace and fix Bulkframe calcs
* Fix zms events trying to generate with mp4 code
ZMS events would attempt to generate frames as though they were an mp4/passthrough type because the full eventpath wasn't passed
* ZMS scrub bar
Move zms scrub bar to bottom of image feed. Make it simpler and more like videojs style.
* Wrap event feeds properly
* Fix dvrControls on watch view
* Add scaleToFit
Add a scaleToFit option to event view
* Add navigation for videoJS streams
Disables nav buttons at beginning and end of events. Handles switching from zms to videojs. If zms crashes changes next event function to reload page instead of ajax.
* Add scaleToFit to watch and frame view
Adds scaleToFit to watch view. Since frame view uses the watch cookie this required changes to frame view
* Add transition to zoom
* Change stills view to match stream
Move stills slider bar to match scrub bar on streams. Allow it to resize, make it larger. Add alarmcues.
* Add Stills for every event
Add stills for every event. Match size to stream size
* Progressbox transitions
Added a scale to fit option. When navigating between events of different size they will fill the window. Turned on when any event uses it, turned off when any event turns it off.