Files
ember-cli-dunlop/addon/components/sortable-table-header.coffee
T

56 lines
1.8 KiB
CoffeeScript

import Ember from 'ember'
import layout from '../templates/components/sortable-table-header'
export default Ember.Component.extend
layout: layout
tagName: 'th'
classNames: ['sortable-table-header']
classNameBindings: ['isSortedByKey:sorted', 'sortDirectionClass']
filters: Ember.Object.create()
tScope: ''
direction: 'asc'
init: ->
@_super arguments...
Ember.defineProperty @, 'filter_calls', Ember.computed.alias("filters.filter_calls")
sortDirectionClass: Ember.computed 'isSortedByKey', ->
return false unless @get('isSortedByKey')
if @get('direction') is 'desc' then 'descending' else 'ascending'
isSortedByKey: Ember.computed 'filters.s', ->
return false unless s = @get('filters.s')
if Ember.isArray s
return false unless sort_statement = Ember.get(s, 'firstObject')
else if typeof s is 'string'
sort_statement = s
else
false
[sort_key, direction] = sort_statement.split(/\s+/)
direction ||= 'asc'
@set 'direction', direction
sort_key is @get('key')
headerContent: Ember.computed 'key', 'tScope', ->
return '?' unless key = @get('key')
if t_scope = @get('tScope')
t key, scope: t_scope
else
key.replace(/[_\W]+/g, ' ').capitalize()
click: ->
return unless key = @get('key')
if isSortedByKey = @get('isSortedByKey')
if @get('direction') is 'asc'
@set 'filters.s', "#{key} desc"
else
@set 'filters.s', "#{key} asc"
else
default_direction = if key.match /date/ then 'desc' else 'asc'
@set 'filters.s', "#{key} #{default_direction}"
#debugger
#@get('afterburn')() # call action if given
@get('model')?.reload?()
#@sendAction 'action'
#@get('filters.reload')() if typeof @get('filters.reload') is 'function'