Code coverage report for src/components/navbar/server-error-monitoring.cjsx

Statements: 32.35% (11 / 34)      Branches: 0% (0 / 18)      Functions: 33.33% (2 / 6)      Lines: 32.35% (11 / 34)      Ignored: none     

All files » src/components/navbar/ » server-error-monitoring.cjsx
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 95 96 97                                                                                                                                                                     99×        
var AppActions, AppStore, BS, BindStoreMixin, Dialog, React, ServerErrorMessage, _, ref;
 
React = require('react');
 
BindStoreMixin = require('../bind-store-mixin');
 
BS = require('react-bootstrap');
 
_ = require('underscore');
 
ref = require('../../flux/app'), AppStore = ref.AppStore, AppActions = ref.AppActions;
 
Dialog = require('../tutor-dialog');
 
ServerErrorMessage = React.createClass({
  displayName: 'ServerErrorMessage',
  propTypes: {
    statusCode: React.PropTypes.number.isRequired,
    message: React.PropTypes.string.isRequired,
    request: React.PropTypes.object.isRequired,
    supportLink: React.PropTypes.string,
    debug: React.PropTypes.bool
  },
  getDefaultProps: function() {
    return {
      supportLink: 'https://openstaxtutor.zendesk.com/hc/en-us/requests/new',
      debug: true
    };
  },
  render: function() {
    var dataMessage, debug, debugInfo, errorMessage, message, ref1, request, statusCode, supportLink;
    ref1 = this.props, statusCode = ref1.statusCode, message = ref1.message, request = ref1.request, supportLink = ref1.supportLink, debug = ref1.debug;
    if (request.opts.data != null) {
      dataMessage = React.createElement("span", null, "with ", React.createElement("pre", null, request.opts.data));
    }
    if (debug) {
      debugInfo = [
        React.createElement("p", null, "Additional error messages returned from the server is:"), React.createElement("pre", {
          "className": 'response'
        }, message || 'No response was received'), React.createElement("div", {
          "className": 'request'
        }, React.createElement("kbd", null, request.opts.method), " on ", request.url, " ", dataMessage)
      ];
    }
    return errorMessage = React.createElement("div", {
      "className": 'server-error'
    }, React.createElement("h3", null, "An error with code ", statusCode, " has occured"), React.createElement("p", null, "Please visit ", React.createElement("a", {
      "target": '_blank',
      "href": supportLink
    }, "our support page"), " to file a bug report."), debugInfo);
  }
});
 
module.exports = React.createClass({
  displayName: 'ServerErrorMonitoring',
  mixins: [BindStoreMixin],
  bindStore: AppStore,
  bindEvent: 'server-error',
  bindUpdate: function() {
    var dismissError, serverErr;
    serverErr = AppStore.getError();
    if (!(serverErr && -1 === window.location.search.indexOf('reloaded'))) {
      return;
    }
    dismissError = function() {
      var join, navigation;
      navigation = AppStore.errorNavigation();
      if (_.isEmpty(navigation)) {
        return;
      }
      if (navigation.shouldReload) {
        join = window.location.search ? '&' : '?';
        return window.location.href = window.location.href + join + 'reloaded';
      } else if (navigation.href) {
        return window.location.href = navigation.href;
      }
    };
    return Dialog.show({
      title: 'Server Error',
      body: React.createElement(ServerErrorMessage, React.__spread({}, serverErr)),
      buttons: [
        React.createElement(BS.Button, {
          "key": 'ok',
          "onClick": (function() {
            return Dialog.hide();
          }),
          "bsStyle": 'primary'
        }, "OK")
      ]
    }).then(dismissError, dismissError);
  },
  render: function() {
    return null;
  }
});