)]}'
{"openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.js":[{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"793d83b1eeec0f52139394923a52e50c52a64202","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return;"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":"      swiftAPI.getContainer(container.name).then("},{"line_number":122,"context_line":"        function (response) {"},{"line_number":123,"context_line":"          // copy the additional detail into the container"},{"line_number":124,"context_line":"          angular.extend(container, response.data);"},{"line_number":125,"context_line":""}],"source_content_type":"text/javascript","patch_set":52,"id":"3afc51ec_0bc1f4e4","line":122,"updated":"2016-03-11 19:12:22.000000000","message":"Name this function for better debugging.","commit_id":"b91a9660836a6f3d9ff609104d0a213b493518d3"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"c05746f9721008bac43c549f581df46b81f11015","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return;"},{"line_number":120,"context_line":"      }"},{"line_number":121,"context_line":"      swiftAPI.getContainer(container.name).then("},{"line_number":122,"context_line":"        function (response) {"},{"line_number":123,"context_line":"          // copy the additional detail into the container"},{"line_number":124,"context_line":"          angular.extend(container, response.data);"},{"line_number":125,"context_line":""}],"source_content_type":"text/javascript","patch_set":52,"id":"3afc51ec_da0350b7","line":122,"in_reply_to":"3afc51ec_0bc1f4e4","updated":"2016-03-11 20:56:35.000000000","message":"Done","commit_id":"b91a9660836a6f3d9ff609104d0a213b493518d3"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-row-actions.service.js":[{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":82,"context_line":"      perform: function perform(container) {"},{"line_number":83,"context_line":"        var options \u003d {"},{"line_number":84,"context_line":"          title: \u0027Confirm Delete\u0027,"},{"line_number":85,"context_line":"          body: \u0027Are you sure you want to delete this container?\u0027,"},{"line_number":86,"context_line":"          submit: \u0027Yes\u0027,"},{"line_number":87,"context_line":"          cancel: \u0027No\u0027"},{"line_number":88,"context_line":"        };"}],"source_content_type":"text/javascript","patch_set":20,"id":"9a68dd71_1d292c9e","line":85,"updated":"2016-01-25 13:12:38.000000000","message":"It needs gettext.","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers.controller.js":[{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"fdf0af782159b0d56f75545eab2bddfdc5a8f4ee","unresolved":false,"context_lines":[{"line_number":53,"context_line":"      ctrl.model.fetchContainerDetail(container);"},{"line_number":54,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":55,"context_line":"      $location.path(ctrl.containerRoute + container.name);"},{"line_number":56,"context_line":"    };"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.toggleAccess \u003d toggleAccess;"},{"line_number":59,"context_line":"    ctrl.deleteContainer \u003d deleteContainer;"}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_88d3945f","line":56,"updated":"2016-02-24 00:59:37.000000000","message":"I guess perhaps this could be refactored into the registry later, but wondering how well we\u0027ll be able to reuse these actions in search...  \n\nThis UI overall will be the preferred way to navigate swift, but searching to find within this / in search panel we\u0027ll need to think about.","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"57ced4b5a8fef1ee00afb7cf9b56e3c7aca9045e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"      ctrl.model.fetchContainerDetail(container);"},{"line_number":54,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":55,"context_line":"      $location.path(ctrl.containerRoute + container.name);"},{"line_number":56,"context_line":"    };"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.toggleAccess \u003d toggleAccess;"},{"line_number":59,"context_line":"    ctrl.deleteContainer \u003d deleteContainer;"}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_2fcdf55d","line":56,"in_reply_to":"bae84128_88d3945f","updated":"2016-02-24 20:26:13.000000000","message":"Yep, I\u0027ll be looking into the registry once that settles down.","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"fdf0af782159b0d56f75545eab2bddfdc5a8f4ee","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    ctrl.createContainer \u003d createContainer;"},{"line_number":62,"context_line":"    ctrl.createContainerAction \u003d createContainerAction;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    //////////"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    function toggleAccess(container) {"},{"line_number":67,"context_line":"      swiftAPI.setContainerAccess(container.name, container.is_public).then("}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_c8a47c09","line":64,"updated":"2016-02-24 00:59:37.000000000","message":"There are no checks for allowed: e.g. There are no checks for allowed across these actions: \nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/project/containers/tables.py#L176","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"57ced4b5a8fef1ee00afb7cf9b56e3c7aca9045e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    ctrl.createContainer \u003d createContainer;"},{"line_number":62,"context_line":"    ctrl.createContainerAction \u003d createContainerAction;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    //////////"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    function toggleAccess(container) {"},{"line_number":67,"context_line":"      swiftAPI.setContainerAccess(container.name, container.is_public).then("}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_7d1690f2","line":64,"in_reply_to":"bae84128_c8a47c09","updated":"2016-02-24 20:26:13.000000000","message":"There are no allowed checks for container manipulation.","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"fdf0af782159b0d56f75545eab2bddfdc5a8f4ee","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    ctrl.createContainerAction \u003d createContainerAction;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    //////////"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    function toggleAccess(container) {"},{"line_number":67,"context_line":"      swiftAPI.setContainerAccess(container.name, container.is_public).then("},{"line_number":68,"context_line":"        function updated() {"}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_a56fa1fa","line":65,"updated":"2016-02-24 00:59:37.000000000","message":"Where are the policies?","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"57ced4b5a8fef1ee00afb7cf9b56e3c7aca9045e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    ctrl.createContainerAction \u003d createContainerAction;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    //////////"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    function toggleAccess(container) {"},{"line_number":67,"context_line":"      swiftAPI.setContainerAccess(container.name, container.is_public).then("},{"line_number":68,"context_line":"        function updated() {"}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_1ddca445","line":65,"in_reply_to":"bae84128_a56fa1fa","updated":"2016-02-24 20:26:13.000000000","message":"There are no policies for swift.","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"fdf0af782159b0d56f75545eab2bddfdc5a8f4ee","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    //////////"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    function toggleAccess(container) {"},{"line_number":67,"context_line":"      swiftAPI.setContainerAccess(container.name, container.is_public).then("},{"line_number":68,"context_line":"        function updated() {"},{"line_number":69,"context_line":"          var access \u003d \u0027private\u0027;"},{"line_number":70,"context_line":"          if (container.is_public) {"}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_45e5f5a5","line":67,"updated":"2016-02-24 00:59:37.000000000","message":"What happens if I toggle and it fails. Do you toggle it back?","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"57ced4b5a8fef1ee00afb7cf9b56e3c7aca9045e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    //////////"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    function toggleAccess(container) {"},{"line_number":67,"context_line":"      swiftAPI.setContainerAccess(container.name, container.is_public).then("},{"line_number":68,"context_line":"        function updated() {"},{"line_number":69,"context_line":"          var access \u003d \u0027private\u0027;"},{"line_number":70,"context_line":"          if (container.is_public) {"}],"source_content_type":"text/javascript","patch_set":36,"id":"bae84128_bd98181d","line":67,"in_reply_to":"bae84128_45e5f5a5","updated":"2016-02-24 20:26:13.000000000","message":"Have added an error handler to toggle back.","commit_id":"b5f31c9ab4a2125a98ae54399b16c6f48c640d5f"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"a8bc4f74d816fff2c5009f675deea1ed557d6697","unresolved":false,"context_lines":[{"line_number":54,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":55,"context_line":"      $location.path(ctrl.containerRoute + container.name);"},{"line_number":56,"context_line":"    };"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.toggleAccess \u003d toggleAccess;"},{"line_number":59,"context_line":"    ctrl.deleteContainer \u003d deleteContainer;"},{"line_number":60,"context_line":"    ctrl.deleteContainerAction \u003d deleteContainerAction;"}],"source_content_type":"text/javascript","patch_set":47,"id":"5aef4532_67c30b39","line":57,"updated":"2016-03-09 15:29:22.000000000","message":"Can you move these all into a container actions service and following the perform / allowed pattern (even if it is just nested functions inside each function below). Putting them in a controller is generally considered not good practice and we also have no opportunity to register them in the registry when they are trapped in a controller.\n\nWe really want a pattern where actions all return a promise on completion so that any view knows when they are complete. We\u0027ve started updating the image actions to follow that pattern:\n\nhttps://review.openstack.org/#/c/290225","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"664475da0711d40f03e1d6a4cfcbba240793f51e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":55,"context_line":"      $location.path(ctrl.containerRoute + container.name);"},{"line_number":56,"context_line":"    };"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.toggleAccess \u003d toggleAccess;"},{"line_number":59,"context_line":"    ctrl.deleteContainer \u003d deleteContainer;"},{"line_number":60,"context_line":"    ctrl.deleteContainerAction \u003d deleteContainerAction;"}],"source_content_type":"text/javascript","patch_set":47,"id":"5aef4532_f81fba05","line":57,"in_reply_to":"5aef4532_67c30b39","updated":"2016-03-09 15:59:02.000000000","message":"BTW, I totally see that a lot of the code here is just binding the model to the result which is okay in the controller.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":55,"context_line":"      $location.path(ctrl.containerRoute + container.name);"},{"line_number":56,"context_line":"    };"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.toggleAccess \u003d toggleAccess;"},{"line_number":59,"context_line":"    ctrl.deleteContainer \u003d deleteContainer;"},{"line_number":60,"context_line":"    ctrl.deleteContainerAction \u003d deleteContainerAction;"}],"source_content_type":"text/javascript","patch_set":47,"id":"5aef4532_edefd684","line":57,"in_reply_to":"5aef4532_67c30b39","updated":"2016-03-10 03:08:15.000000000","message":"This pattern was chosen because nothing else outside of this controller invokes these actions. I will happily follow this up after M, but for now I\u0027d prefer not to make quite a large architectural change with such a short review timespan available.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"793d83b1eeec0f52139394923a52e50c52a64202","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    ctrl.containerRoute \u003d containerRoute;"},{"line_number":52,"context_line":"    ctrl.selectedContainer \u003d \u0027\u0027;"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    ctrl.selectContainer \u003d function (container) {"},{"line_number":55,"context_line":"      ctrl.model.fetchContainerDetail(container);"},{"line_number":56,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":57,"context_line":"      $location.path(ctrl.containerRoute + container.name);"}],"source_content_type":"text/javascript","patch_set":52,"id":"3afc51ec_cba70c4e","line":54,"updated":"2016-03-11 19:12:22.000000000","message":"Name this function.","commit_id":"b91a9660836a6f3d9ff609104d0a213b493518d3"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"c05746f9721008bac43c549f581df46b81f11015","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    ctrl.containerRoute \u003d containerRoute;"},{"line_number":52,"context_line":"    ctrl.selectedContainer \u003d \u0027\u0027;"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    ctrl.selectContainer \u003d function (container) {"},{"line_number":55,"context_line":"      ctrl.model.fetchContainerDetail(container);"},{"line_number":56,"context_line":"      ctrl.selectedContainer \u003d container.name;"},{"line_number":57,"context_line":"      $location.path(ctrl.containerRoute + container.name);"}],"source_content_type":"text/javascript","patch_set":52,"id":"3afc51ec_9ae70812","line":54,"in_reply_to":"3afc51ec_cba70c4e","updated":"2016-03-11 20:56:35.000000000","message":"Done","commit_id":"b91a9660836a6f3d9ff609104d0a213b493518d3"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1488aee8472f75d92d658fd7eef24fca34c49816","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    function deleteContainer(container) {"},{"line_number":91,"context_line":"      var options \u003d {"},{"line_number":92,"context_line":"        title: gettext(\u0027Confirm Delete\u0027),"},{"line_number":93,"context_line":"        body: gettext(\u0027Are you sure you want to delete this container?\u0027),"},{"line_number":94,"context_line":"        submit: gettext(\u0027Yes\u0027),"},{"line_number":95,"context_line":"        cancel: gettext(\u0027No\u0027)"},{"line_number":96,"context_line":"      };"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_32552a50","line":93,"updated":"2016-03-12 17:38:22.000000000","message":"interpolating the container name would be nice.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b62def3350fa8f0f8effda6aad0fe5cb66d4433b","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    function deleteContainer(container) {"},{"line_number":91,"context_line":"      var options \u003d {"},{"line_number":92,"context_line":"        title: gettext(\u0027Confirm Delete\u0027),"},{"line_number":93,"context_line":"        body: gettext(\u0027Are you sure you want to delete this container?\u0027),"},{"line_number":94,"context_line":"        submit: gettext(\u0027Yes\u0027),"},{"line_number":95,"context_line":"        cancel: gettext(\u0027No\u0027)"},{"line_number":96,"context_line":"      };"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_4208af2c","line":93,"in_reply_to":"3afc51ec_32552a50","updated":"2016-03-14 18:27:21.000000000","message":"+1 here","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    function deleteContainer(container) {"},{"line_number":91,"context_line":"      var options \u003d {"},{"line_number":92,"context_line":"        title: gettext(\u0027Confirm Delete\u0027),"},{"line_number":93,"context_line":"        body: gettext(\u0027Are you sure you want to delete this container?\u0027),"},{"line_number":94,"context_line":"        submit: gettext(\u0027Yes\u0027),"},{"line_number":95,"context_line":"        cancel: gettext(\u0027No\u0027)"},{"line_number":96,"context_line":"      };"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_3f780d8f","line":93,"in_reply_to":"3afc51ec_4208af2c","updated":"2016-03-14 22:19:06.000000000","message":"Done","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b62def3350fa8f0f8effda6aad0fe5cb66d4433b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        cancel: gettext(\u0027No\u0027)"},{"line_number":96,"context_line":"      };"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"      simpleModalService.modal(options).result.then(function confirmed() {"},{"line_number":99,"context_line":"        return ctrl.deleteContainerAction(container);"},{"line_number":100,"context_line":"      });"},{"line_number":101,"context_line":"    }"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_35bb1b29","line":98,"updated":"2016-03-14 18:27:21.000000000","message":"Trying to self-educate myself here, not some complaint / suggestion... What is the purpose of giving a name to a one-liner function?","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"6eca42239c3313d641df1449ab30ebee689085c3","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        cancel: gettext(\u0027No\u0027)"},{"line_number":96,"context_line":"      };"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"      simpleModalService.modal(options).result.then(function confirmed() {"},{"line_number":99,"context_line":"        return ctrl.deleteContainerAction(container);"},{"line_number":100,"context_line":"      });"},{"line_number":101,"context_line":"    }"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_642a1380","line":98,"in_reply_to":"3afc51ec_35bb1b29","updated":"2016-03-14 18:49:45.000000000","message":"In debuggers, if this code is executed and is part of a stack trace, it\u0027s much easier to follow the code through.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"86046658fc0cf9867e4a29d1bad226b88098d9fb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        cancel: gettext(\u0027No\u0027)"},{"line_number":96,"context_line":"      };"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"      simpleModalService.modal(options).result.then(function confirmed() {"},{"line_number":99,"context_line":"        return ctrl.deleteContainerAction(container);"},{"line_number":100,"context_line":"      });"},{"line_number":101,"context_line":"    }"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_44fef737","line":98,"in_reply_to":"3afc51ec_642a1380","updated":"2016-03-14 19:05:55.000000000","message":"Thanks, got it!.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1488aee8472f75d92d658fd7eef24fca34c49816","unresolved":false,"context_lines":[{"line_number":110,"context_line":"          // remove the deleted container from the containers list"},{"line_number":111,"context_line":"          for (var i \u003d ctrl.model.containers.length - 1; i \u003e\u003d 0; i--) {"},{"line_number":112,"context_line":"            if (ctrl.model.containers[i].name \u003d\u003d\u003d container.name) {"},{"line_number":113,"context_line":"              ctrl.model.containers.splice(i, 1);"},{"line_number":114,"context_line":"            }"},{"line_number":115,"context_line":"          }"},{"line_number":116,"context_line":""}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_527556f7","line":113,"updated":"2016-03-12 17:38:22.000000000","message":"Would the container ever exist more than once in the list? I don\u0027t think so. API calls fail if the name already exists. It seems you could break out of this loop as soon as you find it. \n\nIf for some reason a container name can ever exist more than once in a list, then the html will fail because it tracks by container.name","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":110,"context_line":"          // remove the deleted container from the containers list"},{"line_number":111,"context_line":"          for (var i \u003d ctrl.model.containers.length - 1; i \u003e\u003d 0; i--) {"},{"line_number":112,"context_line":"            if (ctrl.model.containers[i].name \u003d\u003d\u003d container.name) {"},{"line_number":113,"context_line":"              ctrl.model.containers.splice(i, 1);"},{"line_number":114,"context_line":"            }"},{"line_number":115,"context_line":"          }"},{"line_number":116,"context_line":""}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_5f9cf9bf","line":113,"in_reply_to":"3afc51ec_527556f7","updated":"2016-03-14 22:19:06.000000000","message":"Done","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1488aee8472f75d92d658fd7eef24fca34c49816","unresolved":false,"context_lines":[{"line_number":138,"context_line":"          toastService.add(\u0027success\u0027, interpolate("},{"line_number":139,"context_line":"            gettext(\u0027Container %(name)s created.\u0027), {name: result.name}, true"},{"line_number":140,"context_line":"          ));"},{"line_number":141,"context_line":"          // generate a table row for with no contents"},{"line_number":142,"context_line":"          ctrl.model.containers.push({name: result.name, count: 0, bytes: 0});"},{"line_number":143,"context_line":"        }"},{"line_number":144,"context_line":"      );"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_f25aa282","line":141,"updated":"2016-03-12 17:38:22.000000000","message":"(would never -1 over this, but mentioning) \n\nfor with?  i think you can remove \"for\"","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":138,"context_line":"          toastService.add(\u0027success\u0027, interpolate("},{"line_number":139,"context_line":"            gettext(\u0027Container %(name)s created.\u0027), {name: result.name}, true"},{"line_number":140,"context_line":"          ));"},{"line_number":141,"context_line":"          // generate a table row for with no contents"},{"line_number":142,"context_line":"          ctrl.model.containers.push({name: result.name, count: 0, bytes: 0});"},{"line_number":143,"context_line":"        }"},{"line_number":144,"context_line":"      );"}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_9fa6810e","line":141,"in_reply_to":"3afc51ec_f25aa282","updated":"2016-03-14 22:19:06.000000000","message":"Done","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers.html":[{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"11ce58ab375ea4af6e75331b5464fe4bc3f3acd7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"              \u003cspan class\u003d\"hz-container-title truncate\" title\u003d\"{$ container.name $}\"\u003e"},{"line_number":20,"context_line":"                {$ container.name $}"},{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan class\u003d\"fa fa-trash hz-container-delete-icon\""},{"line_number":23,"context_line":"                    ng-if\u003d\"container.name \u003d\u003d\u003d cc.selectedContainer\""},{"line_number":24,"context_line":"                    ng-click\u003d\"cc.deleteContainer(container); $event.stopPropagation()\"\u003e\u003c/span\u003e"},{"line_number":25,"context_line":"            \u003c/accordion-heading\u003e"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"            \u003cdiv ng-if\u003d\"!container.is_fetched\" class\u003d\"horizon-pending-bar container-pending-bar\"\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_7b33b114","line":24,"range":{"start_line":22,"start_character":14,"end_line":24,"end_character":94},"updated":"2016-03-09 13:32:20.000000000","message":"This is quite oddly aligned, gives no visual indicator of when its being hovered over, and also the actual \"click to delete\" area is much larger than the icon indicates.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan class\u003d\"fa fa-trash hz-container-delete-icon\""},{"line_number":23,"context_line":"                    ng-if\u003d\"container.name \u003d\u003d\u003d cc.selectedContainer\""},{"line_number":24,"context_line":"                    ng-click\u003d\"cc.deleteContainer(container); $event.stopPropagation()\"\u003e\u003c/span\u003e"},{"line_number":25,"context_line":"            \u003c/accordion-heading\u003e"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"            \u003cdiv ng-if\u003d\"!container.is_fetched\" class\u003d\"horizon-pending-bar container-pending-bar\"\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_6d56265d","line":24,"in_reply_to":"5aef4532_7b33b114","updated":"2016-03-10 03:08:15.000000000","message":"Diana\u0027s modified the CSS here to help fix alignment and also give a visual indication when the delete button is active.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"11ce58ab375ea4af6e75331b5464fe4bc3f3acd7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"              \u003cli ng-show\u003d\"container.public_url\"\u003e"},{"line_number":42,"context_line":"                \u003ca href\u003d\"{$ container.public_url $}\" target\u003d\"_blank\"\u003e"},{"line_number":43,"context_line":"                  \u003ctranslate\u003ePublic link\u003c/translate\u003e"},{"line_number":44,"context_line":"                  \u003cspan class\u003d\"fa fa-link\"\u003e\u003c/span\u003e"},{"line_number":45,"context_line":"                \u003c/a\u003e"},{"line_number":46,"context_line":"              \u003c/li\u003e"},{"line_number":47,"context_line":"            \u003c/ul\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_3b92c9f6","line":44,"range":{"start_line":44,"start_character":31,"end_line":44,"end_character":41},"updated":"2016-03-09 13:32:20.000000000","message":"This just looks plain odd. I really don\u0027t think this is needed. I spent longer looking at it and wondering why there was a glitch than it giving any kind of visual indication of the link.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"              \u003cli ng-show\u003d\"container.public_url\"\u003e"},{"line_number":42,"context_line":"                \u003ca href\u003d\"{$ container.public_url $}\" target\u003d\"_blank\"\u003e"},{"line_number":43,"context_line":"                  \u003ctranslate\u003ePublic link\u003c/translate\u003e"},{"line_number":44,"context_line":"                  \u003cspan class\u003d\"fa fa-link\"\u003e\u003c/span\u003e"},{"line_number":45,"context_line":"                \u003c/a\u003e"},{"line_number":46,"context_line":"              \u003c/li\u003e"},{"line_number":47,"context_line":"            \u003c/ul\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_4d536a6b","line":44,"in_reply_to":"5aef4532_3b92c9f6","updated":"2016-03-10 03:08:15.000000000","message":"Removed.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"e4cbcbdd4f991b0c61cfe71743c3fdf35d282819","unresolved":false,"context_lines":[{"line_number":16,"context_line":"                           ng-class\u003d\"{\u0027panel-primary\u0027: container.name \u003d\u003d\u003d cc.selectedContainer}\"\u003e"},{"line_number":17,"context_line":"            \u003caccordion-heading\u003e"},{"line_number":18,"context_line":"             \u003cdiv ng-click\u003d\"cc.selectContainer(container)\"\u003e"},{"line_number":19,"context_line":"              \u003cspan class\u003d\"hz-container-title truncate\" title\u003d\"{$ container.name $}\"\u003e"},{"line_number":20,"context_line":"                {$ container.name $}"},{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan title\u003d\"{$ \u0027Delete Container\u0027 | translate $}\""}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_647df3e6","line":19,"updated":"2016-03-14 19:04:10.000000000","message":"If we make the same change below, we should make it here as well, so things are consistent. :)","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":16,"context_line":"                           ng-class\u003d\"{\u0027panel-primary\u0027: container.name \u003d\u003d\u003d cc.selectedContainer}\"\u003e"},{"line_number":17,"context_line":"            \u003caccordion-heading\u003e"},{"line_number":18,"context_line":"             \u003cdiv ng-click\u003d\"cc.selectContainer(container)\"\u003e"},{"line_number":19,"context_line":"              \u003cspan class\u003d\"hz-container-title truncate\" title\u003d\"{$ container.name $}\"\u003e"},{"line_number":20,"context_line":"                {$ container.name $}"},{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan title\u003d\"{$ \u0027Delete Container\u0027 | translate $}\""}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_9ff4c1f2","line":19,"in_reply_to":"3afc51ec_647df3e6","updated":"2016-03-14 22:19:06.000000000","message":"Done, but with an additional popup delay.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1488aee8472f75d92d658fd7eef24fca34c49816","unresolved":false,"context_lines":[{"line_number":19,"context_line":"              \u003cspan class\u003d\"hz-container-title truncate\" title\u003d\"{$ container.name $}\"\u003e"},{"line_number":20,"context_line":"                {$ container.name $}"},{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan title\u003d\"{$ \u0027Delete Container\u0027 | translate $}\""},{"line_number":23,"context_line":"                    class\u003d\"fa fa-trash hz-container-delete-icon\""},{"line_number":24,"context_line":"                    ng-if\u003d\"container.name \u003d\u003d\u003d cc.selectedContainer\""},{"line_number":25,"context_line":"                    ng-click\u003d\"cc.deleteContainer(container); $event.stopPropagation()\"\u003e\u003c/span\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_f2e8e27e","line":22,"updated":"2016-03-12 17:38:22.000000000","message":"Non-blocker.\n\nThoughts on using a popover?  They look a little nicer IMO. I don\u0027t know what our style czar would say about it, but I do like their look in NG Launch Instance.  \n\ne.g.\n\npopover\u003d\"Delete Container\" popover-placement\u003d\"top\" popover-append-to-body\u003d\"true\" popover-trigger\u003d\"mouseenter mouseleave\"\n\nProbably would also do a delay.\n\nI actually think this little chuck of code (delete icon) would be really nice common directive.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":19,"context_line":"              \u003cspan class\u003d\"hz-container-title truncate\" title\u003d\"{$ container.name $}\"\u003e"},{"line_number":20,"context_line":"                {$ container.name $}"},{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan title\u003d\"{$ \u0027Delete Container\u0027 | translate $}\""},{"line_number":23,"context_line":"                    class\u003d\"fa fa-trash hz-container-delete-icon\""},{"line_number":24,"context_line":"                    ng-if\u003d\"container.name \u003d\u003d\u003d cc.selectedContainer\""},{"line_number":25,"context_line":"                    ng-click\u003d\"cc.deleteContainer(container); $event.stopPropagation()\"\u003e\u003c/span\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_7ff735f5","line":22,"in_reply_to":"3afc51ec_09d08a1e","updated":"2016-03-14 22:19:06.000000000","message":"Done, though with just triggering on \"mouseenter\" so it\u0027s less buggy.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"4034cb4e5cfd35558e1d96df3c9ef09f9b9b2bf7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"              \u003cspan class\u003d\"hz-container-title truncate\" title\u003d\"{$ container.name $}\"\u003e"},{"line_number":20,"context_line":"                {$ container.name $}"},{"line_number":21,"context_line":"              \u003c/span\u003e"},{"line_number":22,"context_line":"              \u003cspan title\u003d\"{$ \u0027Delete Container\u0027 | translate $}\""},{"line_number":23,"context_line":"                    class\u003d\"fa fa-trash hz-container-delete-icon\""},{"line_number":24,"context_line":"                    ng-if\u003d\"container.name \u003d\u003d\u003d cc.selectedContainer\""},{"line_number":25,"context_line":"                    ng-click\u003d\"cc.deleteContainer(container); $event.stopPropagation()\"\u003e\u003c/span\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_09d08a1e","line":22,"in_reply_to":"3afc51ec_f2e8e27e","updated":"2016-03-14 18:38:02.000000000","message":"Its nice to have styled tooltips :)\n\nThis should be a tooltip though, not a popover.  Popovers are designed to house a lot of content (hence the header and body), but a tooltip is used for something simple like this.\n\nThis seems to work nicely:\ntooltip\u003d\"{$ \u0027Delete Container\u0027 | translate $}\" tooltip-placement\u003d\"top\" tooltip-append-to-body\u003d\"true\" tooltip-trigger\u003d\"mouseenter mouseleave\"","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"2364c2f34ff56cd49e53654b22a89f30a5fc6c93","unresolved":false,"context_lines":[{"line_number":42,"context_line":"              \u003c/li\u003e"},{"line_number":43,"context_line":"              \u003cli class\u003d\"hz-object-timestamp row\"\u003e"},{"line_number":44,"context_line":"                \u003cspan class\u003d\"hz-object-label col-lg-7 col-md-12\" translate\u003eTimestamp\u003c/span\u003e"},{"line_number":45,"context_line":"                \u003cspan class\u003d\"hz-object-val col-lg-5 col-md-12\"\u003e{$container.timestamp | date$}\u003c/span\u003e"},{"line_number":46,"context_line":"              \u003c/li\u003e"},{"line_number":47,"context_line":"              \u003cli class\u003d\"hz-object-link row\"\u003e"},{"line_number":48,"context_line":"                \u003cdiv class\u003d\"themable-checkbox col-lg-7 col-md-12\"\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_aa36a54f","line":45,"updated":"2016-03-14 20:14:20.000000000","message":"Change label to Date Created? Unless we use a different filter that shows time too.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":42,"context_line":"              \u003c/li\u003e"},{"line_number":43,"context_line":"              \u003cli class\u003d\"hz-object-timestamp row\"\u003e"},{"line_number":44,"context_line":"                \u003cspan class\u003d\"hz-object-label col-lg-7 col-md-12\" translate\u003eTimestamp\u003c/span\u003e"},{"line_number":45,"context_line":"                \u003cspan class\u003d\"hz-object-val col-lg-5 col-md-12\"\u003e{$container.timestamp | date$}\u003c/span\u003e"},{"line_number":46,"context_line":"              \u003c/li\u003e"},{"line_number":47,"context_line":"              \u003cli class\u003d\"hz-object-link row\"\u003e"},{"line_number":48,"context_line":"                \u003cdiv class\u003d\"themable-checkbox col-lg-7 col-md-12\"\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_7f5e1577","line":45,"in_reply_to":"3afc51ec_aa36a54f","updated":"2016-03-14 22:19:06.000000000","message":"Done","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"2364c2f34ff56cd49e53654b22a89f30a5fc6c93","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                  \u003ca href\u003d\"{$ container.public_url $}\" target\u003d\"_blank\"\u003e"},{"line_number":56,"context_line":"                    \u003ctranslate\u003elink\u003c/translate\u003e"},{"line_number":57,"context_line":"                  \u003c/a\u003e"},{"line_number":58,"context_line":"                \u003c/span\u003e"},{"line_number":59,"context_line":"              \u003c/li\u003e"},{"line_number":60,"context_line":"            \u003c/ul\u003e"},{"line_number":61,"context_line":"          \u003c/accordion-group\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_aa5b4586","line":58,"updated":"2016-03-14 20:14:20.000000000","message":"suggestion: i think it should toggle and show \u0027N/A\u0027 or something. Otherwise just having,\n\n\n[checkbox] Public Access:\n\n\nlooks weird.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                  \u003ca href\u003d\"{$ container.public_url $}\" target\u003d\"_blank\"\u003e"},{"line_number":56,"context_line":"                    \u003ctranslate\u003elink\u003c/translate\u003e"},{"line_number":57,"context_line":"                  \u003c/a\u003e"},{"line_number":58,"context_line":"                \u003c/span\u003e"},{"line_number":59,"context_line":"              \u003c/li\u003e"},{"line_number":60,"context_line":"            \u003c/ul\u003e"},{"line_number":61,"context_line":"          \u003c/accordion-group\u003e"}],"source_content_type":"text/html","patch_set":53,"id":"3afc51ec_fff8654b","line":58,"in_reply_to":"3afc51ec_aa5b4586","updated":"2016-03-14 22:19:06.000000000","message":"Great idea. I went with \"disabled\" instead though.","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-container-controller.js":[{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" *    (c) Copyright 2015 Rackspace US, Inc"},{"line_number":3,"context_line":" *"},{"line_number":4,"context_line":" * Licensed under the Apache License, Version 2.0 (the \u0027License\u0027);"},{"line_number":5,"context_line":" * you may not use this file except in compliance with the License."}],"source_content_type":"text/javascript","patch_set":20,"id":"9a68dd71_1d7b6cc2","line":2,"updated":"2016-01-25 13:12:38.000000000","message":"2015 -\u003e 2016","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-container-modal.controller.js":[{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"2364c2f34ff56cd49e53654b22a89f30a5fc6c93","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" *    (c) Copyright 2015 Rackspace US, Inc"},{"line_number":3,"context_line":" *"},{"line_number":4,"context_line":" * Licensed under the Apache License, Version 2.0 (the \u0027License\u0027);"},{"line_number":5,"context_line":" * you may not use this file except in compliance with the License."}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_d0cd9e5e","line":2,"updated":"2016-03-14 20:14:20.000000000","message":"2016","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"3242b8d06317c4ef84d8e2791bff4e9754459072","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/*"},{"line_number":2,"context_line":" *    (c) Copyright 2015 Rackspace US, Inc"},{"line_number":3,"context_line":" *"},{"line_number":4,"context_line":" * Licensed under the Apache License, Version 2.0 (the \u0027License\u0027);"},{"line_number":5,"context_line":" * you may not use this file except in compliance with the License."}],"source_content_type":"text/javascript","patch_set":53,"id":"3afc51ec_9fa04145","line":2,"in_reply_to":"3afc51ec_d0cd9e5e","updated":"2016-03-14 22:19:06.000000000","message":"Done","commit_id":"2eca85e10978b77d4f765f8c735aae4c0a7bfc8b"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-container-modal.html":[{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":2,"context_line":"  \u003cdiv class\u003d\"modal-content ui-draggable\"\u003e"},{"line_number":3,"context_line":"    \u003cdiv class\u003d\"modal-header ui-draggable-handle\"\u003e"},{"line_number":4,"context_line":"      \u003ca href\u003d\"#\" class\u003d\"close\" ng-click\u003d\"$dismiss()\"\u003e×\u003c/a\u003e"},{"line_number":5,"context_line":"      \u003ch3 class\u003d\"modal-title\"\u003eCreate ContainerNG\u003c/h3\u003e"},{"line_number":6,"context_line":"    \u003c/div\u003e"},{"line_number":7,"context_line":"    \u003cdiv class\u003d\"modal-body clearfix\"\u003e"},{"line_number":8,"context_line":"      \u003cdiv class\u003d\"left\"\u003e"}],"source_content_type":"text/html","patch_set":20,"id":"9a68dd71_dd763405","line":5,"updated":"2016-01-25 13:12:38.000000000","message":"This need \"tranlate\".","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":9,"context_line":"      \u003cfieldset\u003e"},{"line_number":10,"context_line":"        \u003cinput id\u003d\"id_parent\" maxlength\u003d\"255\" name\u003d\"parent\" type\u003d\"hidden\"\u003e"},{"line_number":11,"context_line":"        \u003cdiv class\u003d\"form-group required\"\u003e"},{"line_number":12,"context_line":"          \u003clabel class\u003d\"control-label  required\" for\u003d\"id_name\"\u003eContainer Name\u003c/label\u003e"},{"line_number":13,"context_line":"          \u003cdiv class\u003d\" \"\u003e"},{"line_number":14,"context_line":"            \u003cinput class\u003d\"form-control\""},{"line_number":15,"context_line":"                   ng-model\u003d\"ctrl.model.name\""}],"source_content_type":"text/html","patch_set":20,"id":"9a68dd71_3ddaf0e8","line":12,"updated":"2016-01-25 13:12:38.000000000","message":"Ditto","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":22,"context_line":"          \u003c/div\u003e"},{"line_number":23,"context_line":"        \u003c/div\u003e"},{"line_number":24,"context_line":"        \u003cdiv class\u003d\"form-group required\"\u003e"},{"line_number":25,"context_line":"          \u003clabel class\u003d\"control-label  required\" for\u003d\"id_access\"\u003eContainer Access\u003c/label\u003e"},{"line_number":26,"context_line":"          \u003cdiv class\u003d\" \"\u003e"},{"line_number":27,"context_line":"            \u003cselect class\u003d\"form-control\""},{"line_number":28,"context_line":"                    name\u003d\"access\""}],"source_content_type":"text/html","patch_set":20,"id":"9a68dd71_1d8dacd5","line":25,"updated":"2016-01-25 13:12:38.000000000","message":"Ditto","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":27,"context_line":"            \u003cselect class\u003d\"form-control\""},{"line_number":28,"context_line":"                    name\u003d\"access\""},{"line_number":29,"context_line":"                    ng-model\u003d\"ctrl.model.access\"\u003e"},{"line_number":30,"context_line":"              \u003coption value\u003d\"private\"\u003ePrivate\u003c/option\u003e"},{"line_number":31,"context_line":"              \u003coption value\u003d\"public\"\u003ePublic\u003c/option\u003e"},{"line_number":32,"context_line":"            \u003c/select\u003e"},{"line_number":33,"context_line":"          \u003c/div\u003e"}],"source_content_type":"text/html","patch_set":20,"id":"9a68dd71_dd92b4f5","line":30,"updated":"2016-01-25 13:12:38.000000000","message":"Ditto","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6241e1866b1713091c842c6c7260ff65b1971514","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      \u003c/fieldset\u003e"},{"line_number":36,"context_line":"      \u003c/div\u003e"},{"line_number":37,"context_line":"      \u003cdiv class\u003d\"right\"\u003e"},{"line_number":38,"context_line":"        \u003ch3\u003eDescription:\u003c/h3\u003e"},{"line_number":39,"context_line":"        \u003cp\u003e"},{"line_number":40,"context_line":"          A container is a storage compartment for your data and provides a way"},{"line_number":41,"context_line":"          for you to organize your data. You can think of a container as a"}],"source_content_type":"text/html","patch_set":20,"id":"9a68dd71_dda95425","line":38,"updated":"2016-01-25 13:12:38.000000000","message":"Ditto","commit_id":"191e0bd9091061c7597fd9beebd1788d9b5ceaf3"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"3ef8a86242730cd3aa9133912521082d86c972fa","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      \u003cp\u003e"},{"line_number":35,"context_line":"        A container is a storage compartment for your data and provides a way"},{"line_number":36,"context_line":"        for you to organize your data. You can think of a container as a"},{"line_number":37,"context_line":"        folder in Windows ® or a directory in UNIX ®. The primary difference"},{"line_number":38,"context_line":"        between a container and these other file system concepts is that"},{"line_number":39,"context_line":"        containers cannot be nested. You can, however, create an unlimited"},{"line_number":40,"context_line":"        number of containers within your account. Data must be stored in a"}],"source_content_type":"text/html","patch_set":32,"id":"dae33548_b104504a","line":37,"updated":"2016-02-17 02:05:28.000000000","message":"Perhaps pep8 error is caused by R mark.","commit_id":"4b9cf184324df689274883d8857999c375022bc4"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"bf74d365adb7e1fd088fdff06330b9d45502cc06","unresolved":false,"context_lines":[{"line_number":11,"context_line":"      \u003cdiv class\u003d\"col-sm-6\"\u003e"},{"line_number":12,"context_line":"        \u003cfieldset\u003e"},{"line_number":13,"context_line":"          \u003cdiv class\u003d\"form-group required\"\u003e"},{"line_number":14,"context_line":"            \u003clabel class\u003d\"control-label required\" for\u003d\"id_name\" translate\u003eContainer Name\u003c/label\u003e"},{"line_number":15,"context_line":"            \u003cdiv\u003e"},{"line_number":16,"context_line":"              \u003cinput class\u003d\"form-control\" id\u003d\"id_name\" ng-model\u003d\"ctrl.model.name\" maxlength\u003d\"255\""},{"line_number":17,"context_line":"                     name\u003d\"name\" type\u003d\"text\" ng-required\u003d\"true\" pattern\u003d\"[^/]+\""}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_e5b28193","line":14,"updated":"2016-03-09 12:50:57.000000000","message":"\u003cspan class\u003d\"hz-icon-required fa fa-asterisk\"\u003e\u003c/span\u003e\n\nThe required icon :D","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"      \u003cdiv class\u003d\"col-sm-6\"\u003e"},{"line_number":12,"context_line":"        \u003cfieldset\u003e"},{"line_number":13,"context_line":"          \u003cdiv class\u003d\"form-group required\"\u003e"},{"line_number":14,"context_line":"            \u003clabel class\u003d\"control-label required\" for\u003d\"id_name\" translate\u003eContainer Name\u003c/label\u003e"},{"line_number":15,"context_line":"            \u003cdiv\u003e"},{"line_number":16,"context_line":"              \u003cinput class\u003d\"form-control\" id\u003d\"id_name\" ng-model\u003d\"ctrl.model.name\" maxlength\u003d\"255\""},{"line_number":17,"context_line":"                     name\u003d\"name\" type\u003d\"text\" ng-required\u003d\"true\" pattern\u003d\"[^/]+\""}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_adc2ee31","line":14,"in_reply_to":"5aef4532_e5b28193","updated":"2016-03-10 03:08:15.000000000","message":"Done","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"bf74d365adb7e1fd088fdff06330b9d45502cc06","unresolved":false,"context_lines":[{"line_number":17,"context_line":"                     name\u003d\"name\" type\u003d\"text\" ng-required\u003d\"true\" pattern\u003d\"[^/]+\""},{"line_number":18,"context_line":"                     placeholder\u003d\"{$ \u0027Required\u0027 | translate $}\"\u003e"},{"line_number":19,"context_line":"            \u003c/div\u003e"},{"line_number":20,"context_line":"            \u003cspan class\u003d\"text-danger\" ng-if\u003d\"containerForm.name.$error.pattern\"\u003e"},{"line_number":21,"context_line":"              Container name must not contain \"/\"."},{"line_number":22,"context_line":"            \u003c/span\u003e"},{"line_number":23,"context_line":"          \u003c/div\u003e"},{"line_number":24,"context_line":"          \u003cdiv class\u003d\"form-group\"\u003e"},{"line_number":25,"context_line":"            \u003clabel class\u003d\"control-label\" translate\u003eContainer Access\u003c/label\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_e52721c8","line":22,"range":{"start_line":20,"start_character":12,"end_line":22,"end_character":19},"updated":"2016-03-09 12:50:57.000000000","message":"I\u0027d quite like if we stuck to the existing markup for doing this, using help-block and the has-error class. See https://review.openstack.org/#/c/285084/17/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/details/details.html","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"            \u003c/div\u003e"},{"line_number":20,"context_line":"            \u003cspan class\u003d\"text-danger\" ng-if\u003d\"containerForm.name.$error.pattern\"\u003e"},{"line_number":21,"context_line":"              Container name must not contain \"/\"."},{"line_number":22,"context_line":"            \u003c/span\u003e"},{"line_number":23,"context_line":"          \u003c/div\u003e"},{"line_number":24,"context_line":"          \u003cdiv class\u003d\"form-group\"\u003e"},{"line_number":25,"context_line":"            \u003clabel class\u003d\"control-label\" translate\u003eContainer Access\u003c/label\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_6d4106a9","line":22,"in_reply_to":"5aef4532_e52721c8","updated":"2016-03-10 03:08:15.000000000","message":"Done","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"bf74d365adb7e1fd088fdff06330b9d45502cc06","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      \u003c/div\u003e"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      \u003cdiv class\u003d\"col-sm-6\" translate\u003e"},{"line_number":38,"context_line":"        \u003cdiv class\u003d\"h3\"\u003eDescription:\u003c/div\u003e"},{"line_number":39,"context_line":"        \u003cp\u003e"},{"line_number":40,"context_line":"          A container is a storage compartment for your data and provides a way"},{"line_number":41,"context_line":"          for you to organize your data. You can think of a container as a"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_85a29d49","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":42},"updated":"2016-03-09 12:50:57.000000000","message":"You can drop the header. It doesn\u0027t add anything.","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      \u003c/div\u003e"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      \u003cdiv class\u003d\"col-sm-6\" translate\u003e"},{"line_number":38,"context_line":"        \u003cdiv class\u003d\"h3\"\u003eDescription:\u003c/div\u003e"},{"line_number":39,"context_line":"        \u003cp\u003e"},{"line_number":40,"context_line":"          A container is a storage compartment for your data and provides a way"},{"line_number":41,"context_line":"          for you to organize your data. You can think of a container as a"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_4d3eca28","line":38,"in_reply_to":"5aef4532_85a29d49","updated":"2016-03-10 03:08:15.000000000","message":"Done","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"11ce58ab375ea4af6e75331b5464fe4bc3f3acd7","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            ng-click\u003d\"$close(ctrl.model)\""},{"line_number":64,"context_line":"            ng-disabled\u003d\"containerForm.$invalid\"\u003e"},{"line_number":65,"context_line":"      \u003cspan class\u003d\"fa fa-plus\"\u003e\u003c/span\u003e"},{"line_number":66,"context_line":"      \u003ctranslate\u003eContainer\u003c/translate\u003e"},{"line_number":67,"context_line":"    \u003c/button\u003e"},{"line_number":68,"context_line":"  \u003c/div\u003e"},{"line_number":69,"context_line":"\u003c/div\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_bbe539dd","line":66,"updated":"2016-03-09 13:32:20.000000000","message":"Shouldn\u0027t this be Create?","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"9d2db79a73cfcbeebe3e5dfc8dff9a85d7fa220e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            ng-click\u003d\"$close(ctrl.model)\""},{"line_number":64,"context_line":"            ng-disabled\u003d\"containerForm.$invalid\"\u003e"},{"line_number":65,"context_line":"      \u003cspan class\u003d\"fa fa-plus\"\u003e\u003c/span\u003e"},{"line_number":66,"context_line":"      \u003ctranslate\u003eContainer\u003c/translate\u003e"},{"line_number":67,"context_line":"    \u003c/button\u003e"},{"line_number":68,"context_line":"  \u003c/div\u003e"},{"line_number":69,"context_line":"\u003c/div\u003e"}],"source_content_type":"text/html","patch_set":47,"id":"5aef4532_ed1356b6","line":66,"in_reply_to":"5aef4532_bbe539dd","updated":"2016-03-10 03:08:15.000000000","message":"Done","commit_id":"43fc7998a91570558d5736a7ecfa30348045e5ed"}]}
