Index: openacs-4/packages/logger/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/index.tcl,v diff -u -r1.5 -r1.6 --- openacs-4/packages/logger/www/index.tcl 1 May 2003 10:01:00 -0000 1.5 +++ openacs-4/packages/logger/www/index.tcl 2 May 2003 08:35:10 -0000 1.6 @@ -7,6 +7,7 @@ } { {selected_project_id:integer ""} {selected_variable_id:integer ""} + {selected_projection_id:integer ""} {selected_user_id:integer ""} {start_date:array {}} {end_date:array {}} @@ -18,39 +19,10 @@ ########### # -# Date handling +# Initialize project, variable, projection, and user names # ########### -# Set default values for start and end date if the form hasn't been submitted yet -if { [array size start_date] == 0 } { - # Default end date is now (today) - set default_end_date_seconds [clock seconds] - - set end_date(year) [clock format $default_end_date_seconds -format "%Y"] - set end_date(month) [clock format $default_end_date_seconds -format "%m"] - set end_date(day) [clock format $default_end_date_seconds -format "%d"] - - # Default start date is N days back - set number_of_days_back 31 - set seconds_per_day [expr 60*60*24] - set default_start_date_seconds [expr $default_end_date_seconds - 31 * $seconds_per_day] - - set start_date(year) [clock format $default_start_date_seconds -format "%Y"] - set start_date(month) [clock format $default_start_date_seconds -format "%m"] - set start_date(day) [clock format $default_start_date_seconds -format "%d"] -} - -# Get the ANSI representations of the dates -set start_date_ansi "$start_date(year)-$start_date(month)-$start_date(day)" -set end_date_ansi "$end_date(year)-$end_date(month)-$end_date(day)" - -########### -# -# Project and variable default values and names -# -########### - # We need the name of the selected project in the adp if { ![empty_string_p $selected_project_id] } { logger::project::get -project_id $selected_project_id -array project_array @@ -59,11 +31,6 @@ set selected_project_name "" } -# Likewise, need the name of the selected user in the adp -if { ![empty_string_p $selected_user_id] } { - set selected_user_name [person::name -person_id $selected_user_id] -} - # Find a suitable default variable_id # No more than one variable will be selected on this page # Under unusual circumstances no variable will be selected @@ -116,12 +83,69 @@ set selected_variable_unit "" } +if { ![empty_string_p $selected_projection_id] } { + # Projection selected - use the date range of that projection + + logger::projection::get -projection_id $selected_projection_id -array projection_array + + set selected_projection_name $projection_array(name) + set selected_projection_value $projection_array(value) +} else { + set selected_projection_name "" + set selected_projection_value "" +} + +# Need the name of the selected user in the adp +if { ![empty_string_p $selected_user_id] } { + set selected_user_name [person::name -person_id $selected_user_id] +} + ########### # -# Time Filter +# Initialize dates # ########### +if { [array size start_date] == 0 } { + # Form was not submitted + + if { ![empty_string_p $selected_projection_id] } { + # Projection selected - use the date range of that projection + + set start_date_seconds [clock scan $projection_array(start_time)] + set end_date_seconds [clock scan $projection_array(end_time)] + } else { + # Use default date range + + # Default end date is now (today) + set end_date_seconds [clock seconds] + + # Default start date is N days back + set number_of_days_back 31 + set seconds_per_day [expr 60*60*24] + set start_date_seconds [expr $end_date_seconds - 31 * $seconds_per_day] + } + + # Initialize the start and end date arrays + set end_date(year) [clock format $end_date_seconds -format "%Y"] + set end_date(month) [clock format $end_date_seconds -format "%m"] + set end_date(day) [clock format $end_date_seconds -format "%d"] + + set start_date(year) [clock format $start_date_seconds -format "%Y"] + set start_date(month) [clock format $start_date_seconds -format "%m"] + set start_date(day) [clock format $start_date_seconds -format "%d"] +} + +# Get the ANSI representations of the dates +set start_date_ansi "$start_date(year)-$start_date(month)-$start_date(day)" +set end_date_ansi "$end_date(year)-$end_date(month)-$end_date(day)" + +########### +# +# Date Filter +# +########### + # Create the form template::form create time_filter -method GET # Export the other filter variables @@ -131,6 +155,10 @@ template::element create time_filter selected_variable_id \ -widget hidden \ -value $selected_variable_id +# Reset projection choice if the dates are changed +template::element create time_filter selected_projection_id \ + -widget hidden \ + -value "" template::element create time_filter selected_user_id \ -widget hidden \ -value $selected_user_id @@ -151,7 +179,7 @@ ########### # -# Log entries +# Select log entries # ########### @@ -166,7 +194,7 @@ ########### # -# Projects +# Select projects # ########### @@ -193,7 +221,7 @@ ########### # -# Variables +# Select variables # ########### @@ -233,7 +261,7 @@ ########### # -# Users +# Select users # ########### @@ -270,3 +298,22 @@ " { set url "index?[export_vars {{selected_user_id $user_id} {selected_project_id $selected_project_id} {selected_variable_id $selected_variable_id}}]" } + +########### +# +# Select projections +# +########### + +# Only makes sense to show projections for a selected project and variable +if { ![empty_string_p $selected_project_id] && ![empty_string_p $selected_variable_id] } { + db_multirow -extend { url } projections select_projections { + select lpe.projection_id, + lpe.name + from logger_projections lpe + where lpe.project_id = :selected_project_id + and lpe.variable_id = :selected_variable_id + } { + set url "index?[export_vars {{selected_projection_id $projection_id} {selected_user_id $selected_user_id} {selected_project_id $selected_project_id} {selected_variable_id $selected_variable_id}}]" + } +}