var Router = ReactRouter, Link = Router.Link; var Storage = { set: function(category, key, value) { window.localStorage.setItem(category +'-'+ key, JSON.stringify(value)); }, get: function(category, key) { var val = window.localStorage.getItem(category +'-'+ key); return val === null ? null : JSON.parse(val); } }; var App = React.createClass({ mixins: [Router.Navigation, Router.State], orgsURL: "/api/orgs", teamsURL: "/api/teams?org=", getInitialState: function() { return { orgs: [], org: null, teams: [], team: null }; }, componentDidMount: function() { this.loadOrgs(); this.loadTeams(); }, loadOrgs: function() { $.get(this.orgsURL, function(res){ this.setState({orgs: res}); if (res !== null) { for (var i = 0; i < res.length; i++) { var org = res[i]; Storage.set('org', org.login, org); } } }.bind(this)); }, loadTeams: function() { $.get(this.teamsURL + this.getParams().org, function(res){ this.setState({teams: res}) if (res !== null) { for (var i = 0; i < res.length; i++) { var team = res[i]; Storage.set('team', team.name, team); } } }.bind(this)); }, render: function(){ return (
); } }); var Menu = React.createClass({ mixins: [Router.State], render: function() { var renderOrg = function(org) { return (
  • {org.login}
  • ) }; var renderTeam = function(team) { return (
  • {team.name}
  • ) }; return (
    ); } }); var Org = React.createClass({ render: function(){ return ( ); } }); var OrgStats = React.createClass({ mixins: [Router.State], render: function(){ var org = Storage.get('org', this.getParams().org); return (
    ); } }); var TeamStats = React.createClass({ mixins: [Router.State], render: function(){ return (
    ); } }); var UserStats = React.createClass({ mixins: [Router.State], render: function(){ return (
    ); } }); var RepoStats = React.createClass({ mixins: [Router.State], render: function(){ return (
    ); } }); var NotFound = React.createClass({ render: function(){ return (
    NOT FOUND :(
    ); } }); var SelectOrg = React.createClass({ render: function(){ return (
    Please select organization from the menu!
    ); } }); var InfoBlock = React.createClass({ render: function() { var img =
    ; return (
    { this.props.image ? img : null }

    {this.props.title}

    {this.props.text}

    ) } }); var routes = [ ]; Router.run(routes, Router.HistoryLocation, function(Handler) { React.render(, document.body); });