Flame Chart
A page's main thread for 1.6 seconds as it loads and starts up, the way the browser's performance tools draw it: each task on top, the calls it made stacked below it, colored by what they do. The part of a task past 50 ms is striped red.
Reading a flame chart
A flame chart puts time across and the call stack down: every bar is a function or a browser activity, as long as it ran, sitting under the one that called it. Wide bars are where the time goes; tall stacks are deep calls; a gap between tasks is the page at rest. It is the main view of a browser's performance tools, and works for any nested, timed work: server traces, build steps, render passes.
Good for
- Profiles and traces: where the time goes
- Nested work over time: requests, jobs, builds
- Spotting long tasks and deep call stacks
Think twice when
- Totals per function: a sorted bar chart is clearer
- Thousands of tiny frames: aggregate first
Get the code.
Built with amCharts 5, a JavaScript library. The code includes your theme and renderer (canvas or SVG), but not the changes you make with the controls.
npm install @amcharts/amcharts5. See Getting started.
The same chart as a JSON config. Chart Maker reads and writes this format, the library's JSON parser turns it into a chart, and the <am5-chart> element puts it on a page with no code.How it reads:
"type" is the class to create and "settings" what you would pass to its new() in code; "properties" fill in its parts, lists such as series and axes or templates such as columns.template; "refs" holds objects used in more than one place ("#series-0" stands for the one named series-0); a string starting with "@" takes a value from another object, such as "@series.get('fill')".
A complete page. Save it as an .html file and open it in a browser.
Paste this into an AI coding assistant to build the chart from scratch. More in amCharts & AI.
// Create root element
// https://www.amcharts.com/docs/v5/getting-started/#Root_element
var root = am5.Root.new("chartdiv");
// Set themes
// https://www.amcharts.com/docs/v5/concepts/themes/
var responsive = am5themes_Responsive.new(root); // kept in a variable: a rule of its own is added below
root.setThemes([
am5themes_Animated.new(root),
responsive
]);
// ── Sample data: 1.6 seconds of a web page's main thread as it loads and starts up, like a recording in the
// browser's performance tools. Each frame is a function or a browser activity: when it started, when it ended, how
// deep in the call stack (0 is the task at the top) and its category ──
// A seeded random number generator (mulberry32): the same recording on every visit
function makeRandom(seed) {
return function() {
seed = seed + 0x6D2B79F5 | 0;
var t = Math.imul(seed ^ seed >>> 15, 1 | seed);
t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
return ((t ^ t >>> 14) >>> 0) / 4294967296;
};
}
var random = makeRandom(1600);
function pick(list) { return list[Math.floor(random() * list.length)]; }
var FUNCTIONS = ["bootstrap", "initApp", "render", "renderList", "renderRow", "createElement", "appendChild",
"setState", "reconcile", "commitRoot", "updateDOM", "fetchData", "parseJSON", "formatDate", "sortRows",
"filterItems", "mapItems", "measureText", "hydrate", "dispatch", "reduce", "notify", "emit", "(anonymous)"];
var frames = [];
// A frame and, inside it, its calls: they take part of its time, the rest is its own (self) time (worked out below)
function frame(name, category, start, end, depth, nest) {
var item = { name: name, category: category, start: start, end: end, depth: String(depth) };
frames.push(item);
var length = end - start;
if (nest && depth < 11 && length > 2) {
// its calls fill most of its time (70 to 95%), back to back with small gaps: its own work. A long frame makes
// more calls, so the stack narrows as it goes down, like icicles
var calls = length > 40 ? 2 + Math.floor(random() * 3) : 1 + Math.floor(random() * 2);
var busy = length * (0.7 + 0.25 * random());
var weights = [], total = 0;
for (var i = 0; i < calls; i++) { weights.push(0.3 + random()); total += weights[i]; }
var gap = (length - busy) / (calls + 1);
var at = start + gap;
weights.forEach(function(weight) {
var share = busy * weight / total;
frame(pick(FUNCTIONS), "Scripting", at, at + share, depth + 1, random() < 0.95 - depth * 0.05); // deeper calls nest a little less often
at += share + gap;
});
}
return item;
}
// One task of the main thread: a gray "Task" bar on top and the work it did below it, back to back
function task(start, work) {
var at = start;
var parts = [];
work.forEach(function(part) {
parts.push({ part: part, start: at });
at += part[2];
});
frame("Task", "Task", start, at, 0, false);
parts.forEach(function(p) {
frame(p.part[0], p.part[1], p.start, p.start + p.part[2], 1, p.part[1] === "Scripting");
});
return at;
}
var t = 4;
t = task(t, [["Parse HTML", "Loading", 9]]) + 3;
t = task(t, [["Evaluate Script", "Scripting", 34], ["Parse HTML", "Loading", 4]]) + 6;
t = task(t, [["Recalculate Style", "Rendering", 7], ["Layout", "Rendering", 11]]) + 4;
t = task(t, [["Paint", "Painting", 5], ["Commit", "Painting", 2]]) + 40;
t = task(t, [["Evaluate Script", "Scripting", 128], ["Minor GC", "Scripting", 3]]) + 5; // the app bundle: a long task
t = task(t, [["Recalculate Style", "Rendering", 14], ["Layout", "Rendering", 31]]) + 3;
t = task(t, [["Paint", "Painting", 9], ["Commit", "Painting", 3]]) + 60;
t = task(t, [["XHR Load", "Loading", 3], ["Function Call", "Scripting", 46]]) + 4;
t = task(t, [["Function Call", "Scripting", 212], ["Minor GC", "Scripting", 4]]) + 2; // rendering the list: the longest
t = task(t, [["Recalculate Style", "Rendering", 22], ["Layout", "Rendering", 64]]) + 3; // and its layout
t = task(t, [["Paint", "Painting", 18], ["Commit", "Painting", 4]]) + 90;
for (var i = 0; i < 8; i++) {
// then quieter: animation frames and timers
t = task(t, [[i % 3 === 2 ? "Timer Fired" : "Animation Frame Fired", "Scripting", 6 + 10 * random()],
["Recalculate Style", "Rendering", 1.5 + 2 * random()], ["Paint", "Painting", 1.5 + 2 * random()]]) + 30 + 50 * random();
}
t = task(t, [["Event: click", "Scripting", 74], ["Layout", "Rendering", 9]]) + 6;
t = task(t, [["Paint", "Painting", 6], ["Commit", "Painting", 2]]) + 20;
var END = Math.ceil(t / 50) * 50;
// Each frame's total time, and its own (self) time: the total less what the calls one row down inside it took.
// Rounded for the tooltips
frames.forEach(function(f) {
var calls = frames.filter(function(c) {
return c.depth === String(+f.depth + 1) && c.start >= f.start && c.end <= f.end;
});
var called = calls.reduce(function(sum, c) { return sum + c.end - c.start; }, 0);
f.duration = Math.round((f.end - f.start) * 10) / 10;
f.self = Math.round((f.end - f.start - called) * 10) / 10;
});
// A task over 50 ms blocks the page long enough for a user to notice: the part past 50 ms is a long task. The limit
// is a parameter, so it can be changed
function findLongTasks(limit) {
return frames.filter(function(f) { return f.depth === "0" && f.end - f.start > limit; }).map(function(f) {
return { name: "Long task", start: f.start + limit, end: f.end, depth: "0", over: Math.round(f.end - f.start - limit), limit: limit };
});
}
// Create chart
// https://www.amcharts.com/docs/v5/charts/xy-chart/
var chart = root.container.children.push(am5xy.XYChart.new(root, {
panX: true, // a drag pans along the time line...
panY: false,
wheelX: "panX", // ...and so does a sideways wheel
wheelY: "zoomX", // the wheel zooms in on the time
paddingRight: 30, // room for the last time label, which is centered on the plot's edge
layout: root.verticalLayout
}));
// Add legend: the categories
// https://www.amcharts.com/docs/v5/charts/xy-chart/legend-xy-series/
var legend = chart.children.unshift(am5.Legend.new(root, {
centerX: am5.p50,
x: am5.p50,
marginBottom: 10
}));
// Create axes
// https://www.amcharts.com/docs/v5/charts/xy-chart/axes/
// The time, in milliseconds, along the top, as in the browser's tools
var xRenderer = am5xy.AxisRendererX.new(root, {
opposite: true, // on top
minGridDistance: 70
});
xRenderer.grid.template.set("strokeOpacity", 0.06);
var xAxis = chart.xAxes.push(am5xy.ValueAxis.new(root, {
min: 0,
max: END,
strictMinMax: true,
numberFormat: "#,###' ms'",
renderer: xRenderer
}));
// The depth of the call stack, from the task at the top down: one row each, with no labels
var yRenderer = am5xy.AxisRendererY.new(root, {
inversed: true, // depth 0 at the top
cellStartLocation: 0.04, // the bars fill their rows, with a hairline between
cellEndLocation: 0.96,
minGridDistance: 1
});
yRenderer.labels.template.set("forceHidden", true);
yRenderer.grid.template.set("forceHidden", true);
var yAxis = chart.yAxes.push(am5xy.CategoryAxis.new(root, {
categoryField: "depth",
renderer: yRenderer
}));
// as many rows as the deepest stack needs
var deepest = Math.max.apply(null, frames.map(function(f) { return +f.depth; }));
var depths = [];
for (var d = 0; d <= deepest; d++) { depths.push({ depth: String(d) }); }
yAxis.data.setAll(depths);
// Create series
// https://www.amcharts.com/docs/v5/charts/xy-chart/series/
// One series per category, so the legend can show and hide each. A frame is a floating bar from its start to its end,
// on its row of the call stack, with its name inside it as far as it fits
function makeSeries(name, settings) {
var series = chart.series.push(am5xy.ColumnSeries.new(root, Object.assign({
name: name,
xAxis: xAxis,
yAxis: yAxis,
openValueXField: "start",
valueXField: "end",
categoryYField: "depth",
clustered: false // every series shares the rows
}, settings))); // plus the series' own settings, if any (the tasks' gray)
series.columns.template.setAll({
strokeOpacity: 0,
tooltipText: "[bold]{name}[/]\n{duration} ms, {self} ms self\n" + name,
tooltipY: 0
});
// the name inside the bar, cut short to the bar's width (a narrow bar shows none)
series.bullets.push(function() {
return am5.Bullet.new(root, {
locationX: 0, // at the bar's start
sprite: am5.Label.new(root, {
text: "{name}",
populateText: true,
centerY: am5.p50,
dx: 3,
fontSize: "0.75em",
oversizedBehavior: "truncate",
maxWidth: 0,
forceHidden: true, // shown once its bar's width is known (below)
interactive: false // the bar has the tooltip
})
});
});
series.columns.template.onPrivate("width", function(width, column) {
var bullet = column.dataItem && column.dataItem.bullets && column.dataItem.bullets[0];
if (bullet) {
var label = bullet.get("sprite");
label.set("maxWidth", Math.max(0, width - 6));
label.set("forceHidden", width < 40); // too narrow for more than an ellipsis
}
});
legend.data.push(series);
return series;
}
// The tasks: gray, the interface's contrast color faint, so they read as the frame for what runs in them
var gray = root.interfaceColors.get("alternativeBackground");
var taskSeries = makeSeries("Task", { fill: gray, stroke: gray });
taskSeries.columns.template.set("fillOpacity", 0.18);
taskSeries.data.setAll(frames.filter(function(f) { return f.category === "Task"; }));
// The work, in the theme's colors
["Loading", "Scripting", "Rendering", "Painting"].forEach(function(category) {
makeSeries(category).data.setAll(frames.filter(function(f) { return f.category === category; }));
});
// Long tasks: red stripes over the part of a task past 50 ms, as the browser's tools mark them
var red = root.interfaceColors.get("negative");
var longSeries = chart.series.push(am5xy.ColumnSeries.new(root, {
name: "Long task (over 50 ms)",
xAxis: xAxis,
yAxis: yAxis,
openValueXField: "start",
valueXField: "end",
categoryYField: "depth",
clustered: false,
fill: red,
stroke: red
}));
longSeries.columns.template.setAll({
strokeOpacity: 0,
fillOpacity: 0,
fillPattern: am5.LinePattern.new(root, {
color: red,
rotation: 45,
strokeWidth: 3,
gap: 6,
// the stripes on the chart's background, which covers the task's gray: the legend's swatch looks the same
fill: root.interfaceColors.get("background"),
fillOpacity: 1
}),
tooltipText: "[bold]Long task[/]\n{over} ms over the {limit} ms budget"
});
longSeries.data.setAll(findLongTasks(50));
legend.data.push(longSeries);
// On a narrow chart (a phone) the legend would take most of the height: it is hidden there. The rule is
// undone on a wider chart
responsive.addRule({
relevant: am5themes_Responsive.widthM, // the chart is 600px wide or less
applying: function() {
legend.set("forceHidden", true);
},
removing: function() {
legend.set("forceHidden", false);
}
});
// Add scrollbar under the plot
// https://www.amcharts.com/docs/v5/charts/xy-chart/scrollbars/
chart.set("scrollbarX", am5.Scrollbar.new(root, {
orientation: "horizontal",
opposite: true // under the plot (the time axis is on top)
}));
// Make stuff animate on load
// https://www.amcharts.com/docs/v5/concepts/animations/
chart.appear(1000, 100);
{
"type": "XYChart",
"settings": {
"panX": true,
"panY": false,
"wheelX": "panX",
"wheelY": "zoomX",
"paddingRight": 30,
"layout": {
"type": "VerticalLayout"
},
"scrollbarX": {
"type": "Scrollbar",
"settings": {
"orientation": "horizontal",
"opposite": true
}
}
},
"properties": {
"series": [
"#series-0",
"#series-1",
"#series-2",
"#series-3",
"#series-4",
"#series-5"
],
"xAxes": [
"#axis-0"
],
"yAxes": [
"#axis-1"
]
},
"children": [
{
"type": "Legend",
"settings": {
"centerX": {
"type": "Percent",
"value": 50
},
"x": {
"type": "Percent",
"value": 50
},
"marginBottom": 10
},
"properties": {
"data": [
"#series-0",
"#series-1",
"#series-2",
"#series-3",
"#series-4",
"#series-5"
]
},
"index": 0
}
],
"refs": [
{
"data-0": [
{
"name": "Task",
"category": "Task",
"start": 4,
"end": 13,
"depth": "0",
"duration": 9,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 16,
"end": 54,
"depth": "0",
"duration": 38,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 60,
"end": 78,
"depth": "0",
"duration": 18,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 82,
"end": 89,
"depth": "0",
"duration": 7,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 129,
"end": 260,
"depth": "0",
"duration": 131,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 265,
"end": 310,
"depth": "0",
"duration": 45,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 313,
"end": 325,
"depth": "0",
"duration": 12,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 385,
"end": 434,
"depth": "0",
"duration": 49,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 438,
"end": 654,
"depth": "0",
"duration": 216,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 656,
"end": 742,
"depth": "0",
"duration": 86,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 745,
"end": 767,
"depth": "0",
"duration": 22,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 857,
"end": 878.0845777606592,
"depth": "0",
"duration": 21.1,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 954.1115225604735,
"end": 970.6596714118496,
"depth": "0",
"duration": 16.5,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1032.1104770619422,
"end": 1048.125053129159,
"depth": "0",
"duration": 16,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1126.2173534226604,
"end": 1145.815262417309,
"depth": "0",
"duration": 19.6,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1182.3577564605512,
"end": 1197.779649014119,
"depth": "0",
"duration": 15.4,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1261.28842277918,
"end": 1281.281173826661,
"depth": "0",
"duration": 20,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1316.6653707264923,
"end": 1331.8480342249386,
"depth": "0",
"duration": 15.2,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1372.457761158701,
"end": 1385.243832807988,
"depth": "0",
"duration": 12.8,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1460.4252337771468,
"end": 1543.4252337771468,
"depth": "0",
"duration": 83,
"self": 0
},
{
"name": "Task",
"category": "Task",
"start": 1549.4252337771468,
"end": 1557.4252337771468,
"depth": "0",
"duration": 8,
"self": 0
}
]
},
{
"data-1": [
{
"name": "Parse HTML",
"category": "Loading",
"start": 4,
"end": 13,
"depth": "1",
"duration": 9,
"self": 9
},
{
"name": "Parse HTML",
"category": "Loading",
"start": 50,
"end": 54,
"depth": "1",
"duration": 4,
"self": 4
},
{
"name": "XHR Load",
"category": "Loading",
"start": 385,
"end": 388,
"depth": "1",
"duration": 3,
"self": 3
}
]
},
{
"data-2": [
{
"name": "Evaluate Script",
"category": "Scripting",
"start": 16,
"end": 50,
"depth": "1",
"duration": 34,
"self": 7.9
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 19.9291079098708,
"end": 46.0708920901292,
"depth": "2",
"duration": 26.1,
"self": 4.5
},
{
"name": "initApp",
"category": "Scripting",
"start": 21.424360854956262,
"end": 36.86866650151724,
"depth": "3",
"duration": 15.4,
"self": 2.2
},
{
"name": "mapItems",
"category": "Scripting",
"start": 22.172608648716945,
"end": 27.769267155227745,
"depth": "4",
"duration": 5.6,
"self": 0.5
},
{
"name": "fetchData",
"category": "Scripting",
"start": 22.424508767083406,
"end": 27.51736703686128,
"depth": "5",
"duration": 5.1,
"self": 0.9
},
{
"name": "reconcile",
"category": "Scripting",
"start": 22.89249098398089,
"end": 27.049384819963798,
"depth": "6",
"duration": 4.2,
"self": 1
},
{
"name": "createElement",
"category": "Scripting",
"start": 23.229987227207584,
"end": 24.417182895340698,
"depth": "7",
"duration": 1.2,
"self": 1.2
},
{
"name": "notify",
"category": "Scripting",
"start": 24.754679138567393,
"end": 26.711888576737106,
"depth": "7",
"duration": 2,
"self": 2
},
{
"name": "fetchData",
"category": "Scripting",
"start": 28.517514948988428,
"end": 36.120418707756556,
"depth": "4",
"duration": 7.6,
"self": 7.6
},
{
"name": "measureText",
"category": "Scripting",
"start": 38.36391944660271,
"end": 44.57563914504374,
"depth": "3",
"duration": 6.2,
"self": 0.7
},
{
"name": "sortRows",
"category": "Scripting",
"start": 38.59335943668348,
"end": 40.87095444572285,
"depth": "4",
"duration": 2.3,
"self": 2.3
},
{
"name": "sortRows",
"category": "Scripting",
"start": 41.10039443580362,
"end": 44.346199154962974,
"depth": "4",
"duration": 3.2,
"self": 1
},
{
"name": "filterItems",
"category": "Scripting",
"start": 41.41922509658222,
"end": 42.652592056704975,
"depth": "5",
"duration": 1.2,
"self": 1.2
},
{
"name": "sortRows",
"category": "Scripting",
"start": 42.97142271748356,
"end": 44.02736849418438,
"depth": "5",
"duration": 1.1,
"self": 1.1
},
{
"name": "Evaluate Script",
"category": "Scripting",
"start": 129,
"end": 257,
"depth": "1",
"duration": 128,
"self": 15.7
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 132.9288661520928,
"end": 167.20841528844628,
"depth": "2",
"duration": 34.3,
"self": 2
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 133.92384113794344,
"end": 166.21344030259564,
"depth": "3",
"duration": 32.3,
"self": 8.5
},
{
"name": "initApp",
"category": "Scripting",
"start": 136.76018147227424,
"end": 152.50469439403946,
"depth": "4",
"duration": 15.7,
"self": 4.6
},
{
"name": "reduce",
"category": "Scripting",
"start": 138.28388386514317,
"end": 144.0794190691388,
"depth": "5",
"duration": 5.8,
"self": 0.4
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 138.4914358924222,
"end": 143.87186704185976,
"depth": "6",
"duration": 5.4,
"self": 5.4
},
{
"name": "reduce",
"category": "Scripting",
"start": 145.60312146200775,
"end": 150.98099200117053,
"depth": "5",
"duration": 5.4,
"self": 0.6
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 145.87936599948978,
"end": 150.7047474636885,
"depth": "6",
"duration": 4.8,
"self": 4.8
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 155.3410347283703,
"end": 163.37709996826484,
"depth": "4",
"duration": 8,
"self": 1.3
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 155.98532542415384,
"end": 162.7328092724813,
"depth": "5",
"duration": 6.7,
"self": 1.1
},
{
"name": "renderRow",
"category": "Scripting",
"start": 156.55942721523007,
"end": 162.1587074814051,
"depth": "6",
"duration": 5.6,
"self": 5.6
},
{
"name": "mapItems",
"category": "Scripting",
"start": 171.13728144053908,
"end": 200.73793268190371,
"depth": "2",
"duration": 29.6,
"self": 5.8
},
{
"name": "filterItems",
"category": "Scripting",
"start": 174.05038854154418,
"end": 197.82482558089862,
"depth": "3",
"duration": 23.8,
"self": 7
},
{
"name": "notify",
"category": "Scripting",
"start": 176.39631038119285,
"end": 184.15182901424657,
"depth": "4",
"duration": 7.8,
"self": 1.1
},
{
"name": "mapItems",
"category": "Scripting",
"start": 176.762932769543,
"end": 179.99481598490033,
"depth": "5",
"duration": 3.2,
"self": 0.9
},
{
"name": "reconcile",
"category": "Scripting",
"start": 177.0601737638823,
"end": 178.27349881315644,
"depth": "6",
"duration": 1.2,
"self": 1.2
},
{
"name": "renderList",
"category": "Scripting",
"start": 178.57073980749573,
"end": 179.697574990561,
"depth": "6",
"duration": 1.1,
"self": 1.1
},
{
"name": "sortRows",
"category": "Scripting",
"start": 180.36143837325048,
"end": 183.78520662589645,
"depth": "5",
"duration": 3.4,
"self": 0.9
},
{
"name": "appendChild",
"category": "Scripting",
"start": 180.64727394401572,
"end": 182.06897119931855,
"depth": "6",
"duration": 1.4,
"self": 1.4
},
{
"name": "renderRow",
"category": "Scripting",
"start": 182.3548067700838,
"end": 183.4993710551312,
"depth": "6",
"duration": 1.1,
"self": 1.1
},
{
"name": "notify",
"category": "Scripting",
"start": 186.49775085389524,
"end": 195.47890374124998,
"depth": "4",
"duration": 9,
"self": 9
},
{
"name": "reduce",
"category": "Scripting",
"start": 204.66679883399652,
"end": 253.07113384790716,
"depth": "2",
"duration": 48.4,
"self": 11.9
},
{
"name": "mapItems",
"category": "Scripting",
"start": 207.62944464536073,
"end": 219.20013266749606,
"depth": "3",
"duration": 11.6,
"self": 2.1
},
{
"name": "sortRows",
"category": "Scripting",
"start": 208.68279686193108,
"end": 218.14678045092572,
"depth": "4",
"duration": 9.5,
"self": 2.4
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 209.86251519003446,
"end": 216.96706212282237,
"depth": "5",
"duration": 7.1,
"self": 1.1
},
{
"name": "reduce",
"category": "Scripting",
"start": 210.21289274683022,
"end": 214.0493034540119,
"depth": "6",
"duration": 3.8,
"self": 3.8
},
{
"name": "formatDate",
"category": "Scripting",
"start": 214.39968101080765,
"end": 216.6166845660266,
"depth": "6",
"duration": 2.2,
"self": 2.2
},
{
"name": "formatDate",
"category": "Scripting",
"start": 222.16277847886028,
"end": 234.11298318832647,
"depth": "3",
"duration": 12,
"self": 2.6
},
{
"name": "initApp",
"category": "Scripting",
"start": 223.4868106383336,
"end": 232.78895102885315,
"depth": "4",
"duration": 9.3,
"self": 9.3
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 237.07562899969068,
"end": 250.10848803654292,
"depth": "3",
"duration": 13,
"self": 3.2
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 238.6935669604088,
"end": 248.4905500758248,
"depth": "4",
"duration": 9.8,
"self": 2.8
},
{
"name": "reduce",
"category": "Scripting",
"start": 239.64163778884378,
"end": 243.26975188441588,
"depth": "5",
"duration": 3.6,
"self": 0.4
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 239.7709470299112,
"end": 240.59471952752725,
"depth": "6",
"duration": 0.8,
"self": 0.8
},
{
"name": "measureText",
"category": "Scripting",
"start": 240.72402876859468,
"end": 243.14044264334845,
"depth": "6",
"duration": 2.4,
"self": 2.4
},
{
"name": "setState",
"category": "Scripting",
"start": 244.21782271285088,
"end": 247.54247924738985,
"depth": "5",
"duration": 3.3,
"self": 0.8
},
{
"name": "createElement",
"category": "Scripting",
"start": 244.47165142431504,
"end": 245.82929748403052,
"depth": "6",
"duration": 1.4,
"self": 1.4
},
{
"name": "formatDate",
"category": "Scripting",
"start": 246.08312619549469,
"end": 247.28865053592565,
"depth": "6",
"duration": 1.2,
"self": 1.2
},
{
"name": "Minor GC",
"category": "Scripting",
"start": 257,
"end": 260,
"depth": "1",
"duration": 3,
"self": 0.9
},
{
"name": "appendChild",
"category": "Scripting",
"start": 257.2862414771342,
"end": 258.4581294299722,
"depth": "2",
"duration": 1.2,
"self": 1.2
},
{
"name": "sortRows",
"category": "Scripting",
"start": 258.7443709071064,
"end": 259.7137585228659,
"depth": "2",
"duration": 1,
"self": 1
},
{
"name": "Function Call",
"category": "Scripting",
"start": 388,
"end": 434,
"depth": "1",
"duration": 46,
"self": 11.8
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 390.36895449998786,
"end": 396.54297161996055,
"depth": "2",
"duration": 6.2,
"self": 1
},
{
"name": "renderList",
"category": "Scripting",
"start": 390.8703028692479,
"end": 396.04162325070047,
"depth": "3",
"duration": 5.2,
"self": 1.5
},
{
"name": "reduce",
"category": "Scripting",
"start": 391.36925100277034,
"end": 393.5239161809598,
"depth": "4",
"duration": 2.2,
"self": 0.3
},
{
"name": "reduce",
"category": "Scripting",
"start": 391.51900097347516,
"end": 393.37416621025494,
"depth": "5",
"duration": 1.9,
"self": 1.9
},
{
"name": "sortRows",
"category": "Scripting",
"start": 394.02286431448226,
"end": 395.54267511717796,
"depth": "4",
"duration": 1.5,
"self": 1.5
},
{
"name": "initApp",
"category": "Scripting",
"start": 398.9119261199485,
"end": 408.52918767021447,
"depth": "2",
"duration": 9.6,
"self": 9.6
},
{
"name": "mapItems",
"category": "Scripting",
"start": 410.89814217020233,
"end": 415.9241093249207,
"depth": "2",
"duration": 5,
"self": 1.4
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 411.6161952104722,
"end": 415.2060562846508,
"depth": "3",
"duration": 3.6,
"self": 3.6
},
{
"name": "filterItems",
"category": "Scripting",
"start": 418.2930638249086,
"end": 431.6310455000121,
"depth": "2",
"duration": 13.3,
"self": 0.7
},
{
"name": "fetchData",
"category": "Scripting",
"start": 418.53520940519354,
"end": 422.2477379118412,
"depth": "3",
"duration": 3.7,
"self": 0.6
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 418.7259239074943,
"end": 419.7775803409336,
"depth": "4",
"duration": 1.1,
"self": 1.1
},
{
"name": "hydrate",
"category": "Scripting",
"start": 419.9682948432343,
"end": 422.0570234095405,
"depth": "4",
"duration": 2.1,
"self": 0.3
},
{
"name": "renderList",
"category": "Scripting",
"start": 420.1416543989804,
"end": 421.8836638537944,
"depth": "5",
"duration": 1.7,
"self": 1.7
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 422.4898834921262,
"end": 431.38889991972707,
"depth": "3",
"duration": 8.9,
"self": 2
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 423.5109517259197,
"end": 430.36783168593354,
"depth": "4",
"duration": 6.9,
"self": 6.9
},
{
"name": "Function Call",
"category": "Scripting",
"start": 438,
"end": 650,
"depth": "1",
"duration": 212,
"self": 30.1
},
{
"name": "render",
"category": "Scripting",
"start": 444.02346537875013,
"end": 500.2198042784822,
"depth": "2",
"duration": 56.2,
"self": 12.4
},
{
"name": "dispatch",
"category": "Scripting",
"start": 447.1225194506215,
"end": 459.7628813240456,
"depth": "3",
"duration": 12.6,
"self": 3.3
},
{
"name": "appendChild",
"category": "Scripting",
"start": 448.23015396127727,
"end": 452.71862098438373,
"depth": "4",
"duration": 4.5,
"self": 4.5
},
{
"name": "renderRow",
"category": "Scripting",
"start": 453.8262554950395,
"end": 458.6552468133898,
"depth": "4",
"duration": 4.8,
"self": 4.8
},
{
"name": "renderRow",
"category": "Scripting",
"start": 462.86193539591704,
"end": 482.0065251712992,
"depth": "3",
"duration": 19.1,
"self": 2.4
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 463.6494370402049,
"end": 471.8696067612896,
"depth": "4",
"duration": 8.2,
"self": 1.1
},
{
"name": "setState",
"category": "Scripting",
"start": 464.0280895271967,
"end": 468.4343697085056,
"depth": "5",
"duration": 4.4,
"self": 4.4
},
{
"name": "reduce",
"category": "Scripting",
"start": 468.8130221954974,
"end": 471.49095427429785,
"depth": "5",
"duration": 2.7,
"self": 0.7
},
{
"name": "fetchData",
"category": "Scripting",
"start": 469.0394384046574,
"end": 469.92095811407785,
"depth": "6",
"duration": 0.9,
"self": 0.9
},
{
"name": "appendChild",
"category": "Scripting",
"start": 470.14737432323784,
"end": 471.2645380651378,
"depth": "6",
"duration": 1.1,
"self": 1.1
},
{
"name": "reconcile",
"category": "Scripting",
"start": 472.6571084055775,
"end": 481.2190235270113,
"depth": "4",
"duration": 8.6,
"self": 1
},
{
"name": "reconcile",
"category": "Scripting",
"start": 473.16859043314975,
"end": 480.70754149943906,
"depth": "5",
"duration": 7.5,
"self": 7.5
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 485.10557924317055,
"end": 497.12075020661075,
"depth": "3",
"duration": 12,
"self": 3.1
},
{
"name": "formatDate",
"category": "Scripting",
"start": 486.1519589655211,
"end": 489.5788947091487,
"depth": "4",
"duration": 3.4,
"self": 0.7
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 486.4810037293699,
"end": 489.24984994529984,
"depth": "5",
"duration": 2.8,
"self": 0.1
},
{
"name": "createElement",
"category": "Scripting",
"start": 486.5272009013154,
"end": 487.7774902597766,
"depth": "6",
"duration": 1.3,
"self": 1.3
},
{
"name": "measureText",
"category": "Scripting",
"start": 487.8236874317221,
"end": 489.2036527733544,
"depth": "6",
"duration": 1.4,
"self": 1.4
},
{
"name": "emit",
"category": "Scripting",
"start": 490.6252744314993,
"end": 496.0743704842602,
"depth": "4",
"duration": 5.4,
"self": 0.7
},
{
"name": "initApp",
"category": "Scripting",
"start": 490.9768388926867,
"end": 495.72280602307274,
"depth": "5",
"duration": 4.7,
"self": 0.7
},
{
"name": "filterItems",
"category": "Scripting",
"start": 491.3085021336889,
"end": 495.3911427820706,
"depth": "6",
"duration": 4.1,
"self": 0.4
},
{
"name": "dispatch",
"category": "Scripting",
"start": 491.4940561623851,
"end": 495.20558875337434,
"depth": "7",
"duration": 3.7,
"self": 0.9
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 491.79230424402147,
"end": 493.32483824628156,
"depth": "8",
"duration": 1.5,
"self": 1.5
},
{
"name": "notify",
"category": "Scripting",
"start": 493.6230863279179,
"end": 494.907340671738,
"depth": "8",
"duration": 1.3,
"self": 1.3
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 506.2432696572323,
"end": 559.9202711549635,
"depth": "2",
"duration": 53.7,
"self": 9.2
},
{
"name": "dispatch",
"category": "Scripting",
"start": 508.08236774209666,
"end": 520.8716185123777,
"depth": "3",
"duration": 12.8,
"self": 1
},
{
"name": "notify",
"category": "Scripting",
"start": 508.4283636957401,
"end": 512.6180345006021,
"depth": "4",
"duration": 4.2,
"self": 0.9
},
{
"name": "emit",
"category": "Scripting",
"start": 508.7338842553017,
"end": 510.16034018271415,
"depth": "5",
"duration": 1.4,
"self": 1.4
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 510.46586074227577,
"end": 512.3125139410405,
"depth": "5",
"duration": 1.8,
"self": 1.8
},
{
"name": "dispatch",
"category": "Scripting",
"start": 512.9640304542455,
"end": 520.5256225587344,
"depth": "4",
"duration": 7.6,
"self": 2.2
},
{
"name": "hydrate",
"category": "Scripting",
"start": 513.6923645355082,
"end": 517.8704596842357,
"depth": "5",
"duration": 4.2,
"self": 0.5
},
{
"name": "emit",
"category": "Scripting",
"start": 513.9506169584738,
"end": 517.6122072612701,
"depth": "6",
"duration": 3.7,
"self": 0.4
},
{
"name": "setState",
"category": "Scripting",
"start": 514.0742353640359,
"end": 515.5569533967489,
"depth": "7",
"duration": 1.5,
"self": 1.5
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 515.680571802311,
"end": 517.488588855708,
"depth": "7",
"duration": 1.8,
"self": 1.8
},
{
"name": "renderList",
"category": "Scripting",
"start": 518.5987937654984,
"end": 519.7972884774717,
"depth": "5",
"duration": 1.2,
"self": 1.2
},
{
"name": "fetchData",
"category": "Scripting",
"start": 522.7107165972421,
"end": 534.4481716613573,
"depth": "3",
"duration": 11.7,
"self": 2.2
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 523.7906604567237,
"end": 533.3682278018757,
"depth": "4",
"duration": 9.6,
"self": 9.6
},
{
"name": "setState",
"category": "Scripting",
"start": 536.2872697462217,
"end": 548.5433407559678,
"depth": "3",
"duration": 12.3,
"self": 3
},
{
"name": "dispatch",
"category": "Scripting",
"start": 537.8047945971164,
"end": 547.0258159050733,
"depth": "4",
"duration": 9.2,
"self": 9.2
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 550.3824388408323,
"end": 558.0811730700992,
"depth": "3",
"duration": 7.7,
"self": 1
},
{
"name": "emit",
"category": "Scripting",
"start": 550.7059496158478,
"end": 553.7399323189771,
"depth": "4",
"duration": 3,
"self": 3
},
{
"name": "mapItems",
"category": "Scripting",
"start": 554.0634430939926,
"end": 557.7576622950836,
"depth": "4",
"duration": 3.7,
"self": 1.1
},
{
"name": "sortRows",
"category": "Scripting",
"start": 554.6138920002952,
"end": 557.207213388781,
"depth": "5",
"duration": 2.6,
"self": 2.6
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 565.9437365337136,
"end": 582.8120399683893,
"depth": "2",
"duration": 16.9,
"self": 5
},
{
"name": "filterItems",
"category": "Scripting",
"start": 567.5937879210143,
"end": 576.6870276994078,
"depth": "3",
"duration": 9.1,
"self": 1
},
{
"name": "appendChild",
"category": "Scripting",
"start": 567.9150343727312,
"end": 570.7869916267343,
"depth": "4",
"duration": 2.9,
"self": 0.3
},
{
"name": "reduce",
"category": "Scripting",
"start": 568.0315631419348,
"end": 569.0415276665984,
"depth": "5",
"duration": 1,
"self": 1
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 569.1580564358021,
"end": 570.6704628575305,
"depth": "5",
"duration": 1.5,
"self": 1.5
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 571.1082380784512,
"end": 576.3657812476908,
"depth": "4",
"duration": 5.3,
"self": 5.3
},
{
"name": "initApp",
"category": "Scripting",
"start": 578.3370790867084,
"end": 581.1619885810886,
"depth": "3",
"duration": 2.8,
"self": 2.8
},
{
"name": "appendChild",
"category": "Scripting",
"start": 588.8355053471395,
"end": 643.9765346212499,
"depth": "2",
"duration": 55.1,
"self": 14.5
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 592.4499562133539,
"end": 604.1172434367329,
"depth": "3",
"duration": 11.7,
"self": 2.3
},
{
"name": "measureText",
"category": "Scripting",
"start": 593.2167644169939,
"end": 597.1611545280333,
"depth": "4",
"duration": 3.9,
"self": 1
},
{
"name": "filterItems",
"category": "Scripting",
"start": 593.5462048541692,
"end": 595.4541035840698,
"depth": "5",
"duration": 1.9,
"self": 1.9
},
{
"name": "appendChild",
"category": "Scripting",
"start": 595.7835440212451,
"end": 596.831714090858,
"depth": "5",
"duration": 1,
"self": 1
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 597.9279627316733,
"end": 603.3504352330929,
"depth": "4",
"duration": 5.4,
"self": 0.3
},
{
"name": "sortRows",
"category": "Scripting",
"start": 598.0305741797499,
"end": 600.4786219602797,
"depth": "5",
"duration": 2.4,
"self": 2.4
},
{
"name": "reconcile",
"category": "Scripting",
"start": 600.5812334083562,
"end": 603.2478237850164,
"depth": "5",
"duration": 2.7,
"self": 0.6
},
{
"name": "render",
"category": "Scripting",
"start": 600.8602670544682,
"end": 602.9687901389043,
"depth": "6",
"duration": 2.1,
"self": 2.1
},
{
"name": "dispatch",
"category": "Scripting",
"start": 607.7316943029473,
"end": 614.1543703124574,
"depth": "3",
"duration": 6.4,
"self": 1.2
},
{
"name": "reconcile",
"category": "Scripting",
"start": 608.3565807469307,
"end": 613.529483868474,
"depth": "4",
"duration": 5.2,
"self": 0.4
},
{
"name": "formatDate",
"category": "Scripting",
"start": 608.4778721829167,
"end": 609.5185623178404,
"depth": "5",
"duration": 1,
"self": 1
},
{
"name": "notify",
"category": "Scripting",
"start": 609.6398537538264,
"end": 613.408192432488,
"depth": "5",
"duration": 3.8,
"self": 1
},
{
"name": "hydrate",
"category": "Scripting",
"start": 610.1222267263136,
"end": 612.9258194600009,
"depth": "6",
"duration": 2.8,
"self": 2.8
},
{
"name": "appendChild",
"category": "Scripting",
"start": 617.7688211786718,
"end": 640.3620837550355,
"depth": "3",
"duration": 22.6,
"self": 1.8
},
{
"name": "appendChild",
"category": "Scripting",
"start": 618.365998371776,
"end": 631.4761732735506,
"depth": "4",
"duration": 13.1,
"self": 3.3
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 619.4577311823609,
"end": 626.0302138385659,
"depth": "5",
"duration": 6.6,
"self": 1.7
},
{
"name": "dispatch",
"category": "Scripting",
"start": 620.3239612137903,
"end": 625.1639838071366,
"depth": "6",
"duration": 4.8,
"self": 4.8
},
{
"name": "hydrate",
"category": "Scripting",
"start": 627.121946649151,
"end": 630.3844404629655,
"depth": "5",
"duration": 3.3,
"self": 0.5
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 627.3609307083469,
"end": 630.1454564037697,
"depth": "6",
"duration": 2.8,
"self": 0.5
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 627.6230096068888,
"end": 629.8833775052279,
"depth": "7",
"duration": 2.3,
"self": 0.7
},
{
"name": "sortRows",
"category": "Scripting",
"start": 627.960280103392,
"end": 629.5461070087248,
"depth": "8",
"duration": 1.6,
"self": 1.6
},
{
"name": "setState",
"category": "Scripting",
"start": 632.0733504666547,
"end": 639.7649065619314,
"depth": "4",
"duration": 7.7,
"self": 1.1
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 632.4554112115028,
"end": 634.6501741838516,
"depth": "5",
"duration": 2.2,
"self": 0.4
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 632.5777208166838,
"end": 632.9637392999808,
"depth": "6",
"duration": 0.4,
"self": 0.4
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 633.086048905162,
"end": 634.5278645786706,
"depth": "6",
"duration": 1.4,
"self": 1.4
},
{
"name": "fetchData",
"category": "Scripting",
"start": 635.0322349286996,
"end": 639.3828458170833,
"depth": "5",
"duration": 4.4,
"self": 1.1
},
{
"name": "measureText",
"category": "Scripting",
"start": 635.3943580152408,
"end": 637.6197867571202,
"depth": "6",
"duration": 2.2,
"self": 2.2
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 637.9819098436614,
"end": 639.020722730542,
"depth": "6",
"duration": 1,
"self": 1
},
{
"name": "Minor GC",
"category": "Scripting",
"start": 650,
"end": 654,
"depth": "1",
"duration": 4,
"self": 0.8
},
{
"name": "sortRows",
"category": "Scripting",
"start": 650.4245450702962,
"end": 653.5754549297038,
"depth": "2",
"duration": 3.2,
"self": 0.5
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 650.6832680024023,
"end": 653.3167319975978,
"depth": "3",
"duration": 2.6,
"self": 0.2
},
{
"name": "measureText",
"category": "Scripting",
"start": 650.737701300961,
"end": 652.3072754121454,
"depth": "4",
"duration": 1.6,
"self": 1.6
},
{
"name": "fetchData",
"category": "Scripting",
"start": 652.3617087107041,
"end": 653.2622986990392,
"depth": "4",
"duration": 0.9,
"self": 0.9
},
{
"name": "Animation Frame Fired",
"category": "Scripting",
"start": 857,
"end": 872.420195191633,
"depth": "1",
"duration": 15.4,
"self": 1.6
},
{
"name": "initApp",
"category": "Scripting",
"start": 857.5280382015354,
"end": 864.1052761483357,
"depth": "2",
"duration": 6.6,
"self": 0.7
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 857.8923670858741,
"end": 863.7409472639971,
"depth": "3",
"duration": 5.8,
"self": 0.6
},
{
"name": "measureText",
"category": "Scripting",
"start": 858.2008706758454,
"end": 863.4324436740258,
"depth": "4",
"duration": 5.2,
"self": 0.3
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 858.3723662140266,
"end": 863.2609481358447,
"depth": "5",
"duration": 4.9,
"self": 4.9
},
{
"name": "emit",
"category": "Scripting",
"start": 864.6333143498713,
"end": 871.8921569900974,
"depth": "2",
"duration": 7.3,
"self": 0.8
},
{
"name": "reduce",
"category": "Scripting",
"start": 864.891749842391,
"end": 868.019992130361,
"depth": "3",
"duration": 3.1,
"self": 0.2
},
{
"name": "renderList",
"category": "Scripting",
"start": 864.9996994758683,
"end": 867.9120424968836,
"depth": "4",
"duration": 2.9,
"self": 0.9
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 865.4352576597745,
"end": 867.4764843129774,
"depth": "5",
"duration": 2,
"self": 2
},
{
"name": "notify",
"category": "Scripting",
"start": 868.2784276228807,
"end": 871.6337214975778,
"depth": "3",
"duration": 3.4,
"self": 0.5
},
{
"name": "reconcile",
"category": "Scripting",
"start": 868.4519283174321,
"end": 870.051558585308,
"depth": "4",
"duration": 1.6,
"self": 1.6
},
{
"name": "setState",
"category": "Scripting",
"start": 870.2250592798594,
"end": 871.4602208030263,
"depth": "4",
"duration": 1.2,
"self": 1.2
},
{
"name": "Animation Frame Fired",
"category": "Scripting",
"start": 954.1115225604735,
"end": 964.9001734820195,
"depth": "1",
"duration": 10.8,
"self": 0.9
},
{
"name": "sortRows",
"category": "Scripting",
"start": 954.4016408852732,
"end": 959.5988826369032,
"depth": "2",
"duration": 5.2,
"self": 1.5
},
{
"name": "mapItems",
"category": "Scripting",
"start": 954.9046593447849,
"end": 955.9764506676688,
"depth": "3",
"duration": 1.1,
"self": 1.1
},
{
"name": "measureText",
"category": "Scripting",
"start": 956.4794691271806,
"end": 959.0958641773916,
"depth": "3",
"duration": 2.6,
"self": 0.2
},
{
"name": "setState",
"category": "Scripting",
"start": 956.5297197324293,
"end": 957.4165638393316,
"depth": "4",
"duration": 0.9,
"self": 0.9
},
{
"name": "measureText",
"category": "Scripting",
"start": 957.4668144445805,
"end": 959.0456135721429,
"depth": "4",
"duration": 1.6,
"self": 1.6
},
{
"name": "filterItems",
"category": "Scripting",
"start": 959.8890009617029,
"end": 964.6100551572197,
"depth": "2",
"duration": 4.7,
"self": 4.7
},
{
"name": "Timer Fired",
"category": "Scripting",
"start": 1032.1104770619422,
"end": 1042.6266240598634,
"depth": "1",
"duration": 10.5,
"self": 1.3
},
{
"name": "reduce",
"category": "Scripting",
"start": 1032.5503812477184,
"end": 1034.5705212754985,
"depth": "2",
"duration": 2,
"self": 0.2
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 1032.606055673011,
"end": 1033.4486021204523,
"depth": "3",
"duration": 0.8,
"self": 0.8
},
{
"name": "mapItems",
"category": "Scripting",
"start": 1033.504276545745,
"end": 1034.5148468502061,
"depth": "3",
"duration": 1,
"self": 1
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1035.0104254612747,
"end": 1042.186719874087,
"depth": "2",
"duration": 7.2,
"self": 7.2
},
{
"name": "Animation Frame Fired",
"category": "Scripting",
"start": 1126.2173534226604,
"end": 1140.304703927599,
"depth": "1",
"duration": 14.1,
"self": 1.6
},
{
"name": "reconcile",
"category": "Scripting",
"start": 1127.0305796519374,
"end": 1139.491477698322,
"depth": "2",
"duration": 12.5,
"self": 12.5
},
{
"name": "Animation Frame Fired",
"category": "Scripting",
"start": 1182.3577564605512,
"end": 1194.0804348737001,
"depth": "1",
"duration": 11.7,
"self": 1.2
},
{
"name": "renderList",
"category": "Scripting",
"start": 1182.7507876564798,
"end": 1190.8213162612792,
"depth": "2",
"duration": 8.1,
"self": 2.3
},
{
"name": "dispatch",
"category": "Scripting",
"start": 1183.5053568577082,
"end": 1185.096680161376,
"depth": "3",
"duration": 1.6,
"self": 1.6
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1185.8512493626044,
"end": 1190.066747060051,
"depth": "3",
"duration": 4.2,
"self": 1.2
},
{
"name": "formatDate",
"category": "Scripting",
"start": 1186.2488326368252,
"end": 1187.683894576067,
"depth": "4",
"duration": 1.4,
"self": 1.4
},
{
"name": "formatDate",
"category": "Scripting",
"start": 1188.0814778502877,
"end": 1189.6691637858303,
"depth": "4",
"duration": 1.6,
"self": 1.6
},
{
"name": "mapItems",
"category": "Scripting",
"start": 1191.2143474572079,
"end": 1193.6874036777713,
"depth": "2",
"duration": 2.5,
"self": 0.5
},
{
"name": "reconcile",
"category": "Scripting",
"start": 1191.3786533785876,
"end": 1191.9416122507462,
"depth": "3",
"duration": 0.6,
"self": 0.6
},
{
"name": "formatDate",
"category": "Scripting",
"start": 1192.1059181721257,
"end": 1193.5230977563917,
"depth": "3",
"duration": 1.4,
"self": 1.4
},
{
"name": "Timer Fired",
"category": "Scripting",
"start": 1261.28842277918,
"end": 1276.2210666704923,
"depth": "1",
"duration": 14.9,
"self": 1.3
},
{
"name": "setState",
"category": "Scripting",
"start": 1261.7156607403376,
"end": 1265.7067201263983,
"depth": "2",
"duration": 4,
"self": 0.6
},
{
"name": "filterItems",
"category": "Scripting",
"start": 1261.9001129711478,
"end": 1263.855614153235,
"depth": "3",
"duration": 2,
"self": 2
},
{
"name": "initApp",
"category": "Scripting",
"start": 1264.0400663840448,
"end": 1265.5222678955884,
"depth": "3",
"duration": 1.5,
"self": 1.5
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1266.1339580875558,
"end": 1275.793828709335,
"depth": "2",
"duration": 9.7,
"self": 2.6
},
{
"name": "formatDate",
"category": "Scripting",
"start": 1267.0013362013583,
"end": 1270.0969097671457,
"depth": "3",
"duration": 3.1,
"self": 0.6
},
{
"name": "hydrate",
"category": "Scripting",
"start": 1267.210594021617,
"end": 1268.3613743853357,
"depth": "4",
"duration": 1.2,
"self": 1.2
},
{
"name": "renderList",
"category": "Scripting",
"start": 1268.5706322055944,
"end": 1269.8876519468872,
"depth": "4",
"duration": 1.3,
"self": 1.3
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1270.9642878809482,
"end": 1274.9264505955325,
"depth": "3",
"duration": 4,
"self": 0.2
},
{
"name": "dispatch",
"category": "Scripting",
"start": 1271.0344407134792,
"end": 1272.6008437785902,
"depth": "4",
"duration": 1.6,
"self": 1.6
},
{
"name": "mapItems",
"category": "Scripting",
"start": 1272.6709966111212,
"end": 1274.8562977630015,
"depth": "4",
"duration": 2.2,
"self": 0.5
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1272.9006180507945,
"end": 1274.626676323328,
"depth": "5",
"duration": 1.7,
"self": 1.7
},
{
"name": "Animation Frame Fired",
"category": "Scripting",
"start": 1316.6653707264923,
"end": 1326.1429900447838,
"depth": "1",
"duration": 9.5,
"self": 1.7
},
{
"name": "renderList",
"category": "Scripting",
"start": 1317.232804059291,
"end": 1321.6526984428262,
"depth": "2",
"duration": 4.4,
"self": 4.4
},
{
"name": "createElement",
"category": "Scripting",
"start": 1322.220131775625,
"end": 1325.5755567119852,
"depth": "2",
"duration": 3.4,
"self": 0.6
},
{
"name": "mapItems",
"category": "Scripting",
"start": 1322.43551398228,
"end": 1323.8984266289367,
"depth": "3",
"duration": 1.5,
"self": 1.5
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 1324.1138088355917,
"end": 1325.36017450533,
"depth": "3",
"duration": 1.2,
"self": 1.2
},
{
"name": "Animation Frame Fired",
"category": "Scripting",
"start": 1372.457761158701,
"end": 1379.171256174799,
"depth": "1",
"duration": 6.7,
"self": 0.3
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 1372.6282729922443,
"end": 1379.0007443412555,
"depth": "2",
"duration": 6.4,
"self": 0.8
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 1373.0499532177264,
"end": 1378.5790641157732,
"depth": "3",
"duration": 5.5,
"self": 0.8
},
{
"name": "createElement",
"category": "Scripting",
"start": 1373.444800775388,
"end": 1378.1842165581115,
"depth": "4",
"duration": 4.7,
"self": 0.4
},
{
"name": "sortRows",
"category": "Scripting",
"start": 1373.6620584928044,
"end": 1377.966958840695,
"depth": "5",
"duration": 4.3,
"self": 0.4
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 1373.8615130429005,
"end": 1377.7675042905992,
"depth": "6",
"duration": 3.9,
"self": 0.7
},
{
"name": "render",
"category": "Scripting",
"start": 1374.1043097011284,
"end": 1376.0160993410666,
"depth": "7",
"duration": 1.9,
"self": 1.9
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 1376.2588959992943,
"end": 1377.5247076323712,
"depth": "7",
"duration": 1.3,
"self": 1.3
},
{
"name": "Event: click",
"category": "Scripting",
"start": 1460.4252337771468,
"end": 1534.4252337771468,
"depth": "1",
"duration": 74,
"self": 8.3
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1463.1906394303621,
"end": 1482.764137846749,
"depth": "2",
"duration": 19.6,
"self": 3.5
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1464.3692197964324,
"end": 1472.3149288848363,
"depth": "3",
"duration": 7.9,
"self": 0.7
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 1464.603285648072,
"end": 1469.1584073663716,
"depth": "4",
"duration": 4.6,
"self": 0.6
},
{
"name": "notify",
"category": "Scripting",
"start": 1464.893290157901,
"end": 1468.8684028565428,
"depth": "5",
"duration": 4,
"self": 0.5
},
{
"name": "dispatch",
"category": "Scripting",
"start": 1465.1259185014362,
"end": 1468.6357745130078,
"depth": "6",
"duration": 3.5,
"self": 3.5
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1469.3924732180112,
"end": 1472.0808630331967,
"depth": "4",
"duration": 2.7,
"self": 0.7
},
{
"name": "appendChild",
"category": "Scripting",
"start": 1469.7635708761059,
"end": 1471.7097653751023,
"depth": "5",
"duration": 1.9,
"self": 1.9
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1473.4935092509068,
"end": 1481.5855574806787,
"depth": "3",
"duration": 8.1,
"self": 1.1
},
{
"name": "measureText",
"category": "Scripting",
"start": 1473.8674020346548,
"end": 1477.1294988542759,
"depth": "4",
"duration": 3.3,
"self": 0.9
},
{
"name": "filterItems",
"category": "Scripting",
"start": 1474.1787008409278,
"end": 1475.1117501813374,
"depth": "5",
"duration": 0.9,
"self": 0.9
},
{
"name": "notify",
"category": "Scripting",
"start": 1475.4230489876104,
"end": 1476.818200048003,
"depth": "5",
"duration": 1.4,
"self": 1.4
},
{
"name": "appendChild",
"category": "Scripting",
"start": 1477.503391638024,
"end": 1481.2116646969307,
"depth": "4",
"duration": 3.7,
"self": 0.5
},
{
"name": "mapItems",
"category": "Scripting",
"start": 1477.75469272125,
"end": 1480.9603636137049,
"depth": "5",
"duration": 3.2,
"self": 0.4
},
{
"name": "renderList",
"category": "Scripting",
"start": 1477.938505059894,
"end": 1480.7765512750607,
"depth": "6",
"duration": 2.8,
"self": 2.8
},
{
"name": "measureText",
"category": "Scripting",
"start": 1485.5295434999643,
"end": 1531.6598281239314,
"depth": "2",
"duration": 46.1,
"self": 6.4
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1486.8054909002306,
"end": 1501.6713854657935,
"depth": "3",
"duration": 14.9,
"self": 1
},
{
"name": "reconcile",
"category": "Scripting",
"start": 1487.3079528081305,
"end": 1501.1689235578935,
"depth": "4",
"duration": 13.9,
"self": 2.2
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1488.423413949177,
"end": 1500.0534624168467,
"depth": "5",
"duration": 11.6,
"self": 2
},
{
"name": "render",
"category": "Scripting",
"start": 1489.0776241665924,
"end": 1496.090471102176,
"depth": "6",
"duration": 7,
"self": 1.2
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 1489.4615595318749,
"end": 1492.1308679014628,
"depth": "7",
"duration": 2.7,
"self": 0.5
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1489.7178461251717,
"end": 1491.8745813081662,
"depth": "8",
"duration": 2.2,
"self": 0.3
},
{
"name": "notify",
"category": "Scripting",
"start": 1489.8215349101476,
"end": 1490.8163738352166,
"depth": "9",
"duration": 1,
"self": 1
},
{
"name": "(anonymous)",
"category": "Scripting",
"start": 1490.9200626201923,
"end": 1491.7708925231905,
"depth": "9",
"duration": 0.9,
"self": 0.9
},
{
"name": "notify",
"category": "Scripting",
"start": 1492.5148032667453,
"end": 1495.7065357368938,
"depth": "7",
"duration": 3.2,
"self": 3.2
},
{
"name": "parseJSON",
"category": "Scripting",
"start": 1496.7446813195913,
"end": 1499.3992521994314,
"depth": "6",
"duration": 2.7,
"self": 2.7
},
{
"name": "renderList",
"category": "Scripting",
"start": 1502.94733286606,
"end": 1506.9199982317975,
"depth": "3",
"duration": 4,
"self": 0.7
},
{
"name": "hydrate",
"category": "Scripting",
"start": 1503.1764617878487,
"end": 1504.9476965681831,
"depth": "4",
"duration": 1.8,
"self": 1.8
},
{
"name": "dispatch",
"category": "Scripting",
"start": 1505.176825489972,
"end": 1506.6908693100088,
"depth": "4",
"duration": 1.5,
"self": 1.5
},
{
"name": "reconcile",
"category": "Scripting",
"start": 1508.195945632064,
"end": 1523.4376490482816,
"depth": "3",
"duration": 15.2,
"self": 2.5
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 1509.0159641258076,
"end": 1515.9367542630732,
"depth": "4",
"duration": 6.9,
"self": 0.6
},
{
"name": "setState",
"category": "Scripting",
"start": 1509.209981104269,
"end": 1512.8138291570751,
"depth": "5",
"duration": 3.6,
"self": 0.8
},
{
"name": "emit",
"category": "Scripting",
"start": 1509.5854107612968,
"end": 1512.4383995000471,
"depth": "6",
"duration": 2.9,
"self": 0.5
},
{
"name": "renderList",
"category": "Scripting",
"start": 1509.841514473744,
"end": 1512.1822957875997,
"depth": "7",
"duration": 2.3,
"self": 0.5
},
{
"name": "reduce",
"category": "Scripting",
"start": 1510.0224830772822,
"end": 1510.6319811589744,
"depth": "8",
"duration": 0.6,
"self": 0.6
},
{
"name": "notify",
"category": "Scripting",
"start": 1510.812949762513,
"end": 1512.0013271840614,
"depth": "8",
"duration": 1.2,
"self": 1.2
},
{
"name": "mapItems",
"category": "Scripting",
"start": 1513.0078461355365,
"end": 1515.7427372846118,
"depth": "5",
"duration": 2.7,
"self": 0.7
},
{
"name": "appendChild",
"category": "Scripting",
"start": 1513.3620176528548,
"end": 1515.3885657672938,
"depth": "6",
"duration": 2,
"self": 0.5
},
{
"name": "formatDate",
"category": "Scripting",
"start": 1513.5315159025613,
"end": 1514.2919932974194,
"depth": "7",
"duration": 0.8,
"self": 0.8
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1514.461491547126,
"end": 1515.2190675175873,
"depth": "7",
"duration": 0.8,
"self": 0.8
},
{
"name": "measureText",
"category": "Scripting",
"start": 1516.7567727568169,
"end": 1522.6176305545382,
"depth": "4",
"duration": 5.9,
"self": 1.3
},
{
"name": "fetchData",
"category": "Scripting",
"start": 1517.1907379703734,
"end": 1519.3719752983964,
"depth": "5",
"duration": 2.2,
"self": 0.2
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 1517.2444287239334,
"end": 1518.5014691594276,
"depth": "6",
"duration": 1.3,
"self": 1.3
},
{
"name": "bootstrap",
"category": "Scripting",
"start": 1518.5551599129876,
"end": 1519.3182845448362,
"depth": "6",
"duration": 0.8,
"self": 0.8
},
{
"name": "commitRoot",
"category": "Scripting",
"start": 1519.805940511953,
"end": 1522.1836653409814,
"depth": "5",
"duration": 2.4,
"self": 2.4
},
{
"name": "filterItems",
"category": "Scripting",
"start": 1524.713596448548,
"end": 1530.3838807236652,
"depth": "3",
"duration": 5.7,
"self": 0.7
},
{
"name": "emit",
"category": "Scripting",
"start": 1524.9551812560524,
"end": 1526.3924972934367,
"depth": "4",
"duration": 1.4,
"self": 1.4
},
{
"name": "updateDOM",
"category": "Scripting",
"start": 1526.634082100941,
"end": 1530.1422959161612,
"depth": "4",
"duration": 3.5,
"self": 3.5
}
]
},
{
"data-3": [
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 60,
"end": 67,
"depth": "1",
"duration": 7,
"self": 7
},
{
"name": "Layout",
"category": "Rendering",
"start": 67,
"end": 78,
"depth": "1",
"duration": 11,
"self": 11
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 265,
"end": 279,
"depth": "1",
"duration": 14,
"self": 14
},
{
"name": "Layout",
"category": "Rendering",
"start": 279,
"end": 310,
"depth": "1",
"duration": 31,
"self": 31
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 656,
"end": 678,
"depth": "1",
"duration": 22,
"self": 22
},
{
"name": "Layout",
"category": "Rendering",
"start": 678,
"end": 742,
"depth": "1",
"duration": 64,
"self": 64
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 872.420195191633,
"end": 874.7114486135542,
"depth": "1",
"duration": 2.3,
"self": 2.3
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 964.9001734820195,
"end": 967.7190332263708,
"depth": "1",
"duration": 2.8,
"self": 2.8
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 1042.6266240598634,
"end": 1045.0626575965434,
"depth": "1",
"duration": 2.4,
"self": 2.4
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 1140.304703927599,
"end": 1143.3055111500435,
"depth": "1",
"duration": 3,
"self": 3
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 1194.0804348737001,
"end": 1196.0488925133832,
"depth": "1",
"duration": 2,
"self": 2
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 1276.2210666704923,
"end": 1277.9172203545459,
"depth": "1",
"duration": 1.7,
"self": 1.7
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 1326.1429900447838,
"end": 1329.2528604227118,
"depth": "1",
"duration": 3.1,
"self": 3.1
},
{
"name": "Recalculate Style",
"category": "Rendering",
"start": 1379.171256174799,
"end": 1382.6387697616592,
"depth": "1",
"duration": 3.5,
"self": 3.5
},
{
"name": "Layout",
"category": "Rendering",
"start": 1534.4252337771468,
"end": 1543.4252337771468,
"depth": "1",
"duration": 9,
"self": 9
}
]
},
{
"data-4": [
{
"name": "Paint",
"category": "Painting",
"start": 82,
"end": 87,
"depth": "1",
"duration": 5,
"self": 5
},
{
"name": "Commit",
"category": "Painting",
"start": 87,
"end": 89,
"depth": "1",
"duration": 2,
"self": 2
},
{
"name": "Paint",
"category": "Painting",
"start": 313,
"end": 322,
"depth": "1",
"duration": 9,
"self": 9
},
{
"name": "Commit",
"category": "Painting",
"start": 322,
"end": 325,
"depth": "1",
"duration": 3,
"self": 3
},
{
"name": "Paint",
"category": "Painting",
"start": 745,
"end": 763,
"depth": "1",
"duration": 18,
"self": 18
},
{
"name": "Commit",
"category": "Painting",
"start": 763,
"end": 767,
"depth": "1",
"duration": 4,
"self": 4
},
{
"name": "Paint",
"category": "Painting",
"start": 874.7114486135542,
"end": 878.0845777606592,
"depth": "1",
"duration": 3.4,
"self": 3.4
},
{
"name": "Paint",
"category": "Painting",
"start": 967.7190332263708,
"end": 970.6596714118496,
"depth": "1",
"duration": 2.9,
"self": 2.9
},
{
"name": "Paint",
"category": "Painting",
"start": 1045.0626575965434,
"end": 1048.125053129159,
"depth": "1",
"duration": 3.1,
"self": 3.1
},
{
"name": "Paint",
"category": "Painting",
"start": 1143.3055111500435,
"end": 1145.815262417309,
"depth": "1",
"duration": 2.5,
"self": 2.5
},
{
"name": "Paint",
"category": "Painting",
"start": 1196.0488925133832,
"end": 1197.779649014119,
"depth": "1",
"duration": 1.7,
"self": 1.7
},
{
"name": "Paint",
"category": "Painting",
"start": 1277.9172203545459,
"end": 1281.281173826661,
"depth": "1",
"duration": 3.4,
"self": 3.4
},
{
"name": "Paint",
"category": "Painting",
"start": 1329.2528604227118,
"end": 1331.8480342249386,
"depth": "1",
"duration": 2.6,
"self": 2.6
},
{
"name": "Paint",
"category": "Painting",
"start": 1382.6387697616592,
"end": 1385.243832807988,
"depth": "1",
"duration": 2.6,
"self": 2.6
},
{
"name": "Paint",
"category": "Painting",
"start": 1549.4252337771468,
"end": 1555.4252337771468,
"depth": "1",
"duration": 6,
"self": 6
},
{
"name": "Commit",
"category": "Painting",
"start": 1555.4252337771468,
"end": 1557.4252337771468,
"depth": "1",
"duration": 2,
"self": 2
}
]
},
{
"data-5": [
{
"name": "Long task",
"start": 179,
"end": 260,
"depth": "0",
"over": 81,
"limit": 50
},
{
"name": "Long task",
"start": 488,
"end": 654,
"depth": "0",
"over": 166,
"limit": 50
},
{
"name": "Long task",
"start": 706,
"end": 742,
"depth": "0",
"over": 36,
"limit": 50
},
{
"name": "Long task",
"start": 1510.4252337771468,
"end": 1543.4252337771468,
"depth": "0",
"over": 33,
"limit": 50
}
]
},
{
"data-6": [
{
"depth": "0"
},
{
"depth": "1"
},
{
"depth": "2"
},
{
"depth": "3"
},
{
"depth": "4"
},
{
"depth": "5"
},
{
"depth": "6"
},
{
"depth": "7"
},
{
"depth": "8"
},
{
"depth": "9"
}
]
},
{
"axis-0": {
"type": "ValueAxis",
"settings": {
"min": 0,
"max": 1600,
"strictMinMax": true,
"numberFormat": "##,###' ms'",
"renderer": {
"type": "AxisRendererX",
"settings": {
"opposite": true,
"minGridDistance": 70
},
"properties": {
"grid": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0.06
}
}
}
}
}
}
}
}
},
{
"axis-1": {
"type": "CategoryAxis",
"settings": {
"categoryField": "depth",
"renderer": {
"type": "AxisRendererY",
"settings": {
"inversed": true,
"cellStartLocation": 0.04,
"cellEndLocation": 0.96,
"minGridDistance": 1
},
"properties": {
"labels": {
"properties": {
"template": {
"settings": {
"forceHidden": true
}
}
}
},
"grid": {
"properties": {
"template": {
"settings": {
"forceHidden": true
}
}
}
}
}
}
},
"properties": {
"data": "#data-6"
}
}
},
{
"series-0": {
"type": "ColumnSeries",
"settings": {
"name": "Task",
"xAxis": "#axis-0",
"yAxis": "#axis-1",
"openValueXField": "start",
"valueXField": "end",
"categoryYField": "depth",
"clustered": false,
"fill": "@root.interfaceColors.get('alternativeBackground')",
"stroke": "@root.interfaceColors.get('alternativeBackground')"
},
"properties": {
"data": "#data-0",
"columns": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0,
"tooltipText": "[bold]{name}[/]\n{duration} ms, {self} ms self\nTask",
"tooltipY": 0,
"fillOpacity": 0.18
}
}
}
},
"bullets": [
{
"type": "Bullet",
"settings": {
"locationX": 0,
"sprite": {
"type": "Label",
"settings": {
"text": "{name}",
"populateText": true,
"centerY": {
"type": "Percent",
"value": 50
},
"dx": 3,
"fontSize": "0.75em",
"oversizedBehavior": "truncate",
"maxWidth": 0,
"forceHidden": true,
"interactive": false
}
}
}
}
]
}
}
},
{
"series-1": {
"type": "ColumnSeries",
"settings": {
"name": "Loading",
"xAxis": "#axis-0",
"yAxis": "#axis-1",
"openValueXField": "start",
"valueXField": "end",
"categoryYField": "depth",
"clustered": false
},
"properties": {
"data": "#data-1",
"columns": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0,
"tooltipText": "[bold]{name}[/]\n{duration} ms, {self} ms self\nLoading",
"tooltipY": 0
}
}
}
},
"bullets": [
{
"type": "Bullet",
"settings": {
"locationX": 0,
"sprite": {
"type": "Label",
"settings": {
"text": "{name}",
"populateText": true,
"centerY": {
"type": "Percent",
"value": 50
},
"dx": 3,
"fontSize": "0.75em",
"oversizedBehavior": "truncate",
"maxWidth": 0,
"forceHidden": true,
"interactive": false
}
}
}
}
]
}
}
},
{
"series-2": {
"type": "ColumnSeries",
"settings": {
"name": "Scripting",
"xAxis": "#axis-0",
"yAxis": "#axis-1",
"openValueXField": "start",
"valueXField": "end",
"categoryYField": "depth",
"clustered": false
},
"properties": {
"data": "#data-2",
"columns": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0,
"tooltipText": "[bold]{name}[/]\n{duration} ms, {self} ms self\nScripting",
"tooltipY": 0
}
}
}
},
"bullets": [
{
"type": "Bullet",
"settings": {
"locationX": 0,
"sprite": {
"type": "Label",
"settings": {
"text": "{name}",
"populateText": true,
"centerY": {
"type": "Percent",
"value": 50
},
"dx": 3,
"fontSize": "0.75em",
"oversizedBehavior": "truncate",
"maxWidth": 0,
"forceHidden": true,
"interactive": false
}
}
}
}
]
}
}
},
{
"series-3": {
"type": "ColumnSeries",
"settings": {
"name": "Rendering",
"xAxis": "#axis-0",
"yAxis": "#axis-1",
"openValueXField": "start",
"valueXField": "end",
"categoryYField": "depth",
"clustered": false
},
"properties": {
"data": "#data-3",
"columns": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0,
"tooltipText": "[bold]{name}[/]\n{duration} ms, {self} ms self\nRendering",
"tooltipY": 0
}
}
}
},
"bullets": [
{
"type": "Bullet",
"settings": {
"locationX": 0,
"sprite": {
"type": "Label",
"settings": {
"text": "{name}",
"populateText": true,
"centerY": {
"type": "Percent",
"value": 50
},
"dx": 3,
"fontSize": "0.75em",
"oversizedBehavior": "truncate",
"maxWidth": 0,
"forceHidden": true,
"interactive": false
}
}
}
}
]
}
}
},
{
"series-4": {
"type": "ColumnSeries",
"settings": {
"name": "Painting",
"xAxis": "#axis-0",
"yAxis": "#axis-1",
"openValueXField": "start",
"valueXField": "end",
"categoryYField": "depth",
"clustered": false
},
"properties": {
"data": "#data-4",
"columns": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0,
"tooltipText": "[bold]{name}[/]\n{duration} ms, {self} ms self\nPainting",
"tooltipY": 0
}
}
}
},
"bullets": [
{
"type": "Bullet",
"settings": {
"locationX": 0,
"sprite": {
"type": "Label",
"settings": {
"text": "{name}",
"populateText": true,
"centerY": {
"type": "Percent",
"value": 50
},
"dx": 3,
"fontSize": "0.75em",
"oversizedBehavior": "truncate",
"maxWidth": 0,
"forceHidden": true,
"interactive": false
}
}
}
}
]
}
}
},
{
"series-5": {
"type": "ColumnSeries",
"settings": {
"name": "Long task (over 50 ms)",
"xAxis": "#axis-0",
"yAxis": "#axis-1",
"openValueXField": "start",
"valueXField": "end",
"categoryYField": "depth",
"clustered": false,
"fill": "@root.interfaceColors.get('negative')",
"stroke": "@root.interfaceColors.get('negative')"
},
"properties": {
"data": "#data-5",
"columns": {
"properties": {
"template": {
"settings": {
"strokeOpacity": 0,
"fillOpacity": 0,
"fillPattern": {
"type": "LinePattern",
"settings": {
"color": "@root.interfaceColors.get('negative')",
"rotation": 45,
"strokeWidth": 3,
"gap": 6,
"fill": "@root.interfaceColors.get('background')",
"fillOpacity": 1
}
},
"tooltipText": "[bold]Long task[/]\n{over} ms over the {limit} ms budget"
}
}
}
}
}
}
}
]
}



