{"action":"created","comment":{"url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/comments/26471806","id":26471806,"diff_hunk":"@@ -0,0 +1,387 @@\n+// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n+// use this file except in compliance with the License. You may obtain a copy of\n+// the License at\n+//\n+//   http://www.apache.org/licenses/LICENSE-2.0\n+//\n+// Unless required by applicable law or agreed to in writing, software\n+// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n+// License for the specific language governing permissions and limitations under\n+// the License.\n+\n+define([\n+  \"app/helpers\",\n+  \"api\",\n+  \"react\",\n+  \"addons/activetasks/stores\",\n+  \"addons/activetasks/resources\",\n+  \"addons/activetasks/actions\"\n+\n+], function (Helpers, FauxtonAPI, React, Stores, Resources, Actions) {\n+  var activeTasksStore = Stores.activeTasksStore;\n+\n+  var ActiveTasksController = React.createClass({\n+\n+    getStoreState: function () {\n+      return {  \n+        selectedTab: activeTasksStore.getSelectedTab(),\n+        collection: activeTasksStore.getCollection(),\n+        searchTerm: activeTasksStore.getSearchTerm(),\n+        setPolling: activeTasksStore.setPolling(),\n+        clearPolling: activeTasksStore.clearPolling\n+      };\n+    },\n+\n+    getInitialState: function () {\n+      return this.getStoreState();\n+    },\n+\n+    componentDidMount: function () {\n+      this.state.setPolling;\n+      activeTasksStore.on('change', this.onChange, this);      \n+    },\n+\n+    componentWillUnmount: function() {\n+      this.state.clearPolling();\n+      activeTasksStore.off('change', this.onChange, this); \n+    },\n+    onChange: function () {\n+      this.setState(this.getStoreState());\n+    },\n+    render: function () {\n+      var collection = this.state.collection; \n+      var searchTerm = this.state.searchTerm;\n+      var selectedTab = this.state.selectedTab;\n+\n+      if (collection.length === 0 ) {\n+        return ( <div className=\"active-tasks\"><tr><td><p>  No tasks. </p></td></tr></div> );\n+      } else {\n+        return (\n+          <div className=\"scrollable\">\n+            <div className=\"inner\">\n+              <ActiveTasksFilterHeader/>\n+              <ActiveTaskTable collection={collection} searchTerm={searchTerm} tab={selectedTab}/>\n+            </div>\n+          </div>\n+        );\n+      }\n+    }\n+  });\n+\n+  var ActiveTasksFilterHeader = React.createClass({ //This is for the little '+ Filter' Tab \n+    getStoreState: function () {\n+      return {  \n+        searchTerm: activeTasksStore.getSearchTerm()\n+      };\n+    },\n+\n+    getInitialState: function () {\n+      return this.getStoreState();\n+    },\n+\n+    toggleFilter: function () {\n+      $('#dashboard-content').scrollTop(0);\n+      $('#query').toggle('slow');\n+    },\n+    setNewSearchTerm: function (e) {\n+      this.setState({searchTerm: e.target.value});\n+      Actions.setSearchTerm(e.target.value);\n+    },\n+    render: function () {\n+      var searchTerm = this.state.searchTerm;\n+      return (\n+        <div id=\"dashboard-upper-content\">\n+          <div className=\"dashboard-upper-menu\">\n+            <ul className=\"nav nav-tabs\" id=\"db-views-tabs-nav\">\n+              <li>\n+                <a className=\"js-toggle-filter\" href=\"#filter\" data-bypass=\"true\" data-toggle=\"tab\" onClick={this.toggleFilter}>\n+                  <i className=\"fonticon fonticon-plus\"></i>Filter\n+                </a>\n+              </li>\n+            </ul>\n+          </div>\n+\n+          <div className=\"tab-content\">\n+            <div className=\"tab-pane\" id=\"query\">\n+              <div className=\"activetasks-header\">\n+                <div className=\"pull-right\">\n+                  <input  \n+                    className=\"task-search-database\" \n+                    type=\"text\" name=\"search\" \n+                    placeholder=\"Search for databases...\" \n+                    value={searchTerm}\n+                    onChange={this.setNewSearchTerm}\n+                  />\n+                </div>\n+              </div>\n+            </div>\n+          </div>\n+        </div>\n+      );\n+    }\n+  });\n+\n+  var ActiveTaskTable = React.createClass({\n+    getInfo: function (item) {\n+      return {\n+        type : item.get('type'),\n+        objectField : this.getDatabaseFieldMessage(item) ,\n+        started_on : this.getTimeInfo(item.get('started_on')), \n+        updated_on : this.getTimeInfo(item.get('updated_on')),\n+        pid : item.get('pid').replace(/[<>]/g, ''),\n+        progress : this.getProgressMessage(item),\n+      };\n+    },\n+    getTimeInfo: function (timeStamp) {\n+      var timeMessage = [Helpers.formatDate(timeStamp)];\n+      timeMessage.push(Helpers.getDateFromNow(timeStamp));\n+      return timeMessage;\n+    },\n+    getDatabaseFieldMessage: function (model) {\n+      var type = model.get('type');\n+      var databaseFieldMessage = [];\n+\n+      if (type === 'replication') {\n+        databaseFieldMessage.push('From: ' + model.get('source'));\n+        databaseFieldMessage.push('To: ' + model.get('target'));\n+      } else if (type === 'indexer') {\n+        databaseFieldMessage.push(model.get('database'));\n+        databaseFieldMessage.push('(View: ' + model.get('design_document') + ')');\n+      } else {\n+        databaseFieldMessage.push(model.get('database'));\n+      }\n+\n+      return databaseFieldMessage;\n+    },\n+    getProgressMessage: function (model) {\n+      var progressMessage = [];\n+      var type = model.get('type');\n+      if (!_.isUndefined(model.get('progress'))) {\n+        progressMessage.push('Progress: ' + model.get('progress') + '%');\n+      }\n+\n+      if (type === 'indexer') {\n+        progressMessage.push('Processed ' + model.get('changes_done') + ' of ' + model.get('total_changes') + ' changes.');\n+      } else if (type === 'replication') {\n+        progressMessage.push(model.get('docs_written')+ ' docs written.');\n+        if (!_.isUndefined(model.get('changes_pending'))) {\n+          progressMessage.push(model.get('changes_pending') + ' pending changes.');\n+        }\n+      }\n+      if (!_.isUndefined(model.get('source_seq'))) {\n+        progressMessage.push('Current source sequence: ' + model.get('source_seq') + '. ');\n+      }\n+      if (!_.isUndefined(model.get('changes_done'))) {\n+        progressMessage.push(model.get('changes_done') + ' Changes done.');\n+      }\n+      \n+      return progressMessage;\n+    },\n+    passesFilter: function (item) {\n+      var searchTerm = this.props.searchTerm;\n+      var regex = new RegExp(searchTerm, 'g');\n+      \n+      var itemDatabasesTerm = '';\n+      if (item.has('database')) {\n+        itemDatabasesTerm += item.get('database'); \n+      }\n+      if (item.has('source')) {\n+        itemDatabasesTerm += item.get('source'); \n+      }\n+      if (item.has('target')) {\n+        itemDatabasesTerm += item.get('target'); \n+      }\n+\n+      if (regex.test(itemDatabasesTerm)) {\n+        return this.passesTabFilter(item.get('type'));\n+      }\n+      return false;\n+    },\n+    passesTabFilter: function (type) {\n+      if (this.props.tab.toLowerCase() === type.replace('_', ' ') || this.props.tab ==='All Tasks') {\n+        return true;\n+      }\n+      return false;\n+    },\n+    sortByHeader: function (e) {\n+      var headerField = $(e.currentTarget),\n+      columnName = headerField.attr('data-type');\n+      Actions.sortByColumnHeader(columnName);\n+    },\n+    render: function () {\n+      var collection = this.props.collection;\n+      var resultsCount = 0;\n+\n+      return (\n+        <div id=\"dashboard-lower-content\">\n+          <table className=\"table table-bordered table-striped active-tasks\">\n+            <thead>\n+              <tr>\n+                <th className=\"type\"      data-type=\"type\"        onClick={this.sortByHeader}> Type</th>\n+                <th className=\"database\"  data-type=\"database\"    onClick={this.sortByHeader}> Database</th>\n+                <th className=\"started\"   data-type=\"started_on\"  onClick={this.sortByHeader}> Started on</th>\n+                <th className=\"updated\"   data-type=\"updated_on\"  onClick={this.sortByHeader}> Last updated on</th>\n+                <th className=\"pid\"       data-type=\"pid\"         onClick={this.sortByHeader}> PID</th>\n+                <th className=\"status\"    data-type=\"progress\"    onClick={this.sortByHeader}> Status</th>\n+              </tr>\n+            </thead>\n+            <tbody className=\"js-tasks-go-here\">\n+              { collection.map(function (item, iteration) {","path":"app/addons/activetasks/components.react.jsx","position":230,"original_position":230,"commit_id":"68545e1967889851ea88f707078220bda207bbbc","original_commit_id":"68545e1967889851ea88f707078220bda207bbbc","user":{"login":"garrensmith","id":179458,"avatar_url":"https://avatars.githubusercontent.com/u/179458?v=3","gravatar_id":"","url":"https://api.github.com/users/garrensmith","html_url":"https://github.com/garrensmith","followers_url":"https://api.github.com/users/garrensmith/followers","following_url":"https://api.github.com/users/garrensmith/following{/other_user}","gists_url":"https://api.github.com/users/garrensmith/gists{/gist_id}","starred_url":"https://api.github.com/users/garrensmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/garrensmith/subscriptions","organizations_url":"https://api.github.com/users/garrensmith/orgs","repos_url":"https://api.github.com/users/garrensmith/repos","events_url":"https://api.github.com/users/garrensmith/events{/privacy}","received_events_url":"https://api.github.com/users/garrensmith/received_events","type":"User","site_admin":false},"body":"This should be done in a a separate function. Here is an [example](https://github.com/apache/couchdb-fauxton/blob/master/app/addons/cors/components.react.jsx#L132)","created_at":"2015-03-16T10:04:43Z","updated_at":"2015-03-16T10:04:43Z","html_url":"https://github.com/apache/couchdb-fauxton/pull/317#discussion_r26471806","pull_request_url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317","_links":{"self":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/comments/26471806"},"html":{"href":"https://github.com/apache/couchdb-fauxton/pull/317#discussion_r26471806"},"pull_request":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317"}}},"pull_request":{"url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317","id":31193494,"html_url":"https://github.com/apache/couchdb-fauxton/pull/317","diff_url":"https://github.com/apache/couchdb-fauxton/pull/317.diff","patch_url":"https://github.com/apache/couchdb-fauxton/pull/317.patch","issue_url":"https://api.github.com/repos/apache/couchdb-fauxton/issues/317","number":317,"state":"open","locked":false,"title":"Active tasks in react","user":{"login":"michellephung","id":836039,"avatar_url":"https://avatars.githubusercontent.com/u/836039?v=3","gravatar_id":"","url":"https://api.github.com/users/michellephung","html_url":"https://github.com/michellephung","followers_url":"https://api.github.com/users/michellephung/followers","following_url":"https://api.github.com/users/michellephung/following{/other_user}","gists_url":"https://api.github.com/users/michellephung/gists{/gist_id}","starred_url":"https://api.github.com/users/michellephung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michellephung/subscriptions","organizations_url":"https://api.github.com/users/michellephung/orgs","repos_url":"https://api.github.com/users/michellephung/repos","events_url":"https://api.github.com/users/michellephung/events{/privacy}","received_events_url":"https://api.github.com/users/michellephung/received_events","type":"User","site_admin":false},"body":"I still have to write some tests. ","created_at":"2015-03-15T01:24:43Z","updated_at":"2015-03-16T10:04:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"31baee4f79075d0f0630017435a3f51df4afaeed","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317/commits","review_comments_url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317/comments","review_comment_url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/couchdb-fauxton/issues/317/comments","statuses_url":"https://api.github.com/repos/apache/couchdb-fauxton/statuses/68545e1967889851ea88f707078220bda207bbbc","head":{"label":"michellephung:Active-Tasks-in-REACT","ref":"Active-Tasks-in-REACT","sha":"68545e1967889851ea88f707078220bda207bbbc","user":{"login":"michellephung","id":836039,"avatar_url":"https://avatars.githubusercontent.com/u/836039?v=3","gravatar_id":"","url":"https://api.github.com/users/michellephung","html_url":"https://github.com/michellephung","followers_url":"https://api.github.com/users/michellephung/followers","following_url":"https://api.github.com/users/michellephung/following{/other_user}","gists_url":"https://api.github.com/users/michellephung/gists{/gist_id}","starred_url":"https://api.github.com/users/michellephung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michellephung/subscriptions","organizations_url":"https://api.github.com/users/michellephung/orgs","repos_url":"https://api.github.com/users/michellephung/repos","events_url":"https://api.github.com/users/michellephung/events{/privacy}","received_events_url":"https://api.github.com/users/michellephung/received_events","type":"User","site_admin":false},"repo":{"id":24307610,"name":"couchdb-fauxton","full_name":"michellephung/couchdb-fauxton","owner":{"login":"michellephung","id":836039,"avatar_url":"https://avatars.githubusercontent.com/u/836039?v=3","gravatar_id":"","url":"https://api.github.com/users/michellephung","html_url":"https://github.com/michellephung","followers_url":"https://api.github.com/users/michellephung/followers","following_url":"https://api.github.com/users/michellephung/following{/other_user}","gists_url":"https://api.github.com/users/michellephung/gists{/gist_id}","starred_url":"https://api.github.com/users/michellephung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michellephung/subscriptions","organizations_url":"https://api.github.com/users/michellephung/orgs","repos_url":"https://api.github.com/users/michellephung/repos","events_url":"https://api.github.com/users/michellephung/events{/privacy}","received_events_url":"https://api.github.com/users/michellephung/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/michellephung/couchdb-fauxton","description":"Mirror of Apache CouchDB","fork":true,"url":"https://api.github.com/repos/michellephung/couchdb-fauxton","forks_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/forks","keys_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/keys{/key_id}","collaborators_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/teams","hooks_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/hooks","issue_events_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/issues/events{/number}","events_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/events","assignees_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/assignees{/user}","branches_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/branches{/branch}","tags_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/tags","blobs_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/git/refs{/sha}","trees_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/git/trees{/sha}","statuses_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/statuses/{sha}","languages_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/languages","stargazers_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/stargazers","contributors_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/contributors","subscribers_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/subscribers","subscription_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/subscription","commits_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/commits{/sha}","git_commits_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/git/commits{/sha}","comments_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/comments{/number}","issue_comment_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/issues/comments{/number}","contents_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/contents/{+path}","compare_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/compare/{base}...{head}","merges_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/merges","archive_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/downloads","issues_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/issues{/number}","pulls_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/pulls{/number}","milestones_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/milestones{/number}","notifications_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/labels{/name}","releases_url":"https://api.github.com/repos/michellephung/couchdb-fauxton/releases{/id}","created_at":"2014-09-21T23:17:43Z","updated_at":"2015-03-12T15:06:37Z","pushed_at":"2015-03-15T01:20:42Z","git_url":"git://github.com/michellephung/couchdb-fauxton.git","ssh_url":"git@github.com:michellephung/couchdb-fauxton.git","clone_url":"https://github.com/michellephung/couchdb-fauxton.git","svn_url":"https://github.com/michellephung/couchdb-fauxton","homepage":null,"size":41982,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apache:master","ref":"master","sha":"b3e5b44e278c6aa750eb21c1b2f1025ede83c9a8","user":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":15993612,"name":"couchdb-fauxton","full_name":"apache/couchdb-fauxton","owner":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/couchdb-fauxton","description":"Mirror of Apache CouchDB","fork":false,"url":"https://api.github.com/repos/apache/couchdb-fauxton","forks_url":"https://api.github.com/repos/apache/couchdb-fauxton/forks","keys_url":"https://api.github.com/repos/apache/couchdb-fauxton/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/couchdb-fauxton/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/couchdb-fauxton/teams","hooks_url":"https://api.github.com/repos/apache/couchdb-fauxton/hooks","issue_events_url":"https://api.github.com/repos/apache/couchdb-fauxton/issues/events{/number}","events_url":"https://api.github.com/repos/apache/couchdb-fauxton/events","assignees_url":"https://api.github.com/repos/apache/couchdb-fauxton/assignees{/user}","branches_url":"https://api.github.com/repos/apache/couchdb-fauxton/branches{/branch}","tags_url":"https://api.github.com/repos/apache/couchdb-fauxton/tags","blobs_url":"https://api.github.com/repos/apache/couchdb-fauxton/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/couchdb-fauxton/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/couchdb-fauxton/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/couchdb-fauxton/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/couchdb-fauxton/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/couchdb-fauxton/languages","stargazers_url":"https://api.github.com/repos/apache/couchdb-fauxton/stargazers","contributors_url":"https://api.github.com/repos/apache/couchdb-fauxton/contributors","subscribers_url":"https://api.github.com/repos/apache/couchdb-fauxton/subscribers","subscription_url":"https://api.github.com/repos/apache/couchdb-fauxton/subscription","commits_url":"https://api.github.com/repos/apache/couchdb-fauxton/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/couchdb-fauxton/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/couchdb-fauxton/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/couchdb-fauxton/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/couchdb-fauxton/contents/{+path}","compare_url":"https://api.github.com/repos/apache/couchdb-fauxton/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/couchdb-fauxton/merges","archive_url":"https://api.github.com/repos/apache/couchdb-fauxton/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/couchdb-fauxton/downloads","issues_url":"https://api.github.com/repos/apache/couchdb-fauxton/issues{/number}","pulls_url":"https://api.github.com/repos/apache/couchdb-fauxton/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/couchdb-fauxton/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/couchdb-fauxton/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/couchdb-fauxton/labels{/name}","releases_url":"https://api.github.com/repos/apache/couchdb-fauxton/releases{/id}","created_at":"2014-01-17T08:00:08Z","updated_at":"2015-03-16T08:32:53Z","pushed_at":"2015-03-11T23:16:33Z","git_url":"git://github.com/apache/couchdb-fauxton.git","ssh_url":"git@github.com:apache/couchdb-fauxton.git","clone_url":"https://github.com/apache/couchdb-fauxton.git","svn_url":"https://github.com/apache/couchdb-fauxton","homepage":null,"size":10376,"stargazers_count":37,"watchers_count":37,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":43,"mirror_url":"git://git.apache.org/couchdb-fauxton.git","open_issues_count":12,"forks":43,"open_issues":12,"watchers":37,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317"},"html":{"href":"https://github.com/apache/couchdb-fauxton/pull/317"},"issue":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/issues/317"},"comments":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/issues/317/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/pulls/317/commits"},"statuses":{"href":"https://api.github.com/repos/apache/couchdb-fauxton/statuses/68545e1967889851ea88f707078220bda207bbbc"}}}}