##= require ./PopoverMiniControls
##= require ./EditEntry
MARGIN = 10
class Skr.Screens.TimeTracking.Popover extends Lanes.React.Component
componentWillReceiveProps: (nextProps) ->
if @state.editing and nextProps.editing is false
@onCancel()
else
@setState(isCanceled: false)
onCancel: ->
entry = @state.editing.get('entry')
if entry.isNew()
@state.editing.remove()
@props.entries.removeEntry(entry)
@props.entries.stopEditing()
@setState(isCanceled: true, editing: null)
onAddEntry: ->
event = @props.entries.addEvent(@props.date)
@setState(editing: event)
onEditEvent: (event) ->
@setState(editing: event)
EditEntry: ->
return null unless @state.editing
MiniControls: ->
return null if @state.editing
render: ->
return null if @state.isCanceled or not @props.date
classes = _.classnames('edit-control', 'in')
{x, y} = @props.position
[width, height] = if @state.editing
[320, 400]
else
[175, 60]
width += 60 if @props.event and not @state.editing
placement = if x > (@props.bounds.width / 2) then 'left' else 'right'
x -= width if placement is 'left'
top = Math.max( MARGIN, y - (height / 2) )
if top + height > @props.bounds.height
top = @props.bounds.height - height - MARGIN
<@MiniControls />
<@EditEntry />