Improved docu for @table().

This commit is contained in:
Martin Edenhofer 2012-10-02 07:46:42 +02:00
parent c3e6c4028a
commit ca18cf7bdd

View file

@ -45,48 +45,85 @@ class App.Controller extends Spine.Controller
formValidate: (data) -> formValidate: (data) ->
App.ControllerForm.validate(data) App.ControllerForm.validate(data)
###
table = @table(
header: ['Host', 'User', 'Adapter', 'Active'],
overview: ['host', 'user', 'adapter', 'active'],
model: App.Channel,
objects: data,
)
table = @table(
overview_extended: [
{ name: 'number', link: true },
{ name: 'title', link: true },
{ name: 'customer', class: 'user-data', data: { id: true } },
{ name: 'ticket_state', translate: true },
{ name: 'ticket_priority', translate: true },
{ name: 'group' },
{ name: 'owner', class: 'user-data', data: { id: true } },
{ name: 'created_at', callback: @frontendTime },
{ name: 'last_contact', callback: @frontendTime },
{ name: 'last_contact_agent', callback: @frontendTime },
{ name: 'last_contact_customer', callback: @frontendTime },
{ name: 'first_response', callback: @frontendTime },
{ name: 'close_time', callback: @frontendTime },
],
model: App.Ticket,
objects: tickets,
)
###
table: (data) -> table: (data) ->
overview = data.overview || data.model.configure_overview || [] overview = data.overview || data.model.configure_overview || []
attributes = data.attributes || data.model.configure_attributes || [] attributes = data.attributes || data.model.configure_attributes
header = data.header
# define normal header # define normal header
header = [] if !header
for row in overview header = []
for attribute in attributes for row in overview
if row is attribute.name if attributes
header.push(attribute.display) for attribute in attributes
else if row is attribute.name
rowWithoutId = row + '_id' header.push( attribute.display )
if rowWithoutId is attribute.name else
header.push(attribute.display) rowWithoutId = row + '_id'
if rowWithoutId is attribute.name
header.push( attribute.display )
data_types = [] dataTypesForCols = []
for row in overview for row in overview
data_types.push { dataTypesForCols.push {
name: row, name: row,
link: 1, link: true,
} }
# extended table format # extended table format
if data.overview_extended if data.overview_extended
header = [] if !header
for row in data.overview_extended header = []
for attribute in attributes for row in data.overview_extended
if row.name is attribute.name for attribute in attributes
header.push(attribute.display) if row.name is attribute.name
else header.push( attribute.display )
rowWithoutId = row.name + '_id' else
if rowWithoutId is attribute.name rowWithoutId = row.name + '_id'
header.push(attribute.display) if rowWithoutId is attribute.name
header.push( attribute.display )
data_types = data.overview_extended dataTypesForCols = data.overview_extended
# generate content data # generate content data
objects = _.clone( data.objects ) objects = _.clone( data.objects )
for object in objects for object in objects
for row in data_types
# check if data is a object # check if info for each col. is already there
for row in dataTypesForCols
# check if info is a object
if typeof object[row.name] is 'object' if typeof object[row.name] is 'object'
if !object[row.name] if !object[row.name]
object[row.name] = { object[row.name] = {
@ -98,7 +135,7 @@ class App.Controller extends Spine.Controller
if object[row.name]['realname'] if object[row.name]['realname']
object[row.name]['name'] = object[row.name]['realname'] object[row.name]['name'] = object[row.name]['realname']
# if it isnt a object, create one # if info isnt a object, create one
else if typeof object[row.name] isnt 'object' else if typeof object[row.name] isnt 'object'
object[row.name] = { object[row.name] = {
name: object[row.name], name: object[row.name],
@ -122,11 +159,11 @@ class App.Controller extends Spine.Controller
if attribute.relation && App[attribute.relation] if attribute.relation && App[attribute.relation]
record = App.Collection.find( attribute.relation, object[rowWithoutId] ) record = App.Collection.find( attribute.relation, object[rowWithoutId] )
object[row.name]['name'] = record.name object[row.name]['name'] = record.name
# @log 'table', 'header', header, 'overview', data_types, 'objects', objects @log 'table', 'header', header, 'overview', dataTypesForCols, 'objects', objects
table = App.view('generic/table')( table = App.view('generic/table')(
header: header, header: header,
overview: data_types, overview: dataTypesForCols,
objects: objects, objects: objects,
checkbox: data.checkbox, checkbox: data.checkbox,
) )
@ -137,14 +174,14 @@ class App.Controller extends Spine.Controller
# convert to jquery object # convert to jquery object
table = $(table) table = $(table)
# enable checkbox bulk selection # enable checkbox bulk selection
if data.checkbox if data.checkbox
table.delegate('[name="bulk_all"]', 'click', (e) -> table.delegate('[name="bulk_all"]', 'click', (e) ->
if $(e.target).attr('checked') if $(e.target).attr('checked')
$(e.target).parents().find('[name="bulk"]').attr('checked', true); $(e.target).parents().find('[name="bulk"]').attr( 'checked', true );
else else
$(e.target).parents().find('[name="bulk"]').attr('checked', false); $(e.target).parents().find('[name="bulk"]').attr( 'checked', false );
) )
return table return table