ad_dimensional (public)
ad_dimensional [ -style style ] option_list [ url ] [ options_set ] \ [ optionstype ]
Defined in packages/acs-templating/tcl/dimensional-procs.tcl
Generate an option bar from an option_list, which has the structure:
{ {variable "Title" defaultvalue { {value "Label" {key sql-clause}} ... } } ... }Here is an example of the option_list:set dimensional_list { {visited "Last Visit" 1w { {never "Never" {where "last_visit is null"}} {1m "Last Month" {where "last_visit + 30 > sysdate"}} {1w "Last Week" {where "last_visit + 7 > sysdate"}} {1d "Today" {where "last_visit > trunc(sysdate)"}} }} ..(more of the same).. }
- Switches:
- -style (optional)
- name of the adp file (without extension)
- Parameters:
- option_list (required)
- the structure with the option data provided
- url (optional)
- url target for select (if blank we set it to ad_conn url).
- options_set (optional)
- if not provided defaults to [ns_getform], for hilite of selected options.
- optionstype (optional, defaults to
"url"
)- only url is used now, was thinking about extending so we get radio buttons and a form since with a slow select updating one thing at a time would be stupid.
- Returns:
- HTML rendering
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- ad_dimensional
Source code: if {$option_list eq ""} { return } if {$options_set eq ""} { set options_set [ns_getform] # Process the set from the end to avoid shifted indices for { set i [expr {[ns_set size $options_set]-1}]} { $i > -1 } { incr i -1 } { if {[::util::suspicious_query_variable -proc ad_dimensional [ns_set key $options_set $i]]} { ns_set delete $options_set $i } } } if {$url eq ""} { set url [ad_conn url] } if {$style eq ""} { set style [parameter::get -package_id [ad_conn subsite_id] -parameter DefaultDimensionalStyle -default [parameter::get -package_id [apm_package_id_from_key "acs-templating"] -parameter DefaultDimensionalStyle -default "dimensional"]] } # # Get the path. template::include needs a relative path. # set adp_stub [template::resource_path -type dimensionals -style $style -relative] template::multirow create dimensional key label group_key group_label selected href foreach option $option_list { lassign $option option_key option_label option_default option_values # # Find out what the current option value is. # check if a default is set otherwise the first value is used # set option_val {} if { $options_set ne ""} { set option_val [ns_set get $options_set $option_key] } if { $option_val eq "" } { set option_val $option_default } foreach option_value $option_values { lassign $option_value group_key group_label clause set selected [expr {$option_val eq $group_key}] set href [export_vars -base $url -set $options_set [list [list $option_key $group_key]]] template::multirow append dimensional $option_key $option_label $group_key $group_label $selected $href } } # # Finally, pass everything to the templating engine. # return [template::adp_include -uplevel 2 -- $adp_stub {&dimensional dimensional}]XQL Not present: Generic, PostgreSQL, Oracle