From bd528a9026d8b45588c8117f1a3120461d417c69 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Sat, 29 Sep 2018 21:11:22 +0100 Subject: [PATCH] filters: Pre-populate delegate, submitter filters This appears to have got lost in the transition to 'selectize.js'. In brief, this will ensure that a previously selected delegate or submitter is still enabled post-filtering. For more information, see [1]. [1] https://stackoverflow.com/a/45124779 Signed-off-by: Stephen Finucane Closes: #78 --- .../templates/patchwork/partials/filters.html | 71 ++++++++----------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/patchwork/templates/patchwork/partials/filters.html b/patchwork/templates/patchwork/partials/filters.html index e760310b..9b0c4cb2 100644 --- a/patchwork/templates/patchwork/partials/filters.html +++ b/patchwork/templates/patchwork/partials/filters.html @@ -16,8 +16,6 @@ function filter_click() form.style['display'] = 'block'; filterform_displayed = true; } - - } Selectize.define('enter_key_submit', function (options) { @@ -39,9 +37,6 @@ Selectize.define('enter_key_submit', function (options) { $(document).ready(function() { $('#submitter_input').selectize({ - valueField: 'pk', - labelField: 'name', - searchField: ['name', 'email'], plugins: ['enter_key_submit'], maxItems: 1, persist: false, @@ -52,43 +47,37 @@ $(document).ready(function() { this.$input.closest('form').submit(); }, this); }, - render: { - option: function(item, escape) { - if (item.name) - return '
' + escape(item.name) + ' <' + - escape(item.email) + '>' + '
'; - return '
' + escape(item.email) + '
'; +{% if "submitter" in filters.applied_filters %} +{% with submitter_filter=filters.applied_filters.submitter %} + options: [ + { + value: "{{ submitter_filter.key }}", + text: "{{ submitter_filter.condition }}", }, - item: function(item, escape) { - if (item.name) - return '
' + escape(item.name) + '
'; - return '
' + escape(item.email) + '
'; - } - }, + ], + items: ["{{ submitter_filter.key }}"], +{% endwith %} +{% endif %} load: function(query, callback) { if (query.length < 4) return callback(); req = $.ajax({ - url: '{% url 'api-submitters' %}?q=' + - encodeURIComponent(query) + '&l=10', + url: "{% url 'api-submitters' %}", + data: {q: query, l: 10}, error: function() { callback(); }, success: function(res) { - callback(res); + callback($.map(res, function (obj) { + return {value: obj.pk, text: `${obj.name} <${obj.email}>`}; + })); } }); } }); -}); - -$(document).ready(function() { $('#delegate_input').selectize({ - valueField: 'pk', - labelField: 'name', - searchField: ['name'], plugins: ['enter_key_submit'], maxItems: 1, persist: false, @@ -99,26 +88,28 @@ $(document).ready(function() { this.$input.closest('form').submit(); }, this); }, - render: { - option: function(item, escape) { - if (item.email) - return '
' + escape(item.name) + ' <' + - escape(item.email) + '>' + '
'; - return '
' + escape(item.name) + '
'; +{% if "delegate" in filters.applied_filters %} +{% with delegate_filter=filters.applied_filters.delegate %} + options: [ + { + value: "{{ delegate_filter.key }}", + text: "{{ delegate_filter.condition }}", }, - item: function(item, escape) { - return '
' + escape(item.name) + '
'; - } - }, + ], + items: ["{{ delegate_filter.key }}"], +{% endwith %} +{% endif %} load: function(query, callback) { req = $.ajax({ - url: '{% url 'api-delegates' %}?q=' + - encodeURIComponent(query) + '&l=10', + url: "{% url 'api-delegates' %}", + data: {q: query, l: 10}, error: function() { callback(); }, success: function(res) { - callback(res); + callback($.map(res, function (obj) { + return {value: obj.pk, text: obj.name}; + })); } }); } @@ -167,5 +158,3 @@ $(document).ready(function() { - - -- 2.47.3