summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/net/components/size-limit.js
blob: de8839314810b96720b59b7d7c295e14afc2efd1 (plain)
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
/* 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 React = require("devtools/client/shared/vendor/react");

// Shortcuts
const DOM = React.DOM;
const PropTypes = React.PropTypes;

/**
 * This template represents a size limit notification message
 * used e.g. in the Response tab when response body exceeds
 * size limit. The message contains a link allowing the user
 * to fetch the rest of the data from the backend (debugger server).
 */
var SizeLimit = React.createClass({
  propTypes: {
    data: PropTypes.object.isRequired,
    message: PropTypes.string.isRequired,
    link: PropTypes.string.isRequired,
    actions: PropTypes.shape({
      resolveString: PropTypes.func.isRequired
    }),
  },

  displayName: "SizeLimit",

  // Event Handlers

  onClickLimit(event) {
    let actions = this.props.actions;
    let content = this.props.data;

    actions.resolveString(content, "text");
  },

  // Rendering

  render() {
    let message = this.props.message;
    let link = this.props.link;
    let reLink = /^(.*)\{\{link\}\}(.*$)/;
    let m = message.match(reLink);

    return (
        DOM.div({className: "netInfoSizeLimit"},
          DOM.span({}, m[1]),
          DOM.a({
            className: "objectLink",
            onClick: this.onClickLimit},
              link
          ),
          DOM.span({}, m[2])
        )
    );
  }
});

// Exports from this module
module.exports = SizeLimit;