{"action":"created","comment":{"url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/comments/240322931","pull_request_review_id":183326133,"id":240322931,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MDMyMjkzMQ==","diff_hunk":"@@ -1,160 +1,238 @@\n-Frontend Design \n-=======\n-### Architecture\n-```app.js``` hosts the main app and calls ```content.js```, which loads up the main app. This file contains a few functions:\n-### ```content.js```\n-(The top most bullet contains the name of the method and the inner bullets are params.)\n-* ```openModal```\n-* ```closeModal```\n-* ```addNewLayer``` - invoked by ```handleClick``` and passed in a JS object with layer information. \n-  * layer\n+Frontend Design\n+========\n+## Architecture\n+(All javascript files described here can be found in the /ide/static/js/ directory of Fabrik)\n+\n+#### ```addCommentModal.js```\n+(The bullets contain methods specific to the file along with their explanations.)\n+\n+```addCommentModal.js``` is responsible for adding comments into the interface. It has three methods:\n+* ```handleClick``` - invoked on click on modal\n+* ```addComment``` - adds comment modal to RTC\n+* ```render``` - renders the comment modals\n+\n+***\n+\n+#### ```app.js```\n+```app.js``` hosts the main app, but contains nothing else than a call for ```content.js```.\n+***\n+\n+#### ```canvas.js```\n+```content.js``` invokes an instance of ```canvas.js``` that contains the following methods:\n+* ```allowDrop``` - allows element to be dropped down\n+* ```clickLayerEvent``` - invoked on a click of a layer or on drag of that layer\n+* ```hoverLayerEvent``` - invoked on a hover\n+* ```scrollCanvas``` - scrolls canvas\n+* ```clickCanvas``` - invoked on click\n+* ```updateLayerPosition``` - changes layer positon based on event\n+* ```mouseUpEvent``` - invoked when mouse key is up\n+* ```connectionEvent``` - invoked on connection; checks for cycles and modifies layers\n+* ```detachConnectionEvent``` - modifies layers\n+* ```render``` - renders canvas\n+* ```drop``` - invoked on layer drop onto canvas; checks for errors\n+\n+```canvas.js``` also contains the code that decides whether a node's line needs to be rerouted if it is cutting through another node.\n+\n+#### ```canvas.js```'s placement algorithm\n+The methods ```canvas.js``` uses for placement are:\n+\n+```checkIfCuttingLine``` is passed in a positional block that includes x and y coordinates (it assumes a px is at the end of each x and y) for each endpoint of the line it is checking.\n+Specifically, it is checking if the line formed with the coordinates in the positional block will cut into any other nodes between them.\n+\n+```checkIfCuttingLine``` creates an equation from the x and y points by calculating the slope and using point slope form.\n+\n+After this, it calls ```getBetween``` to get the nodes between the x and y coordinates of the created line.\n+\n+The ```getBetween``` also serves the purpose of returning which direction the majority of the blocks between are. This implementation is purely for performance, otherwise it would be seperated into a seperate function.\n+\n+After ```getBetween``` returns the IDs of the nodes between the x and y coordinate pair, it is checked if the cutting line loops through them (to see whether or not the resulting line will cut through the in between node).\n+\n+If it does cut through, ```getBetween``` will return the direction the line needs to be shifted to the parent function, ```checkCutting```, to iterate once again 80 pixels to either the left or right (depending on the return.)\n+\n+*This algorithmic design creates the possibility of an infinite loop if the canvas has been completely occupied  and there is no more space remaining.*\n+\n+***\n+\n+#### ```commentSidebar.js```\n+Is responsible for creating the comment sidebar. Consists of:\n+* ```close``` - closes sidebar\n+* ```addComment``` - adds comment\n+* ```render``` - renders the sidebar\n+\n+***\n+\n+#### ```commentTooltip.js```\n+Is responsible for creating the comment dialog box. Consists of:\n+* ```handleClick``` - handles user click event\n+* ```addComment``` - adds comment to RTC\n+* ```render``` - renders the comment box\n+\n+***\n+\n+#### ```content.js```\n+```content.js``` is the most important file, as it loads the main app. Here are some of its important methods:\n+* ```openModal``` - opens modals (such as \"Help\" or \"About Us\")\n+* ```closeModal``` - closes previously opened modals\n+* ```infoModal``` - sets info about infoModal state, and then opens that modal\n+* ```faqModal``` - sets info about faqModal state, and then opens that modal\n+* ```zooModal``` - imports and opens zooModal\n+* ```addNewLayer``` - invoked by ```handleClick``` and passed in a JS object with layer information - adds a layer\n * ```changeSelectedLayer``` - changes which layer has the selected class on it, which outlines layer to emphasize a \"selection\"\n-  * layerId\n * ```changeHoveredLayer``` - changes which layer has the hover class on it, which outlines layer to emphasize a \"hover\"\n-  * layerId\n-* ```modifyLayer``` - modifies layer, passed in layer is the new layer, and layer id is the id it needs to be replaced at. \n-  * layer\n-  * layerId\n-* ```modifyLayerParams``` - modify layer params based on layer and layerId, invoked by setParams\n-  * layer\n-  * layerId\n-* ```deleteLayer``` - deletes layers and removes inputs and outputs for it. \n-  * layerId\n-* ```updateParameters``` - sums total amount of parameters and updates layer's parameters\n-  * layer\n-  * net\n-* ```calculateParameters``` - loops through net and invokes ```updateParameters```\n-  * net\n+* ```addHighlightOnLayer``` - highlights layer by ```layerId```\n+* ```modifyLayer``` - modifies layer, passed in layer is the new layer, and layer id is the id it needs to be replaced at.\n+* ```deleteLayer``` - deletes layers and removes inputs and outputs for it.\n+* ```getLayerParameters``` - sums total amount of parameters and updates layer's parameters\n+* ```calculateParameters``` - loops through net and invokes ```getLayerParameters```\n+* ```adjustParameters``` - used to adjust layer parameters based on layer, change is passed in.\n+* ```modifyLayerParams``` - modifies layer params based on layer and layerId, invoked by SetParams\n * ```loadLayerShapes``` - AJAXs to backend to model parameters\n * ```exportNet``` - AJAXs to backend and then passes back error/success\n-  * framework\n+* ```exportPrep``` - invoked by ```exportNet```; prepares for model export\n * ```importNet``` - AJAXs to backend and then passes back error/success\n-  * framework\n-  * id\n * ```initialiseImportedNet``` - starts prepping layer to be displayed by Fabrik, positions layers\n-  * net\n-  * net_name\n-* ```changeNetName``` - invoked on the event of net name changed\n-  * event\n-* ```adjustParameters``` - used to adjust layer parameters based on layer, change is passed in. \n-  * layer\n-  * para\n-  * value\n-* ```changeNetStatus``` - changes boolean for rebuilding. \n-  * bool\n-* ```changeNetPhase```\n-  * phase\n-* ```dismissError```\n-  * errorIndex\n-* ```addError```\n-  * errorText\n-* ```dismissAllErrors```\n-* ```copyTrain``` - copy's train net for test\n-* ```trainOnly```\n-* ```saveDb```\n-* ```loadDb```\n-  * id\n-* ```infoModal``` - sets info into state, and then open's modal\n-* ```toggleSidebar```\n-* ```zooModal```\n-* ```handleClick``` - handles a click based on an event handles connections and adding layers. \n-  * event\n-### ```canvas.js```\n-```content.js``` invokes an instance of ```canvas.js``` that contains the following methods and params:\n-* ```allowDrop```\n-  * event\n-* ```clickLayerEvent``` - invoked on a click of a layer, invokes ```setParams.js```\n-  * event\n-  * layerId\n-* ```hoverLayerEvent``` - invoked on a hover\n-  * event\n-  * layerId\n-* ```scrollCanvas```\n-* ```clickCanvas```\n-  * event\n-* ```updateLayerPosition``` - changes layers positon based on event\n-  * event\n-* ```connectionEvent``` - invoked on connection, checks for cycles and modifies layers.\n-  * connInfo\n-  * originalEvent\n-* ```detachConnectionEvent``` - modifies layers\n-  * connInfo\n-  * originalEvent\n-* ```drop```\n-  * event\n-```canvas.js``` also contains the code that decides whether a node's line needs to be rerouted if it is cutting through another node. \n-### ```canvas.js```'s placement algorithm\n-The method it uses is the following:\n-```checkIfCuttingLine``` is passed in a positional block that includes x and y coordinates (it assumes a px is at the end of each x and y) for each endpoint of the line it is checking. \n-Specifically, it is checking if the line formed with the coordinates in the positional block will cut into any other nodes between them.\n+* ```changeNetName``` - invoked on the event of net name changed; changes the name of the net\n+* ```changeNetStatus``` - changes boolean for rebuilding.\n+* ```changeNetPhase``` - changes the phase of the net","path":"docs/source/UIDocumentation.md","position":179,"original_position":179,"commit_id":"d1627a71d9d04c3a5aed4647e33536d15aade973","original_commit_id":"d1627a71d9d04c3a5aed4647e33536d15aade973","user":{"login":"Ram81","id":16323427,"node_id":"MDQ6VXNlcjE2MzIzNDI3","avatar_url":"https://avatars2.githubusercontent.com/u/16323427?v=4","gravatar_id":"","url":"https://api.github.com/users/Ram81","html_url":"https://github.com/Ram81","followers_url":"https://api.github.com/users/Ram81/followers","following_url":"https://api.github.com/users/Ram81/following{/other_user}","gists_url":"https://api.github.com/users/Ram81/gists{/gist_id}","starred_url":"https://api.github.com/users/Ram81/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ram81/subscriptions","organizations_url":"https://api.github.com/users/Ram81/orgs","repos_url":"https://api.github.com/users/Ram81/repos","events_url":"https://api.github.com/users/Ram81/events{/privacy}","received_events_url":"https://api.github.com/users/Ram81/received_events","type":"User","site_admin":false},"body":"be more specific to what phase","created_at":"2018-12-10T18:16:44Z","updated_at":"2018-12-10T18:19:05Z","html_url":"https://github.com/Cloud-CV/Fabrik/pull/497#discussion_r240322931","pull_request_url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/comments/240322931"},"html":{"href":"https://github.com/Cloud-CV/Fabrik/pull/497#discussion_r240322931"},"pull_request":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497"}}},"pull_request":{"url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497","id":237156206,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM3MTU2MjA2","html_url":"https://github.com/Cloud-CV/Fabrik/pull/497","diff_url":"https://github.com/Cloud-CV/Fabrik/pull/497.diff","patch_url":"https://github.com/Cloud-CV/Fabrik/pull/497.patch","issue_url":"https://api.github.com/repos/Cloud-CV/Fabrik/issues/497","number":497,"state":"open","locked":false,"title":"Updated UIdocumentation.md","user":{"login":"kayo11","id":37086109,"node_id":"MDQ6VXNlcjM3MDg2MTA5","avatar_url":"https://avatars1.githubusercontent.com/u/37086109?v=4","gravatar_id":"","url":"https://api.github.com/users/kayo11","html_url":"https://github.com/kayo11","followers_url":"https://api.github.com/users/kayo11/followers","following_url":"https://api.github.com/users/kayo11/following{/other_user}","gists_url":"https://api.github.com/users/kayo11/gists{/gist_id}","starred_url":"https://api.github.com/users/kayo11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kayo11/subscriptions","organizations_url":"https://api.github.com/users/kayo11/orgs","repos_url":"https://api.github.com/users/kayo11/repos","events_url":"https://api.github.com/users/kayo11/events{/privacy}","received_events_url":"https://api.github.com/users/kayo11/received_events","type":"User","site_admin":false},"body":"I updated the UIdocumentation.md to include new features and reviewed the previous version.","created_at":"2018-12-09T20:50:49Z","updated_at":"2018-12-10T18:19:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f4c51fb9f6aabd8ceb61489bb1a7dc609d1673be","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497/commits","review_comments_url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497/comments","review_comment_url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Cloud-CV/Fabrik/issues/497/comments","statuses_url":"https://api.github.com/repos/Cloud-CV/Fabrik/statuses/d1627a71d9d04c3a5aed4647e33536d15aade973","head":{"label":"kayo11:patch-1","ref":"patch-1","sha":"d1627a71d9d04c3a5aed4647e33536d15aade973","user":{"login":"kayo11","id":37086109,"node_id":"MDQ6VXNlcjM3MDg2MTA5","avatar_url":"https://avatars1.githubusercontent.com/u/37086109?v=4","gravatar_id":"","url":"https://api.github.com/users/kayo11","html_url":"https://github.com/kayo11","followers_url":"https://api.github.com/users/kayo11/followers","following_url":"https://api.github.com/users/kayo11/following{/other_user}","gists_url":"https://api.github.com/users/kayo11/gists{/gist_id}","starred_url":"https://api.github.com/users/kayo11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kayo11/subscriptions","organizations_url":"https://api.github.com/users/kayo11/orgs","repos_url":"https://api.github.com/users/kayo11/repos","events_url":"https://api.github.com/users/kayo11/events{/privacy}","received_events_url":"https://api.github.com/users/kayo11/received_events","type":"User","site_admin":false},"repo":{"id":160948236,"node_id":"MDEwOlJlcG9zaXRvcnkxNjA5NDgyMzY=","name":"Fabrik","full_name":"kayo11/Fabrik","private":false,"owner":{"login":"kayo11","id":37086109,"node_id":"MDQ6VXNlcjM3MDg2MTA5","avatar_url":"https://avatars1.githubusercontent.com/u/37086109?v=4","gravatar_id":"","url":"https://api.github.com/users/kayo11","html_url":"https://github.com/kayo11","followers_url":"https://api.github.com/users/kayo11/followers","following_url":"https://api.github.com/users/kayo11/following{/other_user}","gists_url":"https://api.github.com/users/kayo11/gists{/gist_id}","starred_url":"https://api.github.com/users/kayo11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kayo11/subscriptions","organizations_url":"https://api.github.com/users/kayo11/orgs","repos_url":"https://api.github.com/users/kayo11/repos","events_url":"https://api.github.com/users/kayo11/events{/privacy}","received_events_url":"https://api.github.com/users/kayo11/received_events","type":"User","site_admin":false},"html_url":"https://github.com/kayo11/Fabrik","description":":factory: Collaboratively build, visualize, and design neural nets in browser","fork":true,"url":"https://api.github.com/repos/kayo11/Fabrik","forks_url":"https://api.github.com/repos/kayo11/Fabrik/forks","keys_url":"https://api.github.com/repos/kayo11/Fabrik/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kayo11/Fabrik/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kayo11/Fabrik/teams","hooks_url":"https://api.github.com/repos/kayo11/Fabrik/hooks","issue_events_url":"https://api.github.com/repos/kayo11/Fabrik/issues/events{/number}","events_url":"https://api.github.com/repos/kayo11/Fabrik/events","assignees_url":"https://api.github.com/repos/kayo11/Fabrik/assignees{/user}","branches_url":"https://api.github.com/repos/kayo11/Fabrik/branches{/branch}","tags_url":"https://api.github.com/repos/kayo11/Fabrik/tags","blobs_url":"https://api.github.com/repos/kayo11/Fabrik/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kayo11/Fabrik/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kayo11/Fabrik/git/refs{/sha}","trees_url":"https://api.github.com/repos/kayo11/Fabrik/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kayo11/Fabrik/statuses/{sha}","languages_url":"https://api.github.com/repos/kayo11/Fabrik/languages","stargazers_url":"https://api.github.com/repos/kayo11/Fabrik/stargazers","contributors_url":"https://api.github.com/repos/kayo11/Fabrik/contributors","subscribers_url":"https://api.github.com/repos/kayo11/Fabrik/subscribers","subscription_url":"https://api.github.com/repos/kayo11/Fabrik/subscription","commits_url":"https://api.github.com/repos/kayo11/Fabrik/commits{/sha}","git_commits_url":"https://api.github.com/repos/kayo11/Fabrik/git/commits{/sha}","comments_url":"https://api.github.com/repos/kayo11/Fabrik/comments{/number}","issue_comment_url":"https://api.github.com/repos/kayo11/Fabrik/issues/comments{/number}","contents_url":"https://api.github.com/repos/kayo11/Fabrik/contents/{+path}","compare_url":"https://api.github.com/repos/kayo11/Fabrik/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kayo11/Fabrik/merges","archive_url":"https://api.github.com/repos/kayo11/Fabrik/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kayo11/Fabrik/downloads","issues_url":"https://api.github.com/repos/kayo11/Fabrik/issues{/number}","pulls_url":"https://api.github.com/repos/kayo11/Fabrik/pulls{/number}","milestones_url":"https://api.github.com/repos/kayo11/Fabrik/milestones{/number}","notifications_url":"https://api.github.com/repos/kayo11/Fabrik/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kayo11/Fabrik/labels{/name}","releases_url":"https://api.github.com/repos/kayo11/Fabrik/releases{/id}","deployments_url":"https://api.github.com/repos/kayo11/Fabrik/deployments","created_at":"2018-12-08T14:42:52Z","updated_at":"2018-12-09T20:45:18Z","pushed_at":"2018-12-10T14:33:15Z","git_url":"git://github.com/kayo11/Fabrik.git","ssh_url":"git@github.com:kayo11/Fabrik.git","clone_url":"https://github.com/kayo11/Fabrik.git","svn_url":"https://github.com/kayo11/Fabrik","homepage":"http://fabrik.cloudcv.org","size":10000,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Cloud-CV:master","ref":"master","sha":"0c41f7ad39c86b7c463cc180a6f2b48313485d69","user":{"login":"Cloud-CV","id":20895851,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwODk1ODUx","avatar_url":"https://avatars0.githubusercontent.com/u/20895851?v=4","gravatar_id":"","url":"https://api.github.com/users/Cloud-CV","html_url":"https://github.com/Cloud-CV","followers_url":"https://api.github.com/users/Cloud-CV/followers","following_url":"https://api.github.com/users/Cloud-CV/following{/other_user}","gists_url":"https://api.github.com/users/Cloud-CV/gists{/gist_id}","starred_url":"https://api.github.com/users/Cloud-CV/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Cloud-CV/subscriptions","organizations_url":"https://api.github.com/users/Cloud-CV/orgs","repos_url":"https://api.github.com/users/Cloud-CV/repos","events_url":"https://api.github.com/users/Cloud-CV/events{/privacy}","received_events_url":"https://api.github.com/users/Cloud-CV/received_events","type":"Organization","site_admin":false},"repo":{"id":59907561,"node_id":"MDEwOlJlcG9zaXRvcnk1OTkwNzU2MQ==","name":"Fabrik","full_name":"Cloud-CV/Fabrik","private":false,"owner":{"login":"Cloud-CV","id":20895851,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwODk1ODUx","avatar_url":"https://avatars0.githubusercontent.com/u/20895851?v=4","gravatar_id":"","url":"https://api.github.com/users/Cloud-CV","html_url":"https://github.com/Cloud-CV","followers_url":"https://api.github.com/users/Cloud-CV/followers","following_url":"https://api.github.com/users/Cloud-CV/following{/other_user}","gists_url":"https://api.github.com/users/Cloud-CV/gists{/gist_id}","starred_url":"https://api.github.com/users/Cloud-CV/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Cloud-CV/subscriptions","organizations_url":"https://api.github.com/users/Cloud-CV/orgs","repos_url":"https://api.github.com/users/Cloud-CV/repos","events_url":"https://api.github.com/users/Cloud-CV/events{/privacy}","received_events_url":"https://api.github.com/users/Cloud-CV/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Cloud-CV/Fabrik","description":":factory: Collaboratively build, visualize, and design neural nets in browser","fork":false,"url":"https://api.github.com/repos/Cloud-CV/Fabrik","forks_url":"https://api.github.com/repos/Cloud-CV/Fabrik/forks","keys_url":"https://api.github.com/repos/Cloud-CV/Fabrik/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Cloud-CV/Fabrik/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Cloud-CV/Fabrik/teams","hooks_url":"https://api.github.com/repos/Cloud-CV/Fabrik/hooks","issue_events_url":"https://api.github.com/repos/Cloud-CV/Fabrik/issues/events{/number}","events_url":"https://api.github.com/repos/Cloud-CV/Fabrik/events","assignees_url":"https://api.github.com/repos/Cloud-CV/Fabrik/assignees{/user}","branches_url":"https://api.github.com/repos/Cloud-CV/Fabrik/branches{/branch}","tags_url":"https://api.github.com/repos/Cloud-CV/Fabrik/tags","blobs_url":"https://api.github.com/repos/Cloud-CV/Fabrik/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Cloud-CV/Fabrik/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Cloud-CV/Fabrik/git/refs{/sha}","trees_url":"https://api.github.com/repos/Cloud-CV/Fabrik/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Cloud-CV/Fabrik/statuses/{sha}","languages_url":"https://api.github.com/repos/Cloud-CV/Fabrik/languages","stargazers_url":"https://api.github.com/repos/Cloud-CV/Fabrik/stargazers","contributors_url":"https://api.github.com/repos/Cloud-CV/Fabrik/contributors","subscribers_url":"https://api.github.com/repos/Cloud-CV/Fabrik/subscribers","subscription_url":"https://api.github.com/repos/Cloud-CV/Fabrik/subscription","commits_url":"https://api.github.com/repos/Cloud-CV/Fabrik/commits{/sha}","git_commits_url":"https://api.github.com/repos/Cloud-CV/Fabrik/git/commits{/sha}","comments_url":"https://api.github.com/repos/Cloud-CV/Fabrik/comments{/number}","issue_comment_url":"https://api.github.com/repos/Cloud-CV/Fabrik/issues/comments{/number}","contents_url":"https://api.github.com/repos/Cloud-CV/Fabrik/contents/{+path}","compare_url":"https://api.github.com/repos/Cloud-CV/Fabrik/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Cloud-CV/Fabrik/merges","archive_url":"https://api.github.com/repos/Cloud-CV/Fabrik/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Cloud-CV/Fabrik/downloads","issues_url":"https://api.github.com/repos/Cloud-CV/Fabrik/issues{/number}","pulls_url":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls{/number}","milestones_url":"https://api.github.com/repos/Cloud-CV/Fabrik/milestones{/number}","notifications_url":"https://api.github.com/repos/Cloud-CV/Fabrik/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Cloud-CV/Fabrik/labels{/name}","releases_url":"https://api.github.com/repos/Cloud-CV/Fabrik/releases{/id}","deployments_url":"https://api.github.com/repos/Cloud-CV/Fabrik/deployments","created_at":"2016-05-28T17:51:46Z","updated_at":"2018-12-10T06:21:05Z","pushed_at":"2018-12-10T17:41:45Z","git_url":"git://github.com/Cloud-CV/Fabrik.git","ssh_url":"git@github.com:Cloud-CV/Fabrik.git","clone_url":"https://github.com/Cloud-CV/Fabrik.git","svn_url":"https://github.com/Cloud-CV/Fabrik","homepage":"http://fabrik.cloudcv.org","size":9982,"stargazers_count":946,"watchers_count":946,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":230,"mirror_url":null,"archived":false,"open_issues_count":55,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":230,"open_issues":55,"watchers":946,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497"},"html":{"href":"https://github.com/Cloud-CV/Fabrik/pull/497"},"issue":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/issues/497"},"comments":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/issues/497/comments"},"review_comments":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497/comments"},"review_comment":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/pulls/497/commits"},"statuses":{"href":"https://api.github.com/repos/Cloud-CV/Fabrik/statuses/d1627a71d9d04c3a5aed4647e33536d15aade973"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"Ram81"}}