lib/carte/client/views/header.cjsx in carte-server-0.0.11 vs lib/carte/client/views/header.cjsx in carte-server-0.0.12
- old
+ new
@@ -13,25 +13,50 @@
getInitialState: ()->
searchText: ''
componentWillMount: ()->
console.log 'header mounted'
- @card = new CardModel()
- @card._isNew = true
- @card.on 'sync', (model)=>
- console.log 'sync!!!'
+ @onSync = ()=>
+ console.log 'model new calback'
@card = new CardModel()
@card._isNew = true
+ @card.on 'sync', @onSync
@forceUpdate()
+ @onSync()
+ @callback = ()=>
+ if @props.router.query
+ searchText = []
+ if @props.router.query.tags
+ for tag in @props.router.query.tags.split(',')
+ searchText.push '#' + tag
+ if @props.router.query.title
+ searchText.push @props.router.query.title
+ @setState searchText: searchText.join(' ')
+ @forceUpdate()
+ @props.router.on "route", @callback
+
+ componentWillUnmount: ->
+ console.log 'componentWillMount un'
+ @props.router.off "route", @callback
+
onChangeSearchText: ()->
@setState searchText: event.target.value
onKeyPressSearchText: ()->
if event.keyCode == 13 # ENTER
console.log '13 enter'
event.preventDefault()
- query = {title: @state.searchText}
+ tags = []
+ titles = []
+ for searchText in @state.searchText.split(' ')
+ if match = searchText.match(/^#(.+)/)
+ tags.push(match[1])
+ else
+ titles.push(searchText)
+ query = {}
+ query.title = titles.join(' ') if titles.length > 0
+ query.tags = tags.join(',') if tags.length > 0
location.hash = '/?' + $.param(query)
render: ->
<nav className="navbar navbar-default" style={{padding:"0px",backgroundColor:"white",marginBottom:"5px"}}>
<div className="container-fluid">