You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ro...@apache.org on 2014/07/17 19:14:17 UTC
[05/10] fauxton commit: updated refs/heads/2158-changes-filter to
b1121db
review
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/263d328d
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/263d328d
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/263d328d
Branch: refs/heads/2158-changes-filter
Commit: 263d328dace3756a5bec0eb59a241ba6e8187898
Parents: 8ff72f8
Author: Robert Kowalski <ro...@kowalski.gd>
Authored: Fri May 16 20:44:15 2014 +0200
Committer: Robert Kowalski <ro...@kowalski.gd>
Committed: Thu Jul 17 19:13:37 2014 +0200
----------------------------------------------------------------------
app/addons/documents/routes.js | 30 +++++++++++++++++++---
app/addons/documents/views.js | 14 ++--------
app/addons/fauxton/components.js | 33 +++++++++++++++++++-----
app/addons/fauxton/tests/filterViewSpec.js | 28 ++++----------------
app/core/base.js | 34 -------------------------
5 files changed, 59 insertions(+), 80 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/263d328d/app/addons/documents/routes.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/routes.js b/app/addons/documents/routes.js
index a4a0baa..bf62f0a 100644
--- a/app/addons/documents/routes.js
+++ b/app/addons/documents/routes.js
@@ -17,10 +17,11 @@ define([
// Modules
"addons/documents/views",
- "addons/databases/base"
+ "addons/databases/base",
+ "addons/fauxton/components"
],
-function(app, FauxtonAPI, Documents, Databases) {
+function(app, FauxtonAPI, Documents, Databases, Components) {
var DocEditorRouteObject = FauxtonAPI.RouteObject.extend({
layout: "one_pane",
@@ -465,6 +466,11 @@ function(app, FauxtonAPI, Documents, Databases) {
"database/:database/_changes(:params)": "changes"
},
+ events: {
+ "route:changesFilterAdd": "addFilter",
+ "route:changesFilterRemove": "removeFilter"
+ },
+
initialize: function (route, masterLayout, options) {
this.databaseName = options[0];
this.database = new Databases.Model({id: this.databaseName});
@@ -475,11 +481,27 @@ function(app, FauxtonAPI, Documents, Databases) {
},
changes: function (event) {
- this.setView("#dashboard-content", new Documents.Views.Changes({
+ this.dashboardView = this.setView("#dashboard-content", new Documents.Views.Changes({
model: this.database
}));
- this.setView("#sidebar-content", new Documents.Views.ChangesSidebar());
+ this.filterView = new Components.FilterView({
+ eventNamespace: "changes"
+ });
+
+ this.sideBarView = this.setView("#sidebar-content", new Documents.Views.ChangesSidebar({
+ filterView: this.filterView
+ }));
+ },
+
+ addFilter: function (filter) {
+ this.dashboardView.filters.push(filter);
+ this.dashboardView.render();
+ },
+
+ removeFilter: function (filter) {
+ this.dashboardView.filters.splice(this.dashboardView.filters.indexOf(filter), 1);
+ this.dashboardView.render();
},
apiUrl: function() {
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/263d328d/app/addons/documents/views.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/views.js b/app/addons/documents/views.js
index e035449..eb129f2 100644
--- a/app/addons/documents/views.js
+++ b/app/addons/documents/views.js
@@ -1920,18 +1920,12 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb,
Views.Indexed = FauxtonAPI.View.extend({});
- Views.ChangesEvents = {};
- _.extend(Views.ChangesEvents, Backbone.Events);
-
- Views.Changes = FauxtonAPI.View.extend({
+ Views.Changes = Components.FilteredView.extend({
template: "addons/documents/templates/changes",
initialize: function () {
this.listenTo(this.model.changes, 'sync', this.render);
this.listenTo(this.model.changes, 'cachesync', this.render);
-
- this.listenTo(Views.ChangesEvents, "changes:filter", this.filter);
- this.listenTo(Views.ChangesEvents, "changes:remove", this.removeFilter);
},
events: {
@@ -1982,11 +1976,7 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb,
template: "addons/documents/templates/changes_sidebar",
initialize: function (options) {
-
- this.setView(".js-filter", new Components.FilterView({
- eventListener: Views.ChangesEvents,
- eventNamespace: "changes"
- }));
+ this.setView(".js-filter", options.filterView);
}
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/263d328d/app/addons/fauxton/components.js
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/components.js b/app/addons/fauxton/components.js
index 79a9320..de633f3 100644
--- a/app/addons/fauxton/components.js
+++ b/app/addons/fauxton/components.js
@@ -339,11 +339,34 @@ function(app, FauxtonAPI, ace, spin) {
}
});
+ Components.FilteredView = FauxtonAPI.View.extend({
+ filters: [],
+
+ createFilteredData: function (json) {
+ var that = this;
+
+ return _.reduce(this.filters, function (elements, filter) {
+
+ return _.filter(elements, function (element) {
+ var match = false;
+
+ _.each(element, function (value) {
+ if (new RegExp(filter).test(value.toString())) {
+ match = true;
+ }
+ });
+ return match;
+ });
+
+
+ }, json, this);
+ }
+ });
+
Components.FilterView = FauxtonAPI.View.extend({
template: "addons/fauxton/templates/filter",
initialize: function (options) {
- this.eventListener = options.eventListener;
this.eventNamespace = options.eventNamespace;
},
@@ -360,17 +383,15 @@ function(app, FauxtonAPI, ace, spin) {
return;
}
- this.eventListener.trigger(this.eventNamespace + ":filter", filter);
+ FauxtonAPI.triggerRouteEvent(this.eventNamespace + "FilterAdd", filter);
this.insertView(".filter-list", new Components.FilterItemView({
filter: filter,
- eventListener: this.eventListener,
eventNamespace: this.eventNamespace
})).render();
$filter.val('');
}
-
});
Components.FilterItemView = FauxtonAPI.View.extend({
@@ -379,7 +400,6 @@ function(app, FauxtonAPI, ace, spin) {
initialize: function (options) {
this.filter = options.filter;
- this.eventListener = options.eventListener;
this.eventNamespace = options.eventNamespace;
},
@@ -395,8 +415,7 @@ function(app, FauxtonAPI, ace, spin) {
removeFilter: function (event) {
event.preventDefault();
-
- this.eventListener.trigger(this.eventNamespace + ":remove", this.filter);
+ FauxtonAPI.triggerRouteEvent(this.eventNamespace + "FilterRemove", this.filter);
this.remove();
}
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/263d328d/app/addons/fauxton/tests/filterViewSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/tests/filterViewSpec.js b/app/addons/fauxton/tests/filterViewSpec.js
index fec970d..7bfd0a6 100644
--- a/app/addons/fauxton/tests/filterViewSpec.js
+++ b/app/addons/fauxton/tests/filterViewSpec.js
@@ -17,18 +17,18 @@ define([
'api'
], function (app, Components, testUtils, FauxtonAPI) {
var assert = testUtils.assert,
- ViewSandbox = testUtils.ViewSandbox,
- myEvents = {};
-
- _.extend(myEvents, Backbone.Events);
+ ViewSandbox = testUtils.ViewSandbox;
describe('FilterView', function () {
var viewSandbox,
filterView;
+ if (!FauxtonAPI.router.triggerRouteEvent) {
+ FauxtonAPI.router.triggerRouteEvent = function () {};
+ }
+
beforeEach(function () {
filterView = new Components.FilterView({
- eventListener: myEvents,
eventNamespace: 'mynamespace'
});
@@ -40,24 +40,6 @@ define([
viewSandbox.remove();
});
- it('should trigger an event on add', function () {
- filterView.$('[name="filter"]').val('i am a lonely filter');
- myEvents.listenToOnce(myEvents, 'ente:filter', function (msg) {
- assert.equal('i am a lonely filter', msg);
- });
- filterView.$('.js-log-filter-form').submit();
- });
-
- it('should trigger an event on remove', function () {
- myEvents.listenToOnce(myEvents, 'mynamespace:filter', function (msg) {
- assert.equal('i am a lonely filter', msg);
- });
-
- filterView.$('[name="filter"]').val('i am a lonely filter');
- filterView.$('.js-log-filter-form').submit();
- filterView.$('.js-remove-filter').click();
- });
-
it('should add filter markup', function () {
filterView.$('[name="filter"]').val('i was a lonely filter');
filterView.$('.js-log-filter-form').submit();
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/263d328d/app/core/base.js
----------------------------------------------------------------------
diff --git a/app/core/base.js b/app/core/base.js
index 3425ca1..15499b3 100644
--- a/app/core/base.js
+++ b/app/core/base.js
@@ -62,43 +62,9 @@ function(Backbone, LayoutManager) {
manage: true,
disableLoader: false,
- filters: [],
-
forceRender: function () {
this.hasRendered = false;
- },
-
- filter: function (filter) {
- this.filters.push(filter);
- this.render();
- },
-
- createFilteredData: function (json) {
- var that = this;
-
- return _.reduce(this.filters, function (elements, filter) {
-
- return _.filter(elements, function (element) {
- var match = false;
-
- _.each(element, function (value) {
- if (new RegExp(filter).test(value.toString())) {
- match = true;
- }
- });
- return match;
- });
-
-
- }, json, this);
-
- },
-
- removeFilter: function (filter) {
- this.filters.splice(this.filters.indexOf(filter), 1);
- this.render();
}
-
});
var caching = {