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):
%3 test_ad_dimensional ad_dimensional (test acs-templating) ad_dimensional ad_dimensional test_ad_dimensional->ad_dimensional ad_conn ad_conn (public) ad_dimensional->ad_conn apm_package_id_from_key apm_package_id_from_key (public) ad_dimensional->apm_package_id_from_key export_vars export_vars (public) ad_dimensional->export_vars parameter::get parameter::get (public) ad_dimensional->parameter::get template::adp_include template::adp_include (public) ad_dimensional->template::adp_include packages/acs-admin/www/apm/index.tcl packages/acs-admin/ www/apm/index.tcl packages/acs-admin/www/apm/index.tcl->ad_dimensional packages/acs-admin/www/apm/packages-install.tcl packages/acs-admin/ www/apm/packages-install.tcl packages/acs-admin/www/apm/packages-install.tcl->ad_dimensional packages/acs-admin/www/apm/version-parameters.tcl packages/acs-admin/ www/apm/version-parameters.tcl packages/acs-admin/www/apm/version-parameters.tcl->ad_dimensional packages/acs-api-browser/www/package-view.tcl packages/acs-api-browser/ www/package-view.tcl packages/acs-api-browser/www/package-view.tcl->ad_dimensional packages/acs-api-browser/www/proc-browse.tcl packages/acs-api-browser/ www/proc-browse.tcl packages/acs-api-browser/www/proc-browse.tcl->ad_dimensional

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
[ hide source ] | [ make this the default ]
Show another procedure: