Skip to content

Commit 344bc91

Browse files
author
Robert Jackson
committed
Add "addon-initialization" route and rudimentary component.
1 parent 56fae41 commit 344bc91

File tree

8 files changed

+119
-0
lines changed

8 files changed

+119
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import Ember from 'ember';
2+
3+
const {
4+
computed
5+
} = Ember;
6+
7+
function filterForAddonInitializationNodes(node) {
8+
return node.label.addonInitializationNode;
9+
}
10+
11+
function filterForAddonDiscoveryNodes(node) {
12+
return node.label.addonDiscoveryNode;
13+
}
14+
15+
export default Ember.Component.extend({
16+
filter: filterForAddonInitializationNodes,
17+
18+
nodes: computed('data', 'filter', function() {
19+
let data = this.get('data');
20+
let filter = this.get('filter');
21+
if (!data) { return []; }
22+
23+
let nodes = data.nodes;
24+
25+
if (filter) {
26+
nodes = nodes.filter(filter);
27+
}
28+
29+
let addonNodes = nodes
30+
.sort((a, b) => {
31+
return b.stats.time.self - a.stats.time.self;
32+
});
33+
34+
return addonNodes;
35+
}),
36+
37+
totalTime: computed('nodes', function() {
38+
let nodes = this.get('nodes');
39+
40+
return nodes.reduce(function(previousValue, node){
41+
return previousValue + node.stats.time.self;
42+
}, 0);
43+
}),
44+
45+
actions: {
46+
updateFilter(event) {
47+
let filter;
48+
49+
switch(event.target.value) {
50+
case 'addon-discovery':
51+
filter = filterForAddonDiscoveryNodes;
52+
break;
53+
case 'addon-initialization':
54+
filter = filterForAddonInitializationNodes;
55+
break;
56+
}
57+
58+
this.set('filter', filter);
59+
}
60+
}
61+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import Ember from 'ember';
2+
3+
export default Ember.Controller.extend({
4+
init() {
5+
this._super(...arguments);
6+
this.data = null;
7+
},
8+
9+
actions: {
10+
parseFile(event) {
11+
let reader = new FileReader();
12+
reader.onload = (e) => {
13+
var contents = e.target.result;
14+
this.set('data', JSON.parse(contents));
15+
};
16+
17+
reader.readAsText(event.target.files[0]);
18+
}
19+
}
20+
})

app/helpers/ns-to-ms.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import Ember from 'ember';
2+
3+
export function nsToMs([time]) {
4+
return (time / 1000000).toFixed(2);
5+
}
6+
7+
export default Ember.Helper.helper(nsToMs);

app/router.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const Router = Ember.Router.extend({
77
});
88

99
Router.map(function() {
10+
this.route('addon-initialization');
1011
});
1112

1213
export default Router;

app/routes/addon-initialization.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import Ember from 'ember';
2+
3+
export default Ember.Route.extend({
4+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<form>
2+
<div>
3+
<label for="file-upload">Upload the `instrumentation.init.json` output of <code>BROCCOLI_VIZ=1 ember build</code>:</label>
4+
<input name="file-upload" type="file" onchange={{action 'parseFile'}}>
5+
</div>
6+
</form>
7+
8+
{{addon-initialization-times data=data}}

app/templates/application.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
{{link-to 'Addon Initialization' 'addon-initialization'}}
2+
3+
<hr>
4+
15
{{outlet}}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<select onchange={{action 'updateFilter'}}>
2+
<option value="addon-discovery">Show Addon Discovery</option>
3+
<option selected value="addon-initialization">Show Addon Initialization</option>
4+
</select>
5+
6+
<ul>
7+
{{#each nodes as |node|}}
8+
<li>{{node.label.name}} - {{ns-to-ms node.stats.time.self}}</li>
9+
{{/each}}
10+
</ul>
11+
12+
<div>
13+
Total: {{ns-to-ms totalTime}}
14+
</div>

0 commit comments

Comments
 (0)