Handling dashboards widget configuration as a list instead of a hash to preserve the order of the widgets

This commit is contained in:
Fabio Manganiello 2019-01-28 23:14:12 +01:00
parent 339d1eb132
commit 7a80cd08ce
2 changed files with 15 additions and 10 deletions

View file

@ -103,17 +103,22 @@ class HttpBackend(Backend):
dashboard: dashboard:
background_image: https://site/image.png background_image: https://site/image.png
widgets: # Each row of the dashboard will have 6 columns widgets: # Each row of the dashboard will have 6 columns
calendar: # Calendar widget -
widget: calendar # Calendar widget
columns: 6 columns: 6
music: # Music widget -
widget: music # Music widget
columns: 3 columns: 3
date-time-weather: # Date, time and weather widget -
widget: date-time-weather # Date, time and weather widget
columns: 3 columns: 3
image-carousel: # Image carousel -
widget: image-carousel # Image carousel
columns: 6 columns: 6
images_path: ~/Dropbox/Photos/carousel # Absolute path (valid as long as it's a subdirectory of one of the available `resource_dirs`) images_path: ~/Dropbox/Photos/carousel # Absolute path (valid as long as it's a subdirectory of one of the available `resource_dirs`)
refresh_seconds: 15 refresh_seconds: 15
rss-news: # RSS feeds widget -
widget: rss-news # RSS feeds widget
# Requires backend.http.poll to be enabled with some RSS sources and write them to sqlite db # Requires backend.http.poll to be enabled with some RSS sources and write them to sqlite db
columns: 6 columns: 6
limit: 25 limit: 25

View file

@ -28,7 +28,7 @@
{% endif %} {% endif %}
window.config = {{ config | safe }}; window.config = {{ config | safe }};
window.widgets = {{ config['widgets'] | safe }}; window.widgets = {{ config['widgets'] | safe }}.reduce(function(map, w) { map[w.widget] = w; return map }, {})
</script> </script>
</head> </head>
@ -44,16 +44,16 @@
<div id="widgets-container"> <div id="widgets-container">
{% set used_columns = [0] %} {% set used_columns = [0] %}
{% for widget_name, widget in config['widgets'].items() %} {% for widget in config['widgets'] %}
{% if used_columns[0] % 12 == 0 %} {% if used_columns[0] % 12 == 0 %}
<div class="row"> <div class="row">
{% endif %} {% endif %}
<div class="widget {% print(utils.widget_columns_to_html_class(widget['columns'])) %} <div class="widget {% print(utils.widget_columns_to_html_class(widget['columns'])) %}
{% print(widget_name) %}" {% print(widget['widget']) %}"
id="{% print(widget['id'] if 'id' in widget else widget_name) %}"> id="{% print(widget['id'] if 'id' in widget else widget['widget']) %}">
{% with properties=widget %} {% with properties=widget %}
{% include 'widgets/' + widget_name + '.html' %} {% include 'widgets/' + widget['widget'] + '.html' %}
{% endwith %} {% endwith %}
</div> </div>