)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"72b0350c_3b8353f4","updated":"2026-07-16 15:33:30.000000000","message":"Thanks for tackling this! The many/long-atomic-action layout is a real problem. I rendered the same task data on this patch vs master and hit three issues (see inline comments)","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"}],"rally/ui/templates/task/directive_widget.js":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":true,"context_lines":[{"line_number":116,"context_line":"      }"},{"line_number":117,"context_line":"      Chart._render(node, data_, chart, do_after)"},{"line_number":118,"context_line":"    },"},{"line_number":119,"context_line":"    histogram: function(node, data, opts) {"},{"line_number":120,"context_line":"      var chart \u003d nv.models.multiBarChart()"},{"line_number":121,"context_line":"        .reduceXTicks(true)"},{"line_number":122,"context_line":"        .showControls(false)"}],"source_content_type":"text/javascript","patch_set":1,"id":"6a07b519_92067bf0","line":119,"updated":"2026-07-16 15:33:30.000000000","message":"This signature omits `do_after` and line 133 calls `_render` without it, so the `Histogram:0` added at line 185 has no effect — see the comment there.","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":true,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"          var do_after \u003d null;"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"          if (attrs.widget in {StackedArea:0, Lines:0, Histogram:0}) {"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"            /* Hide widget if not enough data */"},{"line_number":188,"context_line":"            if (attrs.widget !\u003d\u003d \"Histogram\" \u0026\u0026 ((! data.length) || (data[0].length \u003c 1) || (data[0][1].length \u003c 2))) {"}],"source_content_type":"text/javascript","patch_set":1,"id":"0d71f84f_18da5525","line":185,"updated":"2026-07-16 15:33:30.000000000","message":"Adding `Histogram:0` here builds the `do_after` closure for histograms, but it is dead code: `Chart.histogram` (line 119) is `function(node, data, opts)` and calls `Chart._render(node, data, chart)` (line 133) without forwarding `do_after` — unlike `stack`/`lines`. So the histogram width logic added by this patch never runs; the histogram only gets resized as a side effect of the StackedArea `do_after` cross-chart loop (line 222). To actually drive it, `histogram` must accept and forward `do_after`.","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"                // 890 is chart width (set by CSS)"},{"line_number":208,"context_line":"                // Ensure minimum chart width of 400px for visibility"},{"line_number":209,"context_line":"                if (typeof y_axis_width \u003d\u003d\u003d \"number\" \u0026\u0026 y_axis_width \u003e 0) {"},{"line_number":210,"context_line":"                  var new_width \u003d (890 * 2) - y_axis_width;"},{"line_number":211,"context_line":"                  var min_chart_width \u003d 400;"},{"line_number":212,"context_line":"                  if (new_width \u003c min_chart_width) {"}],"source_content_type":"text/javascript","patch_set":1,"id":"754ae84d_68430299","line":209,"updated":"2026-07-16 15:33:30.000000000","message":"This is the core regression. The original guard was `width \u003e 890` - the resize only fired when the Y-axis labels were wide enough to overlap the chart box. Relaxing it to `y_axis_width \u003e 0` makes this block run for essentially every StackedArea/Lines/Histogram chart. For a normal narrow Y-axis (~50px), new_width \u003d 1780 - 50 \u003d 1730px, so ordinary charts get force-widened past the 890px column.\n\nVerified by rendering the same task data with this patch vs master: even the trivial 3-short-action case regresses - the Histogram is widened and overlaps the Pie in the Distribution row. Please keep a gate that only triggers on the real overlap condition, or scope this strictly to the atomic-details charts.","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                  if (new_width \u003c min_chart_width) {"},{"line_number":213,"context_line":"                    new_width \u003d min_chart_width;"},{"line_number":214,"context_line":"                  }"},{"line_number":215,"context_line":"                  if (new_width !\u003d\u003d 890 \u0026\u0026 new_width \u003e 0) {"},{"line_number":216,"context_line":"                    angular.element(node).css({width:new_width+\"px\"});"},{"line_number":217,"context_line":"                    chart.update();"},{"line_number":218,"context_line":""}],"source_content_type":"text/javascript","patch_set":1,"id":"8a5a9b4a_4f87b387","line":215,"updated":"2026-07-16 15:33:30.000000000","message":"`new_width !\u003d\u003d 890` only skips the single exact case where y_axis_width \u003d\u003d 890; it does not restore the original `\u003e 890` gating, so it does not prevent the over-widening described above.","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":true,"context_lines":[{"line_number":219,"context_line":"                    // Apply same width to all charts in atomic details tab"},{"line_number":220,"context_line":"                    var parent_element \u003d angular.element(node).parent();"},{"line_number":221,"context_line":"                    if (parent_element.hasClass(\"atomic-details-chart\")) {"},{"line_number":222,"context_line":"                      var all_charts \u003d document.querySelectorAll(\".atomic-details-chart svg\");"},{"line_number":223,"context_line":"                      for (var i \u003d 0; i \u003c all_charts.length; i++) {"},{"line_number":224,"context_line":"                        if (all_charts[i] !\u003d\u003d node) {"},{"line_number":225,"context_line":"                          angular.element(all_charts[i]).css({width:new_width+\"px\"});"}],"source_content_type":"text/javascript","patch_set":1,"id":"2cdcd8ea_315089b1","line":222,"updated":"2026-07-16 15:33:30.000000000","message":"`document.querySelectorAll` is document-wide: in a multi-scenario report it matches `.atomic-details-chart` svgs belonging to other scenarios still in the DOM and resizes them too. It also catches the Pie svg (which now carries this class) and force-sets its width, distorting it. And because both the StackedArea and (intended) Histogram do_after run this same loop, each computes its own new_width and overwrites the siblings - the final width is whichever ran last. Scope the query to the current scenario container (walk up from `node`) rather than `document`.","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"}],"rally/ui/templates/task/report.html":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d62496d12bbea4399c45daa44fbb2046b4ffd9cb","unresolved":true,"context_lines":[{"line_number":579,"context_line":"               data\u003d\"scenario.atomic.pie\""},{"line_number":580,"context_line":"               title\u003d\"Distribution\""},{"line_number":581,"context_line":"               title-class\u003d\"h3\""},{"line_number":582,"context_line":"               class\u003d\"atomic-details-chart\""},{"line_number":583,"context_line":"               style\u003d\"float:left; margin-top:15px\""},{"line_number":584,"context_line":"               ng-style\u003d\"compact_atomics() ? {width:\u002740%\u0027} : {}\"\u003e"},{"line_number":585,"context_line":"          \u003c/div\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"d345f1b1_b036e70e","line":582,"updated":"2026-07-16 15:33:30.000000000","message":"Giving the Pie the `atomic-details-chart` class means the cross-chart resize loop in directive_widget.js (line 222) also force-sets the Pie svg width, which can distort it. If the intent is only to keep the Distribution column aligned, a Pie probably should not be width-driven by the Y-axis heuristic.","commit_id":"a17aa45f97792e67f4599095289bd8f540bd415f"}]}
