{"action":"created","comment":{"url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/comments/44762560","id":44762560,"diff_hunk":"@@ -1,79 +1,108 @@\n 'use strict';\n \n-(function() {\n+(function(exports) {\n \n-  var _listNoteContent = [];\n-  var _wrapper = document.querySelector('#note-list-wrapper');\n-\n-  function start() {\n-    fetchList(function(data) {\n-      updateList(data);\n-      drawList();\n-      preloadFirstNote();\n-    });\n-    window.addEventListener('click', function(event) {\n-      onNoteOpen(event);\n-    });\n+  /**\n+   * Creates an instance of ListManager.\n+   *\n+   * @constructor\n+   * @this {ListManager}\n+   */\n+  var ListManager = function() {\n+    this._listNoteContent = [];\n+    this._wrapper = document.querySelector('#note-list-wrapper');\n   }\n \n-  function onNoteOpen(event) {\n-    if (event.target.classList.contains('note-title')) {\n-      var id = event.target.dataset.noteId;\n-      var content = _listNoteContent[id];\n-      window.dispatchEvent(new CustomEvent('note-open',\n-        { detail: content }));\n-    };\n-  }\n+  ListManager.prototype = {\n \n-  function preloadFirstNote() {\n-    if (_listNoteContent.length !== 0) {\n-      var content = _listNoteContent[0];\n-      window.dispatchEvent(new CustomEvent('note-open',\n-        { detail: content }));\n-    }\n-  }\n+    /**\n+     * Binding the 'click' event to the '#note-list-wrapper' node and\n+     * fetch the data from server then draw it.\n+     * This method should be called only once to initialize the ListManager.\n+     *\n+     * @this {ListManager}\n+     */\n+    start() {\n+      this.fetchList().then((function(data){","path":"homework/list.js","position":54,"original_position":54,"commit_id":"b5759c56e307b00698e32136e1fc22998aa05ccf","original_commit_id":"b5759c56e307b00698e32136e1fc22998aa05ccf","user":{"login":"snowmantw","id":129153,"avatar_url":"https://avatars.githubusercontent.com/u/129153?v=3","gravatar_id":"","url":"https://api.github.com/users/snowmantw","html_url":"https://github.com/snowmantw","followers_url":"https://api.github.com/users/snowmantw/followers","following_url":"https://api.github.com/users/snowmantw/following{/other_user}","gists_url":"https://api.github.com/users/snowmantw/gists{/gist_id}","starred_url":"https://api.github.com/users/snowmantw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snowmantw/subscriptions","organizations_url":"https://api.github.com/users/snowmantw/orgs","repos_url":"https://api.github.com/users/snowmantw/repos","events_url":"https://api.github.com/users/snowmantw/events{/privacy}","received_events_url":"https://api.github.com/users/snowmantw/received_events","type":"User","site_admin":false},"body":"Arrow function is more expressive than using `bind` API. See:\r\n\r\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions","created_at":"2015-11-13T09:16:27Z","updated_at":"2015-11-13T09:16:27Z","html_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pull/6#discussion_r44762560","pull_request_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6","_links":{"self":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/comments/44762560"},"html":{"href":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pull/6#discussion_r44762560"},"pull_request":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6"}}},"pull_request":{"url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6","id":47619279,"html_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pull/6","diff_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pull/6.diff","patch_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pull/6.patch","issue_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues/6","number":6,"state":"open","locked":false,"title":"Homework refactor","user":{"login":"rueian","id":2727535,"avatar_url":"https://avatars.githubusercontent.com/u/2727535?v=3","gravatar_id":"","url":"https://api.github.com/users/rueian","html_url":"https://github.com/rueian","followers_url":"https://api.github.com/users/rueian/followers","following_url":"https://api.github.com/users/rueian/following{/other_user}","gists_url":"https://api.github.com/users/rueian/gists{/gist_id}","starred_url":"https://api.github.com/users/rueian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rueian/subscriptions","organizations_url":"https://api.github.com/users/rueian/orgs","repos_url":"https://api.github.com/users/rueian/repos","events_url":"https://api.github.com/users/rueian/events{/privacy}","received_events_url":"https://api.github.com/users/rueian/received_events","type":"User","site_admin":false},"body":"review=?@snowmantw\r\n\r\n怎麼 mention 助教啊？？好像沒在裡面@@","created_at":"2015-10-14T05:28:20Z","updated_at":"2015-11-13T09:16:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"004fc2935e2b8ff5c02e19cef8a87c588be97f41","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6/commits","review_comments_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6/comments","review_comment_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues/6/comments","statuses_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/statuses/b5759c56e307b00698e32136e1fc22998aa05ccf","head":{"label":"rueian:homework-refactor","ref":"homework-refactor","sha":"b5759c56e307b00698e32136e1fc22998aa05ccf","user":{"login":"rueian","id":2727535,"avatar_url":"https://avatars.githubusercontent.com/u/2727535?v=3","gravatar_id":"","url":"https://api.github.com/users/rueian","html_url":"https://github.com/rueian","followers_url":"https://api.github.com/users/rueian/followers","following_url":"https://api.github.com/users/rueian/following{/other_user}","gists_url":"https://api.github.com/users/rueian/gists{/gist_id}","starred_url":"https://api.github.com/users/rueian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rueian/subscriptions","organizations_url":"https://api.github.com/users/rueian/orgs","repos_url":"https://api.github.com/users/rueian/repos","events_url":"https://api.github.com/users/rueian/events{/privacy}","received_events_url":"https://api.github.com/users/rueian/received_events","type":"User","site_admin":false},"repo":{"id":43543708,"name":"Lesson-03-JavaScriptBestPratice-HW","full_name":"rueian/Lesson-03-JavaScriptBestPratice-HW","owner":{"login":"rueian","id":2727535,"avatar_url":"https://avatars.githubusercontent.com/u/2727535?v=3","gravatar_id":"","url":"https://api.github.com/users/rueian","html_url":"https://github.com/rueian","followers_url":"https://api.github.com/users/rueian/followers","following_url":"https://api.github.com/users/rueian/following{/other_user}","gists_url":"https://api.github.com/users/rueian/gists{/gist_id}","starred_url":"https://api.github.com/users/rueian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rueian/subscriptions","organizations_url":"https://api.github.com/users/rueian/orgs","repos_url":"https://api.github.com/users/rueian/repos","events_url":"https://api.github.com/users/rueian/events{/privacy}","received_events_url":"https://api.github.com/users/rueian/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rueian/Lesson-03-JavaScriptBestPratice-HW","description":"Homework","fork":true,"url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW","forks_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/forks","keys_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/teams","hooks_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/hooks","issue_events_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/issues/events{/number}","events_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/events","assignees_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/assignees{/user}","branches_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/branches{/branch}","tags_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/tags","blobs_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/git/refs{/sha}","trees_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/statuses/{sha}","languages_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/languages","stargazers_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/stargazers","contributors_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/contributors","subscribers_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/subscribers","subscription_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/subscription","commits_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/commits{/sha}","git_commits_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/git/commits{/sha}","comments_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/comments{/number}","issue_comment_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/issues/comments{/number}","contents_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/contents/{+path}","compare_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/merges","archive_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/downloads","issues_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/issues{/number}","pulls_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/pulls{/number}","milestones_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/milestones{/number}","notifications_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/labels{/name}","releases_url":"https://api.github.com/repos/rueian/Lesson-03-JavaScriptBestPratice-HW/releases{/id}","created_at":"2015-10-02T08:54:20Z","updated_at":"2015-10-02T08:54:20Z","pushed_at":"2015-10-08T08:45:43Z","git_url":"git://github.com/rueian/Lesson-03-JavaScriptBestPratice-HW.git","ssh_url":"git@github.com:rueian/Lesson-03-JavaScriptBestPratice-HW.git","clone_url":"https://github.com/rueian/Lesson-03-JavaScriptBestPratice-HW.git","svn_url":"https://github.com/rueian/Lesson-03-JavaScriptBestPratice-HW","homepage":null,"size":137,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"MAP-NCU2015:homework","ref":"homework","sha":"f5793106932580f974907d375e4765576fc923f4","user":{"login":"MAP-NCU2015","id":14105726,"avatar_url":"https://avatars.githubusercontent.com/u/14105726?v=3","gravatar_id":"","url":"https://api.github.com/users/MAP-NCU2015","html_url":"https://github.com/MAP-NCU2015","followers_url":"https://api.github.com/users/MAP-NCU2015/followers","following_url":"https://api.github.com/users/MAP-NCU2015/following{/other_user}","gists_url":"https://api.github.com/users/MAP-NCU2015/gists{/gist_id}","starred_url":"https://api.github.com/users/MAP-NCU2015/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MAP-NCU2015/subscriptions","organizations_url":"https://api.github.com/users/MAP-NCU2015/orgs","repos_url":"https://api.github.com/users/MAP-NCU2015/repos","events_url":"https://api.github.com/users/MAP-NCU2015/events{/privacy}","received_events_url":"https://api.github.com/users/MAP-NCU2015/received_events","type":"Organization","site_admin":false},"repo":{"id":42401840,"name":"Lesson-03-JavaScriptBestPratice-HW","full_name":"MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW","owner":{"login":"MAP-NCU2015","id":14105726,"avatar_url":"https://avatars.githubusercontent.com/u/14105726?v=3","gravatar_id":"","url":"https://api.github.com/users/MAP-NCU2015","html_url":"https://github.com/MAP-NCU2015","followers_url":"https://api.github.com/users/MAP-NCU2015/followers","following_url":"https://api.github.com/users/MAP-NCU2015/following{/other_user}","gists_url":"https://api.github.com/users/MAP-NCU2015/gists{/gist_id}","starred_url":"https://api.github.com/users/MAP-NCU2015/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MAP-NCU2015/subscriptions","organizations_url":"https://api.github.com/users/MAP-NCU2015/orgs","repos_url":"https://api.github.com/users/MAP-NCU2015/repos","events_url":"https://api.github.com/users/MAP-NCU2015/events{/privacy}","received_events_url":"https://api.github.com/users/MAP-NCU2015/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW","description":"Homework","fork":false,"url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW","forks_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/forks","keys_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/teams","hooks_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/hooks","issue_events_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues/events{/number}","events_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/events","assignees_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/assignees{/user}","branches_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/branches{/branch}","tags_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/tags","blobs_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/git/refs{/sha}","trees_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/statuses/{sha}","languages_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/languages","stargazers_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/stargazers","contributors_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/contributors","subscribers_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/subscribers","subscription_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/subscription","commits_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/commits{/sha}","git_commits_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/git/commits{/sha}","comments_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/comments{/number}","issue_comment_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues/comments{/number}","contents_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/contents/{+path}","compare_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/merges","archive_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/downloads","issues_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues{/number}","pulls_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls{/number}","milestones_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/milestones{/number}","notifications_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/labels{/name}","releases_url":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/releases{/id}","created_at":"2015-09-13T15:48:05Z","updated_at":"2015-09-27T15:29:42Z","pushed_at":"2015-11-12T11:23:29Z","git_url":"git://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW.git","ssh_url":"git@github.com:MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW.git","clone_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW.git","svn_url":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW","homepage":null,"size":863,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":57,"mirror_url":null,"open_issues_count":45,"forks":57,"open_issues":45,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6"},"html":{"href":"https://github.com/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pull/6"},"issue":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues/6"},"comments":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/issues/6/comments"},"review_comments":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6/comments"},"review_comment":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/pulls/6/commits"},"statuses":{"href":"https://api.github.com/repos/MAP-NCU2015/Lesson-03-JavaScriptBestPratice-HW/statuses/b5759c56e307b00698e32136e1fc22998aa05ccf"}}}}