Skip to content
This repository was archived by the owner on Jun 26, 2020. It is now read-only.

Commit ce178a3

Browse files
committed
Merge pull request #283 from kassens/group-relay-requests
[relay] Group queries by request
2 parents 3246ad4 + 9d23dc8 commit ce178a3

File tree

2 files changed

+54
-13
lines changed

2 files changed

+54
-13
lines changed

plugins/Relay/QueryList.js

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,34 @@ class QueryList extends React.Component {
2727
if (!this.props.queries.count()) {
2828
return <div style={styles.empty}>No Relay Queries logged</div>;
2929
}
30-
var rows = this.props.queries.valueSeq().map((q, i) => (
31-
<Query
32-
data={q}
33-
isSelected={q.get('id') === this.props.selectedQuery}
34-
key={q.get('id')}
35-
oddRow={(i % 2) === 1}
36-
onSelect={() => this.props.selectQuery(q.get('id'))}
37-
/>
38-
)).toArray();
30+
31+
const rows = [];
32+
let odd = false;
33+
let lastRequestNumber = -1;
34+
this.props.queries.forEach(query => {
35+
const requestNumber = query.get('requestNumber');
36+
if (lastRequestNumber !== requestNumber) {
37+
lastRequestNumber = requestNumber;
38+
rows.push(
39+
<tr key={'request' + requestNumber}>
40+
<td colSpan="4" style={styles.grouper}>
41+
Request {requestNumber}
42+
</td>
43+
</tr>
44+
);
45+
odd = false;
46+
}
47+
rows.push(
48+
<Query
49+
data={query}
50+
isSelected={query.get('id') === this.props.selectedQuery}
51+
key={query.get('id')}
52+
oddRow={odd}
53+
onSelect={() => this.props.selectQuery(query.get('id'))}
54+
/>
55+
);
56+
odd = !odd;
57+
});
3958

4059
return (
4160
<div style={styles.container}>
@@ -62,6 +81,11 @@ var styles = {
6281
width: '100%',
6382
},
6483

84+
grouper: {
85+
fontWeight: 'bold',
86+
fontSize: 10,
87+
},
88+
6589
empty: {
6690
flex: 1,
6791
padding: 50,

plugins/Relay/installRelayHook.js

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ function installRelayHook(window: Object) {
5858
};
5959
}
6060

61-
function recordRequest(type: 'mutation' | 'query', request) {
61+
function recordRequest(
62+
type: 'mutation' | 'query',
63+
start: number,
64+
request,
65+
requestNumber: number,
66+
) {
6267
var id = Math.random().toString(16).substr(2);
6368
request.then(
6469
response => {
@@ -85,22 +90,34 @@ function installRelayHook(window: Object) {
8590
return {
8691
id: id,
8792
name: request.getDebugName(),
88-
start: performance.now(),
93+
requestNumber: requestNumber,
94+
start: start,
8995
text: textChunks,
9096
type: type,
9197
variables: request.getVariables(),
9298
};
9399
}
94100

101+
let requestNumber = 0;
102+
95103
function instrumentRelayRequests(relayInternals: Object) {
96104
var NetworkLayer = relayInternals.NetworkLayer;
97105

98106
decorate(NetworkLayer, 'sendMutation', mutation => {
99-
emit('relay:pending', [recordRequest('mutation', mutation)]);
107+
requestNumber++;
108+
emit(
109+
'relay:pending',
110+
[recordRequest('mutation', performance.now(), mutation, requestNumber)]
111+
);
100112
});
101113

102114
decorate(NetworkLayer, 'sendQueries', queries => {
103-
emit('relay:pending', queries.map(query => recordRequest('query', query)));
115+
requestNumber++;
116+
const start = performance.now();
117+
emit(
118+
'relay:pending',
119+
queries.map(query => recordRequest('query', start, query, requestNumber))
120+
);
104121
});
105122

106123
var instrumented = {};

0 commit comments

Comments
 (0)