From d1499059e3f5990f8c5f006c7c412c6ddd3fd485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 4 Feb 2018 20:55:14 +0100 Subject: [PATCH 1/3] manager: add a day picker popdown to agenda day view (#21334) --- chrono/manager/static/css/style.scss | 47 +++++++++++++++++++++- chrono/manager/static/js/chrono.manager.js | 7 ++++ .../templates/chrono/manager_agenda_day_view.html | 8 ++++ chrono/manager/views.py | 11 +++++ 4 files changed, 71 insertions(+), 2 deletions(-) diff --git a/chrono/manager/static/css/style.scss b/chrono/manager/static/css/style.scss index 2f702fe..e2d14b0 100644 --- a/chrono/manager/static/css/style.scss +++ b/chrono/manager/static/css/style.scss @@ -78,9 +78,9 @@ a.timeperiod-exception-all { padding: 0 1ex; } -.dayview h2 span { +.dayview h2 > span { display: inline-block; - min-width: 22ex; + min-width: 24ex; } .dayview table { @@ -155,3 +155,46 @@ a.timeperiod-exception-all { span.start-time { font-size: 80%; } + +.day-title { + cursor: pointer; + &::after { + content: "\f073"; /* calendar */ + font-family: FontAwesome; + padding-left: 1ex; + padding-right: 0ex; + opacity: 0.3; + font-size: 80%; + transition: opacity 200ms linear; + } + &:hover::after { + opacity: 0.8; + } +} + +.day-picker { + button, select { + font-size: 1rem; + } + &::before { + position: absolute; + content: ""; + display: block; + width: 1ex; + height: 1ex; + border: 1px solid #d0d0d0; + border-width: 1px 0 0 1px; + top: -0.6ex; + left: 5rem; + background: #FAFAFA; + transform: rotate(45deg); + } + position: absolute; + background: #FAFAFA; + border: 1px solid #d0d0d0; + box-shadow: 0px 1px 1px 2px rgba(0, 0, 0, 0.04); + padding: 1ex 4ex; + left: 0; + top: 3ex; + z-index: 100; +} diff --git a/chrono/manager/static/js/chrono.manager.js b/chrono/manager/static/js/chrono.manager.js index 0ae46b7..eb02229 100644 --- a/chrono/manager/static/js/chrono.manager.js +++ b/chrono/manager/static/js/chrono.manager.js @@ -4,4 +4,11 @@ $(function() { var booked = $(this).data('booked'); $(this).find('.occupation-bar').css('max-width', 100 * booked / total + '%'); }); + $('.day-title').on('click', function() { + $(this).parent().find('.day-picker').toggle(); + }); + $('.day-picker button').on('click', function() { + window.location = '../../../' + $('[name=year]').val() + '/' + $('[name=month]').val() + '/' + $('[name=day]').val() + '/'; + return false; + }); }); diff --git a/chrono/manager/templates/chrono/manager_agenda_day_view.html b/chrono/manager/templates/chrono/manager_agenda_day_view.html index 5bb5275..b276540 100644 --- a/chrono/manager/templates/chrono/manager_agenda_day_view.html +++ b/chrono/manager/templates/chrono/manager_agenda_day_view.html @@ -12,6 +12,14 @@

{{ view.date|date:"l j F Y" }} + {% with selected_day=view.date|date:"j" selected_month=view.date|date:"n" selected_year=view.date|date:"Y" %} + + {% endwith %}

{% if user_can_manage %} diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 3103422..3befbaf 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -23,6 +23,7 @@ from django.core.urlresolvers import reverse, reverse_lazy from django.db.models import Q from django.http import HttpResponse, Http404, HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.utils.dates import MONTHS from django.utils.timezone import localtime, now, make_aware from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext @@ -250,6 +251,16 @@ class AgendaDayView(DayArchiveView): current_date += interval first = False + def get_days(self): + return [str(x) for x in range(1, 32)] + + def get_months(self): + return [(str(x), MONTHS[x]) for x in range(1, 13)] + + def get_years(self): + year = now().year + return [str(x) for x in range(year, year+5)] + agenda_day_view = AgendaDayView.as_view() -- 2.16.1