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">