Commit c954a521 authored by Frank Bergmann's avatar Frank Bergmann

- Added feature to add agile-rel to tasks below sprint in the Gantt Editor

parent 218c9fc6
......@@ -53,14 +53,24 @@ set task_board_action_url "/intranet-agile/task-board-action"
# ------------------------------------------------------------
# Determine what agile state set to display
# Determine agile state set to display
set project_type_id [db_string ptype_id "select project_type_id from im_projects where project_id = :project_id" -default 0]
set agile_category_type [db_string category_type_id "select aux_string1 from im_categories where category_id = :project_type_id" -default ""]
set agile_category_type [db_string category_type_id "select min(aux_string1) from im_categories where category_id = :project_type_id" -default ""]
if {"" eq $agile_category_type} {
ad_return_complaint 1 "Could not determine default agile state range for project_type=[im_category_from_id $project_type_id]"
}
# Get the first of these states as the default state for new tasks
set default_agile_status_id [db_string def "select category_id from im_categories where category_type = :agile_category_type order by sort_order limit 1" -default ""]
if {"" eq $default_agile_status_id} {
ad_return_complaint 1 "Could not determine default agile state.<br>
<b>Details:</b><br>
Project #: $project_id<br>
Project Type: [im_category_from_id $project_type_id]<br>
Agile Category Type: '$category_type'"
}
# ------------------------------------------------------------
# Define the tasks to be displayed
......@@ -69,7 +79,8 @@ set tasks_sql "
select task.project_id as task_id,
task.project_name,
task.project_type_id,
ri.*,
ri.agile_status_id,
ri.sort_order,
im_category_from_id(ri.agile_status_id) as agile_status
from im_projects relp,
im_projects task,
......@@ -82,6 +93,36 @@ set tasks_sql "
order by ri.sort_order
"
# ------------------------------------------------------------
# Make sure tasks placed below the sprint have an agile status
set tasks_below_sprint_without_rel_sql "
select p.project_id as task_without_rel_id
from im_projects main_p,
im_projects p
where main_p.project_id = :project_id and
main_p.project_id != p.project_id and
p.tree_sortkey between main_p.tree_sortkey and tree_right(main_p.tree_sortkey) and
p.project_id not in (select task_id from ($tasks_sql) t)
"
db_foreach tasks_below_sprint_without_rel $tasks_below_sprint_without_rel_sql {
set max_sort_order [db_string max_sort_order "select coalesce(max(i.sort_order),0) from im_agile_task_rels i, acs_rels r where i.rel_id = r.rel_id and r.object_id_one = :project_id" -default 0]
db_string add_user "select im_agile_task_rel__new(null, 'im_agile_task_rel', :project_id, :task_without_rel_id, null, :user_id, '[ad_conn peeraddr]', :default_agile_status_id, [expr $max_sort_order + 10])"
}
set default_state_id [db_string default_state "
select category_id
from im_categories c
where (c.enabled_p = 't' OR c.enabled_p is NULL) and category_type = :agile_category_type
order by sort_order, category_id
LIMIT 1
" -default 0]
if {"" eq $default_state_id} {
ad_return_complaint 1 "Task Board: Did not find a default agile state"
}
# ------------------------------------------------------------
# Get Top Dimension (Agile Status)
......@@ -90,9 +131,7 @@ set top_states_sql "
category
from im_categories c
where ((c.enabled_p = 't' OR c.enabled_p is NULL) and category_type = :agile_category_type)
OR c.category_id in (
select agile_status_id from ($tasks_sql) t
)
OR c.category_id in (select agile_status_id from ($tasks_sql) t)
order by sort_order, category_id
"
set top_html ""
......@@ -102,6 +141,9 @@ db_foreach top_states $top_states_sql {
lappend top_states_list $category_id
}
# ------------------------------------------------------------
# Calculate the tasks to be displayed
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment