%3 ::xo::tdom::Object ::xo::tdom::Object render ::xo::OrderedComposite ::xo::OrderedComposite __compare __compare_tcl add children contains deep_copy delete destroy last_child orderby show ::xo::tdom::Object->::xo::OrderedComposite ::xo::tdom::AttributeManager ::xo::tdom::AttributeManager ::xo::tdom::Object->::xo::tdom::AttributeManager ::xowiki::Tree ::xowiki::Tree → include_head_entries → renderer add_item add_pages init open_tree render ::xowiki::Tree->::xo::OrderedComposite ::ListWidget ::ListWidget render ::ListWidget->::xo::OrderedComposite ::xo::Chat ::xo::Chat active_user_list add_msg broadcast_msg check_age current_message_valid encode get_all get_new get_users init init_user_color js_encode_msg json_encode json_encode_msg last_activity login logout noencode nr_active_users nsv_get register_nsvs render set_options subscribe sweeper urlencode usable_screen_name user_active user_color user_name ::xo::Chat->::xo::OrderedComposite ::xo::Table ::xo::Table __bulkactions actions column_names columns destroy format_csv render_with write_csv ::xo::Table->::xo::OrderedComposite ::xotcl::Object ::xotcl::Object ::xo::OrderedComposite->::xotcl::Object ::TableWidget ::TableWidget init ::TableWidget->::xo::Table ::xowiki::YUIDataTable ::xowiki::YUIDataTable init ::xowiki::YUIDataTable->::xo::Table ::xowiki::BootstrapTable ::xowiki::BootstrapTable init ::xowiki::BootstrapTable->::xo::Table ::xowiki::TableWidget ::xowiki::TableWidget → create_from_form_fields render_page_items_as_table ::xowiki::TableWidget->::TableWidget

Class ::xo::Table

::xo::Table[i] create ... \
           [ -name name ] \
           [ -no_data (default "#xotcl-core.No_Data#") ] \
           [ -renderer (default "TABLE3") ]

Class Relations

  • class: ::xotcl::Class[i]
  • superclass: ::xo::OrderedComposite[i]
  • subclass: ::TableWidget[i], ::xowiki::YUIDataTable[i], ::xowiki::BootstrapTable[i]
::xotcl::Class create ::xo::Table \
     -superclass ::xo::OrderedComposite

Methods (to be applied on instances)

  • __bulkactions (scripted)

    set M [OrderedComposite create [self]::__bulkactions]
    namespace eval $M [list namespace import -force [self class]::*]
    $M contains $cmd
  • actions (scripted)

    set M [OrderedComposite create [self]::__actions]
    namespace eval $M [list namespace import -force [self class]::*]
    $M contains $cmd
  • column_names (scripted, public)

     <instance of xo::Table[i]> column_names

    Return a list of names of the columns of the current table. These names are used to refer to the columns, e.g. in sorting or when values are set.

    Returns:
    list of names

    Partial Call Graph (max 5 caller/called nodes):
    %3 test_create_form_with_form_instance create_form_with_form_instance (test xowiki) xo::Table instproc column_names xo::Table instproc column_names test_create_form_with_form_instance->xo::Table instproc column_names

    Testcases:
    create_form_with_form_instance
    set names {}
    foreach c [[[self]::__columns] children] {
      lappend names [$c name]
    }
    return $names
  • columns (scripted)

    set M [OrderedComposite create [self]::__columns]
    namespace eval $M [list namespace import -force [self class]::*]
    $M contains $cmd
    set slots [list]
    foreach c [$M children] {
      lappend slots {*}[$c get-slots]
    }
    :proc add $slots {
      set __self [::xo::Table::Line new]
      foreach __v [info vars] {$__self set $__v [set $__v]}
      next $__self
    }
  • destroy (scripted)

    #:log "-- "
    foreach c {__bulkactions __actions __columns} {
      #:log "-- namespace eval [self]::$c {namespace forget *}"
      namespace eval [self]::$c {namespace forget *}
    }
    next
  • format_csv (scripted)

    set output ""
    set line [list]
    set displayColumns [lmap column [[self]::__columns children] {
      if {[$column exists no_csv]} continue
      if {[$column istype ::xo::Table::BulkAction]} continue
      if {[$column istype ::xo::Table::HiddenField]} continue
      set column
    }]
    foreach column $displayColumns {
      set label [$column label]
      if {[regexp {^#([a-zA-Z0-9_:-]+\.[a-zA-Z0-9_:-]+)#$} $label _ message_key]} {
        set label [_ $message_key]
      }
      set value [string map {\" \\\" \n \r} $label]
      lappend line \"$value\"
    }
    append output [join $line $delimiter] \n
    foreach row [:children] {
      set line [list]
      foreach column $displayColumns {
        set value [string map {\" \\\" \n \r} [$row set [$column set name]]]
        lappend line \"$value\"
      }
      append output [join $line $delimiter] \n
    }
    return $output
  • name (setter)

  • no_data (setter)

  • render_with (scripted)

    #:log "-- renderer=$renderer"
    set cl [self class]
    :mixin ${cl}::$renderer
    foreach child [$cl info classchildren] {
      #:log "-- $child class [$child info class] "
      set mixinname ${cl}::${renderer}::[namespace tail $child]
      if {[::xotcl::Object isclass $mixinname]} {
        #if {![$child istype ::xo::OrderedComposite::Child]} continue
        $child instmixin $mixinname
        if {$trn_mixin ne ""} {$child instmixin add $trn_mixin}
        #:log "-- $child using instmixin <[$child info instmixin]>"
      } else {
        #:log "-- no mixin $mixinname"
      }
    }
    Table::Line instmixin $trn_mixin
    :init_renderer
  • renderer (setter)

  • write_csv (scripted)

    if {![info exists :name]} {
      set :name "table"
    }
    set fn [xo::backslash_escape \" ${:name}.csv]
    ns_set put [ns_conn outputheaders] Content-Disposition "attachment;filename=\"$fn\""
    ns_return 200 "text/csv; charset=utf-8" [:format_csv -delimiter $delimiter]
    ad_script_abort