Nabend,
ich habe es endlich mal geschafft mir die Visu anzugucken und bin echt begeistert von dem was Ihr da geschafft habt. *Daumen hoch*
Da ich in einem anderen Thread gelesen habe das sich z.B. das Kalender-Widget nicht automatisch aktualisiert habe ich mir den Code mal angesehen und eine einfache (vll. nicht perfekte) Lösung gebaut, die es ermöglicht als weiteren Parameter ein Refresh-Interval (in Minuten) anzugeben.
Hier mal meine "calendar.html"
Einbindung dann quasi wie gewohnt mit einem Parameter mehr:
(hier Refresh alle 60 Minuten)
Theoretisch lässt sich das auch fürs Phone und Wetter-Widget übernehmen.
Evtl. lässt sich der Code noch optimieren, die Lösung n Closure zurückzugeben erfüllte auf die Schnelle Ihren Zweck.
Grüße,
Lars
ich habe es endlich mal geschafft mir die Visu anzugucken und bin echt begeistert von dem was Ihr da geschafft habt. *Daumen hoch*
Da ich in einem anderen Thread gelesen habe das sich z.B. das Kalender-Widget nicht automatisch aktualisiert habe ich mir den Code mal angesehen und eine einfache (vll. nicht perfekte) Lösung gebaut, die es ermöglicht als weiteren Parameter ein Refresh-Interval (in Minuten) anzugeben.
Hier mal meine "calendar.html"
Code:
/** * ----------------------------------------------------------------------------- * @package smartVISU * @author Martin Gleiß * @copyright 2012 * @license GPL <http://www.gnu.de> * ----------------------------------------------------------------------------- */ /** * Displays the calendarlist * * @param unique id for this widget * @param a title to display * @param the number of displayed calendar-entries, default 25 * @param the refresh intveral in minutes * @param a color for this calendar, default grey */ {% macro list(id, title, count, color, interval) %} {% set uid = uid(page, id) %} <div id="{{ uid }}" data-widget="calendar.list" class="calendarlist"> {% if title %} <h2>{{ title }}</h2> {% endif %} <ul data-role="listview"> </ul> </div> <script type="text/javascript"> function updateCalendar(uid) { return function() { $.getJSON('lib/calendar/service/{{ config_calendar_service }}.php?url={{ config_calendar_url|url_encode() }}&count={{ count|default(25) }}', function(data) { var line = ''; var sum = 1; for (var i in data) { ret = '<img style="background: ' + data[i].color + ';" class="icon" src="' + data[i].icon + '" />'; ret += '<div class="color" style="background: {{ color|default('#666666') }};"></div>'; ret += '<h3>' + data[i].title + '</h3>'; ret += '<p>' + data[i].weekday + ', ' + data[i].period + ' </p>'; if (data[i].where) ret += '<span class="ui-li-count">' + data[i].where + '</span>'; ret = '<a href="' + (data[i].link ? data[i].link : '#') + '">' + ret + '</a>'; line += '<li data-icon="false">' + ret + '</li>'; } $('#' + uid + ' ul').html(line).trigger('prepare').listview('refresh').trigger('redraw'); }) .error(notify.json); } } $(document).delegate('div[data-widget="calendar.list"]', { 'init': function(event) { var uid = this.id; updateCalendar(uid)(); if ('{{ interval }}') { setInterval(updateCalendar(uid), '{{ interval * 60000}}'); } } }); $('#{{ page }}').on('pagecreate',function(event, ui){ $('#{{ uid }}').trigger('init'); }); </script> {% endmacro %}
Einbindung dann quasi wie gewohnt mit einem Parameter mehr:
(hier Refresh alle 60 Minuten)
Code:
{% import "calendar.html" as calendar %} {{ calendar.list('calendarlist1', 'Kalender', 5, null, 60) }}
Theoretisch lässt sich das auch fürs Phone und Wetter-Widget übernehmen.
Evtl. lässt sich der Code noch optimieren, die Lösung n Closure zurückzugeben erfüllte auf die Schnelle Ihren Zweck.
Grüße,
Lars
Kommentar