)]}'
{"horizon/static/framework/util/file/file-reader.service.js":[{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":28,"context_line":"   * @name horizon.framework.util.file.fileReaderService"},{"line_number":29,"context_line":"   * @description"},{"line_number":30,"context_line":"   * Service for reading file contents.  Used for processing client-side"},{"line_number":31,"context_line":"   * files, such as when loading a config file into launch instance."},{"line_number":32,"context_line":"   *"},{"line_number":33,"context_line":"   * readTextFile - reads a text file and returns a promise of its contents."},{"line_number":34,"context_line":"   */"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_ac82a350","line":31,"updated":"2015-12-01 22:21:37.000000000","message":"\"such as when loading\" sounds funky, maybe just \"such as loading\"","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"623b2cdb492bd89dd38460cfb6395e4c6369cb32","unresolved":false,"context_lines":[{"line_number":28,"context_line":"   * @name horizon.framework.util.file.fileReaderService"},{"line_number":29,"context_line":"   * @description"},{"line_number":30,"context_line":"   * Service for reading file contents.  Used for processing client-side"},{"line_number":31,"context_line":"   * files, such as when loading a config file into launch instance."},{"line_number":32,"context_line":"   *"},{"line_number":33,"context_line":"   * readTextFile - reads a text file and returns a promise of its contents."},{"line_number":34,"context_line":"   */"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_17ff38ab","line":31,"in_reply_to":"9a8ffd7b_ac82a350","updated":"2015-12-01 22:37:24.000000000","message":"Done","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      readTextFile: readTextFile"},{"line_number":38,"context_line":"    };"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    return service;"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    function readTextFile(file, fileReader) {"},{"line_number":43,"context_line":"      var reader \u003d fileReader || new FileReader();"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_ecbe6bfe","line":40,"updated":"2015-12-01 22:21:37.000000000","message":"optional nit: would be nice to have ///// to indicate separation of helper functions below","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"623b2cdb492bd89dd38460cfb6395e4c6369cb32","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      readTextFile: readTextFile"},{"line_number":38,"context_line":"    };"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    return service;"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    function readTextFile(file, fileReader) {"},{"line_number":43,"context_line":"      var reader \u003d fileReader || new FileReader();"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_77dd6441","line":40,"in_reply_to":"9a8ffd7b_ecbe6bfe","updated":"2015-12-01 22:37:24.000000000","message":"Done","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    function readTextFile(file, fileReader) {"},{"line_number":43,"context_line":"      var reader \u003d fileReader || new FileReader();"},{"line_number":44,"context_line":"      var deferred \u003d $q.defer();"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"      reader.onloadend \u003d function loadEnd(e) {"},{"line_number":47,"context_line":"        var charArray \u003d new Uint8Array(e.target.result);"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_4c9f7750","line":44,"updated":"2015-12-01 22:21:37.000000000","message":"styling nit, cleaner to reorg as and does not break flow when reading:\n\n  var reader \u003d fileReader || new FileReader();\n  var deferred \u003d $q.defer();\n  reader.onloadend \u003d loadEnd;\n  reader.readAsArrayBuffer(file.slice(0, file.size));\n  return deferred.promise;\n\n  function loadEnd(){.....}","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"623b2cdb492bd89dd38460cfb6395e4c6369cb32","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    function readTextFile(file, fileReader) {"},{"line_number":43,"context_line":"      var reader \u003d fileReader || new FileReader();"},{"line_number":44,"context_line":"      var deferred \u003d $q.defer();"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"      reader.onloadend \u003d function loadEnd(e) {"},{"line_number":47,"context_line":"        var charArray \u003d new Uint8Array(e.target.result);"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_37cfdc80","line":44,"in_reply_to":"9a8ffd7b_4c9f7750","updated":"2015-12-01 22:37:24.000000000","message":"Done","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        var charArray \u003d new Uint8Array(e.target.result);"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        var textContent \u003d [].map.call(charArray,"},{"line_number":50,"context_line":"          function strFromCharCode(char) {"},{"line_number":51,"context_line":"            return String.fromCharCode(char);"},{"line_number":52,"context_line":"          }"},{"line_number":53,"context_line":"        ).join(\u0027\u0027);"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_8c123f08","line":50,"updated":"2015-12-01 22:21:37.000000000","message":"is it possible to just pass in String.fromCharCode instead?","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"}],"horizon/static/framework/widgets/load-edit/load-edit.directive.js":[{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  loadEdit.$inject \u003d ["},{"line_number":38,"context_line":"    \u0027$timeout\u0027,"},{"line_number":39,"context_line":"    \u0027horizon.framework.widgets.basePath\u0027,"},{"line_number":40,"context_line":"    \u0027horizon.framework.util.file.file-reader\u0027"},{"line_number":41,"context_line":"  ];"},{"line_number":42,"context_line":""}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_498529ab","line":39,"updated":"2015-12-01 22:21:37.000000000","message":"no longer alphabetical","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"623b2cdb492bd89dd38460cfb6395e4c6369cb32","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  loadEdit.$inject \u003d ["},{"line_number":38,"context_line":"    \u0027$timeout\u0027,"},{"line_number":39,"context_line":"    \u0027horizon.framework.widgets.basePath\u0027,"},{"line_number":40,"context_line":"    \u0027horizon.framework.util.file.file-reader\u0027"},{"line_number":41,"context_line":"  ];"},{"line_number":42,"context_line":""}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_d792104b","line":39,"in_reply_to":"9a8ffd7b_498529ab","updated":"2015-12-01 22:37:24.000000000","message":"Done","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        var file \u003d event.originalEvent.target.files[0];"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if (file) {"},{"line_number":100,"context_line":"          fileReader.readTextFile(file).then(function updateTextArea(fileContents) {"},{"line_number":101,"context_line":"            $scope.textContent \u003d fileContents;"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_693b4dec","line":100,"updated":"2015-12-01 22:21:37.000000000","message":"can we break out the update function? its a pretty big chunk.","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"623b2cdb492bd89dd38460cfb6395e4c6369cb32","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        var file \u003d event.originalEvent.target.files[0];"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if (file) {"},{"line_number":100,"context_line":"          fileReader.readTextFile(file).then(function updateTextArea(fileContents) {"},{"line_number":101,"context_line":"            $scope.textContent \u003d fileContents;"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_b7042c7e","line":100,"in_reply_to":"9a8ffd7b_693b4dec","updated":"2015-12-01 22:37:24.000000000","message":"Done","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"02466eb29ca1114a299b2aeadd1ced19c96ece26","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":104,"context_line":"             * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":105,"context_line":"             */"},{"line_number":106,"context_line":"            $timeout(function () {"},{"line_number":107,"context_line":"              onTextareaChange();"},{"line_number":108,"context_line":"              $scope.scriptModified \u003d false;"},{"line_number":109,"context_line":"            }, 250, false);"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_0c196f79","line":106,"updated":"2015-12-01 22:21:37.000000000","message":"I know that we\u0027re not triggering global digest here because we\u0027re passing in the false param, but should avoid using timeout as much as possible. Refer to Kelly\u0027s comments in patch set 17.","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"623b2cdb492bd89dd38460cfb6395e4c6369cb32","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":104,"context_line":"             * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":105,"context_line":"             */"},{"line_number":106,"context_line":"            $timeout(function () {"},{"line_number":107,"context_line":"              onTextareaChange();"},{"line_number":108,"context_line":"              $scope.scriptModified \u003d false;"},{"line_number":109,"context_line":"            }, 250, false);"}],"source_content_type":"text/javascript","patch_set":19,"id":"9a8ffd7b_3727dc13","line":106,"in_reply_to":"9a8ffd7b_0c196f79","updated":"2015-12-01 22:37:24.000000000","message":"This patch originated from a need to fix coverage. While we can improve this, I\u0027d want to do this change separate from this patch.","commit_id":"07f5ee40587a98ba2ceb865f7582ebe696598d69"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"37aac25196e106d4f117564bf6b9e92d1ac9297f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        var file \u003d event.originalEvent.target.files[0];"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if (file) {"},{"line_number":100,"context_line":"          fileReader.readTextFile(file).then(updateTextArea);"},{"line_number":101,"context_line":"        }"},{"line_number":102,"context_line":"      }"},{"line_number":103,"context_line":""}],"source_content_type":"text/javascript","patch_set":24,"id":"fa69d971_6c2ba195","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":33},"updated":"2016-01-07 17:31:44.000000000","message":"nice modularization here.","commit_id":"76bbb483d37060ca99f82d5f0c4b9c7a40e3a7d5"}],"openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/configuration/fileReader.service.js":[{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"786ef5111362dff47b5a6b8062c4afc83041fc01","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"  angular"},{"line_number":20,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":21,"context_line":"    .factory(\u0027horizon.dashboard.project.workflow.launch-instance.fileReader\u0027,"},{"line_number":22,"context_line":"      fileReaderService);"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  fileReaderService.$inject \u003d [\u0027$q\u0027];"}],"source_content_type":"text/javascript","patch_set":17,"id":"9a8ffd7b_2187f013","line":21,"updated":"2015-11-30 16:56:30.000000000","message":"any reason we still have this in launch-instance as oppose to utils?","commit_id":"3233c7e4f68cbf960fc3f73da8ceba58657532fd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"26cf928f34442a9168a533e71fe9dac06a07ac6d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"  angular"},{"line_number":20,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":21,"context_line":"    .factory(\u0027horizon.dashboard.project.workflow.launch-instance.fileReader\u0027,"},{"line_number":22,"context_line":"      fileReaderService);"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  fileReaderService.$inject \u003d [\u0027$q\u0027];"}],"source_content_type":"text/javascript","patch_set":17,"id":"9a8ffd7b_a4e68e14","line":21,"in_reply_to":"9a8ffd7b_2187f013","updated":"2015-11-30 17:12:25.000000000","message":"I\u0027d be happy to move the fileReader to utils, if that makes sense to others.","commit_id":"3233c7e4f68cbf960fc3f73da8ceba58657532fd"}],"openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/configuration/load-edit.directive.js":[{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"1c10f4bd0e49c13b309fafcf34e18af43b06bb4b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        var file \u003d event.originalEvent.target.files[0];"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if (file) {"},{"line_number":98,"context_line":"          readFileContents.readFile(file).then(function(fileContents) {"},{"line_number":99,"context_line":"            $scope.textContent \u003d fileContents;"},{"line_number":100,"context_line":"            onTextareaChange();"},{"line_number":101,"context_line":"            // Focus the \u003ctextarea\u003e element after injecting the code into it."}],"source_content_type":"text/javascript","patch_set":3,"id":"3a29b11f_0d6c9706","line":98,"updated":"2015-10-22 14:07:24.000000000","message":"So much cleaner!!! :)","commit_id":"fc246578c26836abd47e142edd87a909dad9709b"},{"author":{"_account_id":15742,"name":"Paulo Ewerton Gomes Fragoso","email":"pauloewerton@lsd.ufcg.edu.br","username":"pauloewerton"},"change_message_id":"8de49d82d81ac5d37b4d19294e7bba75a24092c2","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        var file \u003d event.originalEvent.target.files[0];"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if (file) {"},{"line_number":98,"context_line":"          readFileContents.readFile(file).then(function(fileContents) {"},{"line_number":99,"context_line":"            $scope.textContent \u003d fileContents;"},{"line_number":100,"context_line":"            onTextareaChange();"},{"line_number":101,"context_line":"            // Focus the \u003ctextarea\u003e element after injecting the code into it."}],"source_content_type":"text/javascript","patch_set":5,"id":"3a29b11f_da1065ae","line":98,"updated":"2015-10-23 14:33:32.000000000","message":"nit: anonymous function","commit_id":"3bd5b45d4fc8e732d09a12c6c127aa93c468d784"},{"author":{"_account_id":17002,"name":"Coleman Beasley","email":"cbeasley@thoughtworks.com","username":"cbeasley"},"change_message_id":"dafde5a1b01ea874536cfef4fa06041690b1da39","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        var file \u003d event.originalEvent.target.files[0];"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if (file) {"},{"line_number":98,"context_line":"          readFileContents.readFile(file).then(function(fileContents) {"},{"line_number":99,"context_line":"            $scope.textContent \u003d fileContents;"},{"line_number":100,"context_line":"            onTextareaChange();"},{"line_number":101,"context_line":"            // Focus the \u003ctextarea\u003e element after injecting the code into it."}],"source_content_type":"text/javascript","patch_set":5,"id":"3a29b11f_3e3386f8","line":98,"in_reply_to":"3a29b11f_da1065ae","updated":"2015-10-23 17:25:50.000000000","message":"Done","commit_id":"3bd5b45d4fc8e732d09a12c6c127aa93c468d784"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"d431f113132074e5467b677232a0f48363f20401","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  loadEdit.$inject \u003d ["},{"line_number":36,"context_line":"    \u0027horizon.dashboard.project.workflow.launch-instance.basePath\u0027,"},{"line_number":37,"context_line":"    \u0027$timeout\u0027,"},{"line_number":38,"context_line":"    \u0027readFileContents\u0027"},{"line_number":39,"context_line":"  ];"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  function loadEdit(basePath, $timeout, readFileContents) {"}],"source_content_type":"text/javascript","patch_set":10,"id":"da85f559_71c3cb89","line":38,"updated":"2015-11-12 02:34:17.000000000","message":"Where is \u0027readFileContents\u0027 come from? Why does it not namespaced?","commit_id":"c79e968451b61c6c79e034f691a4808819405db1"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"b7943c7ac2b334ae98086a2bcaa5486d47bb005a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  loadEdit.$inject \u003d ["},{"line_number":36,"context_line":"    \u0027horizon.dashboard.project.workflow.launch-instance.basePath\u0027,"},{"line_number":37,"context_line":"    \u0027$timeout\u0027,"},{"line_number":38,"context_line":"    \u0027readFileContents\u0027"},{"line_number":39,"context_line":"  ];"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"  function loadEdit(basePath, $timeout, readFileContents) {"}],"source_content_type":"text/javascript","patch_set":10,"id":"da85f559_43c259ea","line":38,"in_reply_to":"da85f559_71c3cb89","updated":"2015-11-12 14:49:33.000000000","message":"Good catch, I\u0027ll rename the factory to use the long name.","commit_id":"c79e968451b61c6c79e034f691a4808819405db1"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"fc20377ce6ae1f8b4341cdcd63173d24d1661444","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  loadEdit.$inject \u003d ["},{"line_number":36,"context_line":"    \u0027horizon.dashboard.project.workflow.launch-instance.basePath\u0027,"},{"line_number":37,"context_line":"    \u0027$timeout\u0027,"},{"line_number":38,"context_line":"    \u0027horizon.dashboard.project.workflow.launch-instance.readFileContents\u0027"},{"line_number":39,"context_line":"  ];"},{"line_number":40,"context_line":""}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_9873a04d","line":37,"updated":"2015-11-16 17:56:54.000000000","message":"should be in alphabetical order.","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0047bac22be90fe2a2788a44ab08573323a6c354","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  loadEdit.$inject \u003d ["},{"line_number":36,"context_line":"    \u0027horizon.dashboard.project.workflow.launch-instance.basePath\u0027,"},{"line_number":37,"context_line":"    \u0027$timeout\u0027,"},{"line_number":38,"context_line":"    \u0027horizon.dashboard.project.workflow.launch-instance.readFileContents\u0027"},{"line_number":39,"context_line":"  ];"},{"line_number":40,"context_line":""}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_e49c4d5f","line":37,"in_reply_to":"ba8a016a_9873a04d","updated":"2015-11-17 17:15:43.000000000","message":"Done","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"05fedae80e06a0c4ec897ac6906f319572075146","unresolved":false,"context_lines":[{"line_number":113,"context_line":"          /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":114,"context_line":"           * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":115,"context_line":"           */"},{"line_number":116,"context_line":"          $timeout(function () {"},{"line_number":117,"context_line":"            onTextareaChange();"},{"line_number":118,"context_line":"            $scope.scriptModified \u003d false;"},{"line_number":119,"context_line":"          }, 250, false);"}],"source_content_type":"text/javascript","patch_set":13,"id":"ba8a016a_f335e6d9","side":"PARENT","line":116,"updated":"2015-11-17 20:40:35.000000000","message":"I don\u0027t understand why remove the $timeout here? I am wondering that will cause some difference on UX.","commit_id":"dd98eb55025ef87c6df1285030e8f8fcaa2809ce"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"c557d9bd86598090661fd1c448d84b13c3be1d34","unresolved":false,"context_lines":[{"line_number":113,"context_line":"          /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":114,"context_line":"           * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":115,"context_line":"           */"},{"line_number":116,"context_line":"          $timeout(function () {"},{"line_number":117,"context_line":"            onTextareaChange();"},{"line_number":118,"context_line":"            $scope.scriptModified \u003d false;"},{"line_number":119,"context_line":"          }, 250, false);"}],"source_content_type":"text/javascript","patch_set":13,"id":"ba8a016a_596f3392","side":"PARENT","line":116,"in_reply_to":"ba8a016a_f335e6d9","updated":"2015-11-17 21:30:05.000000000","message":"That is a good question; I\u0027ll check with the author.","commit_id":"dd98eb55025ef87c6df1285030e8f8fcaa2809ce"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"786ef5111362dff47b5a6b8062c4afc83041fc01","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":104,"context_line":"             * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":105,"context_line":"             */"},{"line_number":106,"context_line":"            $timeout(function () {"},{"line_number":107,"context_line":"              onTextareaChange();"},{"line_number":108,"context_line":"              $scope.scriptModified \u003d false;"},{"line_number":109,"context_line":"            }, 250, false);"}],"source_content_type":"text/javascript","patch_set":17,"id":"9a8ffd7b_a171a079","line":106,"updated":"2015-11-30 16:56:30.000000000","message":"can this be done without the timeout?","commit_id":"3233c7e4f68cbf960fc3f73da8ceba58657532fd"},{"author":{"_account_id":13785,"name":"Kelly Domico","email":"kelly.domico@hp.com","username":"kdomico"},"change_message_id":"17ee2c2325ec66a46aec8e0270b0d730a81035d5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":104,"context_line":"             * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":105,"context_line":"             */"},{"line_number":106,"context_line":"            $timeout(function () {"},{"line_number":107,"context_line":"              onTextareaChange();"},{"line_number":108,"context_line":"              $scope.scriptModified \u003d false;"},{"line_number":109,"context_line":"            }, 250, false);"}],"source_content_type":"text/javascript","patch_set":17,"id":"9a8ffd7b_886c7909","line":106,"in_reply_to":"9a8ffd7b_a171a079","updated":"2015-12-01 17:39:51.000000000","message":"I think this can be done without a timeout, especially since the length can be retrieved using file.size. Something like:\n\n$scope.scriptLength \u003d file.size;\n\n$scope.userInput[$scope.key] \u003d $scope.textContent;\n\n$scope.scriptModified \u003d false;","commit_id":"3233c7e4f68cbf960fc3f73da8ceba58657532fd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"26cf928f34442a9168a533e71fe9dac06a07ac6d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            /* Once the DOM manipulation is done, update the scriptLength, so that"},{"line_number":104,"context_line":"             * user knows the length of the script loaded into the \u003ctextarea\u003e."},{"line_number":105,"context_line":"             */"},{"line_number":106,"context_line":"            $timeout(function () {"},{"line_number":107,"context_line":"              onTextareaChange();"},{"line_number":108,"context_line":"              $scope.scriptModified \u003d false;"},{"line_number":109,"context_line":"            }, 250, false);"}],"source_content_type":"text/javascript","patch_set":17,"id":"9a8ffd7b_849b4a72","line":106,"in_reply_to":"9a8ffd7b_a171a079","updated":"2015-11-30 17:12:25.000000000","message":"That I don\u0027t know, I think this is a standard approach, esp. since this is a quarter-second delay.","commit_id":"3233c7e4f68cbf960fc3f73da8ceba58657532fd"},{"author":{"_account_id":13785,"name":"Kelly Domico","email":"kelly.domico@hp.com","username":"kdomico"},"change_message_id":"a919662a79c2a8dbd879eae586d6d7310a74b649","unresolved":false,"context_lines":[{"line_number":31,"context_line":"   * See configuration.html for example usage."},{"line_number":32,"context_line":"   */"},{"line_number":33,"context_line":"  angular"},{"line_number":34,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":35,"context_line":"    .directive(\u0027loadEdit\u0027, loadEdit);"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  loadEdit.$inject \u003d ["}],"source_content_type":"text/javascript","patch_set":18,"id":"9a8ffd7b_733586d9","line":34,"updated":"2015-12-01 17:41:34.000000000","message":"Should this also be moved under horizon.framework.util.file? Seems generic enough to be reused elsewhere","commit_id":"36a65d4c0cf687dc76883b5bf79086af40982117"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"1abfb93f6ede5405cb43d8f42de655276f14e95d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"   * See configuration.html for example usage."},{"line_number":32,"context_line":"   */"},{"line_number":33,"context_line":"  angular"},{"line_number":34,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":35,"context_line":"    .directive(\u0027loadEdit\u0027, loadEdit);"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  loadEdit.$inject \u003d ["}],"source_content_type":"text/javascript","patch_set":18,"id":"9a8ffd7b_d837aa4b","line":34,"in_reply_to":"9a8ffd7b_733586d9","updated":"2015-12-01 19:04:26.000000000","message":"Moved it to the horizon.framework.widgets modules","commit_id":"36a65d4c0cf687dc76883b5bf79086af40982117"}],"openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/configuration/load-edit.directive.spec.js":[{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0216399d0edf89c38ee8f35c8ec4ba06f03c5f25","unresolved":false,"context_lines":[{"line_number":1,"context_line":"(function() {"},{"line_number":2,"context_line":"  \u0027use strict\u0027;"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"  describe(\u0027load-edit directive\u0027, function () {"}],"source_content_type":"text/javascript","patch_set":3,"id":"3a29b11f_dbfdf2b1","line":1,"updated":"2015-10-22 15:19:25.000000000","message":"We need a copyright and license.","commit_id":"fc246578c26836abd47e142edd87a909dad9709b"}],"openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/configuration/read-file-contents.service.js":[{"author":{"_account_id":15742,"name":"Paulo Ewerton Gomes Fragoso","email":"pauloewerton@lsd.ufcg.edu.br","username":"pauloewerton"},"change_message_id":"6305863398ead887155e90667ebccaa77be3f199","unresolved":false,"context_lines":[{"line_number":31,"context_line":"      var reader \u003d fileReader || new FileReader();"},{"line_number":32,"context_line":"      var fileContentsPromise \u003d $q.defer();"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"      reader.onloadend \u003d function (e) {"},{"line_number":35,"context_line":"        var charArray \u003d new Uint8Array(e.target.result);"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        var textContent \u003d [].map.call(charArray,"}],"source_content_type":"text/javascript","patch_set":8,"id":"da85f559_81447874","line":34,"updated":"2015-11-09 13:44:11.000000000","message":"nit: I know this is just relocating the original code, but can you please name the two anonymous functions in this file? ;-)","commit_id":"9bf9af90583d854e1712266963bd7f8b20e9ee18"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"fc20377ce6ae1f8b4341cdcd63173d24d1661444","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"  angular"},{"line_number":18,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":19,"context_line":"    .factory(\u0027horizon.dashboard.project.workflow.launch-instance\u0027 +"},{"line_number":20,"context_line":"      \u0027.readFileContents\u0027, readFileContents);"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  readFileContents.$inject \u003d [\u0027$q\u0027];"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_9852c0dc","line":19,"updated":"2015-11-16 17:56:54.000000000","message":"should this be renamed to fileReader (or fileTextReader if all it does is read texts)? reading the file\u0027s content is the same as reading the file. furthermore, it probably belongs in util more than launch-instance module. I can see a reuse of this for other things in the future.","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0047bac22be90fe2a2788a44ab08573323a6c354","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"  angular"},{"line_number":18,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":19,"context_line":"    .factory(\u0027horizon.dashboard.project.workflow.launch-instance\u0027 +"},{"line_number":20,"context_line":"      \u0027.readFileContents\u0027, readFileContents);"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  readFileContents.$inject \u003d [\u0027$q\u0027];"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_248c9534","line":19,"in_reply_to":"ba8a016a_9852c0dc","updated":"2015-11-17 17:15:43.000000000","message":"Renamed to fileReader, with a function: readTextFile().","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"fc20377ce6ae1f8b4341cdcd63173d24d1661444","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  angular"},{"line_number":18,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":19,"context_line":"    .factory(\u0027horizon.dashboard.project.workflow.launch-instance\u0027 +"},{"line_number":20,"context_line":"      \u0027.readFileContents\u0027, readFileContents);"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  readFileContents.$inject \u003d [\u0027$q\u0027];"},{"line_number":23,"context_line":""}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_58877861","line":20,"updated":"2015-11-16 17:56:54.000000000","message":"might be better written as:\n\n  .factory(\u0027horizon.dashboard.project.workflow.launch-instance.readFileContents\u0027,\n    readFileContents);","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0047bac22be90fe2a2788a44ab08573323a6c354","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  angular"},{"line_number":18,"context_line":"    .module(\u0027horizon.dashboard.project.workflow.launch-instance\u0027)"},{"line_number":19,"context_line":"    .factory(\u0027horizon.dashboard.project.workflow.launch-instance\u0027 +"},{"line_number":20,"context_line":"      \u0027.readFileContents\u0027, readFileContents);"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  readFileContents.$inject \u003d [\u0027$q\u0027];"},{"line_number":23,"context_line":""}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_c4826900","line":20,"in_reply_to":"ba8a016a_58877861","updated":"2015-11-17 17:15:43.000000000","message":"rewritten","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"fc20377ce6ae1f8b4341cdcd63173d24d1661444","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      \u0027.readFileContents\u0027, readFileContents);"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  readFileContents.$inject \u003d [\u0027$q\u0027];"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  function readFileContents($q) {"},{"line_number":25,"context_line":"    var service \u003d {"},{"line_number":26,"context_line":"      readFile: readFile"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_78c83c75","line":23,"updated":"2015-11-16 17:56:54.000000000","message":"missing ng-doc. add description of what this service does and why it is needed.","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0047bac22be90fe2a2788a44ab08573323a6c354","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      \u0027.readFileContents\u0027, readFileContents);"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  readFileContents.$inject \u003d [\u0027$q\u0027];"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  function readFileContents($q) {"},{"line_number":25,"context_line":"    var service \u003d {"},{"line_number":26,"context_line":"      readFile: readFile"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_0464f11f","line":23,"in_reply_to":"ba8a016a_78c83c75","updated":"2015-11-17 17:15:43.000000000","message":"Done","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"fc20377ce6ae1f8b4341cdcd63173d24d1661444","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  function readFileContents($q) {"},{"line_number":25,"context_line":"    var service \u003d {"},{"line_number":26,"context_line":"      readFile: readFile"},{"line_number":27,"context_line":"    };"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    return service;"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_78f11ccd","line":26,"updated":"2015-11-16 17:56:54.000000000","message":"maybe just read, fileTextReader.read","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0047bac22be90fe2a2788a44ab08573323a6c354","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  function readFileContents($q) {"},{"line_number":25,"context_line":"    var service \u003d {"},{"line_number":26,"context_line":"      readFile: readFile"},{"line_number":27,"context_line":"    };"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    return service;"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_4477593a","line":26,"in_reply_to":"ba8a016a_78f11ccd","updated":"2015-11-17 17:15:43.000000000","message":"as above, this is now readTextFile().","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"fc20377ce6ae1f8b4341cdcd63173d24d1661444","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        var charArray \u003d new Uint8Array(e.target.result);"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        var textContent \u003d [].map.call(charArray,"},{"line_number":39,"context_line":"          function strFromCharCode(char) {"},{"line_number":40,"context_line":"            return String.fromCharCode(char);"},{"line_number":41,"context_line":"          }"},{"line_number":42,"context_line":"        ).join(\u0027\u0027);"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_5831b8a1","line":39,"updated":"2015-11-16 17:56:54.000000000","message":"pull this anonymous function out and give it a name.","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0047bac22be90fe2a2788a44ab08573323a6c354","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        var charArray \u003d new Uint8Array(e.target.result);"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        var textContent \u003d [].map.call(charArray,"},{"line_number":39,"context_line":"          function strFromCharCode(char) {"},{"line_number":40,"context_line":"            return String.fromCharCode(char);"},{"line_number":41,"context_line":"          }"},{"line_number":42,"context_line":"        ).join(\u0027\u0027);"}],"source_content_type":"text/javascript","patch_set":12,"id":"ba8a016a_e4ae8d97","line":39,"in_reply_to":"ba8a016a_5831b8a1","updated":"2015-11-17 17:15:43.000000000","message":"I disagree, this is actually *not* anonymous (\u0027strFromCharCode\u0027) so it shows up well in debugging.  I think it\u0027s fine to do this with small functions.","commit_id":"a68e09e7a0ea1217a3d5763931ed63cb94feddbd"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"05fedae80e06a0c4ec897ac6906f319572075146","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" * Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":" * you may not use this file except in compliance with the License."},{"line_number":4,"context_line":" * You may obtain a copy of the License at"}],"source_content_type":"text/javascript","patch_set":13,"id":"ba8a016a_38b26d95","line":1,"updated":"2015-11-17 20:40:35.000000000","message":"This file a refactored from a file which was created by HPE, please add the copyright here.","commit_id":"a181316c3518f4cc2d89b20db4d8d8eba03a9215"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"c557d9bd86598090661fd1c448d84b13c3be1d34","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" * Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":" * you may not use this file except in compliance with the License."},{"line_number":4,"context_line":" * You may obtain a copy of the License at"}],"source_content_type":"text/javascript","patch_set":13,"id":"ba8a016a_19520bde","line":1,"in_reply_to":"ba8a016a_38b26d95","updated":"2015-11-17 21:30:05.000000000","message":"Yep, will do!","commit_id":"a181316c3518f4cc2d89b20db4d8d8eba03a9215"}],"openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/configuration/readFileContents.service.js":[{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"0216399d0edf89c38ee8f35c8ec4ba06f03c5f25","unresolved":false,"context_lines":[{"line_number":1,"context_line":"(function() {"},{"line_number":2,"context_line":"  \u0027use strict\u0027;"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"  angular"}],"source_content_type":"text/javascript","patch_set":3,"id":"3a29b11f_7b2ffe3e","line":1,"updated":"2015-10-22 15:19:25.000000000","message":"Copyright and license.","commit_id":"fc246578c26836abd47e142edd87a909dad9709b"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"a417430af5d927ef3ae0f9771ca020214b9be71f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" * Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":" * you may not use this file except in compliance with the License."},{"line_number":4,"context_line":" * You may obtain a copy of the License at"}],"source_content_type":"text/javascript","patch_set":6,"id":"3a29b11f_439a1bc7","line":1,"updated":"2015-10-25 06:33:10.000000000","message":"Please add the original copyright for the code.","commit_id":"0ef98091083f86c66448cd1c3fbb46113d461996"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"43fd4ca400ef234bf5a33ae0dcbb85279c6704af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" * Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":" * you may not use this file except in compliance with the License."},{"line_number":4,"context_line":" * You may obtain a copy of the License at"}],"source_content_type":"text/javascript","patch_set":6,"id":"3a29b11f_91861d12","line":1,"in_reply_to":"3a29b11f_439a1bc7","updated":"2015-10-26 19:22:44.000000000","message":"The original file load-edit.directive.js does not seem to have any Copyright. \n\nTo whom should the copyright go to?","commit_id":"0ef98091083f86c66448cd1c3fbb46113d461996"}],"openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/configuration/readFileContents.service.spec.js":[{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"a417430af5d927ef3ae0f9771ca020214b9be71f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" * Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":" * you may not use this file except in compliance with the License."},{"line_number":4,"context_line":" * You may obtain a copy of the License at"}],"source_content_type":"text/javascript","patch_set":6,"id":"3a29b11f_43e8db16","line":1,"updated":"2015-10-25 06:33:10.000000000","message":"please add the original copyright.","commit_id":"0ef98091083f86c66448cd1c3fbb46113d461996"},{"author":{"_account_id":17013,"name":"Rajat Vig","email":"rajatv@thoughtworks.com","username":"rajatvig"},"change_message_id":"43fd4ca400ef234bf5a33ae0dcbb85279c6704af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" * Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":" * you may not use this file except in compliance with the License."},{"line_number":4,"context_line":" * You may obtain a copy of the License at"}],"source_content_type":"text/javascript","patch_set":6,"id":"3a29b11f_5179652e","line":1,"in_reply_to":"3a29b11f_43e8db16","updated":"2015-10-26 19:22:44.000000000","message":"This spec is new. To whom should the copyright go to?","commit_id":"0ef98091083f86c66448cd1c3fbb46113d461996"}]}
