diff --git a/src/widget.filtereditor.js b/src/widget.filtereditor.js index 23fd6316..a53a8b69 100644 --- a/src/widget.filtereditor.js +++ b/src/widget.filtereditor.js @@ -51,8 +51,8 @@ my.FilterEditor = Backbone.View.extend({ initialize: function() { this.el = $(this.el); _.bindAll(this, 'render'); - this.model.bind('change', this.render); - this.model.bind('change:filters:new-blank', this.render); + this.model.queryState.bind('change', this.render); + this.model.queryState.bind('change:filters:new-blank', this.render); this.render(); }, render: function() { @@ -100,12 +100,12 @@ my.FilterEditor = Backbone.View.extend({ e.preventDefault(); var $target = $(e.target); var filterId = $target.closest('.filter').attr('data-filter-id'); - this.model.removeFilter(filterId); + this.model.queryState.removeFilter(filterId); }, onTermFiltersUpdate: function(e) { var self = this; e.preventDefault(); - var filters = self.model.get('filters'); + var filters = self.model.queryState.get('filters'); var $form = $(e.target); _.each($form.find('input'), function(input) { var $input = $(input); @@ -114,8 +114,8 @@ my.FilterEditor = Backbone.View.extend({ var fieldId = $input.attr('data-filter-field'); filters[filterIndex].term[fieldId] = value; }); - self.model.set({filters: filters}); - self.model.trigger('change'); + self.model.queryState.set({filters: filters}); + self.model.queryState.trigger('change'); } }); diff --git a/test/widget.filtereditor.test.js b/test/widget.filtereditor.test.js index 86bb1b84..627db158 100644 --- a/test/widget.filtereditor.test.js +++ b/test/widget.filtereditor.test.js @@ -13,14 +13,29 @@ test('basics', function () { ok(!view.el.find('.js-add-filter').is(":visible")); ok($addForm.is(":visible")); + // submit the form $addForm.find('select.fields').val('country'); $addForm.submit(); + + // now check we have new filter ok(!$addForm.is(":visible")); $editForm = view.el.find('form.js-edit'); equal($editForm.find('.filter-term').length, 1) - equal(_.keys(dataset.queryState.attributes.filters[0].term)[0], 'country'); + // now set filter value and apply + $editForm.find('input').val('UK'); + $editForm.submit(); + equal(dataset.queryState.attributes.filters[0].term.country, 'UK'); + equal(dataset.currentRecords.length, 3); + + // now remove filter + $editForm.find('.js-remove-filter').click(); + // hmmm, not working yet but works by eye! + // $editForm = view.el.find('form.js-edit'); + // equal($editForm.find('.filter-term').length, 0) + // equal(dataset.currentRecords.length, 6); + view.remove(); });