92 lines
2.6 KiB
CoffeeScript
92 lines
2.6 KiB
CoffeeScript
context = window
|
|
@JamBlasterNameDialog = React.createClass({
|
|
|
|
mixins: [Reflux.listenTo(@AppStore, "onAppInit")]
|
|
teacher: null
|
|
|
|
beforeShow: (args) ->
|
|
logger.debug("JamBlasterNameDialog.beforeShow", args.d1)
|
|
@setState({name: args.d1})
|
|
|
|
|
|
afterHide: () ->
|
|
|
|
onAppInit: (@app) ->
|
|
dialogBindings = {
|
|
'beforeShow': @beforeShow,
|
|
'afterHide': @afterHide
|
|
};
|
|
|
|
@app.bindDialog('jamblaster-name-dialog', dialogBindings);
|
|
|
|
getInitialState: () ->
|
|
{
|
|
name: ''
|
|
}
|
|
|
|
|
|
componentDidMount: () ->
|
|
@root = $(@getDOMNode())
|
|
@dialog = @root.closest('.dialog')
|
|
|
|
doCancel: (e) ->
|
|
e.preventDefault()
|
|
@app.layout.closeDialog('jamblaster-name-dialog', true);
|
|
|
|
onNameChange: (e) ->
|
|
|
|
@setState({name: $(e.target).val()})
|
|
|
|
updateName: (e) ->
|
|
e.preventDefault()
|
|
|
|
# validate
|
|
|
|
name = @root.find('.name').val()
|
|
|
|
characterMatch = /^[a-z0-9,' -]+$/i
|
|
|
|
if name.length == 0 || name == ''
|
|
context.JK.Banner.showAlert('invalid name', 'Please specify a name.')
|
|
return
|
|
else if name.length < 2
|
|
context.JK.Banner.showAlert('invalid name', 'Please specify a name at least 3 characters long.')
|
|
return
|
|
else if name.length > 63
|
|
context.JK.Banner.showAlert('invalid name', 'The name must be less than 64 characters long.')
|
|
return
|
|
else if characterMatch.test(name)
|
|
context.JK.Banner.showAlert('invalid name',
|
|
'The can only contain A-Z, 0-9, commas, apostrophes, spaces, or hyphens.')
|
|
return
|
|
|
|
result = context.jamClient.setJBName(name.trim())
|
|
|
|
if !result
|
|
context.JK.Banner.showAlert('unable to set the name',
|
|
'Please email support@jamkazam.com with the name you are trying to set, or refresh the page and try again.')
|
|
else
|
|
@app.layout.closeDialog('jamblaster-name-dialog')
|
|
render: () ->
|
|
`<div>
|
|
<div className="content-head">
|
|
<img className="content-icon" src="/assets/content/icon_add.png" height={19} width={19}/>
|
|
|
|
<h1>update name of JamBlaster</h1>
|
|
</div>
|
|
<div>
|
|
|
|
<p>You can change the display name for this JamBlaster. The name can only contain A-Z, 0-9, commas, apostrophes,
|
|
spaces, or hyphens. A valid example: "John Doe's JamBlaster"</p>
|
|
|
|
<label>JamBlaster Name:</label>
|
|
<input className="name" type="text" value={this.state.name} onChange={this.onNameChange}></input>
|
|
|
|
<div className="actions">
|
|
<a onClick={this.doCancel} className="button-grey">CANCEL</a>
|
|
<a onClick={this.updateName} className="button-orange name">UPDATE</a>
|
|
</div>
|
|
</div>
|
|
</div>`
|
|
|
|
}) |