Code coverage report for src/components/loadable.cjsx

Statements: 88.24% (30 / 34)      Branches: 72.22% (13 / 18)      Functions: 100% (6 / 6)      Lines: 88.24% (30 / 34)      Ignored: none     

All files » src/components/ » loadable.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                                       87× 87×     87× 87×     87×                                 304×     525× 525×     979× 979× 979× 979× 118× 861× 629× 232×   231×          
var BS, BindStoreMixin, React, RefreshButton;
 
React = require('react');
 
BS = require('react-bootstrap');
 
BindStoreMixin = require('./bind-store-mixin');
 
RefreshButton = require('openstax-react-components').RefreshButton;
 
module.exports = React.createClass({
  displayName: 'Loadable',
  propTypes: {
    render: React.PropTypes.func.isRequired,
    saved: React.PropTypes.func,
    store: React.PropTypes.object.isRequired,
    isLoading: React.PropTypes.func.isRequired,
    isLoaded: React.PropTypes.func.isRequired,
    isFailed: React.PropTypes.func.isRequired,
    renderLoading: React.PropTypes.func.isRequired,
    renderError: React.PropTypes.func.isRequired,
    isLong: React.PropTypes.bool
  },
  getDefaultProps: function() {
    return {
      renderLoading: function(refreshButton, isLong) {
        var loadableClasses;
        Iif (isLong == null) {
          isLong = false;
        }
        loadableClasses = 'loadable is-loading';
        Iif (isLong) {
          loadableClasses += ' is-long';
        }
        return React.createElement("div", {
          "className": loadableClasses
        }, "Loading... ", refreshButton);
      },
      renderError: function(refreshButton, isLong) {
        var loadableClasses;
        Iif (isLong == null) {
          isLong = false;
        }
        loadableClasses = 'loadable is-error';
        Iif (isLong) {
          loadableClasses += ' is-long';
        }
        return React.createElement("div", {
          "className": loadableClasses
        }, "Error Loading. ", refreshButton);
      },
      isLong: false
    };
  },
  mixins: [BindStoreMixin],
  bindStore: function() {
    return this.props.store;
  },
  bindUpdate: function() {
    var base;
    return (typeof (base = this.props).update === "function" ? base.update() : void 0) || this.setState({});
  },
  render: function() {
    var isFailed, isLoaded, isLoading, isLong, ref, refreshButton, render, renderError, renderLoading;
    ref = this.props, isLoading = ref.isLoading, isLoaded = ref.isLoaded, isFailed = ref.isFailed, render = ref.render, renderLoading = ref.renderLoading, renderError = ref.renderError, isLong = ref.isLong;
    refreshButton = React.createElement(RefreshButton, null);
    if (isLoading()) {
      return renderLoading(refreshButton, isLong);
    } else if (isLoaded()) {
      return render();
    } else if (isFailed()) {
      return renderError(refreshButton, isLong);
    } else {
      return render();
    }
  }
});