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.utils import flatatt |
|||
from django.utils.safestring import mark_safe |
|||
from django.template import Context, Template |
|||
from django.template.loader import get_template |
|||
from django.forms.widgets import Input |
|||
from django.forms.utils import flatatt |
|||
from django.utils.safestring import mark_safe |
|||
from django.template import Context, 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): |
|||
def render(self, name, value, attrs=None): |
|||
super().render(name, value, attrs) |
|||
is_localized = False |
|||
def render(self, name, value, attrs=None): |
|||
super().render(name, value, 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"/>''' |
|||
html += '''<input %(attrs)s name="datetimepicker" type="text" class="form-control" id="datetimepicker"/> |
|||
<script> |
|||
$(document).ready(function(){ |
|||
$("#%(id)s").datetimepicker({ |
|||
dateFormat:'yy-mm-dd', |
|||
timeFormat: 'HH:mm:ss', |
|||
}) |
|||
}); |
|||
</script>'''%{'attrs':flat_attrs, 'id':attrs['id']} |
|||
template = Template(html) |
|||
context = Context({}) |
|||
return template.render(context) |
|||
context = Context({ |
|||
'attrs': flat_attrs, |
|||
'id': attrs['id'], |
|||
'closeText': _("Close"), |
|||
'currentText': _("Today"), |
|||
'dayNames': mark_safe(list2str((str(item[1]) for item in WEEKDAYS.items()))), |
|||
'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]) + '"'), |
|||
'isRTL': str(get_language_bidi()).lower(), |
|||
'monthNames': mark_safe(list2str((str(item[1]) for item in MONTHS.items()))), |
|||
'monthNamesShort': mark_safe(list2str((str(item[1]) for item in MONTHS_3.items()))), |
|||
'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