import {LifeformIcons} from "javascripts/components/gather"; const React = require("react"); const helper = require("javascripts/helper"); const enslUrl = helper.enslUrl; const hiveUrl = helper.hiveUrl; const modalId = helper.modalId; const UserLogin = React.createClass({ propTypes: { socket: React.PropTypes.object.isRequired }, authorizeId(id) { this.props.socket.emit("users:authorize", { id: parseInt(id, 10) }); }, handleSubmit(e) { e.preventDefault(); let id = React.findDOMNode(this.refs.authorize_id).value.trim(); if (!id) return; React.findDOMNode(this.refs.authorize_id).value = ''; this.authorizeId(id); }, render() { return (
); } }); const DisconnectUserButton = React.createClass({ propTypes: { socket: React.PropTypes.object.isRequired, id: React.PropTypes.number.isRequired }, getDefaultProps() { return { id: null }; }, disconnectUser() { this.props.socket.emit("users:disconnect", { id: this.props.id }); }, render() { return } }); const UserModal = React.createClass({ propTypes: { user: React.PropTypes.object.isRequired, socket: React.PropTypes.object.isRequired, currentUser: React.PropTypes.object.isRequired }, render() { const currentUser = this.props.currentUser; const user = this.props.user; let hiveStats; if (user.hive.id) { hiveStats = [ Hive Stats, ELO {user.hive.skill} , Hours Played {Math.round(user.hive.playTime / 3600)} , Wins {user.hive.wins} , Losses {user.hive.loses} , Kills (/min) {user.hive.kills} ({_.round(user.hive.kills / (user.hive.playTime / 60), 1)}) , Assists (/min) {user.hive.assists} ({_.round(user.hive.assists / (user.hive.playTime / 60), 1)}) , Deaths (/min) {user.hive.deaths} ({_.round(user.hive.deaths / (user.hive.playTime / 60), 1)}) ] } let adminOptions; if (currentUser.admin) { adminOptions = ; } return (

{user.country}  {user.username}

User Avatar
{hiveStats}
Lifeforms
Links ENSL Profile  Hive Profile
{adminOptions}
); } }) const UserItem = React.createClass({ propTypes: { user: React.PropTypes.object.isRequired, socket: React.PropTypes.object.isRequired, currentUser: React.PropTypes.object.isRequired }, render() { const user = this.props.user; const currentUser = this.props.currentUser; return (
  • {user.username}
  • ); } }); const UserMenu = exports.UserMenu = React.createClass({ propTypes: { socket: React.PropTypes.object.isRequired, users: React.PropTypes.array.isRequired }, render() { const users = this.props.users .sort((a, b) => (a.username.toLowerCase() > b.username.toLowerCase()) ? 1 : -1) .map(user => { return }); return (
    Online {this.props.users.length}
      {users}
    ); } }); const AdminPanel = exports.AdminPanel = React.createClass({ propTypes: { socket: React.PropTypes.object.isRequired }, handleGatherReset() { this.props.socket.emit("gather:reset"); }, render() { return (

    Administration Panel

    Swap Into a Different Account (Only works for admins)
    Gather Options
    ); } }); const ProfileModal = exports.ProfileModal = React.createClass({ propTypes: { user: React.PropTypes.object.isRequired }, handleUserUpdate(e) { e.preventDefault(); let abilities = { skulk: React.findDOMNode(this.refs.skulk).checked, lerk: React.findDOMNode(this.refs.lerk).checked, gorge: React.findDOMNode(this.refs.gorge).checked, fade: React.findDOMNode(this.refs.fade).checked, onos: React.findDOMNode(this.refs.onos).checked, commander: React.findDOMNode(this.refs.commander).checked }; let skill = React.findDOMNode(this.refs.playerskill).value; socket.emit("users:update:profile", { id: this.props.user.id, profile: { abilities: abilities, skill: skill } }); }, render() { if (!this.props.user) return false; let abilities = this.props.user.profile.abilities; let abilitiesForm = []; for (let lifeform in abilities) { abilitiesForm.push(
    ); } let skillLevel = this.props.user.profile.skill; let skillLevels = _.uniq(["Low Skill", "Medium Skill", "High Skill", skillLevel]) .filter(skill => { return typeof skill === 'string' }) .map(skill => { return }); return (

    Profile


    Try to give an accurate representation of your skill to raise the quality of your gathers



    {abilitiesForm}

    Specify which lifeforms you'd like to play in the gather


    You will need to rejoin the gather to see your updated profile

    ); } }); const CurrentUser = exports.CurrentUser = React.createClass({ render() { if (this.props.user) { let adminOptions; if (this.props.user.admin || this.props.user.moderator) { adminOptions = (
  • Administration
  • ) } return (
  • {this.props.user.username}  User Avatar
  • ); } else { return false; } } }); var AssumeUserIdButton = exports.AssumeUserIdButton = React.createClass({ propTypes: { socket: React.PropTypes.object.isRequired, gatherer: React.PropTypes.object.isRequired, currentUser: React.PropTypes.object.isRequired, }, assumeId(e) { e.preventDefault(); if (this.props.gatherer) { this.props.socket.emit("users:authorize", { id: this.props.gatherer.id }); // Refresh Gather list setTimeout(() => { this.props.socket.emit("gather:refresh"); }, 5000); } }, render() { let currentUser = this.props.currentUser; let gatherer = this.props.gatherer; if (currentUser && gatherer) { return } } });