You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2014/08/26 12:41:55 UTC
[5/8] fauxton commit: updated refs/heads/continue-secondary-index to
16049ba
Secondary Index work:
Select all got borked
I'm dumb and when I rebased I removed this import
select menu stuff
move pagination stuff to footer
fix events on select doc header
Use events for advanced options
Adding the dropdown menu in all_docs
Hooked up Delete DB & event handling in menuDropDown
Trigger event to go back to prev header on Bulk Delete
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/fe455df0
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/fe455df0
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/fe455df0
Branch: refs/heads/continue-secondary-index
Commit: fe455df076edf1b67e27ffe079c3f43883e19b3c
Parents: 113615f
Author: deathbearbrown <de...@gmail.com>
Authored: Wed Aug 6 17:06:55 2014 -0400
Committer: Garren Smith <ga...@gmail.com>
Committed: Tue Aug 26 12:40:45 2014 +0200
----------------------------------------------------------------------
app/addons/documents/assets/less/documents.less | 1 +
app/addons/documents/resources.js | 2 +-
app/addons/documents/routes.js | 61 +++++--
.../documents/templates/all_docs_item.html | 10 +-
.../documents/templates/all_docs_list.html | 24 +--
.../documents/templates/header_alldocs.html | 4 +-
.../documents/templates/header_doc_edit.html | 33 ----
.../documents/templates/select-doc-menu.html | 24 +++
app/addons/documents/views-advancedopts.js | 9 +-
app/addons/documents/views-sidebar.js | 2 +
app/addons/documents/views.js | 173 +++++++++++--------
app/addons/fauxton/components.js | 20 +++
app/addons/fauxton/templates/menu_dropdown.html | 2 +
app/addons/indexes/views.js | 4 +-
app/core/api.js | 7 +-
assets/less/pagination.less | 2 +-
16 files changed, 225 insertions(+), 153 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/assets/less/documents.less
----------------------------------------------------------------------
diff --git a/app/addons/documents/assets/less/documents.less b/app/addons/documents/assets/less/documents.less
index 5a39fab..26e3ffa 100644
--- a/app/addons/documents/assets/less/documents.less
+++ b/app/addons/documents/assets/less/documents.less
@@ -17,6 +17,7 @@
@import "advancedOptions.less";
@import "changes.less";
@import "sidenav.less";
+@import "headers.less";
tr.all-docs-item {
border: none;
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/resources.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/resources.js b/app/addons/documents/resources.js
index f95bf78..20d4378 100644
--- a/app/addons/documents/resources.js
+++ b/app/addons/documents/resources.js
@@ -359,7 +359,7 @@ function(app, FauxtonAPI, PagingCollection) {
if (ids.errorIds.length) {
this.trigger('error', ids.errorIds);
}
-
+ FauxtonAPI.Events.trigger('success:bulkDelete');
this.trigger('updated');
},
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/routes.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/routes.js b/app/addons/documents/routes.js
index fbdcbad..994ca5c 100644
--- a/app/addons/documents/routes.js
+++ b/app/addons/documents/routes.js
@@ -192,19 +192,10 @@ function(app, FauxtonAPI, Components, Documents, Changes, DocEditor, Databases,
{"name": this.data.database.id, "link": Databases.databaseUrl(this.data.database)}
];
- var dropdown = [{
- links: [{
- title: 'Duplicate Index',
- icon: 'fonticon-documents'
- },{
- title: 'Delete',
- icon: 'fonticon-trash'
- }]
- }];
this.leftheader = this.setView("#breadcrumbs", new Components.LeftHeader({
crumbs: crumbs,
- dropdownMenu: dropdown
+ dropdownMenu: this.setUpDropdown()
}));
/* --------------------------------------------------
@@ -224,6 +215,54 @@ function(app, FauxtonAPI, Components, Documents, Changes, DocEditor, Databases,
}));
},
+ setUpDropdown: function(){
+ var defaultMenuLinks = [{
+ links: [{
+ title: 'Replicate Database',
+ icon: 'fonticon-replicate',
+ url: '#/replication/'+this.databaseName
+ },{
+ title: 'Delete',
+ icon: 'fonticon-trash',
+ trigger: 'database:delete'
+ }]
+ }];
+
+ defaultMenuLinks.push({
+ title: 'Add new',
+ links: this.getExtensionLinks()
+ });
+
+ return defaultMenuLinks;
+ },
+
+ getExtensionLinks: function () {
+ var database = this.data.database,
+ newurlPrefix = "#" + database.url('app');
+
+ var menuLinks = [{
+ title: 'New Doc',
+ url: newurlPrefix + '/new',
+ icon: 'fonticon-plus-circled'
+ },{
+ title: 'New Design Doc',
+ url: newurlPrefix + '/new_view',
+ icon: 'fonticon-plus-circled'
+ }];
+
+ return _.reduce(FauxtonAPI.getExtensions('sidebar:links'), function (menuLinks, link) {
+
+ menuLinks.push({
+ title: link.title,
+ url: newurlPrefix + "/" + link.url,
+ icon: 'fonticon-plus-circled'
+ });
+
+ return menuLinks;
+ }, menuLinks);
+
+ },
+
resetAllDocsHeader: function(){
if (this.changesHeader){
this.headerRight = this.setView("#api-navbar", new Documents.Views.RightAllDocsHeader({
@@ -373,6 +412,7 @@ function(app, FauxtonAPI, Components, Documents, Changes, DocEditor, Databases,
this.documentsView.setCollection(collection);
this.documentsView.setParams(docParams, urlParams);
+ this.leftheader.forceRender();
this.documentsView.forceRender();
this.headerRight.updateApiUrl([collection.urlRef("apiurl", urlParams), "docs"]);
@@ -382,6 +422,7 @@ function(app, FauxtonAPI, Components, Documents, Changes, DocEditor, Databases,
// We need to restore the collection parameters to the defaults (1st page)
// and update the page size
this.perPage = perPage;
+ this.leftheader.forceRender();
this.documentsView.forceRender();
this.documentsView.collection.pageSizeReset(perPage, {fetch: false});
this.setDocPerPageLimit(perPage);
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/templates/all_docs_item.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/all_docs_item.html b/app/addons/documents/templates/all_docs_item.html
index 4078918..783e4f5 100644
--- a/app/addons/documents/templates/all_docs_item.html
+++ b/app/addons/documents/templates/all_docs_item.html
@@ -12,7 +12,7 @@ License for the specific language governing permissions and limitations under
the License.
-->
-<div class="select"><input <%- checked ? 'checked="checked"' : '' %> type="checkbox" class="js-row-select"></div>
+<div class="select" <% if (!showSelect){ %>style="display:none"<%}%> ><input <%- checked ? 'checked="checked"' : '' %> type="checkbox" class="js-row-select"></div>
<div class="doc-item ">
<header>
@@ -25,10 +25,8 @@ the License.
</div>
<% } %>
</header>
- <% if (expanded){ %>
- <div class="doc-data">
- <pre class="prettyprint"><%- doc.prettyJSON() %></pre>
- </div>
- <% } %>
+ <div class="doc-data">
+ <pre class="prettyprint"><%- doc.prettyJSON() %></pre>
+ </div>
</div>
<div class="clearfix"></div>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/templates/all_docs_list.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/all_docs_list.html b/app/addons/documents/templates/all_docs_list.html
index 4975f84..3eaca80 100644
--- a/app/addons/documents/templates/all_docs_list.html
+++ b/app/addons/documents/templates/all_docs_list.html
@@ -13,25 +13,8 @@ the License.
-->
<div class="view">
- <% if (!viewList) { %>
- <div class="row">
- <div class="btn-toolbar span6">
- <button type="button" class="btn btn-small all" data-toggle="button">✓ All</button>
- <button class="btn btn-small disabled js-bulk-delete"><i class="icon-trash"></i></button>
- <% if (expandDocs) { %>
- <button id="collapse" class="btn btn-small"><i class="icon-minus"></i> Collapse</button>
- <% } else { %>
- <button id="collapse" class="btn btn-small"><i class="icon-plus"></i> Expand</button>
- <% } %>
- </div>
- </div>
- <% } %>
- <p>
-
- <div id="item-numbers"> </div>
- <div id="doc-list">
- </div>
+ <div id="doc-list"></div>
<% if (endOfResults) { %>
<div class="text-center well">
@@ -41,4 +24,7 @@ the License.
</div>
<% } %>
</div>
-<div id="documents-pagination" class="window-resizeable"></div>
+<footer class="pagination-footer" class="window-resizeable">
+<div id="item-numbers"> </div>
+<div id="documents-pagination"></div>
+</footer>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/templates/header_alldocs.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/header_alldocs.html b/app/addons/documents/templates/header_alldocs.html
index 740d092..6e8f97f 100644
--- a/app/addons/documents/templates/header_alldocs.html
+++ b/app/addons/documents/templates/header_alldocs.html
@@ -16,6 +16,8 @@ the License.
<div id="header-select-all">
<span class="toggle-select-menu icon fonticon-ok-circled">Select</span>
</div>
+
+ <div id="header-select-menu"></div>
<!-- search (jump to doc)-->
<div id="header-search" class="js-search searchbox-container"></div>
@@ -23,5 +25,5 @@ the License.
<div class="header-query-options">
<!-- Insert the query options here :) -->
<div id="query-options"></div>
- <div id="header-api-bar"></div>
</div>
+ <div id="header-api-bar"></div>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/templates/header_doc_edit.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/header_doc_edit.html b/app/addons/documents/templates/header_doc_edit.html
deleted file mode 100644
index fbc213f..0000000
--- a/app/addons/documents/templates/header_doc_edit.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-Licensed under the Apache License, Version 2.0 (the "License"); you may not
-use this file except in compliance with the License. You may obtain a copy of
-the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-License for the specific language governing permissions and limitations under
-the License.
--->
-
-<div class="header-left">
-<!--back arrow-->
-
-<!--title with dropdown DB search-->
-
-<!-- Menu gear-->
-</div>
-
-
-<div class="header-right">
-<!-- Select button-->
-<!-- ? button-->
-<!-- ? button-->
-<!-- ? button-->
-<!-- ? button-->
-<!-- json button-->
-<!-- trash button-->
-<!-- cancel button-->
-</div>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/templates/select-doc-menu.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/select-doc-menu.html b/app/addons/documents/templates/select-doc-menu.html
new file mode 100644
index 0000000..bad70a7
--- /dev/null
+++ b/app/addons/documents/templates/select-doc-menu.html
@@ -0,0 +1,24 @@
+<!--
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations under
+the License.
+-->
+<div class="row">
+ <div class="btn-toolbar span6">
+ <button type="button" class="btn btn-small all" data-toggle="button">✓ All</button>
+ <button class="btn btn-small disabled js-bulk-delete"><i class="icon-trash"></i></button>
+ <% if (expandDocs) { %>
+ <button id="collapse" class="btn btn-small"><i class="icon-minus"></i> Collapse</button>
+ <% } else { %>
+ <button id="collapse" class="btn btn-small"><i class="icon-plus"></i> Expand</button>
+ <% } %>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/views-advancedopts.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/views-advancedopts.js b/app/addons/documents/views-advancedopts.js
index 9a00c63..6500b50 100644
--- a/app/addons/documents/views-advancedopts.js
+++ b/app/addons/documents/views-advancedopts.js
@@ -29,8 +29,6 @@ function(app, FauxtonAPI, resizeColumns ) {
this.database = options.database;
this.ddocName = options.ddocName;
this.viewName = options.viewName;
- this.updateViewFn = options.updateViewFn;
- this.previewFn = options.previewFn;
this.showStale = _.isUndefined(options.showStale) ? false : options.showStale;
this.hasReduce = _.isUndefined(options.hasReduce) ? true : options.hasReduce;
},
@@ -66,14 +64,14 @@ function(app, FauxtonAPI, resizeColumns ) {
toggleQuery: function(event) {
$('#dashboard-content').scrollTop(0);
this.$('#query-options-tray').toggle();
- },
+ },
resetForm: function() {
$('input, textarea').each(function(){
$(this).val('');
});
$('input:checkbox').attr('checked', false);
- $("select").each(function(){
+ $("select").each(function(){
this.selectedIndex = 0;
});
},
@@ -190,7 +188,8 @@ function(app, FauxtonAPI, resizeColumns ) {
event.preventDefault();
var params = this.queryParams();
if (!params) { return;}
- this.updateViewFn(event, params);
+ FauxtonAPI.Events.trigger('advancedOptions:updateView', event, params);
+ //this.updateViewFn(event, params);
},
updateFilters: function(event) {
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/views-sidebar.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/views-sidebar.js b/app/addons/documents/views-sidebar.js
index 1d746ce..d30c314 100644
--- a/app/addons/documents/views-sidebar.js
+++ b/app/addons/documents/views-sidebar.js
@@ -32,11 +32,13 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
},
initialize: function(options) {
+ _.bindAll(this);
this.database = options.database;
if (options.ddocInfo) {
this.ddocID = options.ddocInfo.id;
this.currView = options.ddocInfo.currView;
}
+ FauxtonAPI.Events.on('database:delete', this.showDeleteDatabaseModal)
},
showDeleteDatabaseModal: function(event){
this.deleteDBModal.showModal();
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/documents/views.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/views.js b/app/addons/documents/views.js
index 16a853a..0c55e90 100644
--- a/app/addons/documents/views.js
+++ b/app/addons/documents/views.js
@@ -43,37 +43,57 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
className: "header-right",
template: "addons/documents/templates/header_alldocs",
events: {
- 'select .selectAllDocs': 'selectAllDocs'
+ 'click .toggle-select-menu': 'selectAllMenu'
},
+
initialize: function(options){
//adding the database to the object
this.database = options.database;
+ _.bindAll(this);
+ this.selectVisible = false;
+ FauxtonAPI.Events.on('advancedOptions:updateView', this.updateAllDocs);
+ FauxtonAPI.Events.on('success:bulkDelete', this.selectAllMenu);
},
- selectAllDocs: function(){
+
+ selectAllMenu: function(e){
//trigger event to select all in other view
+ this.$('.toggle-select-menu').toggleClass('active');
+
+ //trigger event to change the header
+ this.toggleSelectMenu();
+ FauxtonAPI.Events.trigger("documents:show-select-all",this.selectVisible);
+
},
- updateApiUrl: function(api){
- //this will update the api bar when the route changes
- //you can find the method that updates it in components.js Components.ApiBar()
- this.apiBar && this.apiBar.update(api);
+
+ toggleSelectMenu: function(){
+ if (this.selectVisible){
+ this.selectVisible = false;
+ this.selectMenu.remove();
+ this.addAllDocsMenu();
+ } else {
+ this.removeAllDocsMenu();
+ this.addSelectMenu();
+ }
},
- serialize: function() {
- //basically if you want something in a template, You can define it here
- return {
- database: this.database.get('id')
- };
+
+ addSelectMenu: function(){
+ this.selectVisible = true;
+ this.selectMenu = this.insertView('#header-select-menu', new Views.SelectMenu({}));
+ this.selectMenu.render();
},
- beforeRender:function(){
- //insert DB search dropdown
- //insert top create level dropdown with gear icon
+ removeAllDocsMenu: function(){
+ this.headerSearch.remove();
+ this.queryOptions.remove();
+ this.apiBar.remove();
+ },
+ addAllDocsMenu: function(){
//search docs
- this.setView("#header-search", new Views.JumpToDoc({
+ this.headerSearch = this.insertView("#header-search", new Views.JumpToDoc({
database: this.database,
collection: this.database.allDocs
}));
-
//insert queryoptions
//that file is included in require() above and the argument is QueryOptions
// and it wants all these params:
@@ -94,9 +114,8 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
this.viewName = options.viewName;
this.ddocName = options.ddocName;
*/
- this.setView("#query-options", new QueryOptions.AdvancedOptions({
- updateViewFn: this.updateAllDocs,
- previewFn: this.previewView,
+
+ this.queryOptions = this.insertView("#query-options", new QueryOptions.AdvancedOptions({
database: this.database,
hasReduce: false,
showPreview: false,
@@ -105,7 +124,28 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
//Moved the apibar view into the components file so you can include it in your views
this.apiBar = this.insertView("#header-api-bar", new Components.ApiBar({}));
+ this.apiBar.render();
+ this.queryOptions.render();
+ this.headerSearch.render();
+ },
+
+ updateApiUrl: function(api){
+ //this will update the api bar when the route changes
+ //you can find the method that updates it in components.js Components.ApiBar()
+ this.apiBar && this.apiBar.update(api);
+ },
+
+ serialize: function() {
+ //basically if you want something in a template, You can define it here
+ return {
+ database: this.database.get('id')
+ };
+ },
+
+ beforeRender:function(){
+ this.addAllDocsMenu();
},
+
//moved from alldocs layout
updateAllDocs: function (event, paramInfo) {
event.preventDefault();
@@ -144,54 +184,30 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
FauxtonAPI.navigate(fragment, {trigger: false});
FauxtonAPI.triggerRouteEvent('updateAllDocs', {allDocs: true});
- },
- previewView: function (event) {
- event.preventDefault();
}
});
-
- //header that shows up when a doc is selected
- // when a Doc is selected, trigger a routeEvent to render this
- // the routeEvent will determine which header to show (??)
- Views.DocEditHeader = FauxtonAPI.View.extend({
- template: "addons/documents/templates/header_doc_edit",
+ // select docs header
+ Views.SelectMenu = FauxtonAPI.View.extend({
+ template:"addons/documents/templates/select-doc-menu",
events: {
- 'select .selectAllDocs': 'selectAllDocs'
- },
- initialize: function(options){
-
- },
- selectAllDocs: function(){
- //trigger event to select all in other view
+ "click button.all": "selectAll",
+ "click button.js-bulk-delete": "bulkDelete",
+ "click #collapse": "collapse"
},
- afterRender:function(){
- //insert DB search dropdown
-
- //insert top create level dropdown with gear icon
- }
- });
-
- Views.DocsHeader = FauxtonAPI.View.extend({
- template: "addons/documents/templates/header_selecteddoc",
- events: {
- 'select .selectAllDocs': 'selectAllDocs'
+ bulkDelete: function(){
+ FauxtonAPI.Events.trigger("documents:bulkDelete");
},
- initialize: function(options){
+ selectAll: function(evt){
+ this.$(evt.target).toggleClass('active');
+ FauxtonAPI.Events.trigger("documents:selectAll", this.$(evt.target).hasClass('active'));
},
- selectAllDocs: function(){
- //trigger event to select all in other view
- },
- afterRender:function(){
- //insert DB search dropdown
-
- //insert top create level dropdown with gear icon
-
- //search docs
-
- //insert queryoptions
-
+ collapse: function(evt){
+ var icon = this.$(evt.target).find('i');
+ icon.toggleClass('icon-minus');
+ icon.toggleClass('icon-plus');
+ FauxtonAPI.Events.trigger("documents:collapse");
}
});
@@ -244,6 +260,25 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
initialize: function (options) {
this.checked = options.checked;
this.expanded = options.expanded;
+ this.showSelect = false;
+ _.bindAll(this);
+ FauxtonAPI.Events.on("documents:show-select-all", this.showSelectBox);
+ FauxtonAPI.Events.on("documents:collapse", this.collapse);
+ FauxtonAPI.Events.on("documents:selectAll", this.selectAll);
+ },
+
+ showSelectBox: function(bool){
+ this.showSelect = bool;
+ this.$('.select').toggle(this.showSelect);
+ },
+
+ selectAll: function(checked){
+ this.$("input:checkbox").prop('checked', checked).trigger('click');
+ },
+
+ collapse: function(bool){
+ this.collapse = bool;
+ this.$('.doc-data').toggle(this.collapse);
},
events: {
@@ -259,6 +294,7 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
serialize: function() {
return {
+ showSelect: this.showSelect,
expanded: this.expanded,
docID: this.model.get('_id'),
doc: this.model,
@@ -374,14 +410,12 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
Views.AllDocsList = FauxtonAPI.View.extend({
template: "addons/documents/templates/all_docs_list",
events: {
- "click button.all": "selectAll",
- "click button.js-bulk-delete": "bulkDelete",
- "click #collapse": "collapse",
"click .all-docs-item": "toggleDocument",
"click #js-end-results": "scrollToQuery"
},
initialize: function (options) {
+ _.bindAll(this);
this.nestedView = options.nestedView || Views.Document;
this.rows = {};
this.viewList = !!options.viewList;
@@ -400,6 +434,9 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
if (!this.viewList) {
this.bulkDeleteDocsCollection = options.bulkDeleteDocsCollection;
}
+
+ FauxtonAPI.Events.on("documents:bulkDelete", this.bulkDelete);
+ FauxtonAPI.Events.on("documents:selectAll", this.toggleTrash);
},
removeDocuments: function (ids) {
@@ -523,18 +560,6 @@ function(app, FauxtonAPI, Components, Documents, Databases, Views, QueryOptions,
};
},
- collapse: function (event) {
- event.preventDefault();
-
- if (this.expandDocs) {
- this.expandDocs = false;
- } else {
- this.expandDocs = true;
- }
-
- this.render();
- },
-
bulkDelete: function() {
var that = this,
documentsLength = this.bulkDeleteDocsCollection.length,
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/fauxton/components.js
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/components.js b/app/addons/fauxton/components.js
index 9540252..60d0c26 100644
--- a/app/addons/fauxton/components.js
+++ b/app/addons/fauxton/components.js
@@ -40,6 +40,7 @@ function(app, FauxtonAPI, ace, spin, ZeroClipboard) {
className: "header-left",
template: "addons/fauxton/templates/header_left",
initialize:function(options){
+ this.dropdownEvents = options.dropdownEvents;
this.dropdownMenuLinks = options.dropdownMenu;
this.crumbs = options.crumbs || [];
},
@@ -63,6 +64,7 @@ function(app, FauxtonAPI, ace, spin, ZeroClipboard) {
this.dropdown = this.insertView("#header-dropdown-menu", new Components.MenuDropDown({
icon: 'fonticon-cog',
links: this.dropdownMenuLinks,
+ events: this.dropdownEvents
}));
}
}
@@ -743,6 +745,24 @@ function(app, FauxtonAPI, ace, spin, ZeroClipboard) {
initialize: function(options){
this.links = options.links;
this.icon = options.icon || "fonticon-plus-circled2";
+ _.bindAll(this);
+ this.setUpEvents();
+ },
+ setUpEvents: function(){
+ this.events = {};
+ var parentLinkObj = this.links;
+ for (var i=0; i< parentLinkObj.length; i++){
+ for (var x=0; x< parentLinkObj[i].links.length; x++){
+ if(parentLinkObj[i].links[x].trigger){
+ this.events['click .'+parentLinkObj[i].links[x].icon] = "triggerEvent";
+ }
+ }
+ }
+ },
+ triggerEvent: function(e){
+ e.preventDefault();
+ var eventTrigger = $(e.currentTarget).attr('triggerEvent');
+ FauxtonAPI.Events.trigger(eventTrigger);
},
update: function(links){
this.links = links;
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/fauxton/templates/menu_dropdown.html
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/templates/menu_dropdown.html b/app/addons/fauxton/templates/menu_dropdown.html
index d1e96af..01c4ed9 100644
--- a/app/addons/fauxton/templates/menu_dropdown.html
+++ b/app/addons/fauxton/templates/menu_dropdown.html
@@ -21,11 +21,13 @@ the License.
<% _.each(linkSection.links, function (link) { %>
<li>
<a
+ <% if (link.trigger){ %> data-bypass="true" triggerEvent="<%-link.trigger%>" <%}%>
<% if (link.icon) { %>
class="icon <%- link.icon %>"
<% } %>
href="<%- link.url %>">
<%- link.title %>
+
</a>
<li>
<%});%>
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/addons/indexes/views.js
----------------------------------------------------------------------
diff --git a/app/addons/indexes/views.js b/app/addons/indexes/views.js
index bfe209e..9d0546e 100644
--- a/app/addons/indexes/views.js
+++ b/app/addons/indexes/views.js
@@ -40,12 +40,14 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb,
className: "header-right",
template: "addons/indexes/templates/header_right",
initialize:function(options){
+ _.bindAll(this);
this.database = options.database;
this.title = options.title;
this.api = options.api;
this.endpoint = options.endpoint;
this.documentation = options.documentation;
this.eventer = _.extend({}, Backbone.Events);
+ FauxtonAPI.Events.on('advancedOptions:updateView', this.updateView);
},
updateApiUrl: function(api){
//this will update the api bar when the route changes
@@ -60,8 +62,6 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb,
}));
this.advancedOptions = this.insertView('#header-query-options', new QueryOptions.AdvancedOptions({
- updateViewFn: this.updateView,
- previewFn: this.previewView,
database: this.database,
viewName: this.viewName,
ddocName: this.model.id,
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/app/core/api.js
----------------------------------------------------------------------
diff --git a/app/core/api.js b/app/core/api.js
index 1b21dca..50a8b12 100644
--- a/app/core/api.js
+++ b/app/core/api.js
@@ -26,6 +26,11 @@ function(FauxtonAPI, Layout, Router, RouteObject, utils) {
utils: utils
});
+ //global app events
+ FauxtonAPI.Events = {};
+ _.extend(FauxtonAPI.Events, Backbone.Events);
+
+
FauxtonAPI.navigate = function(url, _opts) {
var options = _.extend({trigger: true}, _opts );
FauxtonAPI.router.navigate(url,options);
@@ -47,7 +52,7 @@ function(FauxtonAPI, Layout, Router, RouteObject, utils) {
FauxtonAPI.router.triggerRouteEvent("route:"+routeEvent, args);
};
-
+
return FauxtonAPI;
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/fe455df0/assets/less/pagination.less
----------------------------------------------------------------------
diff --git a/assets/less/pagination.less b/assets/less/pagination.less
index 07e13b3..0137699 100644
--- a/assets/less/pagination.less
+++ b/assets/less/pagination.less
@@ -10,7 +10,7 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-#documents-pagination {
+footer.pagination-footer {
position:fixed;
background-color:#fff;
bottom:0;