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/20 10:57:20 UTC

fauxton commit: updated refs/heads/master to b7c32c2

Repository: couchdb-fauxton
Updated Branches:
  refs/heads/master 3628fe5e9 -> b7c32c2d1


Sidebar improvements

Some UX improvements to the sidebar in a database view


Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/b7c32c2d
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/b7c32c2d
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/b7c32c2d

Branch: refs/heads/master
Commit: b7c32c2d104f7498942c57f0ab7676383eee4a33
Parents: 3628fe5
Author: Garren Smith <ga...@gmail.com>
Authored: Wed Aug 13 11:54:07 2014 +0200
Committer: Garren Smith <ga...@gmail.com>
Committed: Wed Aug 20 10:56:13 2014 +0200

----------------------------------------------------------------------
 app/addons/documents/routes.js                  | 10 +--
 .../documents/templates/design_doc_menu.html    |  2 +-
 .../documents/templates/index_menu_item.html    |  4 +-
 app/addons/documents/templates/sidebar.html     |  2 +-
 app/addons/documents/tests/routeSpec.js         | 35 +++++++++++
 app/addons/documents/views-sidebar.js           | 65 +++++++++++++-------
 assets/less/fauxton.less                        |  2 +
 7 files changed, 88 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/app/addons/documents/routes.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/routes.js b/app/addons/documents/routes.js
index 3fd94f9..8eca7f6 100644
--- a/app/addons/documents/routes.js
+++ b/app/addons/documents/routes.js
@@ -134,7 +134,7 @@ function(app, FauxtonAPI, Documents, Changes, Index, DocEditor, Databases, Resou
         route: "allDocs",
         roles: ["_reader","_writer","_admin"]
       },
-      "database/:database/_design/:ddoc/_view/:view": {
+      "database/:database/_design/:ddoc/_views/:view": {
         route: "viewFn",
         roles: ['_admin']
       },
@@ -182,8 +182,8 @@ function(app, FauxtonAPI, Documents, Changes, Index, DocEditor, Databases, Resou
           pageSize: 500
         },
         params: {
-          startkey: '_design',
-          endkey: '_design1',
+          startkey: '_design/',
+          endkey: '_design0',
           include_docs: true,
           limit: 500
         }
@@ -503,7 +503,7 @@ function(app, FauxtonAPI, Documents, Changes, Index, DocEditor, Databases, Resou
       }
     },
 
-    changes: function (event) {
+    changes: function () {
       var docParams = app.getParams();
       this.data.database.buildChanges(docParams);
 
@@ -531,7 +531,7 @@ function(app, FauxtonAPI, Documents, Changes, Index, DocEditor, Databases, Resou
       };
 
       this.apiUrl = function() {
-        return [this.data.database.url("apiurl"), this.data.database.documentation()];
+        return [this.data.database.url("changes-apiurl"), this.data.database.documentation()];
       };
     },
 

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/app/addons/documents/templates/design_doc_menu.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/design_doc_menu.html b/app/addons/documents/templates/design_doc_menu.html
index 1227d33..8180f48 100644
--- a/app/addons/documents/templates/design_doc_menu.html
+++ b/app/addons/documents/templates/design_doc_menu.html
@@ -16,7 +16,7 @@ the License.
 	<div  class="js-collapse-toggle accordion-header" data-toggle="collapse" data-target="#<%- ddoc_clean %>" id="nav-header-<%- ddoc_clean %>" >
 		<div class="accordion-list-item">
 			<div class="fonticon-play"></div>
-			<p><%- designDoc%></p>
+			<p>_design/<%- designDoc%></p>
 		</div>
 		<div class="new-button add-dropdown"></div>
 	</div>

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/app/addons/documents/templates/index_menu_item.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/index_menu_item.html b/app/addons/documents/templates/index_menu_item.html
index 8519f42..434a02a 100644
--- a/app/addons/documents/templates/index_menu_item.html
+++ b/app/addons/documents/templates/index_menu_item.html
@@ -14,12 +14,12 @@ the License.
 <a class="js-toggle-<%-ddocType%> accordion-header js-collapse-toggle" data-toggle="collapse"  data-target="#<%- removeSpecialCharacters(ddoc) + ddocType %>" id="nav-design-function-<%= removeSpecialCharacters(ddoc) + ddocType %>">
   <div class="fonticon-play"></div>
   <span class="<%- icon %> fonticon"></span>
-  <%- ddocType %>
+  <%- name %>
   </a>
   <ul class="accordion-body collapse" id="<%- removeSpecialCharacters(ddoc) + ddocType %>">
   <% _.each(collection, function (item, index) { %>
   <li>
-  <a data-ddoctype="<%- ddocType %>" id="<%- removeSpecialCharacters(ddoc) %>_<%- removeSpecialCharacters(index) %>" href="#/database/<%- safeURL(database) %>/_design/<%= safeURL(ddoc)%>/_<%=ddocType%>/<%= safeURL(index) %>" class="toggle-view">
+  <a data-ddoctype="<%- ddocType %>" id="<%- removeSpecialCharacters(ddoc) %>_<%- removeSpecialCharacters(index) %>" href="#/database/<%- safeURL(database) %>/_design/<%= safeURL(ddoc)%>/_<%-ddocType%>/<%= safeURL(index) %>" class="toggle-view">
     <%- index %>
   </a>
   </li>

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/app/addons/documents/templates/sidebar.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/sidebar.html b/app/addons/documents/templates/sidebar.html
index 8d2ea4c..23d113f 100644
--- a/app/addons/documents/templates/sidebar.html
+++ b/app/addons/documents/templates/sidebar.html
@@ -23,7 +23,7 @@ the License.
       <div id="new-all-docs-button" class="add-dropdown"> </div>
    </li>
   <li>
-      <a id="design-docs" href='#<%= database.url("index") %>?startkey="_design"&endkey="_e"'  class="toggle-view"> All Design Docs</a>
+      <a id="design-docs" href='#<%= database.url("index") %>?startkey="_design"&endkey="_design0"'  class="toggle-view"> All Design Docs</a>
       <div id="new-design-docs-button" class="add-dropdown"> </div>
     </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/app/addons/documents/tests/routeSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/tests/routeSpec.js b/app/addons/documents/tests/routeSpec.js
new file mode 100644
index 0000000..d7ecebd
--- /dev/null
+++ b/app/addons/documents/tests/routeSpec.js
@@ -0,0 +1,35 @@
+// 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.
+define([
+        'addons/documents/routes',
+        'testUtils'
+], function (Documents, testUtils) {
+  var assert = testUtils.assert;
+  var DocumentRoute = Documents.RouteObjects[2];
+
+  describe('Documents Route', function () {
+
+    describe('changes route', function () {
+
+      it('Should set correct changes api url', function () {
+        var docRoute = new DocumentRoute('changes', {}, ['fakeDB']);
+        docRoute.changes();
+
+        console.log('docRoute.apiUrl()', docRoute.apiUrl());
+        assert.ok(/\/database\/fakeDB\/_changes\?descending=true&limit=100&include_docs=true/.test(docRoute.apiUrl()[0]));
+      });
+
+    });
+  });
+
+});
+

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/app/addons/documents/views-sidebar.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/views-sidebar.js b/app/addons/documents/views-sidebar.js
index 8699417..9f8c0ee 100644
--- a/app/addons/documents/views-sidebar.js
+++ b/app/addons/documents/views-sidebar.js
@@ -60,27 +60,41 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
       };
     },
 
+    getNewButtonLinks: function () {
+      var database = this.collection.database,
+          newurlPrefix = "#" + database.url('app'),
+          addLinks = FauxtonAPI.getExtensions('sidebar:links');
 
-    beforeRender: function(manage) {
-      this.deleteDBModal = this.setView(
-        '#delete-db-modal',
-        new Views.DeleteDBModal({database: this.database})
-      );
+      return _.reduce(FauxtonAPI.getExtensions('sidebar:links'), function (menuLinks, link) {
 
-      var database = this.collection.database,
-          newurlPrefix = "#" + database.url('app');
+        menuLinks.push({
+          title: link.title,
+          url: newurlPrefix + "/" + link.url,
+          icon: 'fonticon-plus-circled'
+        });
 
-      var newLinks = [{
-        title: 'Add new',
-        links: [{
+        return menuLinks; 
+     }, [{
           title: 'New Doc',
           url: newurlPrefix + '/new',
           icon: 'fonticon-plus-circled'
         },{
-          title: 'New Design Doc',
+          title: 'New View',
           url: newurlPrefix + '/new_view',
           icon: 'fonticon-plus-circled'
-        }]
+        }]);
+    },
+
+
+    beforeRender: function(manage) {
+      this.deleteDBModal = this.setView(
+        '#delete-db-modal',
+        new Views.DeleteDBModal({database: this.database})
+      );
+
+      var newLinks = [{
+        title: 'Add new',
+        links: this.getNewButtonLinks()
       }];
 
       this.insertView("#new-all-docs-button", new Components.MenuDropDown({
@@ -137,14 +151,14 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
     toggleArrow:  function(e){
       this.$(e.currentTarget).toggleClass("down");
     },
-    buildIndexList: function(collection, selector, ddocType){
+    buildIndexList: function(collection, info){
       var design = this.model.id.replace(/^_design\//,"");
 
       this.insertView(".accordion-body", new Views.IndexItem({
-        selector: selector,
+        selector: info.selector,
         ddoc: design,
-        collection: collection[selector],
-        ddocType: ddocType,
+        collection: collection[info.selector],
+        name: info.name,
         database: this.model.collection.database.id
       }));
     },
@@ -175,7 +189,7 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
 
         return menuLinks; 
      }, [{
-      title: 'Secondary View',
+      title: 'New View',
       url: "#" + database.url('app') + "/new_view/" + docSafe,
       icon: 'fonticon-plus-circled'
      }]);
@@ -188,9 +202,13 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
 
       if (!ddocDocs){ return; }
 
-      this.buildIndexList(ddocDocs, "views", "view");
-      _.each(sidebarListTypes, function (type) {
-        this.buildIndexList(ddocDocs, type);
+      this.buildIndexList(ddocDocs, {
+        selector: "views",
+        name: 'Views'
+      });
+
+      _.each(sidebarListTypes, function (info) {
+        this.buildIndexList(ddocDocs, info);
       },this);
 
     },
@@ -220,9 +238,9 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
       this.database = options.database;
       this.selected = !! options.selected;
       this.selector = options.selector;
-      this.ddocType = options.ddocType || this.selector;
+      this.name = options.name;
       this.icons = {
-        "view": "fonticon-sidenav-map-reduce",
+        "Views": "fonticon-sidenav-map-reduce",
         "indexes": "fonticon-sidenav-search"
       };
 
@@ -231,7 +249,8 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
     serialize: function() {
       return {
         icon: this.icons[this.ddocType],
-        ddocType:  this.ddocType,
+        ddocType:  this.selector,
+        name: this.name,
         index: this.index,
         ddoc: this.ddoc,
         database: this.database,

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/b7c32c2d/assets/less/fauxton.less
----------------------------------------------------------------------
diff --git a/assets/less/fauxton.less b/assets/less/fauxton.less
index 2032b04..93afce6 100644
--- a/assets/less/fauxton.less
+++ b/assets/less/fauxton.less
@@ -365,6 +365,8 @@ table.databases {
         .transition(all @transitionSpeed @transitionEaseType);
         padding: 22px 0 0 18px;
         position: fixed;
+        z-index: 100;
+        width: 64px;
         top: 0;
         background-color: @primaryNav;
         width: @navWidth;