diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-02-28 12:17:13 +0100 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-02-28 12:17:13 +0100 |
commit | 627f167bf41935cad572b04c5b412f9294293ecb (patch) | |
tree | 76abf91246d7f90c25311d0fda82208169c7d8cc /devtools/client/netmonitor/selectors/index.js | |
parent | b19e4e2cf0c1537c8c2a56d0b783d38b6b25de7f (diff) | |
download | UXP-627f167bf41935cad572b04c5b412f9294293ecb.tar UXP-627f167bf41935cad572b04c5b412f9294293ecb.tar.gz UXP-627f167bf41935cad572b04c5b412f9294293ecb.tar.lz UXP-627f167bf41935cad572b04c5b412f9294293ecb.tar.xz UXP-627f167bf41935cad572b04c5b412f9294293ecb.zip |
Bug 1309194: Implement summary info in Net Panel Toolbar; Bug 1317205: CSS improvement for summary button
Required for: https://github.com/MoonchildProductions/moebius/pull/93
Diffstat (limited to 'devtools/client/netmonitor/selectors/index.js')
-rw-r--r-- | devtools/client/netmonitor/selectors/index.js | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/devtools/client/netmonitor/selectors/index.js b/devtools/client/netmonitor/selectors/index.js index f473149b5..8cd6b6ffc 100644 --- a/devtools/client/netmonitor/selectors/index.js +++ b/devtools/client/netmonitor/selectors/index.js @@ -1,8 +1,63 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + "use strict"; +const { createSelector } = require("devtools/client/shared/vendor/reselect"); + +/** + * Gets the total number of bytes representing the cumulated content size of + * a set of requests. Returns 0 for an empty set. + * + * @param {array} items - an array of request items + * @return {number} total bytes of requests + */ +function getTotalBytesOfRequests(items) { + if (!items.length) { + return 0; + } + + let result = 0; + items.forEach((item) => { + let size = item.attachment.contentSize; + result += (typeof size == "number") ? size : 0; + }); + + return result; +} + +/** + * Gets the total milliseconds for all requests. Returns null for an + * empty set. + * + * @param {array} items - an array of request items + * @return {object} total milliseconds for all requests + */ +function getTotalMillisOfRequests(items) { + if (!items.length) { + return null; + } + + const oldest = items.reduce((prev, curr) => + prev.attachment.startedMillis < curr.attachment.startedMillis ? + prev : curr); + const newest = items.reduce((prev, curr) => + prev.attachment.startedMillis > curr.attachment.startedMillis ? + prev : curr); + + return newest.attachment.endedMillis - oldest.attachment.startedMillis; +} + +const getSummary = createSelector( + (state) => state.requests.items, + (requests) => ({ + count: requests.length, + totalBytes: getTotalBytesOfRequests(requests), + totalMillis: getTotalMillisOfRequests(requests), + }) +); + module.exports = { - // selectors... + getSummary, }; |