1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-15 02:36:36 +00:00

add SnippetEditModal

This commit is contained in:
Rokt33r
2015-07-16 23:55:59 +09:00
parent ec686c9452
commit c2fcc72e62
9 changed files with 148 additions and 37 deletions

View File

@@ -30,7 +30,7 @@ var LaunchModal = React.createClass({
break
}
},
handleClick: function (e) {
stopPropagation: function (e) {
e.stopPropagation()
},
selectSnippetTab: function () {
@@ -60,9 +60,9 @@ var LaunchModal = React.createClass({
}
return (
<div onClick={this.handleClick} className='modal launch-modal'>
<div onClick={this.stopPropagation} className='modal launch-modal'>
<div className='modal-header'>
<div className='modal-tab form-group'>
<div className='modal-tab'>
<button className={this.state.currentTab === 'snippet' ? 'btn-primary active' : 'btn-default'} onClick={this.selectSnippetTab}>Snippet</button><button className={this.state.currentTab === 'blueprint' ? 'btn-primary active' : 'btn-default'} onClick={this.selectBlueprintTab}>Blueprint</button>
</div>
</div>

View File

@@ -0,0 +1,38 @@
var React = require('react')
var SnippetForm = require('./SnippetForm')
var PlanetStore = require('../Stores/PlanetStore')
var SnippetEditModal = React.createClass({
propTypes: {
close: React.PropTypes.func,
snippet: React.PropTypes.object
},
componentDidMount: function () {
this.unsubscribe = PlanetStore.listen(this.onListen)
},
componentWillUnmount: function () {
this.unsubscribe()
},
onListen: function (res) {
switch (res.status) {
case 'snippetUpdated':
this.props.close()
break
}
},
stopPropagation: function (e) {
e.stopPropagation()
},
render: function () {
return (
<div onClick={this.stopPropagation} className='SnippetEditModal modal'>
<div className='modal-header'>
<h1>Edit Snippet</h1>
</div>
<SnippetForm snippet={this.props.snippet} close={this.props.close}/>
</div>
)
}
})
module.exports = SnippetEditModal

View File

@@ -31,17 +31,19 @@ var getOptions = function (input, callback) {
var SnippetForm = React.createClass({
mixins: [Catalyst.LinkedStateMixin, ReactRouter.State],
propTypes: {
close: React.PropTypes.func
close: React.PropTypes.func,
snippet: React.PropTypes.object
},
getInitialState: function () {
var snippet = Object.assign({
description: '',
mode: 'javascript',
content: '',
callSign: '',
Tags: []
}, this.props.snippet)
return {
snippet: {
description: '',
mode: 'javascript',
content: '',
callSign: '',
Tags: []
}
snippet: snippet
}
},
componentDidMount: function () {
@@ -58,14 +60,22 @@ var SnippetForm = React.createClass({
this.setState({snippet: snippet})
},
submit: function () {
var params = this.getParams()
var userName = params.userName
var planetName = params.planetName
var snippet = Object.assign({}, this.state.snippet)
snippet.Tags = snippet.Tags.map(function (tag) {
return tag.value
})
PlanetActions.createSnippet(userName + '/' + planetName, snippet)
if (this.props.snippet == null) {
var params = this.getParams()
var userName = params.userName
var planetName = params.planetName
PlanetActions.createSnippet(userName + '/' + planetName, snippet)
} else {
var snippetId = snippet.id
delete snippet.id
PlanetActions.updateSnippet(snippetId, snippet)
}
},
render: function () {
return (