lib/carte/client/views/slideshow.cjsx in carte-server-1.0.6 vs lib/carte/client/views/slideshow.cjsx in carte-server-1.0.7

- old
+ new

@@ -12,15 +12,17 @@ Button = require('react-bootstrap').Button window.onerror = (error, url, line) -> alert error Flash = React.createClass + scrollEventNames: ['touchstart', 'touchmove', 'touchend', 'gesturestart', 'gesturechange', 'gestureend'] + componentDidMount: -> console.log '[views/flash] componentDidMount', @props $(document).on 'keydown', @onKeyDown - #for eventName in ['touchstart', 'touchmove', 'touchend', 'gesturestart', 'gesturechange', 'gestureend'] - # $(document).on eventName, (event)-> event.preventDefault(); event.stopPropagation() + for eventName in @scrollEventNames + $(document).on eventName, @preventScroll @setState currCards: @props.cards if @props.cards.at(0) @setState currCard: @props.cards.at(0), => @@ -35,17 +37,24 @@ @forceUpdate.bind(@, null) componentWillUnmount: -> console.log '[views/flash] FlashMain componentWillUnmount' $(document).off 'keydown', @onKeyDown + for eventName in @scrollEventNames + $(document).off eventName, @preventScroll onKeyDown: (event)-> switch event.keyCode when 27 then @props.router.navigate(@closeLink()) when 37 then @onClickPrev() when 39 then @onClickNext() + preventScroll: (event)-> + tagName = event.target.tagName.toLowerCase() + return if tagName == 'button' || tagName == 'a' + event.preventDefault() + getInitialState: -> currCard: null currCards: null nextCards: null prevCards: null @@ -184,22 +193,24 @@ $.param(query) onClickMenuItem: (params)-> ()=> window.location.hash = '#/?' + @queryParam(params) + onTouchStartTools: (event)-> + event.stopPropagation() + render: -> clearInterval @interval if @interval if @props.cards.query.auto != 'off' bpm = null switch @props.cards.query.auto when 'fast' then bpm = 90 when 'normal' then bpm = 60 when 'slow' then bpm = 30 - console.log 'bpm!!!!!!!!!!!!!!!!!!!!!!!!!!', bpm @interval = setInterval @onClickNext, 1000 * 60 / bpm <div onTouchStart={@onTouchStart} onTouchMove={@onTouchMove} onTouchEnd={@onTouchEnd} style={overflow:'hidden',width:'100%',height:'100%'}> - <div style={position:'absolute',bottom:0,width:'100%',padding:'47px 0px 0px 0px'} onMouseOver={@onMouseOverTools} onMouseLeave={@onMouseLeaveTools}> + <div onTouchStart={@onTouchStartTools} style={position:'absolute',bottom:0,width:'100%',padding:'47px 0px 0px 0px'} onMouseOver={@onMouseOverTools} onMouseLeave={@onMouseLeaveTools}> <span className={classnames("pull-right":true, 'carte-hidden': !@state.showTools)}> <ButtonGroup> <DropdownButton bsSize='large' bsStyle='default' title={'Auto: ' + @props.cards.query.auto} dropup pullRight className={classnames('open': @state.menuOpen)}> <MenuItem href={"#/?" + @queryParam(auto: "off")} eventKey='1'>off</MenuItem> <MenuItem href={"#/?" + @queryParam(auto: "fast")} eventKey='2'>fast</MenuItem> @@ -263,9 +274,10 @@ document.body.appendChild(@node) React.render(flash(nextProps), @node) componentWillUnmount: -> console.log '[views/slideshow] componentWillUnmount' + React.unmountComponentAtNode(@node) document.body.removeChild(@node) renderSlideshow: -> React.render(flash(@props), @node)