Index: openacs-4/packages/logger/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/index.adp,v diff -u -r1.8.4.1 -r1.8.4.2 --- openacs-4/packages/logger/www/index.adp 13 May 2003 14:56:49 -0000 1.8.4.1 +++ openacs-4/packages/logger/www/index.adp 15 May 2003 08:48:52 -0000 1.8.4.2 @@ -69,7 +69,8 @@ projection_value="@selected_projection_value@" selected_user_id="@selected_user_id@" start_date_ansi="@selected_start_date@" - end_date_ansi="@selected_end_date@"/> + end_date_ansi="@selected_end_date@" + group_by="@selected_group_by@" /> Index: openacs-4/packages/logger/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/index.tcl,v diff -u -r1.10.4.2 -r1.10.4.3 --- openacs-4/packages/logger/www/index.tcl 14 May 2003 17:57:59 -0000 1.10.4.2 +++ openacs-4/packages/logger/www/index.tcl 15 May 2003 08:48:52 -0000 1.10.4.3 @@ -11,8 +11,17 @@ {selected_user_id:integer ""} {selected_start_date ""} {selected_end_date ""} + {selected_group_by ""} } +if { [empty_string_p [ad_conn query]] } { + set weekdayno [clock format [clock seconds] -format %w] + set new_start_date [clock format [clock scan "-$weekdayno days"] -format "%Y-%m-%d"] + set new_end_date [clock format [clock scan "[expr 6-$weekdayno] days"] -format "%Y-%m-%d"] + ad_returnredirect ".?[export_vars { { selected_start_date $new_start_date } { selected_end_date $new_end_date } { selected_group_by "time_stamp" } }]" + ad_script_abort +} + set package_id [ad_conn package_id] set current_user_id [ad_conn user_id] set instance_name [ad_conn instance_name] @@ -25,6 +34,7 @@ selected_user_id selected_start_date selected_end_date + selected_group_by } @@ -137,7 +147,7 @@ } } # Redirect so we get the dates in pretty mode - ad_returnredirect ".?[export_vars $filter_var_list]" + ad_returnredirect ".?[export_vars -no_empty $filter_var_list]" ad_script_abort } @@ -151,7 +161,7 @@ ########### if { [exists_and_not_null selected_project_id] } { - set all_projects_url ".?[export_vars -exclude { selected_project_id } $filter_var_list]" + set all_projects_url ".?[export_vars -no_empty -exclude { selected_project_id } $filter_var_list]" } else { set all_projects_url {} } @@ -162,8 +172,8 @@ db_multirow -extend { filter_name url entry_add_url selected_p clear_url start_date end_date } filters select_projects {} { set filter_name "Projects" - set url ".?[export_vars -override { { selected_project_id $unique_id } } $filter_var_list]" - set entry_add_url "log?[export_vars { { project_id $unique_id } {variable_id $selected_variable_id}}]" + set url ".?[export_vars -no_empty -override { { selected_project_id $unique_id } } $filter_var_list]" + set entry_add_url "log?[export_vars -no_empty { { project_id $unique_id } {variable_id $selected_variable_id}}]" set selected_p [string equal $selected_project_id $unique_id] set name [string_truncate -len 25 $name] set clear_url $all_projects_url @@ -208,10 +218,10 @@ db_multirow -append -extend { filter_name url entry_add_url selected_p clear_url start_date end_date } filters select_variables {} { set filter_name "Variables" - set url ".?[export_vars -override { {selected_variable_id $unique_id} } $filter_var_list]" + set url ".?[export_vars -no_empty -override { {selected_variable_id $unique_id} } $filter_var_list]" if { ![empty_string_p $selected_project_id] } { # A project is selected - enable logging - set entry_add_url "log?[export_vars { { variable_id $unique_id } {project_id $selected_project_id}}]" + set entry_add_url "log?[export_vars -no_empty { { variable_id $unique_id } {project_id $selected_project_id}}]" } else { # No project selected - we wont enable those url:s set entry_add_url "" @@ -227,7 +237,7 @@ ########### if { [exists_and_not_null selected_user_id] } { - set all_users_url ".?[export_vars -exclude { selected_user_id } $filter_var_list]" + set all_users_url ".?[export_vars -no_empty -exclude { selected_user_id } $filter_var_list]" } else { set all_users_url {} } @@ -249,7 +259,7 @@ db_multirow -append -extend { filter_name url entry_add_url selected_p clear_url start_date end_date } filters select_users {} { set filter_name "Users" - set url ".?[export_vars -override { {selected_user_id $unique_id} } $filter_var_list]" + set url ".?[export_vars -no_empty -override { {selected_user_id $unique_id} } $filter_var_list]" set entry_add_url {} set selected_p [string equal $selected_user_id $unique_id] set clear_url $all_users_url @@ -265,15 +275,15 @@ if { ![empty_string_p $selected_project_id] && ![empty_string_p $selected_variable_id] } { if { [exists_and_not_null selected_projection_id] } { - set clear_projections_url ".?[export_vars -exclude { selected_projection_id } $filter_var_list]" + set clear_projections_url ".?[export_vars -no_empty -exclude { selected_projection_id } $filter_var_list]" } else { set clear_projections_url {} } db_multirow -append -extend { filter_name url entry_add_url selected_p clear_url } filters select_projections {} { set filter_name "Projections" set name [string_truncate -len 25 $name] - set url ".?[export_vars -override { {selected_projection_id $unique_id} { selected_start_date $start_date } { selected_end_date $end_date } } $filter_var_list]" + set url ".?[export_vars -no_empty -override { {selected_projection_id $unique_id} { selected_start_date $start_date } { selected_end_date $end_date } } $filter_var_list]" set entry_add_url {} set selected_p [string equal $selected_projection_id $unique_id] set clear_url $clear_projections_url @@ -288,7 +298,7 @@ ##### if { [exists_and_not_null selected_start_date] || [exists_and_not_null selected_end_date] } { - set date_clear_url ".?[export_vars -exclude { selected_start_date selected_end_date } $filter_var_list]" + set date_clear_url ".?[export_vars -no_empty -exclude { selected_start_date selected_end_date } $filter_var_list]" } else { set date_clear_url {} } @@ -344,7 +354,7 @@ } } - set url ".?[export_vars -override { { selected_start_date $new_start_date } { selected_end_date $new_end_date }} $filter_var_list]" + set url ".?[export_vars -no_empty -override { { selected_start_date $new_start_date } { selected_end_date $new_end_date }} $filter_var_list]" set selected_p [expr [string equal $selected_start_date $new_start_date] && [string equal $selected_end_date $new_end_date]] @@ -357,5 +367,37 @@ # Custom if { $custom_p } { + # unique_id name filter_name url entry_add_url selected_p clear_url multirow append filters "" "Custom range" $filter_name "" "" $custom_p $date_clear_url {} {} } + +##### +# +# Group by filter +# +##### + +# TODO: +# Flag to export_vars -no_empty which doesn't export empty strings + +if { [exists_and_not_null selected_group_by] } { + set group_clear_url ".?[export_vars -no_empty -exclude { selected_group_by } $filter_var_list]" +} else { + set group_clear_url {} +} + +array set group_label { + time_stamp "Day" + time_stamp_week "Week" + project_name "Project" + user_id "User" +} + +foreach unique_id { time_stamp_week time_stamp project_name user_id } { + set url ".?[export_vars -no_empty -override { { selected_group_by $unique_id } } $filter_var_list]" + + set selected_p [string equal $selected_group_by $unique_id] + + # unique_id name filter_name url entry_add_url selected_p clear_url + multirow append filters $unique_id $group_label($unique_id) "Group by" $url "" $selected_p $group_clear_url +} Index: openacs-4/packages/logger/www/lib/entries-table-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/lib/Attic/entries-table-oracle.xql,v diff -u -r1.1.4.1 -r1.1.4.2 --- openacs-4/packages/logger/www/lib/entries-table-oracle.xql 13 May 2003 10:10:36 -0000 1.1.4.1 +++ openacs-4/packages/logger/www/lib/entries-table-oracle.xql 15 May 2003 08:49:36 -0000 1.1.4.2 @@ -9,7 +9,8 @@ acs_permission.permission_p(le.entry_id, :current_user_id, 'delete') as delete_p, acs_permission.permission_p(le.entry_id, :current_user_id, 'edit') as edit_p, le.time_stamp, - to_char(le.time_stamp, 'fmMMfm-fmDDfm-YYYY') as time_stamp_pretty, + to_char(le.time_stamp, 'fmDyfm fmMMfm-fmDDfm-YYYY') as time_stamp_pretty, + to_char(le.time_stamp, 'IW-YYYY') as time_stamp_week, le.value, le.description, lp.name as project_name, @@ -23,7 +24,7 @@ and ao.object_id = le.entry_id and ao.creation_user = submitter.user_id [ad_decode $where_clauses "" "" "and [join $where_clauses "\n and "]"] - order by le.time_stamp desc, ao.creation_date desc + order by $order_by Index: openacs-4/packages/logger/www/lib/entries-table-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/lib/Attic/entries-table-postgresql.xql,v diff -u -r1.1.4.1 -r1.1.4.2 --- openacs-4/packages/logger/www/lib/entries-table-postgresql.xql 13 May 2003 10:10:36 -0000 1.1.4.1 +++ openacs-4/packages/logger/www/lib/entries-table-postgresql.xql 15 May 2003 08:49:36 -0000 1.1.4.2 @@ -9,7 +9,8 @@ acs_permission__permission_p(le.entry_id, :current_user_id, 'delete') as delete_p, acs_permission__permission_p(le.entry_id, :current_user_id, 'edit') as edit_p, le.time_stamp, - to_char(le.time_stamp, 'fmMMfm-fmDDfm-YYYY') as time_stamp_pretty, + to_char(le.time_stamp, 'fmDyfm fmMMfm-fmDDfm-YYYY') as time_stamp_pretty, + to_char(le.time_stamp, 'IW-YYYY') as time_stamp_week, le.value, le.description, lp.name as project_name, @@ -23,7 +24,7 @@ and ao.object_id = le.entry_id and ao.creation_user = submitter.user_id [ad_decode $where_clauses "" "" "and [join $where_clauses "\n and "]"] - order by le.time_stamp desc, ao.creation_date desc + order by $order_by Index: openacs-4/packages/logger/www/lib/entries-table.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/lib/Attic/entries-table.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/logger/www/lib/entries-table.adp 13 May 2003 15:42:42 -0000 1.4.2.2 +++ openacs-4/packages/logger/www/lib/entries-table.adp 15 May 2003 08:49:36 -0000 1.4.2.3 @@ -14,46 +14,135 @@ Description   - - + + + + + +   + + + + + + User: @entries.user_chunk@ + + + Project: @entries.project_name@ + + + Date: @entries.time_stamp_pretty@ + + + Week: @entries.time_stamp_week@ + + + Unknown group by column @group_by@ + + + + + + + + + + + + + + + + + + + Edit + + + @entries.project_name@ + @entries.user_chunk@ + @entries.time_stamp_pretty@ + + + @entries.value@ + + + @entries.value@ + + + + @entries.description@ + + + + Delete + + + + + +   + + Subtotal + + + @entries.subtotal@ + +   +   + + + + - - - + + + + - - - - - - Edit + + - - @entries.project_name@ - @entries.user_chunk@ - @entries.time_stamp_pretty@ - - - @entries.value@ - - @entries.value@ + - - - @entries.description@ - - - - Delete - - - - + + + + Edit + + + @entries.project_name@ + @entries.user_chunk@ + @entries.time_stamp_pretty@ + + + @entries.value@ + + + @entries.value@ + + + + @entries.description@ + + + + Delete + + + + + + + +   + +   @@ -88,6 +177,11 @@ + + +   + +   Projection @@ -97,15 +191,16 @@ - -   -   -   -   - @variable.unit@ -   -   - + + +   +   +   +   + @variable.unit@ +   +   + Index: openacs-4/packages/logger/www/lib/entries-table.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/logger/www/lib/Attic/entries-table.tcl,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/logger/www/lib/entries-table.tcl 13 May 2003 15:42:42 -0000 1.5.2.2 +++ openacs-4/packages/logger/www/lib/entries-table.tcl 15 May 2003 08:49:36 -0000 1.5.2.3 @@ -8,6 +8,7 @@ # start_date_ansi # end_date_ansi # projection_value +# group_by:optional set current_user_id [ad_conn user_id] set package_id [ad_conn package_id] @@ -48,10 +49,27 @@ set selected_entry_id {} } +set order_by "le.time_stamp desc, ao.creation_date desc" + +# If we're grouping by, we should sort by that column first +if { [exists_and_not_null group_by] } { + switch -exact $group_by { + user_id { + set order_by "user_name asc, $order_by" + } + project_name { + set order_by "project_name asc, $order_by" + } + } +} + set value_total 0 set value_count 0 -db_multirow -extend { view_url edit_url delete_url delete_onclick user_chunk selected_p } entries select_entries {} { +set last_group_by_value {} +set value_subtotal 0 + +db_multirow -extend { subtotal view_url edit_url delete_url delete_onclick user_chunk selected_p } entries select_entries {} { set description [string_truncate -len 50 $description] set project_name [string_truncate -len 20 $project_name] set selected_p [string equal $id $selected_entry_id] @@ -67,6 +85,20 @@ set user_chunk [ad_present_user $user_id $user_name] + if { [exists_and_not_null group_by] } { + # Should we reset the subtotal? + if { ![string equal $last_group_by_value [set $group_by]] } { + set value_subtotal 0 + } + + # Calculate new subtotal + set value_subtotal [expr $value_subtotal + $value] + # and store it in the column + set subtotal $value_subtotal + + set last_group_by_value [set $group_by] + } + set value_total [expr $value_total + $value] incr value_count }