From ae821d0696be63c31bd5a325298cfa8eee3b48cb Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Thu, 9 Feb 2012 22:21:05 +0100 Subject: occupation-refresh-button with nice js spinner --- src/meetingtools/apps/room/views.py | 10 ++++++++++ src/meetingtools/urls.py | 1 + src/site-media/css/style.css | 5 ++++- src/templates/apps/room/list.html | 13 +++++++++++-- src/templates/base.html | 2 ++ 5 files changed, 28 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/meetingtools/apps/room/views.py b/src/meetingtools/apps/room/views.py index ba949fe..e612141 100644 --- a/src/meetingtools/apps/room/views.py +++ b/src/meetingtools/apps/room/views.py @@ -358,6 +358,16 @@ def _clean(request,room): room.sco_id = None return _update_room(request, room) +def occupation(request,rid): + room = get_object_or_404(Room,pk=rid) + with ac_api_client(room.acc) as api: + api.poll_user_counts(room) + d = {'nusers': room.user_count, 'nhosts': room.host_count} + return respond_to(request, + {'text/html': 'apps/room/fragments/occupation.txt', + 'application/json': json_response(d, request)}, + d) + def go_by_id(request,id): room = get_object_or_404(Room,pk=id) return goto(request,room) diff --git a/src/meetingtools/urls.py b/src/meetingtools/urls.py index ed541b9..c5401b3 100644 --- a/src/meetingtools/urls.py +++ b/src/meetingtools/urls.py @@ -45,6 +45,7 @@ urlpatterns = patterns('', (r'^api/stats/user/(.*)$','meetingtools.apps.stats.views.user_minutes_api'), (r'^api/stats/domain/(.+)$','meetingtools.apps.stats.views.domain_minutes_api'), (r'^api/stats/room/(\d+)$','meetingtools.apps.stats.views.room_minutes_api'), + (r'^api/room/(\d+)/occupation$','meetingtools.apps.room.views.occupation'), (r'^stats$','meetingtools.apps.stats.views.user'), (r'^stats/user/(.+)$','meetingtools.apps.stats.views.user'), (r'^stats/domain/(.+)$','meetingtools.apps.stats.views.domain'), diff --git a/src/site-media/css/style.css b/src/site-media/css/style.css index 706bbcf..89b604b 100644 --- a/src/site-media/css/style.css +++ b/src/site-media/css/style.css @@ -48,11 +48,14 @@ form fieldset { margin-left: 20px; } form fieldset input[type=text] { height: 25px; } form fieldset label {font-weight: bold; } .error { padding: 5px; } +div.room { overflow-y: hidden; overflow-x: hidden; } ul.links { list-style: none inside; padding: 0; margin: 0; } li.links { padding: 0; margin: 0; } form .ui-widget ul { list-style: none inside; padding: 0; margin: 0; } form .ui-widget li { float: right; border-right: 1px solid #CECECE; padding-right: 5px; margin: 0; vertical-align: middle;} -.ui-icon { display: inline-block !important; } +.ui-icon { display: inline-block !important; vertical-align: bottom; } +.spinner { margin-left: 10px; } +.spinner > div { width: 16px; vertical-align: bottom; } .minipanel { padding-top: 5px; padding-bottom: 5px; padding-left: 6px; padding-right: 6px; } .right { float: right; } .left { float: left; } diff --git a/src/templates/apps/room/list.html b/src/templates/apps/room/list.html index a21848f..34f5b6e 100644 --- a/src/templates/apps/room/list.html +++ b/src/templates/apps/room/list.html @@ -12,6 +12,15 @@ animated: true, autoHeight: false }); + $(".occupation").click(function(e) { + $(this).find(".occupation-info").first().load("{% prefix %}/api/room/"+$(this).parents('.room').first().attr('id')+"/occupation") + }); + $(".occupation").ajaxStart(function() { + $(".occupation > span.ui-icon-refresh").removeClass("ui-icon-refresh").removeClass("ui-icon").addClass("spinner").spin("custom"); + }).ajaxStop(function() { + $(".occupation > span.spinner").spin(false); + $(".occupation > span.spinner").addClass("ui-icon-refresh").addClass("ui-icon").removeClass("spinner"); + }); {% endblock %} {% block meta %} {% if tags %} @@ -24,7 +33,7 @@ {% if rooms %}
{% for r in rooms %} -
+

{{r.name}}

{% tags_for_object r as tags %} @@ -33,7 +42,7 @@
  • » Tags: {% for tag in tags %}{{tag}}{% endfor %} {%if edit %}... manage room tags{%endif%}
  • » Created by {{r.creator}} {{r.timecreated|datehumanize}}.
  • -
  • » {%if r.nusers%}There are {{r.nusers}} users present, {{r.nhosts}} of whom are hosts.{%else%}The room is currently unoccupied.{%endif%}
  • +
  • » {%if r.nusers%}There are {{r.nusers}} users present, {{r.nhosts}} of whom are hosts.{%else%}The room is currently unoccupied.{%endif%}
  • {% if r.self_cleaning %}
  • » Room will be reset when empty.
  • {%else%}
  • » Room state is preserved between sessions.
  • {% endif %} {% if r.allow_host %}
  • » First participant can elect to become host.
  • {% endif %} {% if r.lastvisited %}
  • » Last visited {{r.lastvisited|datehumanize}}
  • {%endif%} diff --git a/src/templates/base.html b/src/templates/base.html index e0b3ac4..6b6d19b 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -18,6 +18,8 @@ + + -- cgit v1.1