mirror of https://gitlab.federez.net/re2o/re2o
6 changed files with 88 additions and 23 deletions
@ -0,0 +1,7 @@ |
|||||
|
Datepicker |
||||
|
======= |
||||
|
Install libjs-jquery |
||||
|
Install libjs-jquery-ui |
||||
|
Install libjs-jquery-timepicker |
||||
|
Install (if not) javascript-common |
||||
|
Enable (if not) javascript-common conf |
||||
@ -0,0 +1,28 @@ |
|||||
|
{% load static %} |
||||
|
<script src="{% static 'js/jquery-2.2.4.min.js' %}"></script> |
||||
|
<script src="{% static 'js/jquery-ui-1.12.1/jquery-ui.min.js' %}"></script> |
||||
|
<script src="{% static 'js/jquery-ui-timepicker-addon.js' %}"></script> |
||||
|
<link href="{% static 'js/jquery-ui-1.12.1/jquery-ui.min.css' %}" rel="stylesheet"/> |
||||
|
<link href="{% static 'css/jquery-ui-timepicker-addon.css' %}" rel="stylesheet"/> |
||||
|
<input {{attrs}} name="datetimepicker" type="text" class="form-control" placeholder="Date"/> |
||||
|
<script> |
||||
|
$(document).ready(function(){ |
||||
|
$("#{{id}}").datetimepicker({ |
||||
|
closeText: "{{closeText}}", |
||||
|
currentText: "{{currentText}}", |
||||
|
dateFormat:'yy-mm-dd', |
||||
|
dayNames: {{dayNames}}, |
||||
|
dayNamesMin: {{dayNamesMin}}, |
||||
|
dayNamesShort: {{dayNamesShort}}, |
||||
|
firstDay: {{firstDay}}, |
||||
|
isRTL: {{isRTL}}, |
||||
|
monthNames: {{monthNames}}, |
||||
|
monthNamesShort: {{monthNamesShort}}, |
||||
|
nextText: {{nextText}}, |
||||
|
prevText: {{prevText}}, |
||||
|
timeFormat: 'HH:mm:ss', |
||||
|
weekHeader: {{weekHeader}}, |
||||
|
closeText: "{{closeText}}", |
||||
|
}) |
||||
|
}); |
||||
|
</script> |
||||
@ -1,23 +1,49 @@ |
|||||
from django.forms.widgets import Input |
from django.forms.widgets import Input |
||||
from django.forms.utils import flatatt |
from django.forms.utils import flatatt |
||||
from django.utils.safestring import mark_safe |
from django.utils.safestring import mark_safe |
||||
from django.template import Context, Template |
from django.template import Context, Template |
||||
from django.template.loader import get_template |
from django.template.loader import get_template |
||||
|
from django.conf import settings |
||||
|
from django.utils.translation import ugettext_lazy as _, get_language_bidi |
||||
|
from django.utils.dates import ( |
||||
|
WEEKDAYS, |
||||
|
WEEKDAYS_ABBR, |
||||
|
MONTHS, |
||||
|
MONTHS_3, |
||||
|
MONTHS_AP, |
||||
|
MONTHS_ALT |
||||
|
) |
||||
|
|
||||
|
def list2str(str_iterable): |
||||
|
""" |
||||
|
Utility function to return a string representing a list of string |
||||
|
|
||||
|
:params str_iterable: An iterable object where each element is of type str |
||||
|
:returns: A representation of the iterable as a list (e.g '["a", "b"]') |
||||
|
""" |
||||
|
return '["' + '", "'.join(str_iterable) + '"]' |
||||
|
|
||||
class DateTimePicker(Input): |
class DateTimePicker(Input): |
||||
def render(self, name, value, attrs=None): |
is_localized = False |
||||
super().render(name, value, attrs) |
def render(self, name, value, attrs=None): |
||||
|
super().render(name, value, attrs) |
||||
flat_attrs = flatatt(attrs) |
flat_attrs = flatatt(attrs) |
||||
html = '''{% load static %}<script src="{% static 'js/jquery-2.2.4.min.js' %}"></script><script src="{% static 'js/jquery-ui-1.12.1/jquery-ui.min.js' %}"></script><script src="{% static 'js/jquery-ui-timepicker-addon.js' %}"></script><link href="{% static 'js/jquery-ui-1.12.1/jquery-ui.min.css' %}" rel="stylesheet"/><link href="{% static 'css/jquery-ui-timepicker-addon.css' %}" rel="stylesheet"/>''' |
context = Context({ |
||||
html += '''<input %(attrs)s name="datetimepicker" type="text" class="form-control" id="datetimepicker"/> |
'attrs': flat_attrs, |
||||
<script> |
'id': attrs['id'], |
||||
$(document).ready(function(){ |
'closeText': _("Close"), |
||||
$("#%(id)s").datetimepicker({ |
'currentText': _("Today"), |
||||
dateFormat:'yy-mm-dd', |
'dayNames': mark_safe(list2str((str(item[1]) for item in WEEKDAYS.items()))), |
||||
timeFormat: 'HH:mm:ss', |
'dayNamesMin': mark_safe(list2str((str(item[1]) for item in WEEKDAYS_ABBR.items()))), |
||||
}) |
'dayNamesShort': mark_safe(list2str((str(item[1]) for item in WEEKDAYS_ABBR.items()))), |
||||
}); |
'firstDay': mark_safe('"' + str(WEEKDAYS[settings.FIRST_DAY_OF_WEEK]) + '"'), |
||||
</script>'''%{'attrs':flat_attrs, 'id':attrs['id']} |
'isRTL': str(get_language_bidi()).lower(), |
||||
template = Template(html) |
'monthNames': mark_safe(list2str((str(item[1]) for item in MONTHS.items()))), |
||||
context = Context({}) |
'monthNamesShort': mark_safe(list2str((str(item[1]) for item in MONTHS_3.items()))), |
||||
return template.render(context) |
'nextText': mark_safe('"' + str(_('Next')) + '"'), |
||||
|
'prevText': mark_safe('"' + str(_('Previous')) + '"'), |
||||
|
'weekHeader': mark_safe('"' + str(_('Wk')) + '"' ), |
||||
|
}) |
||||
|
template = get_template('users/datetimepicker.html') |
||||
|
return template.render(context) |
||||
|
|
||||
|
|||||
Loading…
Reference in new issue