1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
/* 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 {
Component,
createFactory,
} = require("resource://devtools/client/shared/vendor/react.js");
const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js");
const Tree = createFactory(
require("resource://devtools/client/shared/components/VirtualizedTree.js")
);
const CensusTreeItem = createFactory(
require("resource://devtools/client/memory/components/CensusTreeItem.js")
);
const {
TREE_ROW_HEIGHT,
} = require("resource://devtools/client/memory/constants.js");
const {
censusModel,
diffingModel,
} = require("resource://devtools/client/memory/models.js");
class Census extends Component {
static get propTypes() {
return {
census: censusModel,
onExpand: PropTypes.func.isRequired,
onCollapse: PropTypes.func.isRequired,
onFocus: PropTypes.func.isRequired,
onViewSourceInDebugger: PropTypes.func.isRequired,
onViewIndividuals: PropTypes.func.isRequired,
diffing: diffingModel,
};
}
render() {
const {
census,
onExpand,
onCollapse,
onFocus,
diffing,
onViewSourceInDebugger,
onViewIndividuals,
} = this.props;
const report = census.report;
const parentMap = census.parentMap;
const { totalBytes, totalCount } = report;
const getPercentBytes =
totalBytes === 0 ? _ => 0 : bytes => (bytes / totalBytes) * 100;
const getPercentCount =
totalCount === 0 ? _ => 0 : count => (count / totalCount) * 100;
return Tree({
autoExpandDepth: 0,
preventNavigationOnArrowRight: false,
focused: census.focused,
getParent: node => {
const parent = parentMap[node.id];
return parent === report ? null : parent;
},
getChildren: node => node.children || [],
isExpanded: node => census.expanded.has(node.id),
onExpand,
onCollapse,
onFocus,
renderItem: (item, depth, focused, arrow, expanded) =>
new CensusTreeItem({
onViewSourceInDebugger,
item,
depth,
focused,
arrow,
expanded,
getPercentBytes,
getPercentCount,
diffing,
inverted: census.display.inverted,
onViewIndividuals,
}),
getRoots: () => report.children || [],
getKey: node => node.id,
itemHeight: TREE_ROW_HEIGHT,
});
}
}
module.exports = Census;
|