diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py index 535d50ccb502d54dee5f5a1fe02f578c5b747908..b7115cf4b1234f66aca4eac39e6ef1e170f5f7bb 100644 --- a/ippisite/ippidb/forms.py +++ b/ippisite/ippidb/forms.py @@ -29,6 +29,22 @@ class CharFieldDataList(forms.CharField): return attrs +class BoostrapSelectMultiple(forms.SelectMultiple): + def __init__(self, allSelectedText, nonSelectedText, SelectedText, attrs=None, *args, **kwargs): + if attrs is not None: + attrs = attrs.copy() + else: + attrs = {} + attrs.update({ + "data-all-selected-text": allSelectedText, + "data-non-selected-text": nonSelectedText, + "data-n-selected-text": SelectedText, + "class": "bootstrap-multiselect-applicant", + "style": "display:none;", + }) + super().__init__(attrs=attrs,*args, **kwargs) + + """ Step 1 : IdForm """ @@ -324,7 +340,11 @@ class PpiModelForm(ModelForm): widgets = { 'id': forms.HiddenInput(), 'family': forms.HiddenInput(), - # 'diseases': forms.CheckboxSelectMultiple(), + 'diseases': BoostrapSelectMultiple( + allSelectedText=_("All diseases used"), + nonSelectedText=_("No diseases selected"), + SelectedText=_(" diseases selected"), + ), } def __init__(self, *args, **kwargs): diff --git a/ippisite/ippidb/static/js/ippidb.js b/ippisite/ippidb/static/js/ippidb.js index d4169240dbba3297ce56c8f17c8d089351a9d96b..2734bf4bdba874d366064fa45c828f98f4f0d7e9 100644 --- a/ippisite/ippidb/static/js/ippidb.js +++ b/ippisite/ippidb/static/js/ippidb.js @@ -196,4 +196,27 @@ function delete_button_clicked(source) { $(item).find("textarea").prop("disabled",false); $(item).find("input").prop("disabled",false); } -} \ No newline at end of file +} + +function create_bootstrap_multiselect_from_applicant(source) { + $(source).multiselect({ + allSelectedText: $(source).attr("data-all-selected-text"), + nonSelectedText: $(source).attr("data-non-selected-text"), + nSelectedText: $(source).attr("data-n-selected-text"), + enableFiltering: true, + buttonWidth:'100%', + numberDisplayed: 4, + maxHeight: 600, + templates:{ + button: '<button type="button" class="multiselect dropdown-toggle btn btn-secondary btn-default " data-toggle="dropdown"><span class="multiselect-selected-text"></span> <b class="caret"></b></button>', + filterClearBtn: '<div class="input-group-append"><button class="btn btn-outline-primary multiselect-clear-filter" type="button"><i class="fa fa-times-circle"></i></button></div>', + filter: '<li class="multiselect-item multiselect-filter"><div class="input-group"><div class="input-group-prepend"><span class="input-group-text" id="basic-addon1"><i class="fa fa-search"></i></span></div><input class="form-control multiselect-search" type="text" /></div></li>', + } + }).show(); +} + +$(document).ready(function(){ + $("select[multiple=multiple].bootstrap-multiselect-applicant").each(function(i,e){ + create_bootstrap_multiselect_from_applicant(e); + }); +}); \ No newline at end of file diff --git a/ippisite/ippidb/templates/PpiForm.html b/ippisite/ippidb/templates/PpiForm.html index 6bab97f4f5d5dab3c42d2f0e63b5803cdfe9f5b4..4751bf0bac49eb0023424ff6222b85746edbcd85 100644 --- a/ippisite/ippidb/templates/PpiForm.html +++ b/ippisite/ippidb/templates/PpiForm.html @@ -1,27 +1,6 @@ {% extends "add.html" %} {% load i18n %} -{% block extra_js %} -{{block.super}} -<script type="text/javascript"> -window.onload = function() { - $("#id_PpiForm-diseases").multiselect({ - allSelectedText: 'All diseases used', - nonSelectedText: 'No diseases selected', - enableFiltering: true, - buttonWidth:'100%', - numberDisplayed: 4, - nSelectedText:" diseases selected", - maxHeight: 600, - templates:{ - button: '<button type="button" class="multiselect dropdown-toggle btn btn-secondary btn-default " data-toggle="dropdown"><span class="multiselect-selected-text"></span> <b class="caret"></b></button>', - filterClearBtn: '<div class="input-group-append"><button class="btn btn-outline-primary multiselect-clear-filter" type="button"><i class="fa fa-times-circle"></i></button></div>', - filter: '<li class="multiselect-item multiselect-filter"><div class="input-group"><div class="input-group-prepend"><span class="input-group-text" id="basic-addon1"><i class="fa fa-search"></i></span></div><input class="form-control multiselect-search" type="text" /></div></li>', - } - }).show(); -}; -</script> -{% endblock extra_js %} {%block step_desc%} {%blocktrans%}You have selected a <span style="color:#2d96fa;">{{ complex_type }}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator.{%endblocktrans%} diff --git a/ippisite/ippidb/templatetags/customtags.py b/ippisite/ippidb/templatetags/customtags.py index 546fcb4d422df77e188671cfa3c67721fe731943..67185274ea747b986f571f87e7833508a4bdf5cd 100644 --- a/ippisite/ippidb/templatetags/customtags.py +++ b/ippisite/ippidb/templatetags/customtags.py @@ -51,10 +51,11 @@ def bootstrap_core(object): wrapping_classes = "form-group form-check" label_classes = "form-check-label" css_classes.add("form-check-input") - # elif isinstance(field.field.widget, widgets.RadioSelect): - # wrapping_classes = "form-check" - # label_classes = "form-check-label" - # css_classes.add("form-check-input") + elif isinstance(field.field.widget, forms.widgets.SelectMultiple): + # if it is a SelectMultiple, we assume that we will handle it on client side with boostrap-mutliselect + wrapping_classes = "form-group" + attrs["data-label"] = field.label + print_label = False else: # usual classes wrapping_classes = "input_field form-group" diff --git a/ippisite/locale/en/LC_MESSAGES/django.po b/ippisite/locale/en/LC_MESSAGES/django.po index b03b00a6d1f9d38d27283d7212ebea0c99337b56..177f3fd4f2729f4f2e53132156825a77f72022f7 100644 --- a/ippisite/locale/en/LC_MESSAGES/django.po +++ b/ippisite/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-15 14:53+0000\n" +"POT-Creation-Date: 2019-02-20 14:24+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -58,6 +58,15 @@ msgstr "" msgid "PPI Familly" msgstr "" +msgid "All diseases used" +msgstr "" + +msgid "No diseases selected" +msgstr "" + +msgid " diseases selected" +msgstr "" + msgid "compound_name_label" msgstr "Compound Name" @@ -257,8 +266,8 @@ msgstr "" msgid "IdForm_desc" msgstr "" "Please provide a valid ID for your bibliographic source, either a PubMed ID " -"a patent ID, or a DOI. This ID should correspond to a bibliographic source in its final " -"format. \n" +"a patent ID, or a DOI. This ID should correspond to a bibliographic source " +"in its final format. \n" "Therefore, PubMed articles in « Just Accepted » format should not be used as " "a source of data as they are not considered the official version of record."