From 4b7473631f362469008018c6015ecb8dbc4b2ee5 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 10 Oct 2016 18:25:44 +0200 Subject: Fix routing button --- chimere/static/chimere/js/interface.js | 4 ++++ chimere/widgets.py | 25 ++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/chimere/static/chimere/js/interface.js b/chimere/static/chimere/js/interface.js index c0c00bf..e1a22bf 100644 --- a/chimere/static/chimere/js/interface.js +++ b/chimere/static/chimere/js/interface.js @@ -23,6 +23,10 @@ $(function(){ $('#close-detail').click(function(){ $('#detail').fadeOut(); }); + $(".buttonset label").click(function(){ + $(".buttonset label").removeAttr("aria-pressed"); + $(this).attr("aria-pressed", 'true'); + }); }); function display_categories(){ diff --git a/chimere/widgets.py b/chimere/widgets.py index 8464d47..0b00d9d 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -146,23 +146,28 @@ JQuery UI button select widget. class ButtonRadioInput(RadioSelect): - def tag(self, name, value): + def tag(self, name, value, idx=''): selected = str(value) == str(self.choices[0][0]) - return ''.format( - name, self.choices[0][0], + if idx: + idx = ' id="{}"'.format(idx) + return ''.format( + name, self.choices[0][0], idx, ' selected="selected"' if selected else '') def render(self, name=None, value=None, attrs=None, choices=(), index=0): attrs = attrs or self.attrs + idx = '' if 'id' in self.attrs: - label_for = ' for="%s_%s"' % (self.attrs['id'], index) + idx = '{}_{}'.format(self.attrs['id'], index) + label_for = ' for="{}"'.format(idx) + if str(value) == str(self.choices[0][0]): + label_for += " aria-pressed='true'" else: label_for = '' choice_label = conditional_escape(str(self.choices[0][1])) - return mark_safe('%s %s' % (self.tag(name, value), - label_for, - choice_label)) + return mark_safe('%s %s' % ( + self.tag(name, value, idx), label_for, choice_label)) class ButtonRadioFieldRenderer(RadioFieldRenderer): @@ -184,9 +189,11 @@ class ButtonSelectWidget(forms.RadioSelect): def render(self, *args, **kwargs): rendered = "
\n" % kwargs['attrs']['id'] rendered += super(ButtonSelectWidget, self).render(*args, **kwargs) - rendered += "\n\n
\n" % kwargs['attrs']['id'] + "" % kwargs['attrs']['id'] + """ + rendered += "\n\n" return mark_safe(rendered) -- cgit v1.2.3