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 <[email protected]> Authored: Wed Aug 6 17:06:55 2014 -0400 Committer: Garren Smith <[email protected]> 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;
