mail: replace formdef filter by a category filter (#10099)

This commit is contained in:
Frédéric Péters 2016-03-22 13:41:58 +01:00
parent c009f03989
commit 6cc4ba3c17
3 changed files with 21 additions and 18 deletions

View File

@ -3,7 +3,7 @@
<div data-source-type="{{ source_type.id }}">
<div id="source-sidebar" class="mails">
{% if display_filter %}
<select id="formdef-filter"></select>
<select id="category-filter"></select>
{% endif %}
<ul>
{% for mail in mails %}
@ -16,6 +16,9 @@
{% for association in mail.associations.all %}
/ <span data-formdef-reference="{{association.formdef_reference}}">{{association.formdef_name}}</span>
{% endfor %}
{% for category in mail.categories %}
<span style="display: none" data-category-name="{{category}}"></span>
{% endfor %}
</li>
{% endfor %}
</ul>

View File

@ -95,7 +95,7 @@ div#content .cell.document iframe {
}
div#content #source-sidebar {
min-width: 20em;
width: 25em;
display: none; /* only displayed when on top */
}
@ -440,7 +440,7 @@ form#note textarea {
height: 8em;
}
#formdef-filter {
#category-filter {
width: 100%;
}

View File

@ -364,37 +364,37 @@ $(function() {
$('#postit').on('click', window.displayPopup);
$('#id_post_date').datepicker($.datepicker.regional["fr"]);
if ($('#formdef-filter').length) {
var known_formdefs = Object();
$('[data-formdef-reference]').each(function(index, elem) {
known_formdefs[$(elem).data('formdef-reference')] = $(elem).text();
if ($('#category-filter').length) {
var known_categories = Object();
$('[data-category-name]').each(function(index, elem) {
known_categories[$(elem).data('category-name')] = $(elem).data('category-name');
});
var options = Array();
$(Object.keys(known_formdefs)).each(function(index, elem) {
options.push({'key': elem, 'value': known_formdefs[elem]});
$(Object.keys(known_categories)).each(function(index, elem) {
options.push({'key': elem, 'value': known_categories[elem]});
});
options.sort(function(x, y) {
if (x.value > y.value) return 1;
if (x.value < y.value) return -1;
return 0;
});
$('#formdef-filter').empty();
$('#category-filter').empty();
/* TODO: should use javascript i18n */
$('<option value="">Tout</option>').appendTo($('#formdef-filter'));
$('<option value="">Toutes</option>').appendTo($('#category-filter'));
$(options).each(function(index, elem) {
$('<option value="' + elem.key + '">' + elem.value + '</option>').appendTo($('#formdef-filter'));
$('<option value="' + elem.key + '">' + elem.value + '</option>').appendTo($('#category-filter'));
});
$('#formdef-filter').on('change', function() {
var selected_formdef = $(this).val();
if (selected_formdef == '') {
$('#category-filter').on('change', function() {
var selected_category = $(this).val();
if (selected_category == '') {
$('#source-sidebar li').removeClass('li-visible');
$('#source-sidebar li').show();
} else {
$('#source-sidebar li').each(function(index, elem) {
var formdef_references = $(elem).find('[data-formdef-reference]').map(function(idx, elem) {
return $(elem).data('formdef-reference');
var category_references = $(elem).find('[data-category-name]').map(function(idx, elem) {
return $(elem).data('category-name');
}).toArray();
if (formdef_references.indexOf(selected_formdef) == -1) {
if (category_references.indexOf(selected_category) == -1) {
$(elem).removeClass('li-visible');
$(elem).hide();
} else {