diff --git a/README.md b/README.md index 693e2af..30ad7c0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # Obscreen -Obscreen is a user-friendly self-hosted digital signage tool. Manage a fleet of Raspberry Pi devices to transform your screens into a professional digital signage network. +Obscreen is a user-friendly self-hosted digital signage tool leveraging chromium browser. @@ -17,7 +17,7 @@ Try it! Demo Server (Location: Roubaix - France): [https://demo.obscreen.io](https://demo.obscreen.io/login?username=admin&password=admin) -It is a temporary live demo, all data will be deleted after 30 minutes (~30secs downtime) . Sponsored by myself. +It is a temporary live demo, all data will be deleted after 30 minutes (~30secs downtime). ## ⭐️ Features - Dead simple chromium webview inside @@ -27,6 +27,7 @@ It is a temporary live demo, all data will be deleted after 30 minutes (~30secs - Fleet screen management - Playlist management - Authentication management +- Plays content from flashdrive in offline mode - Plugin system to extend capabilities - [Multi Languages](https://github.com/jr-k/obscreen/tree/master/lang) - No costly monthly pricing plan per screen or whatever, no cloud, no telemetry diff --git a/data/www/js/slideshow/slides.js b/data/www/js/slideshow/slides.js index 4d0031d..bb1b1a9 100644 --- a/data/www/js/slideshow/slides.js +++ b/data/www/js/slideshow/slides.js @@ -21,10 +21,18 @@ jQuery(document).ready(function ($) { if (timeOnly) { options['noCalendar'] = true; + + if ($el.val() === '') { + $el.val('00:00'); + } } else { if ($el.val().indexOf('-') < 0) { $el.val(''); } + + if ($el.val() === '') { + $el.val(prettyTimestamp(d.getTime())); + } } $el.flatpickr(options); diff --git a/src/service/TemplateRenderer.py b/src/service/TemplateRenderer.py index 91073cf..c260904 100644 --- a/src/service/TemplateRenderer.py +++ b/src/service/TemplateRenderer.py @@ -12,6 +12,7 @@ from src.model.hook.FunctionalHookRegistration import FunctionalHookRegistration from src.constant.WebDirConstant import WebDirConstant from src.util.utils import get_safe_cron_descriptor, \ is_cron_in_datetime_moment, \ + is_cron_in_week_moment, \ seconds_to_hhmmss, am_i_in_docker, \ truncate, merge_dicts, dictsort @@ -47,6 +48,7 @@ class TemplateRenderer: str=str, seconds_to_hhmmss=seconds_to_hhmmss, is_cron_in_datetime_moment=is_cron_in_datetime_moment, + is_cron_in_week_moment=is_cron_in_week_moment, json_dumps=json.dumps, merge_dicts=merge_dicts, dictsort=dictsort, diff --git a/version.txt b/version.txt index 7ec1d6d..7c32728 100755 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.1.0 +2.1.1 \ No newline at end of file diff --git a/views/playlist/list.jinja.html b/views/playlist/list.jinja.html index 8d447f9..3c4556a 100644 --- a/views/playlist/list.jinja.html +++ b/views/playlist/list.jinja.html @@ -29,7 +29,6 @@ 'datetime': choices_translations['datetime'] }, 'inweek': { - 'stayloop': choices_translations['stayloop'], 'inweek': choices_translations['inweek'] } }, diff --git a/views/slideshow/slides/component/table.jinja.html b/views/slideshow/slides/component/table.jinja.html index 30575bf..eeff01b 100644 --- a/views/slideshow/slides/component/table.jinja.html +++ b/views/slideshow/slides/component/table.jinja.html @@ -26,7 +26,7 @@ {% if slide.cron_schedule %} {% set cron_desc = cron_descriptor(slide.cron_schedule) %} {% if cron_desc %} - {% if is_cron_in_datetime_moment(slide.cron_schedule) %} + {% if is_cron_in_datetime_moment(slide.cron_schedule) or is_cron_in_week_moment(slide.cron_schedule) %} {% if slide.is_notification %} 🔔 {{ l.slideshow_slide_panel_td_cron_scheduled_notify }} {{ cron_desc }} @@ -48,7 +48,7 @@ {% if slide.cron_schedule_end %} {% set cron_desc_end = cron_descriptor(slide.cron_schedule_end) %} {% if cron_desc_end %} - {% if is_cron_in_datetime_moment(slide.cron_schedule_end) %} + {% if is_cron_in_datetime_moment(slide.cron_schedule_end) or is_cron_in_week_moment(slide.cron_schedule_end) %} {% if slide.is_notification %} 📆 {{ l.slideshow_slide_panel_td_cron_scheduled_date }} {{ cron_desc_end }}