Commit 6c53c78b authored by Bryan Hoyt's avatar Bryan Hoyt

Revert "Merge branch 'named-filter-forms'"

This reverts commit 323405e6, reversing
changes made to 41a68dde.
parent 4ec6473a
...@@ -31,4 +31,4 @@ ...@@ -31,4 +31,4 @@
{% endblock %} {% endblock %}
{% block model_menu_bar %} {% block model_menu_bar %}
{% endblock %} {% endblock %}
\ No newline at end of file
This diff is collapsed.
var AdminFilters = function(element, filters_element, filters_by_group) { var AdminFilters = function(element, filters_element, operations, options, types) {
var $root = $(element); var $root = $(element);
var $container = $('.filters', $root); var $container = $('.filters', $root);
var lastCount = 0; var lastCount = 0;
...@@ -23,7 +23,7 @@ var AdminFilters = function(element, filters_element, filters_by_group) { ...@@ -23,7 +23,7 @@ var AdminFilters = function(element, filters_element, filters_by_group) {
return false; return false;
} }
function addFilter(name, subfilters) { function addFilter(name, op) {
var $el = $('<tr />').appendTo($container); var $el = $('<tr />').appendTo($container);
// Filter list // Filter list
...@@ -41,8 +41,8 @@ var AdminFilters = function(element, filters_element, filters_by_group) { ...@@ -41,8 +41,8 @@ var AdminFilters = function(element, filters_element, filters_by_group) {
var $select = $('<select class="filter-op" />') var $select = $('<select class="filter-op" />')
.change(changeOperation); .change(changeOperation);
$(subfilters).each(function() { $(op).each(function() {
$select.append($('<option/>').attr('value', this.label).text(this.operation)); $select.append($('<option/>').attr('value', this[0]).text(this[1]));
}); });
$el.append( $el.append(
...@@ -51,14 +51,16 @@ var AdminFilters = function(element, filters_element, filters_by_group) { ...@@ -51,14 +51,16 @@ var AdminFilters = function(element, filters_element, filters_by_group) {
$select.select2({width: 'resolve'}); $select.select2({width: 'resolve'});
// Input
var optId = op[0][0];
var $field; var $field;
var firstFilter = subfilters[0]; if (optId in options) {
if (firstFilter.options) {
$field = $('<select class="filter-val" />') $field = $('<select class="filter-val" />')
.attr('name', 'flt' + lastCount + '_' + firstFilter.label); .attr('name', 'flt' + lastCount + '_' + optId);
$(firstFilter.options).each(function() { $(options[optId]).each(function() {
$field.append($('<option/>') $field.append($('<option/>')
.val(this[0]).text(this[1])); .val(this[0]).text(this[1]));
}); });
...@@ -68,13 +70,13 @@ var AdminFilters = function(element, filters_element, filters_by_group) { ...@@ -68,13 +70,13 @@ var AdminFilters = function(element, filters_element, filters_by_group) {
} else } else
{ {
$field = $('<input type="text" class="filter-val" />') $field = $('<input type="text" class="filter-val" />')
.attr('name', 'flt' + lastCount + '_' + firstFilter.label); .attr('name', 'flt' + lastCount + '_' + optId);
$el.append($('<td/>').append($field)); $el.append($('<td/>').append($field));
} }
if (firstFilter.data_type) { if (optId in types) {
$field.attr('data-role', firstFilter.data_type); $field.attr('data-role', types[optId]);
faForm.applyStyle($field, firstFilter.data_type); faForm.applyStyle($field, types[optId]);
} }
lastCount += 1; lastCount += 1;
...@@ -82,7 +84,8 @@ var AdminFilters = function(element, filters_element, filters_by_group) { ...@@ -82,7 +84,8 @@ var AdminFilters = function(element, filters_element, filters_by_group) {
$('a.filter', filters_element).click(function() { $('a.filter', filters_element).click(function() {
var name = $(this).text().trim(); var name = $(this).text().trim();
addFilter(name, filters_by_group[name]);
addFilter(name, operations[name]);
$('button', $root).show(); $('button', $root).show();
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<ul class="dropdown-menu field-filters"> <ul class="dropdown-menu field-filters">
{% for k in filter_groups %} {% for k in filter_groups %}
<li> <li>
<a href="javascript:void(0)" class="filter" onclick="return false;">{{ k }}</a> <a href="javascript:void(0)" class="filter" onclick="return false;">{{ k[0] }}</a>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
...@@ -23,29 +23,29 @@ ...@@ -23,29 +23,29 @@
<table class="filters"> <table class="filters">
{%- for i, flt in enumerate(active_filters) -%} {%- for i, flt in enumerate(active_filters) -%}
<tr> <tr>
{% set filter = filters[flt[0]] %} {% set filter = admin_view._filters[flt[0]] %}
{%- set filter_label = admin_view.unique_filter_label(filter) -%}
<td> <td>
<a href="javascript:void(0)" class="btn remove-filter" title="{{ _gettext('Remove Filter') }}"> <a href="javascript:void(0)" class="btn remove-filter" title="{{ _gettext('Remove Filter') }}">
<span class="close-icon">&times;</span>&nbsp;{{ filter.name }} <span class="close-icon">&times;</span>&nbsp;{{ filters[flt[0]] }}
</a> </a>
</td> </td>
<td> <td>
<select class="filter-op" data-role="select2"> <select class="filter-op" data-role="select2">
{% for subfilter in filter_groups[filter.name] %} {% for op in admin_view._filter_dict[filter.name] %}
<option value="{{ subfilter.label }}"{% if subfilter.label == filter_label %} selected="selected"{% endif %}>{{ subfilter.operation }}</option> <option value="{{ op[0] }}"{% if flt[0] == op[0] %} selected="selected"{% endif %}>{{ op[1] }}</option>
{% endfor %} {% endfor %}
</select> </select>
</td> </td>
<td> <td>
{%- if filter.options -%} {%- set data = filter_data.get(flt[0]) -%}
<select name="flt{{ i }}_{{ filter_label }}" class="filter-val" data-role="select2"> {%- if data -%}
{%- for o in filter.options %} <select name="flt{{ i }}_{{ flt[0] }}" class="filter-val" data-role="select2">
<option value="{{ o[0] }}"{% if flt[1] == o[0] %} selected{% endif %}>{{ o[1] }}</option> {%- for d in data %}
<option value="{{ d[0] }}"{% if flt[1] == d[0] %} selected{% endif %}>{{ d[1] }}</option>
{%- endfor %} {%- endfor %}
</select> </select>
{%- else -%} {%- else -%}
<input name="flt{{ i }}_{{ filter_label }}" type="text" value="{{ flt[1] or '' }}" class="filter-val"{% if filter.data_type %} data-role="{{ filter.data_type }}"{% endif %}></input> <input name="flt{{ i }}_{{ flt[0] }}" type="text" value="{{ flt[1] or '' }}" class="filter-val"{% if flt[0] in filter_types %} data-role="{{ filter_types[flt[0]] }}"{% endif %}></input>
{%- endif -%} {%- endif -%}
</td> </td>
</tr> </tr>
......
...@@ -159,10 +159,12 @@ ...@@ -159,10 +159,12 @@
html: true, html: true,
placement: 'bottom' placement: 'bottom'
}); });
{% if filter_groups is not none %} {% if filter_groups is not none and filter_data is not none %}
var filter = new AdminFilters( var filter = new AdminFilters(
'#filter_form', '.field-filters', '#filter_form', '.field-filters',
{{ filter_groups|tojson|safe }} {{ admin_view._get_filter_dict()|tojson|safe }},
{{ filter_data|tojson|safe }},
{{ filter_types|tojson|safe }}
); );
{% endif %} {% endif %}
})(jQuery); })(jQuery);
......
...@@ -233,52 +233,61 @@ def test_column_filters(): ...@@ -233,52 +233,61 @@ def test_column_filters():
eq_(len(view._filters), 4) eq_(len(view._filters), 4)
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Test1'] ], eq_(view._filter_dict, {
[('0', u'equals'), u'Test1': [
('1', u'not equal'), (0, u'equals'),
('2', u'contains'), (1, u'not equal'),
('3', u'not contains')]) (2, u'contains'),
(3, u'not contains')
]})
# Test filter that references property # Test filter that references property
view = CustomModelView(Model2, db.session, view = CustomModelView(Model2, db.session,
column_filters=['model1']) column_filters=['model1'])
eq_(view._filter_dict, {
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Test1'] ], u'Model1 / Test1': [
[('0', u'equals'), (0, u'equals'),
('1', u'not equal'), (1, u'not equal'),
('2', u'contains'), (2, u'contains'),
('3', u'not contains')]) (3, u'not contains')
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Test2'] ], ],
[('4', u'equals'), 'Model1 / Test2': [
('5', u'not equal'), (4, 'equals'),
('6', u'contains'), (5, 'not equal'),
('7', u'not contains')]) (6, 'contains'),
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Test3'] ], (7, 'not contains')
[('8', u'equals'), ],
('9', u'not equal'), u'Model1 / Test3': [
('10', u'contains'), (8, u'equals'),
('11', u'not contains')]) (9, u'not equal'),
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Test4'] ], (10, u'contains'),
[('12', u'equals'), (11, u'not contains')
('13', u'not equal'), ],
('14', u'contains'), u'Model1 / Test4': [
('15', u'not contains')]) (12, u'equals'),
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Bool Field'] ], (13, u'not equal'),
[('16', u'equals'), (14, u'contains'),
('17', u'not equal')]) (15, u'not contains')
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Enum Field'] ], ],
[('18', u'equals'), u'Model1 / Bool Field': [
('19', u'not equal')]) (16, u'equals'),
(17, u'not equal'),
],
u'Model1 / Enum Field': [
(18, u'equals'),
(19, u'not equal'),
]})
# Test filter with a dot # Test filter with a dot
view = CustomModelView(Model2, db.session, view = CustomModelView(Model2, db.session,
column_filters=['model1.bool_field']) column_filters=['model1.bool_field'])
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Model1 / Bool Field'] ], eq_(view._filter_dict, {
[('0', u'equals'), 'Model1 / Bool Field': [
('1', u'not equal')]) (0, 'equals'),
(1, 'not equal'),
]})
# Fill DB # Fill DB
model1_obj1 = Model1('model1_obj1', bool_field=True) model1_obj1 = Model1('model1_obj1', bool_field=True)
...@@ -315,11 +324,9 @@ def test_column_filters(): ...@@ -315,11 +324,9 @@ def test_column_filters():
column_filters=['int_field']) column_filters=['int_field'])
admin.add_view(view) admin.add_view(view)
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['Int Field'] ], eq_(view._filter_dict, {'Int Field': [(0, 'equals'), (1, 'not equal'),
[('0', u'equals'), (2, 'greater than'), (3, 'smaller than')]})
('1', u'not equal'),
('2', u'greater than'),
('3', u'smaller than')])
#Test filters to joined table field #Test filters to joined table field
view = CustomModelView( view = CustomModelView(
......
...@@ -302,8 +302,8 @@ def test_column_filters(): ...@@ -302,8 +302,8 @@ def test_column_filters():
eq_(view._filters[0].name, 'col1') eq_(view._filters[0].name, 'col1')
eq_(view._filters[1].name, 'col2') eq_(view._filters[1].name, 'col2')
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['col1'] ], [('0', 'test')]) eq_(view._filter_dict, {'col1': [(0, 'test')],
eq_([ (f['label'], f['operation']) for f in view._flattened_filters_by_group['col2'] ], [('1', 'test')]) 'col2': [(1, 'test')]})
# TODO: Make calls with filters # TODO: Make calls with filters
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment