context = window EventActions = context.EventActions context.EventPage = React.createClass({ mixins: [Reflux.listenTo(EventStore, "onEventsChanged")], once: false, getInitialState: function () { return {submitting: false, error: null, event: null} }, parseSlug: function () { var path = window.location.pathname var pathPart = path.substring('/events/'.length) var query = pathPart.indexOf('?') if (query > -1) { var slug = pathPart.substring(0, query) } else { var slug = pathPart } return slug; }, componentDidMount: function () { EventActions.single(this.parseSlug()) // new Plyr('#video'); }, componentDidUpdate: function () { if((this.isReady() || this.isErrored()) && !this.once) { if(!this.isErrored()) { try { if (this.isWhiteLabel()) { const player = new Plyr('#player', { controls: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'settings', 'pip', 'airplay', 'fullscreen'], pip: true, fullscreen: { enabled: true, fallback: true, iosNative: false }, title: this.title() }); player.pip = true player.playsinline = true } } catch(e) { console.log("error initializing video player", e) } } if(this.isAuthorized()) { var listing = document.getElementById("body-content") var chatElement = document.getElementById("rt-e617b4394e0e49e1c234c63161bb2e15") chatElement.style.overflow = 'visible' listing.appendChild(chatElement) } else { var chatElement = document.getElementById("rt-e617b4394e0e49e1c234c63161bb2e15") chatElement.parentNode.removeChild(chatElement) } this.once = true } }, authorizeDone: function (response) { this.setState({submitting: false}) EventActions.addAuthorization(response) }, authorizeFailed: function (e) { if (e instanceof SyntaxError) { this.setState({error: 'Server error. Please try again or contact support@jamkazam.com.'}) } else if (e instanceof Error) { this.setState({error: 'Please enter a valid Eventbrite Order ID'}) } else { console.log("heheh", e) } this.setState({submitting: false}) }, handleSubmit: function (event) { var value = document.getElementById("order-input").value if (value) { context.JK.Rest2.authorizeLiveStream({order: value}).then((response) => { if (!response.ok) { throw Error(response.statusText); } return response.json() }).then((response) => this.authorizeDone(response)).catch((jqXHR) => this.authorizeFailed(jqXHR)) this.setState({submitting: true, error: null}) } event.preventDefault(); }, isErrored() { return !!this.state.error }, isReady() { return !!this.state.event }, isAuthorized() { return this.isReady() ? (this.state.event.authorization || this.state.event.allow_in) : false }, isNotAuthorized() { return false }, videoCode() { return this.state.event.youtube_code }, isWhiteLabel() { return this.state.event.white_label_player }, title() { return this.state.event.title ? this.state.event.title : 'Unknown title' }, description() { return this.state.event.description ? this.state.event.description : null }, startsAt() { return this.state.event.starts_at ? "Starts at " + new Date(this.state.event.starts_at).toLocaleString() : null }, header() { if (this.isErrored()) { return
No event found.
} else if (this.isReady()) { var title = this.title() var description = this.description() var descriptionElement = null if(description) { descriptionElement =
{description}
} var startsAt = this.startsAt() var startsAtElement = null if(startsAt) { startsAtElement =
{startsAt}
} return
{title}
{descriptionElement} {startsAtElement}
powered by
} else { return
Loading ...
} }, back: function() { if(this.isErrored() || (this.isReady() && !this.isAuthorized())) { return All Events } else { return null; } }, body: function () { var video = null if (this.isErrored()) { video = null } else if (this.isReady()) { if (this.isAuthorized()) { var videoCode = this.videoCode() var src = "https://www.youtube.com/embed/" + this.videoCode() + "?modestbranding=true&autoplay=1&rel=0&playsinline=1&enablejsapi=1" if(videoCode) { if(this.isWhiteLabel()) { video =
} else { video =
} } else { video =
No video yet
} } else { var notRegistered = You are not registered for this event! var onceDone =
  • Enter your EventBrite order code at the JamKazam Event Registration page when done registering.
  • var eventBriteUrl = this.state.event.event_brite_registration_url if (eventBriteUrl) { var meat =
    {notRegistered}
    1. Please register at EventBrite to see this video
    2. {onceDone}
    } else { var meat =
    {notRegistered}
    1. Please find your event at EventBrite and register for this event.
    2. {onceDone}
    } video =
    {meat}
    } } else { video =
    } return video }, render: function () { var header = this.header() var body = this.body() var back = this.back(); var response =
    {header}
    {body}
    {back}
    return response }, onEventsChanged: function (allEvents) { var event = null; if (allEvents && allEvents.events && allEvents.events.entries && allEvents.events.entries.length > 0) { event = allEvents.events.entries[0] } console.log("event change", event, allEvents) this.setState({event: event, error: allEvents.events_error}) } })