Hallo,
da ich derzeit über den Kalender in der smartVISU hauptsächlich die Mülltermine anzeige, aber das 'lange' Anzeigeformat schon immer als störend empfunden habe, habe ich eben mal 'quick & dirty' eine alternative Anzeige programmiert:
muell.png
Der Code ist sicher nicht schön, aber funktional (jQuery und ich sind immer noch keine Freunde).
Wer es verwenden möchte:
UND (grins, den kann ich mir nicht verkneifen): Der Code muss sicher erweitert werden, wenn das hier durchsetzt.
/tom
Edit 05.01.2017: .zip-Attachment für widgets/muell.html gelöscht, Code des Widgets nach letztem Bearbeitungsstand wie folgt:
da ich derzeit über den Kalender in der smartVISU hauptsächlich die Mülltermine anzeige, aber das 'lange' Anzeigeformat schon immer als störend empfunden habe, habe ich eben mal 'quick & dirty' eine alternative Anzeige programmiert:
muell.png
Der Code ist sicher nicht schön, aber funktional (jQuery und ich sind immer noch keine Freunde).
Wer es verwenden möchte:
- muell.html entweder im Deinem Pages-Verzeichnis oder unter Widgets erstellen, Code siehe unten.
- Aufruf wie folgt:
Code:{% import "muell.html" as muell %} {{ muell.list('muelltermine', 'Mülltermine', 50, 5, 3) }}
- Parameter (Nr. 2 bis 5 können auch weggelassen werden, dann wird der Standard genommen):
1/ Eindeutige ID
2/ Überschrift ("")
3/ Anzahl der insgesamt aus dem Kalender zu lesenden Termine (50)
4/ Anzahl der anzuzeigenden Mülltermine (5)
5/ Refresh-Intervall (1h) - Es werden genau die Termine gelistet, die im Kalender die folgenden Titel/Namen haben: Gelbe Tonne, Braune Tonne, Grüne Tonne, Blaue Tonne, Schwarze Tonne.
- Herausfinden, ob/wie statt einer festen Anzahl von Terminen ein bestimmter Zeitraum ausgelesen werden kann (z.B.: Hole die nächsten zwei Wochen statt der nächsten 50 Termine). Das calendar-Plugin scheint immerhin standardmäßig die nächsten 4 Wochen zu holen, egal wie viele Termine angegeben werden.
- Mit den Limitierungen des calendar-Plugins beschäftigen:
- scheinbar keine Übertragung des Kalendernamens eines Termins
(über Kalendernamen könnte man anzuzeigende Termine ein-/ausschließen),
- scheinbar keine Übertragung der am Termin hängenden Kategorien
(könnte ebenfalls zum Filtern von Terminen benutzt werden).
UND (grins, den kann ich mir nicht verkneifen): Der Code muss sicher erweitert werden, wenn das hier durchsetzt.
/tom
Edit 05.01.2017: .zip-Attachment für widgets/muell.html gelöscht, Code des Widgets nach letztem Bearbeitungsstand wie folgt:
HTML-Code:
/** * ----------------------------------------------------------------------------- * @package smartVISU * @author Martin Gleiß * @copyright 2012 - 2015 * @modifier (2016) Tom Bombadil of KNX User Forum, aka René Jahncke * @license GPL [http://www.gnu.de] * ----------------------------------------------------------------------------- */ /** * Displays a tiny trash list * * @param unique id for this widget * @param a title to display * @param the number of calendar-entries to parse, default 100 * @param the number of displayed columns, default 5 * @param the refresh interval for this widget (using relative time format), default 1h */ {% macro list(id, title, count, cols, repeat) %} {% set uid = uid(page, id) %} <div id="{{ uid }}" data-widget="calendar.list" class="calendarlist" data-repeat="{{ repeat|default('1h') }}"> {% if title %} <h2>{{ title }}</h2> {% endif %} <ul data-role="listview" style='width:100%;align:center;overflow:hidden;'> </ul> </div> <script type="text/javascript"> $('#{{ page }}').on('pagecreate', function (event, ui) { $('#{{ uid }}').on( { 'init' : function (event) { var uid = this.id; var heute = new Date(); var morgen = new Date(heute.getTime()+(1000 * 60 * 60 * 24 * 1)); var spalte = 0; var muell_html = "<table class ='ui-btn-up-a' style='width:100%;text-align:center;overflow:hidden;'><tr>"; var heute_tag = heute.getDate(); if (heute_tag < 10) heute_tag = "0" + heute_tag; var heute_monat = heute.getMonth() + 1; if (heute_monat < 10) heute_monat = "0" + heute_monat; heute = heute_tag + '.' + heute_monat + '.'; var morgen_tag = morgen.getDate(); if (morgen_tag < 10) morgen_tag = "0" + morgen_tag; var morgen_monat = morgen.getMonth() + 1; if (morgen_monat < 10) morgen_monat = "0" + morgen_monat; morgen = morgen_tag + '.' + morgen_monat + '.'; $.getJSON('lib/calendar/service/{{ config_calendar_service }}.php?url={{ config_calendar_url|url_encode() }}&count={{ count|default(25) }}', function (data) { for (var i in data) { if (spalte === {{ cols|default(5) }}) break; switch (data[i].title) { case 'Gelbe Tonne': data[i].color='#FFFF00'; break; case 'Blaue Tonne': data[i].color='#0000FF'; break; case 'Schwarze Tonne': data[i].color='#000000'; break; case 'Braune Tonne': data[i].color='#993300'; break; case 'Grüne Tonne': data[i].color='#008000'; break; default: data[i].color='#FF0000'; } if (data[i].color != '#FF0000') { data[i].weekday = data[i].weekday.substring(0,2); data[i].date = data[i].period.substring(0,6); muell_html += "<td"; if (data[i].date == heute) muell_html += " style='border-bottom: red 10px inset; overflow: hidden;'"; if (data[i].date == morgen) muell_html += " style='border-bottom: orange 10px inset; overflow: hidden;'"; muell_html += "><svg xmlns='http://www.w3.org/2000/svg' viewBox='260 100 250 220' width='64px' height='64px'><g><path d='m316 129l124-12 0 26 -124 5Z' fill='" + data[i].color + "'/>" muell_html += "<path d='m329 242l14 0c30-10 70 18 47 50l0 8 31 0 7-147 -99 0' fill='" + data[i].color + "'/>" muell_html += "<ellipse cx='356' cy='275' rx='28' ry='26' style='stroke-width:0.5;stroke:#333;fill:" + data[i].color + "'/></g></svg>" muell_html += "<div class='ui-li-heading'>" + data[i].weekday + ' ' + data[i].date + '</div></td>'; spalte += 1; } } muell_html += '</tr></table>'; $('#' + uid + ' ul').html(muell_html).trigger('prepare').listview('refresh').trigger('redraw'); }) .error(notify.json); }, 'repeat': function(event) { $('#{{ uid }}').trigger('init'); } }); }); </script> {% endmacro %}
Kommentar