You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by de...@apache.org on 2014/08/25 15:39:47 UTC
[07/48] fauxton commit: updated refs/heads/secondary-indexes to
8688d16
Fix deletion of docs that where selected using select-all
- add docs on page to bulk-delete-collection on select-all-click,
which also reenables the trash-button
- make AllDocs testable, enable injection for viewMeta
Closes COUCHDB-2291
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/4b3e5c97
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/4b3e5c97
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/4b3e5c97
Branch: refs/heads/secondary-indexes
Commit: 4b3e5c97f0f7b0f4efe0f3ad441186f4606cb1fe
Parents: 1db3056
Author: Robert Kowalski <ro...@kowalski.gd>
Authored: Thu Aug 14 20:55:49 2014 +0200
Committer: Robert Kowalski <ro...@kowalski.gd>
Committed: Mon Aug 18 20:42:54 2014 +0200
----------------------------------------------------------------------
app/addons/documents/resources.js | 1 +
app/addons/documents/tests/views-sidebarSpec.js | 14 +++----
app/addons/documents/tests/viewsSpec.js | 39 ++++++++++++++++++--
app/addons/documents/views.js | 30 ++++++++++++++-
4 files changed, 72 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3e5c97/app/addons/documents/resources.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/resources.js b/app/addons/documents/resources.js
index dc71153..e1df569 100644
--- a/app/addons/documents/resources.js
+++ b/app/addons/documents/resources.js
@@ -396,6 +396,7 @@ function(app, FauxtonAPI, PagingCollection) {
return "docs";
},
initialize: function(_models, options) {
+ this.viewMeta = options.viewMeta;
this.database = options.database;
this.params = _.clone(options.params);
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3e5c97/app/addons/documents/tests/views-sidebarSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/tests/views-sidebarSpec.js b/app/addons/documents/tests/views-sidebarSpec.js
index 216a21b..c8286bf 100644
--- a/app/addons/documents/tests/views-sidebarSpec.js
+++ b/app/addons/documents/tests/views-sidebarSpec.js
@@ -19,14 +19,14 @@ define([
describe('Documents Sidebar', function () {
var view;
- beforeEach(function () {
- viewSandbox = new ViewSandbox();
- viewSandbox.renderView(view);
- });
+ beforeEach(function () {
+ viewSandbox = new ViewSandbox();
+ viewSandbox.renderView(view);
+ });
- afterEach(function () {
- viewSandbox.remove();
- });
+ afterEach(function () {
+ viewSandbox.remove();
+ });
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3e5c97/app/addons/documents/tests/viewsSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/tests/viewsSpec.js b/app/addons/documents/tests/viewsSpec.js
index 639b116..44e4843 100644
--- a/app/addons/documents/tests/viewsSpec.js
+++ b/app/addons/documents/tests/viewsSpec.js
@@ -11,14 +11,47 @@
// the License.
define([
'addons/documents/views',
+ 'addons/documents/resources',
'addons/databases/base',
'testUtils'
-], function (Views, Databases, testUtils) {
- var assert = testUtils.assert;
+], function (Views, Resources, Databases, testUtils) {
+ var assert = testUtils.assert,
+ ViewSandbox = testUtils.ViewSandbox,
+ viewSandbox;
+
+ describe('AllDocsList', function () {
+ var database = new Databases.Model({id: 'registry'}),
+ bulkDeleteDocCollection = new Resources.BulkDeleteDocCollection([], {databaseId: 'registry'});
+
+ database.allDocs = new Resources.AllDocs({_id: "ente"}, {
+ database: database,
+ viewMeta: {update_seq: 1},
+ params: {}
+ });
+
+ var view = new Views.Views.AllDocsList({
+ viewList: false,
+ bulkDeleteDocsCollection: bulkDeleteDocCollection,
+ collection: database.allDocs
+ });
+
+ beforeEach(function () {
+ viewSandbox = new ViewSandbox();
+ viewSandbox.renderView(view);
+ });
+
+ afterEach(function () {
+ viewSandbox.remove();
+ });
- describe('DocumentsViews', function () {
it('should load', function () {
assert.equal(typeof Views.Views.AllDocsList, 'function');
});
+
+ it('pressing SelectAll should fill the delete-bulk-docs-collection', function () {
+ assert.equal(bulkDeleteDocCollection.length, 0);
+ view.$('button.all').trigger('click');
+ assert.equal(bulkDeleteDocCollection.length, 1);
+ });
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3e5c97/app/addons/documents/views.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/views.js b/app/addons/documents/views.js
index fef3106..545f4d6 100644
--- a/app/addons/documents/views.js
+++ b/app/addons/documents/views.js
@@ -430,8 +430,34 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
});
},
- selectAll: function(evt){
- $('.all-docs').find("input:checkbox").prop('checked', !$(evt.target).hasClass('active')).trigger('change');
+ selectAll: function (evt) {
+ var $allDocs = this.$('.all-docs'),
+ $rows = $allDocs.find('tr'),
+ $checkboxes = $allDocs.find('input:checkbox'),
+ modelsAffected,
+ docs;
+
+ $checkboxes.prop('checked', !$(evt.target).hasClass('active')).trigger('change');
+
+ if ($(evt.target).hasClass('active')) {
+ modelsAffected = _.reduce($rows, function (acc, el) {
+ var docId = $(el).attr('data-id');
+ acc.push(docId);
+ return acc;
+ }, []);
+ this.bulkDeleteDocsCollection.remove(modelsAffected);
+ } else {
+ modelsAffected = _.reduce($rows, function (acc, el) {
+ var docId = $(el).attr('data-id'),
+ rev = this.collection.get(docId).get('_rev');
+
+ acc.push({_id: docId, _rev: rev, _deleted: true});
+ return acc;
+ }, [], this);
+ this.bulkDeleteDocsCollection.add(modelsAffected);
+ }
+
+ this.toggleTrash();
},
serialize: function() {