Skip to content

Commit cc6f476

Browse files
author
Daniel Herzog
committed
Removed table from network-details; Moved close button to the right; Implemented two-line summary
1 parent 13787fe commit cc6f476

File tree

4 files changed

+134
-155
lines changed

4 files changed

+134
-155
lines changed

src/network/network_details_templates.js

Lines changed: 108 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ templates.details = function(entry, left_val, do_raw)
3939
],
4040
["div",
4141
[
42+
templates.details_headline(entry),
4243
["span",
4344
"class", "close-request-detail",
4445
"handler", "close-request-detail",
4546
"tabindex", "1"
46-
],
47-
templates.details_headline(entry)
47+
]
4848
],
4949
"class", "network-details-header-row"
5050
],
@@ -66,20 +66,10 @@ templates.details = function(entry, left_val, do_raw)
6666

6767
templates._details_content = function(entry, do_raw)
6868
{
69-
var requests_responses = entry.requests_responses.map(do_raw ? this._requests_responses_raw_bound
70-
: this._requests_responses_parsed_bound);
71-
if (do_raw)
72-
{
73-
return [
74-
requests_responses
75-
];
76-
}
77-
return (
78-
["table",
79-
entry.touched_network ? [] : this.did_not_touch_network(entry),
80-
requests_responses
81-
]
82-
);
69+
return [
70+
entry.requests_responses.map(do_raw ? this._requests_responses_raw_bound
71+
: this._requests_responses_parsed_bound)
72+
];
8373
};
8474

8575
templates.details_headline = function(entry)
@@ -88,29 +78,42 @@ templates.details_headline = function(entry)
8878
if (responsecode && responsecode in cls.ResourceUtil.http_status_codes)
8979
responsecode = responsecode + " " + cls.ResourceUtil.http_status_codes[responsecode];
9080

91-
return ["h2",
92-
[
93-
["span",
94-
entry.touched_network && responsecode ? String(responsecode) + " – " : "",
95-
"data-spec", "http#" + entry.current_responsecode
96-
],
97-
["span", entry.url]
98-
], "class", "url"
99-
]
100-
};
81+
var response_summary = [];
82+
if (entry.touched_network && responsecode)
83+
{
84+
response_summary = [
85+
"p", String(responsecode),
86+
"data-spec", "http#" + entry.current_responsecode,
87+
"class", (entry.error_in_current_response ? templates.ERROR_RESPONSE
88+
: "") + " response-summary"
89+
];
90+
}
91+
else
92+
{
93+
var local_url_types = [
94+
cls.ResourceManager["1.2"].UrlLoad.URLType.FILE,
95+
cls.ResourceManager["1.2"].UrlLoad.URLType.DATA
96+
];
97+
response_summary = [
98+
"p", local_url_types.contains(entry.urltype) ? ui_strings.S_NETWORK_NOT_REQUESTED
99+
: ui_strings.S_NETWORK_SERVED_FROM_CACHE,
100+
"class", templates.NOT_REQUESTED
101+
];
102+
}
101103

102-
templates.did_not_touch_network = function(entry)
103-
{
104-
var local_url_types = [
105-
cls.ResourceManager["1.2"].UrlLoad.URLType.FILE,
106-
cls.ResourceManager["1.2"].UrlLoad.URLType.DATA
104+
return [
105+
["p",
106+
[
107+
"span", (entry.current_request && entry.current_request.method + " ") || ""
108+
],
109+
[
110+
"span", entry.url,
111+
"class", "url"
112+
],
113+
"class", "method-and-url"
114+
],
115+
response_summary
107116
];
108-
return (
109-
["tbody",
110-
this._col_or_row(
111-
["p", local_url_types.contains(entry.urltype) ? ui_strings.S_NETWORK_NOT_REQUESTED
112-
: ui_strings.S_NETWORK_SERVED_FROM_CACHE])
113-
]);
114117
};
115118

116119
templates.requests_responses = function(do_raw, request_response, index, requests_responses)
@@ -138,9 +141,6 @@ templates._request = function(request, is_last, do_raw)
138141
// A request that's followed by another one, without a response in between,
139142
// is not shown in network-details. It will mostly mean it was retried internally
140143
// and didn't go on the network.
141-
// That can't be determined only by looking at RequestRetry events, because a
142-
// request with for example a 401 Authorization Required response should still
143-
// be shown.
144144
if (!is_last && !request.was_responded_to)
145145
return [];
146146

@@ -187,16 +187,7 @@ templates._token_receiver = function(tokens, token_type, token)
187187

188188
templates._request_headers = function(req, do_raw)
189189
{
190-
/*
191-
var method_str = req.method || "";
192-
if (method_str)
193-
method_str = " – " + method_str;
194-
*/
195-
var headline;
196-
if (req.request_body && req.request_body.partList && req.request_body.partList.length)
197-
headline = ["h2", ui_strings.S_NETWORK_MULTIPART_REQUEST_TITLE /* + method_str */];
198-
else
199-
headline = ["h2", ui_strings.S_NETWORK_REQUEST_DETAIL_REQUEST_TITLE /* + method_str */];
190+
var headline = ["h2", ui_strings.S_NETWORK_REQUEST_DETAIL_REQUEST_TITLE];
200191

201192
if (do_raw)
202193
{
@@ -209,18 +200,18 @@ templates._request_headers = function(req, do_raw)
209200
tokenizer.tokenize(req.request_headers_raw, this._token_receiver.bind(this, req.header_tokens));
210201
}
211202

212-
if (req.header_tokens.length)
213-
{
214-
var data_spec_firstline_tokens = [0];
215-
var state_holder = new cls.HTTPHeaderTokenizer.TokenStateholder(data_spec_firstline_tokens);
216-
var map_func = this._header_token_templ.bind(this, state_holder);
217-
return [
218-
headline,
219-
this._pre(req.header_tokens.map(map_func))
220-
];
221-
}
203+
var data_spec_firstline_tokens = [0];
204+
var state_holder = new cls.HTTPHeaderTokenizer.TokenStateholder(data_spec_firstline_tokens);
205+
var map_func = this._header_token_templ.bind(this, state_holder);
206+
return [
207+
headline,
208+
this._pre(req.header_tokens.map(map_func))
209+
];
222210
}
223-
return [];
211+
return [
212+
headline,
213+
ui_strings.S_NETWORK_REQUEST_NO_HEADERS_LABEL
214+
];
224215
}
225216

226217
var ret = [];
@@ -230,30 +221,39 @@ templates._request_headers = function(req, do_raw)
230221
}
231222
else
232223
{
233-
ret.extend(this.headers_list(req.request_headers));
224+
ret.extend(req.request_headers.map(this._headers_pseudo_raw));
234225
if (req.first_line)
235226
{
236-
// todo: make nice, add speclinks
237-
var classname = "mono " + cls.HTTPHeaderTokenizer.classnames[
238-
cls.HTTPHeaderTokenizer.types.FIRST_LINE_PART
239-
];
240-
ret.unshift([
241-
"pre", req.first_line,
242-
"class", classname
243-
]);
227+
var firstline = [];
228+
if (!req.firstline_tokens)
229+
{
230+
req.firstline_tokens = [];
231+
var tokenizer = new cls.HTTPHeaderTokenizer();
232+
tokenizer.tokenize(req.first_line, this._token_receiver.bind(this, req.firstline_tokens))
233+
}
234+
235+
if (req.firstline_tokens.length)
236+
{
237+
var data_spec_firstline_tokens = [0];
238+
var state_holder = new cls.HTTPHeaderTokenizer.TokenStateholder(data_spec_firstline_tokens);
239+
var map_func = this._header_token_templ.bind(this, state_holder);
240+
firstline = req.firstline_tokens.map(map_func);
241+
}
242+
ret.unshift(this._pre(firstline));
244243
}
245244
}
246-
ret.unshift(headline);
247-
248-
return ["tbody", ret.map(this._col_or_row)];
245+
return [
246+
headline,
247+
ret
248+
];
249249
};
250250

251251
templates._response_headers = function(resp, do_raw)
252252
{
253-
// Missing response headers aren't mentioned explicitely
254-
if (!resp.response_headers)
253+
if (!resp.logger_entry_touched_network)
255254
return [];
256255

256+
var headline = ["h2", ui_strings.S_NETWORK_REQUEST_DETAIL_RESPONSE_TITLE];
257257
if (do_raw)
258258
{
259259
if (!resp.header_tokens)
@@ -269,49 +269,41 @@ templates._response_headers = function(resp, do_raw)
269269
var state_holder = new cls.HTTPHeaderTokenizer.TokenStateholder(data_spec_firstline_tokens);
270270
var map_func = this._header_token_templ.bind(this, state_holder);
271271
return [
272-
["h2", ui_strings.S_NETWORK_REQUEST_DETAIL_RESPONSE_TITLE],
272+
headline,
273273
this._pre(resp.header_tokens.map(map_func))
274274
];
275275
}
276-
return [];
276+
return [
277+
headline,
278+
ui_strings.S_NETWORK_REQUEST_NO_HEADERS_LABEL
279+
];
277280
}
278281

279-
var ret = [];
280-
/*
281-
var responsecode = resp.responsecode || "";
282-
var status_code = cls.ResourceUtil.http_status_codes[responsecode];
283-
if (status_code)
284-
responsecode = responsecode + " " + status_code;
285-
286-
if (responsecode)
287-
responsecode = " – " + responsecode;
288-
*/
289-
290-
ret.extend(this.headers_list(resp.response_headers));
282+
var ret = [resp.response_headers.map(this._headers_pseudo_raw)];
291283
if (resp.first_line)
292284
{
293-
// todo: make nice, add speclinks
294-
var classname = "mono " + cls.HTTPHeaderTokenizer.classnames[
295-
cls.HTTPHeaderTokenizer.types.FIRST_LINE_PART
296-
];
297-
ret.unshift([
298-
"pre", resp.first_line,
299-
"class", classname
300-
]);
301-
}
285+
var firstline = [];
286+
if (!resp.firstline_tokens)
287+
{
288+
resp.firstline_tokens = [];
289+
var tokenizer = new cls.HTTPHeaderTokenizer();
290+
tokenizer.tokenize(resp.first_line, this._token_receiver.bind(this, resp.firstline_tokens))
291+
}
302292

303-
if (resp.logger_entry_touched_network)
304-
{
305-
var head = ["h2", ui_strings.S_NETWORK_REQUEST_DETAIL_RESPONSE_TITLE /* + responsecode */];
306-
/*
307-
if (responsecode)
293+
if (resp.firstline_tokens.length)
308294
{
309-
head.extend(["data-spec", "http#" + resp.responsecode]);
295+
var data_spec_firstline_tokens = [1];
296+
var state_holder = new cls.HTTPHeaderTokenizer.TokenStateholder(data_spec_firstline_tokens);
297+
var map_func = this._header_token_templ.bind(this, state_holder);
298+
firstline = resp.firstline_tokens.map(map_func);
310299
}
311-
*/
312-
ret.unshift(head);
300+
ret.unshift(this._pre(firstline));
313301
}
314-
return ["tbody", ret.map(this._col_or_row)];
302+
303+
return [
304+
headline,
305+
ret
306+
];
315307
};
316308

317309
templates._headers_pseudo_raw = function(header)
@@ -327,21 +319,6 @@ templates._headers_pseudo_raw = function(header)
327319
return templates._pre(template);
328320
};
329321

330-
templates._headers = function(header) {
331-
return [
332-
["th", header.name + ":",
333-
"data-spec", "http#" + (header.name).trim()
334-
],
335-
["td", header.value]
336-
];
337-
};
338-
339-
templates.headers_list = function(headers, do_raw)
340-
{
341-
// return headers.map(do_raw ? this._headers_pseudo_raw : this._headers, this);
342-
return headers.map(this._headers_pseudo_raw);
343-
};
344-
345322
templates.param_cells = function(name_value)
346323
{
347324
var parts = name_value.replace(/\+/g, " ").split("=");
@@ -366,7 +343,7 @@ templates._request_body = function(req, do_raw)
366343
if (n === 0)
367344
ret.push(this._pre(boundary, HTTP_BOUNDARY_CLASS));
368345

369-
ret.extend(this.headers_list(part.headerList, do_raw));
346+
ret.extend(part.headerList.map(this._headers_pseudo_raw));
370347
ret.push(this._pre("\n"));
371348
if (part.content && part.content.stringData)
372349
ret.push(this._pre(part.content.stringData, "mono network-body"));
@@ -388,11 +365,14 @@ templates._request_body = function(req, do_raw)
388365
else
389366
{
390367
var parts = req.request_body.content.stringData.split("&");
391-
ret.push([
368+
var rows = [];
369+
rows.push([
392370
["th", ui_strings.S_LABEL_NETWORK_POST_DATA_NAME],
393371
["th", ui_strings.S_LABEL_NETWORK_POST_DATA_VALUE]
394-
]); // It's necesary to just push the outer array, because each entry will be wrapped in a row.
395-
ret.extend(parts.map(this.param_cells));
372+
]);
373+
rows.extend(parts.map(this.param_cells));
374+
var table = ["table", rows];
375+
ret.push(table);
396376
}
397377
}
398378
else // not multipart or form.
@@ -418,10 +398,7 @@ templates._request_body = function(req, do_raw)
418398
}
419399
}
420400

421-
if (do_raw)
422-
return ret;
423-
else
424-
return ["tbody", ret.map(this._col_or_row)];
401+
return ret;
425402
};
426403

427404

@@ -481,10 +458,7 @@ templates._response_body = function(resp, do_raw, is_last_response)
481458
if (ret.length)
482459
ret.unshift(this._pre("\n"));
483460

484-
if (do_raw)
485-
return ret;
486-
else
487-
return ["tbody", ret.map(this._col_or_row), "class", classname];
461+
return ret;
488462
};
489463

490464
})(window.templates.network);

0 commit comments

Comments
 (0)