coffeescript-ui
Version:
Coffeescript User Interface System
198 lines (146 loc) • 3.87 kB
text/coffeescript
###
* coffeescript-ui - Coffeescript User Interface System (CUI)
* Copyright (c) 2013 - 2016 Programmfabrik GmbH
* MIT Licence
* https://github.com/programmfabrik/coffeescript-ui, http://www.coffeescript-ui.org
###
class CUI.ListViewRow extends CUI.Element
initOpts: ->
super()
columns:
check: Array
selectable:
check: Boolean
class:
check: String
readOpts: ->
super()
if
=
for col, idx in
if col
else
= []
# keep track of classes using a dummy
# div which is detached from DOM
if == false
else
if
=
else
= ""
= null
= false
= null
addColumn: (column) ->
CUI.util.assert(column instanceof CUI.ListViewColumn,"ListViewRow.addColumn", "column must be instance of ListViewColumn", column: column)
.push(column)
column.setRow(@)
@
setColumn: (idx, column) ->
CUI.util.assert(column instanceof CUI.ListViewColumn,"ListViewRow.addColumn", "column must be instance of ListViewColumn", column: column)
[idx] = column
column.setRow(@)
@
prependColumn: (column) ->
CUI.util.assert(column instanceof CUI.ListViewColumn,"ListViewRow.prependColumn", "column must be instance of ListViewColumn", column: column)
.splice(0,0,column)
column.setRow(@)
@
setSelectable: (on_off) ->
= on_off
isSelectable: ->
if
if not .hasSelectableRows()
return false
if < .fixedRowsCount
return false
isMovable: (ev) ->
.hasMovableRows()
# overwrite with a function for an alternative
# row move implementation
# signature: (listView, target_node, after)
# called in ListViewRowMoveTool
moveRow: null
removeColumns: ->
# console.debug "this", @,
for c in
c.setRow()
.splice(0)
getColumns: ->
setRowIdx: () ->
@
getDOMNodes: ->
?.getRow()
getRowIdx: ->
scrollIntoView: ->
[0]?.scrollIntoView()
@
getDisplayRowIdx: ->
?.getDisplayRowIdx()
addedToListView: (DOMNodes) ->
= true
isAddedToListView: ->
setListView: () ->
getListView: ->
__selectableClass: "cui-list-view-row-selectable"
__movableClass: "cui-list-view-row-movable"
# used while node is rendered
getClass: ->
cls =
if
cls = + " " + cls
if
cls = + " " + cls
cls
# use this before node is rendered
setClass: () ->
# use this after node is rendered
addClass: (cls) ->
?.rowAddClass(, cls)
# use this after node is rendered
removeClass: (cls) ->
?.rowRemoveClass(, cls)
select: (ev) ->
if
console.debug "already selected", @
return
if not
console.debug "not selectable", @
return
= true
if not
return
.rowAddClass(, CUI.ListViewRow.defaults.selected_class)
._onSelect? ev,
originalEvent: ev
listView:
row: @
CUI.resolvedPromise()
deselect: (ev) ->
if not .hasSelectableRows()
return CUI.rejectedPromise()
if not
return CUI.rejectedPromise()
?.rowRemoveClass(, CUI.ListViewRow.defaults.selected_class)
= false
?._onDeselect? ev,
originalEvent: ev
listView:
row: @
CUI.resolvedPromise()
isSelected: ->
!!
remove: ->
.removeRow()
:
selected_class: "cui-selected"