You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by be...@apache.org on 2016/04/15 19:40:16 UTC

fauxton commit: updated refs/heads/master to 2e89462

Repository: couchdb-fauxton
Updated Branches:
  refs/heads/master d44aa93a9 -> 2e894627d


More minor fixes

- minor style fix for view attachments dropdown
- autofocus for delete db panel input field
- changes clipboard item to show notification when copied to
clipboard
- Now the API Bar tray only closes once you click outside of
it (not within it)


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

Branch: refs/heads/master
Commit: 2e894627d031247d9213fc746cdd6f54e93c9f01
Parents: d44aa93
Author: Ben Keen <be...@gmail.com>
Authored: Tue Apr 5 14:16:49 2016 -0700
Committer: Ben Keen <be...@gmail.com>
Committed: Fri Apr 15 10:03:47 2016 -0700

----------------------------------------------------------------------
 .../components/react-components.react.jsx       | 10 ++++----
 .../documents/assets/less/doc-editor.less       |  5 ++++
 .../documents/changes/components.react.jsx      | 25 ++++++++++++++++++--
 app/addons/documents/changes/stores.js          | 22 ++++++++++++-----
 .../tests/changes.componentsSpec.react.jsx      |  8 +++++++
 .../documents/doc-editor/components.react.jsx   |  3 ++-
 6 files changed, 60 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2e894627/app/addons/components/react-components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/components/react-components.react.jsx b/app/addons/components/react-components.react.jsx
index 0ad9b85..8baffe1 100644
--- a/app/addons/components/react-components.react.jsx
+++ b/app/addons/components/react-components.react.jsx
@@ -1381,8 +1381,10 @@ define([
     },
 
     componentDidMount: function () {
-      $('body').on('click.APIBar', function () {
-        Actions.toggleApiBarVisibility(false);
+      $('body').on('click.APIBar', function (e) {
+        if ($(e.target).closest('.api-bar-tray,.control-toggle-api-url').length === 0) {
+          Actions.toggleApiBarVisibility(false);
+        }
       }.bind(this));
     },
 
@@ -1516,8 +1518,8 @@ define([
               type="text"
               className="input-block-level"
               onKeyUp={this.onInputKeypress}
-              onChange={this.onInputChange} />
-
+              onChange={this.onInputChange}
+              autoFocus={true} />
           </Modal.Body>
           <Modal.Footer>
             <a

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2e894627/app/addons/documents/assets/less/doc-editor.less
----------------------------------------------------------------------
diff --git a/app/addons/documents/assets/less/doc-editor.less b/app/addons/documents/assets/less/doc-editor.less
index ab0cc4a..82ef9d2 100644
--- a/app/addons/documents/assets/less/doc-editor.less
+++ b/app/addons/documents/assets/less/doc-editor.less
@@ -181,3 +181,8 @@
   height: inherit;
   max-height: 600px;
 }
+
+.attachment-delimiter {
+  color: #999999;
+  margin: 0 4px;
+}

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2e894627/app/addons/documents/changes/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/changes/components.react.jsx b/app/addons/documents/changes/components.react.jsx
index 960077a..9c6f90e 100644
--- a/app/addons/documents/changes/components.react.jsx
+++ b/app/addons/documents/changes/components.react.jsx
@@ -273,6 +273,7 @@ define([
     getStoreState: function () {
       return {
         changes: changesStore.getChanges(),
+        loaded: changesStore.isLoaded(),
         databaseName: changesStore.getDatabaseName(),
         isShowingSubset: changesStore.isShowingSubset()
       };
@@ -300,6 +301,14 @@ define([
     },
 
     getRows: function () {
+      if (!this.state.changes.length && this.state.loaded) {
+        return (
+          <p>
+            No document changes have occurred in this database.
+          </p>
+        );
+      }
+
       return _.map(this.state.changes, function (change) {
         var key = change.id + '-' + change.seq;
         return <ChangeRow change={change} key={key} databaseName={this.state.databaseName} />;
@@ -351,6 +360,18 @@ define([
       };
     },
 
+    onClipboardClick: function (target) {
+      var msg = 'The document ID has been copied to your clipboard.';
+      if (target === 'seq') {
+        msg = 'The document seq number has been copied to your clipboard.';
+      }
+      FauxtonAPI.addNotification({
+        msg: msg,
+        type: 'info',
+        clear: true
+      });
+    },
+
     render: function () {
       var jsonBtnClasses = 'btn btn-small' + (this.state.codeVisible ? ' btn-secondary' : ' btn-primary');
       var wrapperClass = 'change-wrapper' + (this.props.change.isNew ? ' new-change-row' : '');
@@ -362,7 +383,7 @@ define([
               <div className="span2">seq</div>
               <div className="span8 change-sequence">{this.props.change.seq}</div>
               <div className="span2 text-right">
-                <Components.Clipboard text={this.props.change.seq} />
+                <Components.Clipboard text={this.props.change.seq} onClipboardClick={() => this.onClipboardClick('seq')} />
               </div>
             </div>
 
@@ -372,7 +393,7 @@ define([
                 <ChangeID id={this.props.change.id} deleted={this.props.change.deleted} databaseName={this.props.databaseName} />
               </div>
               <div className="span2 text-right">
-                <Components.Clipboard text={this.props.change.id} />
+                <Components.Clipboard text={this.props.change.id} onClipboardClick={() => this.onClipboardClick('id')} />
               </div>
             </div>
 

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2e894627/app/addons/documents/changes/stores.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/changes/stores.js b/app/addons/documents/changes/stores.js
index 49e40f2..4730ed9 100644
--- a/app/addons/documents/changes/stores.js
+++ b/app/addons/documents/changes/stores.js
@@ -23,6 +23,7 @@ define([
     },
 
     reset: function () {
+      this._isLoaded = false;
       this._tabVisible = false;
       this._filters = [];
       this._changes = [];
@@ -38,6 +39,10 @@ define([
       this._databaseName = options.databaseName;
     },
 
+    isLoaded: function () {
+      return this._isLoaded;
+    },
+
     updateChanges: function (seqNum, changes) {
 
       // make a note of the most recent sequence number. This is used for a point of reference for polling for new changes
@@ -64,6 +69,7 @@ define([
 
       // add the new changes to the start of the list
       this._changes = newChanges.concat(this._changes);
+      this._isLoaded = true;
     },
 
     getChanges: function () {
@@ -143,29 +149,33 @@ define([
       switch (action.type) {
         case ActionTypes.INIT_CHANGES:
           this.initChanges(action.options);
-          this.triggerChange();
         break;
+
         case ActionTypes.UPDATE_CHANGES:
           this.updateChanges(action.seqNum, action.changes);
-          this.triggerChange();
         break;
+
         case ActionTypes.TOGGLE_CHANGES_TAB_VISIBILITY:
           this.toggleTabVisibility();
-          this.triggerChange();
         break;
+
         case ActionTypes.ADD_CHANGES_FILTER_ITEM:
           this.addFilter(action.filter);
-          this.triggerChange();
         break;
+
         case ActionTypes.REMOVE_CHANGES_FILTER_ITEM:
           this.removeFilter(action.filter);
-          this.triggerChange();
         break;
+
         case ActionTypes.TOGGLE_CHANGES_POLLING:
           this.togglePolling();
-          this.triggerChange();
         break;
+
+        default:
+          return;
       }
+
+      this.triggerChange();
     }
   });
 

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2e894627/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx b/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
index 0178a43..b77e262 100644
--- a/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
+++ b/app/addons/documents/changes/tests/changes.componentsSpec.react.jsx
@@ -280,6 +280,13 @@ define([
       assert.equal(1, $changesEl.find('.change-box').length);
       assert.equal('doc_5', $($changesEl.find('.js-doc-id').get(0)).html());
     });
+
+    it('shows a No Docs Found message if no docs', function () {
+      Stores.changesStore.reset();
+      Actions.updateChanges({ last_seq: 124, results: [] });
+      assert.ok(/No\sdocument\schanges\shave\soccurred/.test($changesEl[0].outerHTML));
+    });
+
   });
 
 
@@ -288,6 +295,7 @@ define([
     var container;
     var maxChanges = 10;
 
+
     beforeEach(function () {
       container = document.createElement('div');
       var changes = [];

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2e894627/app/addons/documents/doc-editor/components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/doc-editor/components.react.jsx b/app/addons/documents/doc-editor/components.react.jsx
index c901a13..af211b9 100644
--- a/app/addons/documents/doc-editor/components.react.jsx
+++ b/app/addons/documents/doc-editor/components.react.jsx
@@ -205,7 +205,8 @@ define([
         var url = FauxtonAPI.urls('document', 'attachment', db, doc, app.utils.safeURLName(filename));
         return (
           <li key={filename}>
-            <a href={url} target="_blank" data-bypass="true"> <strong>{filename}</strong> -
+            <a href={url} target="_blank" data-bypass="true"> <strong>{filename}</strong>
+              <span className="attachment-delimiter">-</span>
               <span>{item.content_type}, {Helpers.formatSize(item.length)}</span>
             </a>
           </li>