41 lines
1.8 KiB
CoffeeScript
41 lines
1.8 KiB
CoffeeScript
App.SectionElementComponent = Ember.Component.extend DragNDrop.Draggable,
|
|
templateName: 'section/element'
|
|
classNames: ['section-element-container']
|
|
attributeBindings: ['style']
|
|
show_handles: false
|
|
classNameBindings: [
|
|
'uniqueClass'
|
|
]
|
|
uniqueClass: (->
|
|
"section-element-#{@get('section_element.id')}"
|
|
).property('section_element.id')
|
|
draggable: Ember.computed.alias 'section.editmode'
|
|
offsetX: (->
|
|
(@get('dpm') || 0) * (@get('section_element.position_x') || 0)
|
|
).property('dpm', 'section_element.position_x')
|
|
offsetY: (->
|
|
return 0 unless dpm = @get('dpm')
|
|
dpm * (@get('section_element.position_y') || 0)
|
|
).property('dpm', 'section_element.position_y', 'section_element.rotation')
|
|
#myHeight: (-> (@get('dpm') || 0 ) * @get('section_element.height')).property('dpm', 'section_element.height')
|
|
#myWidth: (-> (@get('dpm') || 0 ) * @get('section_element.width')).property('dpm', 'section_element.width')
|
|
|
|
# box size in dots [d]
|
|
box_size: (-> (@get('dpm') || 0 ) * @get('section_element.box_size')).property('dpm', 'section_element.box_size')
|
|
style: Ember.computed 'offsetX', 'offsetY', 'box_size', 'section_element.rotation', ->
|
|
"position:absolute;width:#{@get('box_size')}px;height:#{@get('box_size')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px"
|
|
positionChange: (position)->
|
|
dpm = @get('dpm')
|
|
return if !dpm or parseFloat(dpm) is 0
|
|
@get('section_element').setProperties
|
|
position_x: position.left / dpm
|
|
position_y: position.top / dpm
|
|
click: -> @toggleProperty('show_handles') if @get('section.editmode')
|
|
showHandles: Ember.computed.and 'show_handles', 'section.editmode'
|
|
actions:
|
|
rotateLeft: ->
|
|
@get('section_element').invoke "rotateLeft"
|
|
rotateRight: ->
|
|
@get('section_element').invoke "rotateRight"
|
|
removeSectionElement: -> @get('section_element').destroyRecord()
|