示例#1
0
  render: function() {
    var selectedPacket = this.props.selectedPacket || {};

    return (
      DIV({className: "details"},
        TreeView({key: "packet-detail", data: selectedPacket})
      )
    );
  }
示例#2
0
  render: function() {
    var actions = this.props.actions;
    var file = this.props.data;

    if (file.discardRequestBody) {
      return DOM.span({className: "netInfoBodiesDiscarded"},
        Locale.$STR("xhrSpy.requestBodyDiscarded")
      );
    }

    var postData = file.request.postData;
    if (!postData) {
      actions.requestData("requestPostData");

      // xxxHonza: localization, real spinner
      return (
        DOM.div({}, "Loading...")
      );
    }

    var text = postData.text;

    // URL encoded post data are nicely rendered as a list
    // of parameters.
    if (text && XhrUtils.isURLEncodedRequest(file)) {
      var lines = text.split("\n");
      var params = Url.parseURLEncodedText(lines[lines.length-1]);
      text = NetInfoParams({headers: params});
    }

    // Multipart post data are parsed and nicely rendered
    // using special template.
    if (text && XhrUtils.isMultiPartRequest(file)) {
      // xxxHonza: TODO FIXME
    }

    if (this.isJson(postData)) {
      var json = this.parseJson(file);
      if (json) {
        return TreeView({
          data: json,
          mode: "tiny"
        });
      }
    }

    return (
      DOM.div({className: "postTabBox"},
        DOM.div({className: "panelContent netInfoResponseContent"},
          text
        )
      )
    );
  }
示例#3
0
function renderContent(value) {
  var tree = TreeView({
    data: JSON.parse(value),
    mode: "tiny"
  });

  React.render(tree, document.querySelector("#content"));

  var size = getRequiredSize();
  postChromeMessage("resize", size);
}
示例#4
0
 render: function() {
   var grip = this.state.data || this.props.data;
   return (
     DIV({},
       TreeView({
         forceUpdate: this.state.forceUpdate,
         key: "content",
         data: grip,
         provider: this.props.provider,
         mode: this.props.mode
       })
     )
   );
 }
示例#5
0
  render: function() {
    var frame = this.props.frame;
    var data = frame.data;

    var type = frame.sent ? "send" : "receive";
    var size = Str.formatSize(data.payload.length);
    var payload = Str.cropString(data.payload, 50);
    var time = new Date(data.timeStamp / 1000);
    var timeText = time.getHours() + ":" + time.getMinutes() +
      ":" + time.getSeconds() + "." + time.getMilliseconds();

    // Error frames have its own styling
    var classNames = ["frameBubble", type];
    if (frame.error) {
      classNames.push("error");
    }

    // Selected frames are highlighted
    if (this.props.selection == frame) {
      classNames.push("selected");
    }

    // Render inline frame preview. There is just one preview displayed
    var preview;

    if (!preview && frame.socketIo) {
      preview = TreeView({
        key: "preview-socketio",
        // We only show the data that is deemed interesting for the user in the
        // inline previews, not the socketIO metadata
        data: {"Socket IO": frame.socketIo.data},
        mode: "tiny"
      });
    }

    if (!preview && frame.sockJs) {
      preview = TreeView({
        key: "preview-sockjs",
        data: {"SockJS": frame.sockJs},
        mode: "tiny"
      });
    }

    if (!preview && frame.json) {
      preview = TreeView({
        key: "preview-json",
        data: {"JSON": frame.json},
        mode: "tiny"
      });
    }

    var label = (type == "send") ?
      Locale.$STR("websocketmonitor.label.sent") :
      Locale.$STR("websocketmonitor.label.received");

    return (
      div({className: classNames.join(" "), onClick: this.onClick},
        div({className: "frameBox"},
          div({className: "frameContent"},
            div({className: "body"},
              span({className: "text"}, label),
              span({className: "type"}, getOpCodeLabel(frame)),
              div({className: "payload"},
                Str.cropString(data.payload)
              ),
              div({className: "preview"},
                preview
              ),
              div({},
                span({className: "info"}, timeText + ", " + size)
              )
            ),
            div({className: "boxArrow"})
          )
        )
      )
    );
  },
示例#6
0
  render: function() {
    var packet = this.props.data.packet;
    var type = packet.type ? packet.type : "";
    var mode = "tiny";
    var classNames = ["packetPanel", this.props.data.type];
    var size = Str.formatSize(this.props.data.size);
    var time = this.props.data.time;

    // Use String.formatTime, but how to access from the content?
    var timeText = time.toLocaleTimeString() + "." + time.getMilliseconds();
    var previewData = {
      packet: packet
    }

    // Error packets have its own styling
    if (packet.error) {
      classNames.push("error");
    }

    // Selected packets are highlighted
    if (this.props.selected) {
      classNames.push("selected");
    }

    // Inline preview component
    var preview = this.props.showInlineDetails ? TreeView(
      {data: previewData, mode: mode}) : null;

    if (this.props.data.type == "send") {
      return (
        DIV({className: classNames.join(" "), onClick: this.onClick},
          DIV({className: "packetBox"},
            DIV({className: "packetContent"},
              DIV({className: "body"},
                SPAN({className: "text"},
                  Locale.$STR("rdpInspector.label.sent") + " "
                ),
                SPAN({className: "type"}, type),
                SPAN({className: "text"},
                    " " + Locale.$STR("rdpInspector.label.to") + " "
                ),
                SPAN({className: "to"}, packet.to),
                SPAN({className: "info"}, timeText + ", " + size),
                DIV({className: "preview"},
                  preview
                )
              ),
              DIV({className: "boxArrow"})
            )
          )
        )
      );
    } else {
      return (
        DIV({className: classNames.join(" "), onClick: this.onClick},
          DIV({className: "packetBox"},
            DIV({className: "packetContent"},
              DIV({className: "boxArrow"}),
              DIV({className: "body"},
                DIV({className: "from"},
                  SPAN({className: "text"},
                    Locale.$STR("rdpInspector.label.received") + " "
                  ),
                  SPAN({}, type),
                  SPAN({className: "text"},
                    " " + Locale.$STR("rdpInspector.label.from") + " "),
                  SPAN({}, packet.from),
                  SPAN({className: "info"}, timeText + ", " + size)
                ),
                DIV({className: "errorMessage"},
                  DIV({}, packet.error),
                  DIV({}, packet.message)
                ),
                DIV({className: "preview"},
                  preview
                )
              )
            )
          )
        )
      );
    }
  },