This commit is contained in:
jr-k 2024-07-16 12:00:02 +02:00
parent ea577c46ca
commit e1a5513c58
23 changed files with 137 additions and 110 deletions

File diff suppressed because one or more lines are too long

View File

@ -31,6 +31,10 @@ main {
margin-right: 20px;
}
.contex-tail {
margin-right: 20px;
}
.context-user {
display: flex;
margin-right: 20px;
@ -42,7 +46,7 @@ main {
width: 32px;
height: 32px;
border-radius: $baseRadius;
background: $seaBlue;
background: #AAA;
margin-right: 10px;
display: flex;
flex-direction: row;
@ -52,6 +56,7 @@ main {
font-weight: bold;
font-size: 14px;
border: 1px solid #444;
color: black;
}
i {

View File

@ -55,7 +55,7 @@ main {
justify-content: flex-start;
align-items: center;
align-self: stretch;
padding: 10px 10px 10px 20px;
padding: 10px 10px 10px 15px;
background: transparent;
border-bottom: $layoutBorder;
@ -69,9 +69,19 @@ main {
flex: 1;
display: flex;
flex-direction: row;
justify-content: flex-end;
justify-content: flex-start;
align-items: center;
&.align-right {
justify-content: flex-end;
margin-right: 10px;
}
.explr-selection-actions + .btn,
.btn:first-child {
margin-left: 0 !important;
}
.btn,
button {
margin-left: 10px;

View File

@ -35,6 +35,7 @@ button,
color: #AAA;
background: $neutralGrey;
box-shadow: 0 $shadowOffset 0 0 darken($neutralGrey, 10%);
border: 1px solid transparent;
&:hover {
box-shadow: 0 $shadowOffset 0 1px #222 inset;
@ -43,6 +44,7 @@ button,
&:focus {
background: darken($neutralGrey, 20%);
border: 1px solid #AAA;
}
}
@ -58,7 +60,6 @@ button,
color: darken($neutralGrey, 10%);
box-shadow: none;
}
&:focus {
border-color: darken($neutralGrey, 20%);
background: transparent;
@ -68,6 +69,7 @@ button,
&.btn-naked {
background: transparent;
box-shadow: none;
border: 1px solid transparent;
&:hover {
box-shadow: 0 $shadowOffset 0 1px #222 inset;
@ -76,6 +78,35 @@ button,
&:focus {
background: darken($neutralGrey, 20%);
border: 1px solid #AAA;
}
}
i.main {
font-size: 18px;
}
sup,
sub {
position: absolute;
top: -4px;
right: -4px;
background: #777;
border-bottom: 2px solid $neutralGrey;
color: black;
border-radius: $baseRadius;
width: 16px;
height: 16px;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
padding-top: 2px;
padding-bottom: 1px;
i {
color: white;
font-size: 10px;
}
}
}

View File

@ -41,9 +41,10 @@ ul.explr-tree {
.explr-selection-actions {
display: none;
margin-right: 10px;
border-right: 1px solid #222;
padding-right: 20px;
flex-direction: row;
justify-content: flex-end;
align-items: center;
flex: 1;
button {
display: none;

View File

@ -243,16 +243,26 @@ form {
&.actions-left {
justify-content: flex-start;
button {
.btn {
margin-left: 0;
margin-right: 25px;
}
}
&.actions-right {
justify-content: flex-end;
.btn {
margin-left: 10px;
margin-right: 0;
}
}
&.actions-center {
justify-content: center;
button {
.btn {
margin-left: 0;
margin-right: 0;
}

View File

@ -75,14 +75,14 @@
}
.title {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
align-self: stretch;
display: block;
word-break: break-all;
font-size: 13px;
color: #AAA;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
.type {

View File

@ -3,7 +3,7 @@
"slideshow_slide_page_title": "Schedule Overview",
"slideshow_slide_goto_player": "Go to player",
"slideshow_slide_refresh_player": "Refresh player",
"slideshow_slide_refresh_player_success": "Player refresh signal has been sent, it should happen soon enough (%time% seconds maximum)",
"slideshow_slide_refresh_player_success": "Players update signal has been sent, should arrive soon (%time% seconds maximum)",
"slideshow_slide_button_add": "Add a slide",
"slideshow_slide_panel_active": "Active slides",
"slideshow_slide_panel_inactive": "Inactive slides",

View File

@ -3,7 +3,7 @@
"slideshow_slide_page_title": "Descripción General del Programa",
"slideshow_slide_goto_player": "Ir al reproductor",
"slideshow_slide_refresh_player": "Actualizar reproductor",
"slideshow_slide_refresh_player_success": "La señal de actualización del reproductor ha sido enviada, debería suceder pronto (%time% segundos máximo)",
"slideshow_slide_refresh_player_success": "La señal de actualización de los jugadores ha sido enviada, debería llegar pronto (%time% segundos máximo)",
"slideshow_slide_button_add": "Agregar una diapositiva",
"slideshow_slide_panel_active": "Diapositivas activas",
"slideshow_slide_panel_inactive": "Diapositivas inactivas",

View File

@ -3,7 +3,7 @@
"slideshow_slide_page_title": "Vue Planning",
"slideshow_slide_goto_player": "Voir le lecteur",
"slideshow_slide_refresh_player": "Rafraîchir le lecteur",
"slideshow_slide_refresh_player_success": "Un rafraîchissement du lecteur a été programmé, il devrait avoir lieu sous peu (%time% secondes maximum)",
"slideshow_slide_refresh_player_success": "Un rafraîchissement des lecteurs a été programmé, il devrait avoir lieu sous peu (%time% secondes maximum)",
"slideshow_slide_button_add": "Ajouter une slide",
"slideshow_slide_panel_active": "Slides actives",
"slideshow_slide_panel_inactive": "Slides inactives",

View File

@ -3,7 +3,7 @@
"slideshow_slide_page_title": "Programmazione",
"slideshow_slide_goto_player": "Vai al player",
"slideshow_slide_refresh_player": "Aggiorna player",
"slideshow_slide_refresh_player_success": "L' aggiornamento è stato richiesto, sarà applicato in (%time% secondi)",
"slideshow_slide_refresh_player_success": "Il segnale di aggiornamento dei giocatori è stato inviato, dovrebbe arrivare a breve (%time% secondi)",
"slideshow_slide_button_add": "Aggiungi slide",
"slideshow_slide_panel_active": "Attiva slide",
"slideshow_slide_panel_inactive": "Slide inattive",

View File

@ -20,7 +20,7 @@ class SlideController(ObController):
self._app.add_url_rule('/slideshow/slide/edit', 'slideshow_slide_edit', self._auth(self.slideshow_slide_edit), methods=['POST'])
self._app.add_url_rule('/slideshow/slide/delete/<slide_id>', 'slideshow_slide_delete', self._auth(self.slideshow_slide_delete), methods=['DELETE'])
self._app.add_url_rule('/slideshow/slide/position', 'slideshow_slide_position', self._auth(self.slideshow_slide_position), methods=['POST'])
self._app.add_url_rule('/slideshow/player-refresh', 'slideshow_player_refresh/<playlist_id>', self._auth(self.slideshow_player_refresh), methods=['GET'])
self._app.add_url_rule('/slideshow/player-refresh', 'slideshow_player_refresh', self._auth(self.slideshow_player_refresh), methods=['GET'])
def manage(self):
return redirect(url_for('playlist'))
@ -93,15 +93,12 @@ class SlideController(ObController):
self._post_update()
return jsonify({'status': 'ok'})
def slideshow_player_refresh(self, playlist_id: int):
def slideshow_player_refresh(self):
self._model_store.variable().update_by_name("refresh_player_request", time.time())
return redirect(
url_for(
'playlist_list',
playlist_id=playlist_id,
refresh_player=self._model_store.variable().get_one_by_name('polling_interval').as_int()
)
)
max_timeout_value = self._model_store.variable().get_one_by_name('polling_interval').as_int()
query_params = '{}={}'.format('refresh_player', max_timeout_value)
next_url = request.args.get('next')
return redirect('{}{}{}'.format(next_url, '&' if '?' in next_url else '?', query_params))
def _post_update(self):
self._model_store.variable().update_by_name("last_slide_update", time.time())

View File

@ -180,16 +180,26 @@
</div>
{% endif %}
<div class="context-divider"></div>
<div class="{% if not AUTH_ENABLED %}contex-tail{% endif %}">
<a href="{{ url_for('slideshow_player_refresh', next=request.full_path) }}" class="btn btn-naked">
<i class="fa fa-display main"></i>
<sub><i class="fa fa-refresh"></i></sub>
</a>
</div>
{% if AUTH_ENABLED %}
<div class="context-divider"></div>
<div class="context-user">
<div class="dropdown">
<div class="trigger">
<div class="avatar">
{{ current_user.username[0] }}
{# {{ current_user.username[0] }}#}J
</div>
<div class="username">
{{ current_user.username }}
{# {{ current_user.username }}#}Jessym
</div>
<i class="fa fa-sort-down"></i>
</div>
@ -205,6 +215,13 @@
{% endif %}
</div>
<div class="main-container">
{% if request.args.get('refresh_player') %}
<div class="alert alert-success">
<i class="fa fa-refresh icon-left"></i>
{{ l.slideshow_slide_refresh_player_success|replace('%time%', request.args.get('refresh_player')) }}
</div>
{% endif %}
{% block page %}{% endblock %}
</div>
</main>

View File

@ -12,12 +12,6 @@
{% block page %}
<div class="top-content">
<h1>
{{ l.logs_page_title }}
</h1>
</div>
<div class="bottom-content">
<div class="page-content">
<div class="inner">

View File

@ -12,11 +12,6 @@
{% block body_class %}view-plugins-list{% endblock %}
{% block page %}
<div class="top-content">
<h1>
{{ l.settings_plugin_page_title }}
</h1>
</div>
{% if request.args.get('error') %}
<div class="alert alert-error">

View File

@ -12,11 +12,6 @@
{% block body_class %}view-settings-list{% endblock %}
{% block page %}
<div class="top-content">
<h1>
{{ l.settings_page_title }}
</h1>
</div>
{% if request.args.get('error') %}
<div class="alert alert-error">

View File

@ -14,11 +14,11 @@
{% block page %}
<div class="top-content">
<h1>
{{ l.sysinfo_panel_title }}
</h1>
{# <h1>#}
{# {{ l.sysinfo_panel_title }}#}
{# </h1>#}
<div class="top-actions">
<div class="top-actions align-right">
{{ HOOK(H_SYSINFO_TOOLBAR_ACTIONS_START) }}
<button type="button" class="btn btn-info sysinfo-restart">
<i class="fa fa-refresh icon-left"></i>{{ l.sysinfo_panel_button_restart }}

View File

@ -21,14 +21,22 @@
{% block page %}
<div class="top-content">
<h1>
{{ l.fleet_node_player_page_title }}
</h1>
{# <h1>#}
{# {{ l.fleet_node_player_page_title }}#}
{# </h1>#}
<div class="top-actions">
{{ HOOK(H_FLEET_NODE_PLAYER_TOOLBAR_ACTIONS_START) }}
<button type="button" class="btn btn-info node-player-add item-add">
<i class="fa fa-file-circle-plus icon-left"></i>
{{ l.fleet_node_player_button_add }}
</button>
<button type="button" class="folder-add btn-neutral">
<i class="fa fa-folder-plus icon-left"></i>
{{ l.common_new_folder }}
</button>
<div class="explr-selection-actions">
<div class="explr-selection-actions">
<button type="button" class="explr-item-edit explr-selection-entity btn-info" data-entity-route="{{ url_for('fleet_node_player_edit', node_player_id='!c!') }}">
<i class="fa fa-eye"></i>
</button>
@ -39,15 +47,6 @@
<i class="fa fa-trash-alt"></i>
</button>
</div>
<button type="button" class="btn btn-info node-player-add item-add">
<i class="fa fa-file-circle-plus icon-left"></i>
{{ l.fleet_node_player_button_add }}
</button>
<button type="button" class="folder-add btn-neutral">
<i class="fa fa-folder-plus icon-left"></i>
{{ l.common_new_folder }}
</button>
{{ HOOK(H_FLEET_NODE_PLAYER_TOOLBAR_ACTIONS_END) }}
</div>
</div>

View File

@ -13,8 +13,11 @@
<div class="actions actions-right">
<button type="button" class="btn btn-info slide-add">
<i class="fa fa-image"></i> {{ l.slideshow_slide_form_add_title }}
<i class="fa fa-plus"></i> {{ l.slideshow_slide_form_add_title }}
</button>
<a href="{{ url_for('slideshow_content_list') }}" class="btn btn-neutral" target="_blank">
<i class="fa fa-upload"></i>
</a>
</div>
</div>

View File

@ -42,9 +42,9 @@
{% block page %}
<div class="top-content">
<h1>
{{ l.playlist_page_title }}
</h1>
{# <h1>#}
{# {{ l.playlist_page_title }}#}
{# </h1>#}
<div class="top-actions">
{{ HOOK(H_PLAYLIST_TOOLBAR_ACTIONS_START) }}
@ -71,13 +71,6 @@
) }}
</div>
{% if request.args.get('refresh_player') %}
<div class="alert alert-success">
<i class="fa fa-refresh icon-left"></i>
{{ l.slideshow_slide_refresh_player_success|replace('%time%', request.args.get('refresh_player')) }}
</div>
{% endif %}
{% if error %}
<div class="alert alert-danger">
{{ l[error] }}

View File

@ -22,13 +22,22 @@
{% block page %}
<div class="top-content">
<h1>
{{ l.slideshow_content_page_title }}
</h1>
{# <h1>#}
{# {{ l.slideshow_content_page_title }}#}
{# </h1>#}
<div class="top-actions">
{{ HOOK(H_SLIDESHOW_CONTENT_TOOLBAR_ACTIONS_START) }}
<button type="button" class="btn btn-info content-add item-add">
<i class="fa fa-file-circle-plus icon-left"></i>
{{ l.slideshow_content_button_add }}
</button>
<button type="button" class="folder-add btn-neutral">
<i class="fa fa-folder-plus icon-left"></i>
{{ l.common_new_folder }}
</button>
<div class="explr-selection-actions">
<button type="button" class="explr-item-edit explr-selection-entity btn-info"
data-entity-route="{{ url_for('slideshow_content_edit', content_id='!c!') }}">
@ -44,14 +53,6 @@
</button>
</div>
<button type="button" class="btn btn-info content-add item-add">
<i class="fa fa-file-circle-plus icon-left"></i>
{{ l.slideshow_content_button_add }}
</button>
<button type="button" class="folder-add btn-neutral">
<i class="fa fa-folder-plus icon-left"></i>
{{ l.common_new_folder }}
</button>
{{ HOOK(H_SLIDESHOW_CONTENT_TOOLBAR_ACTIONS_END) }}
</div>
</div>

View File

@ -14,7 +14,7 @@
{% set color = enum_content_type.get_color_icon(content.type) %}
<i class="fa {{ icon }} {{ color }}"></i>
</div>
<div class="title">
<div class="title" title="{{ content.name|default(l.common_empty) }}">
{{ truncate(content.name|default(l.common_empty), 30, '...') }}
</div>
</a>

View File

@ -1,24 +0,0 @@
{% block page %}
<div class="toolbar">
<div class="toolbar-actions">
<a href="{{ url_for('slideshow_player_refresh') }}" class="btn" title="{{ l.slideshow_slide_refresh_player }}">
<i class="fa fa-refresh"></i>
</a>
<button type="button" class="purple slide-add item-add"><i class="fa fa-plus icon-left"></i>{{ l.slideshow_slide_button_add }}</button>
</div>
</div>
<div class="panel {% if PLAYLIST_ENABLED %}panel-active{% endif %}">
<div class="panel-body">
<h3>{{ l.slideshow_slide_panel_active }}</h3>
{% with tclass='active', slides=enabled_slides %}
{% include 'slideshow/slides/component/table.jinja.html' %}
{% endwith %}
</div>
</div>
{% endblock %}