8 """ |
8 """ |
9 __docformat__ = "restructuredtext en" |
9 __docformat__ = "restructuredtext en" |
10 |
10 |
11 from itertools import chain |
11 from itertools import chain |
12 from copy import deepcopy |
12 from copy import deepcopy |
13 from datetime import date |
13 from datetime import date, datetime, timedelta |
14 |
14 |
15 from logilab.mtconverter import html_escape |
15 from logilab.mtconverter import html_escape |
16 |
16 |
17 from logilab.common.graph import has_path |
17 from logilab.common.graph import has_path |
18 from logilab.common.decorators import cached |
18 from logilab.common.decorators import cached |
681 self.w(u'<div id="%s"></div>' % sliderid) |
681 self.w(u'<div id="%s"></div>' % sliderid) |
682 self.w(u'</div>\n') |
682 self.w(u'</div>\n') |
683 |
683 |
684 |
684 |
685 class DateFacetRangeWidget(FacetRangeWidget): |
685 class DateFacetRangeWidget(FacetRangeWidget): |
|
686 |
686 formatter = 'function (value) {return (new Date(parseFloat(value))).strftime(DATE_FMT);}' |
687 formatter = 'function (value) {return (new Date(parseFloat(value))).strftime(DATE_FMT);}' |
|
688 |
|
689 def round_max_value(self, d): |
|
690 'round to upper value to avoid filtering out the max value' |
|
691 return datetime(d.year, d.month, d.day) + timedelta(days=1) |
|
692 |
687 def __init__(self, facet, minvalue, maxvalue): |
693 def __init__(self, facet, minvalue, maxvalue): |
|
694 maxvalue = self.round_max_value(maxvalue) |
688 super(DateFacetRangeWidget, self).__init__(facet, |
695 super(DateFacetRangeWidget, self).__init__(facet, |
689 datetime2ticks(minvalue), |
696 datetime2ticks(minvalue), |
690 datetime2ticks(maxvalue)) |
697 datetime2ticks(maxvalue)) |
691 fmt = facet.req.property_value('ui.date-format') |
698 fmt = facet.req.property_value('ui.date-format') |
692 facet.req.html_headers.define_var('DATE_FMT', fmt) |
699 facet.req.html_headers.define_var('DATE_FMT', fmt) |