123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /* 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 { DOM: dom, createClass } = require("devtools/client/shared/vendor/react");
- const { treeMapModel } = require("../models");
- const startVisualization = require("./tree-map/start");
- module.exports = createClass({
- propTypes: {
- treeMap: treeMapModel
- },
- displayName: "TreeMap",
- getInitialState() {
- return {};
- },
- componentDidMount() {
- const { treeMap } = this.props;
- if (treeMap && treeMap.report) {
- this._startVisualization();
- }
- },
- shouldComponentUpdate(nextProps) {
- const oldTreeMap = this.props.treeMap;
- const newTreeMap = nextProps.treeMap;
- return oldTreeMap !== newTreeMap;
- },
- componentDidUpdate(prevProps) {
- this._stopVisualization();
- if (this.props.treeMap && this.props.treeMap.report) {
- this._startVisualization();
- }
- },
- componentWillUnmount() {
- if (this.state.stopVisualization) {
- this.state.stopVisualization();
- }
- },
- _stopVisualization() {
- if (this.state.stopVisualization) {
- this.state.stopVisualization();
- this.setState({ stopVisualization: null });
- }
- },
- _startVisualization() {
- const { container } = this.refs;
- const { report } = this.props.treeMap;
- const stopVisualization = startVisualization(container, report);
- this.setState({ stopVisualization });
- },
- render() {
- return dom.div(
- {
- ref: "container",
- className: "tree-map-container"
- }
- );
- }
- });
|