Commit Graph

537 Commits

Author SHA1 Message Date
Fabio Manganiello 221bcc058b Need static/js and static/css as well 2020-11-26 12:02:41 +01:00
Fabio Manganiello 04cb2324aa Removed dashboard configuration from HttpBackend, removed old HTTP
static files and replaced them with Vue app target dist/ directory.
2020-11-26 11:54:28 +01:00
Fabio Manganiello 887a0e5e88 Webapp dist files 2020-11-26 11:44:08 +01:00
Fabio Manganiello cc3e52c69d Migrated ImageCarousel widget 2020-11-26 00:26:10 +01:00
Fabio Manganiello 243e56b194 Added support for rows on dashboard and music widget 2020-11-23 00:44:31 +01:00
Fabio Manganiello ecf6a844dd Added support for refreshSeconds on dashboard level 2020-11-22 14:26:25 +01:00
Fabio Manganiello 62b651789a Migrated DateTimeWeather and Calendar widgets 2020-11-22 12:57:28 +01:00
Fabio Manganiello 39abdfe40a New Vue.js template for dashbord WIP 2020-11-21 01:12:08 +01:00
Fabio Manganiello 9179f35a82 Support for row height for dashboard widgets 2020-11-11 22:28:43 +01:00
Fabio Manganiello 7947c1031d More robust frontend reaction in case of race conditions on player state events 2020-09-29 15:58:23 +02:00
Fabio Manganiello f3a9dc4ef5 Added navigator icon for media.gstreamer plugin 2020-09-29 15:35:29 +02:00
Fabio Manganiello 05b0a7f14d Added GStreamer media plugin [closes #151] 2020-09-29 15:32:40 +02:00
Fabio Manganiello 0a9c4fc3a7 Added GStreamer camera plugin [relates to #151] 2020-09-28 22:10:56 +02:00
Fabio Manganiello f2a654bdec Reset camera.android.ipcam stylesheet 2020-09-27 19:47:21 +02:00
Fabio Manganiello 07336d3272 Fixed login redirect page [closes #154] 2020-09-27 17:20:14 +02:00
Fabio Manganiello 959cc8b75b Added navigator icon for ffmpeg camera 2020-09-27 17:09:52 +02:00
Fabio Manganiello df1e03f0af Added FFmpeg camera plugin [relates to #150] 2020-09-27 12:52:07 +02:00
Fabio Manganiello b21193dc74 Added camera.ffmpeg plugin web panel 2020-09-27 03:09:14 +02:00
Fabio Manganiello 9ad6188b5d New js file for camera.pi plugin 2020-09-27 02:52:20 +02:00
Fabio Manganiello 31f2c5152c New template file for camera.pi 2020-09-27 02:47:38 +02:00
Fabio Manganiello c269c62fe6 Refactored logging names 2020-09-27 01:33:38 +02:00
Fabio Manganiello 09f9e974b1 Camera plugins refactor 2020-09-25 17:19:43 +02:00
Fabio Manganiello 9623752e19 Fixed module name typo 2020-09-08 17:57:18 +02:00
Fabio Manganiello 53ddbad7ce Refactored MLX90640 plugin and HTTP route to work with direct BytesIO - it improves performance over using temporary files or base64-encoded responses 2020-09-08 17:51:46 +02:00
Fabio Manganiello ac02becba8 Switched RSS HTML digests style to inline CSS for better client cross-compatibility and added docstring to RssUpdates 2020-09-05 16:54:08 +02:00
Fabio Manganiello 13642cc42e Possibility to customize the CSS in the generated RSS digests 2020-09-05 01:48:28 +02:00
Fabio Manganiello d6f653d834 Using named arguments for formatting the parsed content of a feed 2020-09-05 01:43:33 +02:00
Fabio Manganiello dc254d6474 Also include the link in an RSS feed digest 2020-09-05 01:39:16 +02:00
Fabio Manganiello e9d4ed3911 Added more source fields to the RSS NewFeedEvent 2020-09-05 00:50:04 +02:00
Fabio Manganiello 907bc0f75b Added rtorrent integration [closes #120] 2020-09-03 13:08:42 +02:00
Fabio Manganiello 737c135996 More robust logic to pass procedures to the index.html template 2020-08-31 21:32:00 +02:00
Fabio Manganiello edd2235cbc Removed old reference to __plugins__ in kodi.js - using `inspect.get_config` endpoint instead. 2020-08-31 18:31:15 +02:00
Fabio Manganiello 7e8bef40cd Added Zeroconf integration [closes #105] 2020-08-14 00:36:39 +02:00
Fabio Manganiello a6730d5252 Added generated CSS folder (prevents pyScss dependencies for binary builds) 2020-07-19 22:41:37 +02:00
Fabio Manganiello 1e15bb5606 Changed favicon 2020-07-01 01:08:31 +02:00
Fabio Manganiello b32232b46e Prevent a tight loop in HttpPoll if one of the requests fails 2020-07-01 00:53:23 +02:00
Fabio Manganiello f20cb4df5b No need to override background-color in main for dashboard 2020-05-23 12:26:45 +02:00
Fabio Manganiello 97343e97de background-image for dashboard CSS 2020-05-23 12:22:56 +02:00
Fabio Manganiello d6b509e98a Replaced fullscreen auto logic with button toggle 2020-05-20 16:15:08 +02:00
Fabio Manganiello 82162c3c5e Apply fullscreen to document.documentElement instead of getting the body 2020-05-20 15:58:28 +02:00
Fabio Manganiello 7e0a91d839 Portable implementation of fullscreen JS methods 2020-05-20 15:47:17 +02:00
Fabio Manganiello e44dfbc169 Added fullscreen support in webpanel and dashboard 2020-05-20 15:29:49 +02:00
Fabio Manganiello aa66b81b7b Fixed webhook event management 2020-05-09 01:47:12 +02:00
Fabio Manganiello d0ccd65214 Added Samsung smart TV web plugin 2020-05-03 17:21:16 +02:00
Fabio Manganiello 1cf93199d0 Adaptive dashboard widget height 2020-05-01 15:03:13 +02:00
Fabio Manganiello 42d29ca1f6 LINT fixes 2020-04-23 18:33:57 +02:00
Fabio Manganiello 8440320031 Don't swallow the stack trace in backend.http.request if a request fails 2020-04-22 23:46:05 +00:00
Fabio Manganiello f7d644c32d get_procedures() can now return Python function objects as well.
This means that the JSON encoder must act accordingly and parse
the function object into an encodable string.
2020-04-12 22:56:12 +02:00
Fabio Manganiello b490344632 Fixed missing static_folder issue on settings page and JS document race condition 2020-03-29 13:47:22 +02:00
Fabio Manganiello 13c25f94d5 Better fix for the calendar widget font size 2020-03-24 17:23:48 +01:00
Fabio Manganiello 9e32f1fb42 Tweaked font-size for upcoming event and other events in calendar widget 2020-03-24 17:14:13 +01:00
Fabio Manganiello a388e8dd83 Reduced font-size for calendar events to prevent overflow on smaller screens 2020-03-24 17:06:14 +01:00
Fabio Manganiello 03968928e7 Don't do QRcode plugin base imports, or the web app may fail if the dependencies are not installed 2020-03-24 10:29:22 +01:00
Fabio Manganiello 4ece49bfe7 Added missing string format parameter 2020-03-24 09:11:07 +01:00
Fabio Manganiello c9db887505 Added QR code/barcode integration [closes #119] 2020-03-10 00:07:21 +01:00
Fabio Manganiello 535b2ec083 Changed mpd filter to dict on the frontend as well 2020-03-08 13:07:35 +01:00
Fabio Manganiello 76800e00b1 Use the right handlers for Zigbee network online/offline events 2020-02-25 18:38:44 +01:00
Fabio Manganiello f74c44c7fb There can be many Zigbee property set events; don't trigger a full refresh on all of them and only update the impacted devices instead 2020-02-25 18:13:11 +01:00
Fabio Manganiello 2d3c61173d Added Zigbee web panel (closes #123) 2020-02-23 22:54:50 +01:00
Fabio Manganiello f8f3d2e310 Show default node number instead of empty string if name is not set 2020-02-22 01:10:36 +01:00
Fabio Manganiello 424077fdbc Completed ZWave web panel (see #123) 2020-02-22 01:00:52 +01:00
Fabio Manganiello 98727c4f31 Added support for values in Z-Wave web panel (see #123) 2020-02-20 02:34:35 +01:00
Fabio Manganiello fcef7af6a4 Adding Z-Wave web panel (#123) [WIP] 2020-02-10 00:39:32 +01:00
Fabio Manganiello c5adc141ea More robust mechanism for websocket message send section locking 2020-02-06 19:30:40 +01:00
Fabio Manganiello ca030c9b25 Websocket notifications delivery should be thread-safe.
If multiple threads process events and notify the websocket
clients at the same time then we may end up with inconsistent
messages delivered on the websocket (and websockets is not
designed to handle such cases). Protecting the send call with
a per-socket lock makes sure that we only write one message
at the time for a certain client.
2020-02-06 01:04:36 +01:00
Fabio Manganiello 8caa170676 Don't consider the trailing / in pre-select tab mode 2020-02-01 00:17:11 +01:00
Fabio Manganiello b02b30656c Using /#[plugin.name] as a URL hint for selecting a tab on load.
Closes #83
2020-01-31 20:29:47 +01:00
Fabio Manganiello eff21c0720 Added /plugin/<plugin_name> route for single plugin view (see #83) 2020-01-23 00:27:36 +01:00
Fabio Manganiello f3b50d0de1 Using the Github link for the flag-icon.css instead of cloning the whole submodule 2020-01-20 22:38:13 +01:00
Fabio Manganiello c44de5e2d7 Grouped common CSS and JS includes into separate templates 2020-01-19 14:47:51 +01:00
Fabio Manganiello 4e45c1d0bc Removed font-awesome full submodule clone. Use the CDN-provided all.css file instead.
It won't work if the webapp runs on a device not connected to the internet,
but it saves a lot of installation space.
2020-01-18 19:59:02 +01:00
Fabio Manganiello 3e2a9c0401 Skip torrent status responses with no url. 2020-01-07 09:59:45 +01:00
Fabio Manganiello 9134a231b3 success=true will always be in the response: deal with it 2020-01-07 09:46:26 +01:00
Fabio Manganiello 49a7ee643e - Added Buienradar integration
- Refactored weather plugin/backend as Darksky plugin/backend
2019-12-31 08:51:19 +01:00
Fabio Manganiello 931ab9d673 Removed debug print 2019-12-29 16:55:50 +01:00
Fabio Manganiello ba6c890a42 Refactored and improved camera plugin 2019-12-29 16:28:07 +01:00
Fabio Manganiello 7ecb27463c Added missing '@' 2019-12-24 14:04:23 +01:00
Fabio Manganiello ba31d4f4c9 Fixed parameter access 2019-12-24 14:00:06 +01:00
Fabio Manganiello 2edb3f0944 Added button for refreshing available cameras 2019-12-24 13:52:14 +01:00
Fabio Manganiello ef58cc9e32 Support for username/password in camera URLs if authentication is required 2019-12-24 13:52:14 +01:00
Fabio Manganiello a23f5446da Added GPIO web panel 2019-12-22 18:10:30 +01:00
Fabio Manganiello 93a3c72d4e Added camera.android.ipcam web panel 2019-12-18 01:00:56 +01:00
Fabio Manganiello 416c9ceb93 Fixed picamera mjpeg stream 2019-12-17 22:44:15 +01:00
Fabio Manganiello 634aeec58d Refactored camera.pi endpoints 2019-12-17 21:51:55 +01:00
Fabio Manganiello 17af488b32 Using an io memory buffer to write the streamed images instead of a
physical file to improve streaming performance
2019-12-17 21:32:56 +01:00
Fabio Manganiello 60d5e7a0f6 Response cast fix 2019-12-17 20:00:08 +01:00
Fabio Manganiello fb744dbc74 Added picamera streaming route and web panel tab 2019-12-17 19:54:38 +01:00
Fabio Manganiello 8c41110145 Added bluetooth plugin (see #89) 2019-12-11 18:05:17 +01:00
Fabio Manganiello a6488e15fe Don't treat the execute tab as a special tab in the web panel,
otherwise configurations with enabled_plugins/disabled_plugins
won't work with it
2019-12-08 17:33:21 +01:00
Fabio Manganiello be5c5d365c Added execute tab to webpanel 2019-12-08 16:25:03 +01:00
Fabio Manganiello d38746d278 Moved imports for extra dependencies inside the methods where they are actually used 2019-12-01 23:35:05 +01:00
Fabio Manganiello f281411b2e Set the light property before the any_on/all_on check on the group 2019-12-01 16:33:48 +01:00
Fabio Manganiello 3bbb6cf053 Include dev version of vue.js if available in the HTTP static/js
folder, otherwise include the minified version
2019-12-01 16:33:48 +01:00
Fabio Manganiello f98a440200 Support for explicit enabled_plugins/disabled_plugins on webpanel index 2019-11-22 00:00:14 +01:00
Fabio Manganiello 9914d4ef0b Handling CSS and fonts properly in RSSUpdates digests 2019-10-13 12:43:18 +02:00
Fabio Manganiello 4c72646759 typo 2019-10-08 10:24:48 +00:00
Fabio Manganiello ca41f6b8cf Torrent download from web panel should be asynchronous 2019-10-08 10:14:45 +00:00
Fabio Manganiello 313a195831 Support for torrent direct download through magnet link in web panel 2019-09-29 17:48:30 +02:00
Fabio Manganiello a17dba3ec6 LINT warnings fix 2019-09-26 19:23:38 +02:00
Fabio Manganiello 168b1b0e5a Finalized camera.ir.mlx90640 web interface 2019-09-26 18:33:44 +02:00
Fabio Manganiello d7dc74beed Added web plugin for mlx90640 infrared camera 2019-09-26 11:15:18 +02:00
Fabio Manganiello 8bfe875483 We don't need to fail hard in backend.http if the backend is configured
to run the web server externally but without spawning uswgi directly
(e.g. if nginx takes care of spawning and wrapping the uwsgi instance)
2019-08-14 20:02:13 +02:00
Fabio Manganiello 1ca7feb506 Small fix for the font size on mobile 2019-07-28 23:32:52 +02:00
Fabio Manganiello 1f2f293778 Redirect mercury-parser.js stderr to stdout. Moreover, if an error occurs while parsing a link from an RSS feed we should report the link that raised the error, not the URL of the parent feed 2019-07-25 16:34:00 +00:00
Fabio Manganiello 44e27e6c62 Log the link we are trying to parse (useful for debugging parsing issues) 2019-07-25 18:23:28 +02:00
Fabio Manganiello 34433a363b Call sound.stop_recording upon audio stream stop so we won't have hanging streams with no clients connected 2019-07-25 14:01:09 +02:00
Fabio Manganiello 6aaa2fa1ea extract_content is supposed to be a boolean 2019-07-25 01:09:16 +02:00
Fabio Manganiello 5293f5b203 #73: Implemented wrapper plugin for the new Node.js mercury-parser.
As the Mercury reader web API is deprecated, and the only available
implementation is the open source mercury-parser, node, npm and
@postlight/mercury-parser have to be added as dependencies for the
http.webpage plugin (or at least for the `simplify` action).
2019-07-24 19:02:53 +02:00
Fabio Manganiello 43ca3a6f94 Added support for streaming audio from an input source over HTTP 2019-07-23 18:22:00 +02:00
Fabio Manganiello 426f064459 "Remember me" options on session should leave the cookie for a longer
time (e.g. one year), it should be browser-session-only otherwise
2019-07-23 00:31:17 +02:00
Fabio Manganiello a16fc65d37 Try to load the dev version of vue.js if available 2019-07-19 20:00:39 +02:00
Fabio Manganiello 57712b3693 Be more robust in case of Mercury API failures while parsing RSS feeds. TODO: the Mercury API has now been retired and replaced by a library, that however is only available for Node.js. Figure out how to wrap the new library in Python 3 2019-07-19 15:00:06 +00:00
Fabio Manganiello f12c6db34f Added camera web panel 2019-07-19 15:20:48 +02:00
Fabio Manganiello f86e2eb5a7 Implemented settings page and finalized multi-user support 2019-07-19 00:50:52 +02:00
Fabio Manganiello cd9bdbb1c8 Fixed undefined reference 2019-07-17 14:57:50 +02:00
Fabio Manganiello a60e89806f Fixed undefined reference 2019-07-16 22:43:27 +02:00
Fabio Manganiello cc61032bec Fixes for readthedocs build 2019-07-16 22:38:42 +02:00
Fabio Manganiello 9c4646bed5 Fixed documentation and added missing docs to the index 2019-07-16 20:28:00 +02:00
Fabio Manganiello 1c1ecc18df Support for multi-users and authentication for HTTP pages 2019-07-15 14:12:00 +02:00
Fabio Manganiello 3c3496b19a Revert "The active-glow animation takes too much CPU on music.mpd"
This reverts commit 4c3cd2fcf2.
2019-07-13 12:27:43 +02:00
Fabio Manganiello 7666e8cb51 Including vue.min.js instead of vue.js 2019-07-13 12:25:02 +02:00
Fabio Manganiello 5766367402 Rewritten snowboy and Google push-to-talk plugins to make them a better replacement for the deprecated google-assistant-library 2019-07-11 22:54:33 +02:00
Fabio Manganiello 792c24700c Refactored requirements to only include mandatory ones and added style reference to assistant in dashboard.html 2019-07-10 12:18:53 +02:00
Fabio Manganiello 0a97bb2345 Better style for webpanel switches 2019-07-08 15:21:13 +02:00
Fabio Manganiello b50a52acf2 Sort articles in descending order when querying from RSS news web widget 2019-07-08 09:26:38 +02:00
Fabio Manganiello 4c3cd2fcf2 The active-glow animation takes too much CPU on music.mpd 2019-07-08 00:58:02 +02:00
Fabio Manganiello c19251c6a1 Always reset carousel image width to auto before re-adjusting the size 2019-07-08 00:16:43 +02:00
Fabio Manganiello b2c31fcec6 Dashboard style improvements 2019-07-07 23:50:35 +02:00
Fabio Manganiello 42e5673192 Increased font size for widgets 2019-07-07 20:47:44 +02:00
Fabio Manganiello 09165ca0ff Dashboard rewritten in vue.js 2019-07-07 20:11:32 +02:00
Fabio Manganiello 8006f3688c Removed old gpio scripts 2019-07-02 16:27:13 +02:00
Fabio Manganiello 1e39d3a8d2 Return obj even when the metrics are undefined, or we will set this.metrics to undefined 2019-07-02 16:12:24 +02:00
Fabio Manganiello 75f7fbd67a Don't perform reads on the serial plugin when refreshing 2019-07-02 16:04:06 +02:00
Fabio Manganiello 0dac122db5 Style for the new sensors web plugin 2019-07-02 15:38:09 +02:00
Fabio Manganiello fb4af87967 Style for the new sensors web plugin 2019-07-02 15:23:41 +02:00
Fabio Manganiello 9c44d047ac Vue.set to set metrics object, array assignment won't be picked up by Vue listeners 2019-07-02 15:08:32 +02:00
Fabio Manganiello e82edc8338 Set metrics object through Vue.set 2019-07-02 15:02:44 +02:00
Fabio Manganiello be79d15faf Handle sensor event format correctly 2019-07-02 15:01:40 +02:00
Fabio Manganiello 23d106969f Default timeout for API calls from 30 to 60 seconds 2019-07-02 14:56:43 +02:00
Fabio Manganiello 40fa640397 New sensors web panel WIP 2019-07-02 14:42:25 +02:00
Fabio Manganiello 54a3643605 Added name and value props to sensor component 2019-07-02 14:39:04 +02:00
Fabio Manganiello 43b01f7c0e Fixed icon class 2019-07-02 14:34:05 +02:00
Fabio Manganiello 1eae45805d Added new sensors plugin to webpanel 2019-07-02 14:04:25 +02:00
Fabio Manganiello b932df1c12 Added switch tab to the new web panel 2019-07-02 12:02:28 +02:00
Fabio Manganiello 26ee3fc75c Changed nav bar text to icons 2019-07-01 22:26:04 +02:00
Fabio Manganiello 277d6ec271 Added torrent support in new webplayer 2019-07-01 19:32:22 +02:00
Fabio Manganiello c78789e644 Added Kodi support to new media webplayer 2019-06-29 00:06:03 +02:00
Fabio Manganiello f86eeef549 New media webplugin WIP 2019-06-27 23:52:40 +02:00
Fabio Manganiello 70bba5fc96 Support for browser webplayer and subtitles in new webplugin 2019-06-26 11:05:16 +02:00
Fabio Manganiello e55735f409 Added YouTube support to new media webplugin 2019-06-25 22:46:25 +02:00