Dependency Graph
View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0004617 | mantisbt | filters | public | 2004-09-27 05:54 | 2025-01-10 11:50 |
| Reporter | ralfiii | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | always |
| Status | new | Resolution | open | ||
| Product Version | 0.19.0 | ||||
| Summary | 0004617: Hide "Child of" entries | ||||
| Description | I'd like to be able to hide issues that are a "child of" another issue. We use the "child of" relationship a lot to group issues together for upcoming releases. If it would be possible to hide issues that have been specified as "child of" something else, this would help a lot to concentrate on "normal" open issues. | ||||
| Tags | No tags attached. | ||||
| Attached Files | child_vs_100rc4.patch (6,411 bytes)
Index: view_all_set.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/view_all_set.php,v
retrieving revision 1.57.4.1
diff -u -r1.57.4.1 view_all_set.php
--- view_all_set.php 10 Dec 2005 03:02:07 -0000 1.57.4.1
+++ view_all_set.php 24 Feb 2006 13:55:02 -0000
@@ -143,6 +143,8 @@
$f_per_page = gpc_get_int( 'per_page', -1 );
$f_highlight_changed = gpc_get_string( 'highlight_changed', config_get( 'default_show_changed' ) );
$f_sticky_issues = gpc_get_bool( 'sticky_issues' );
+ # by Mike:
+ $f_show_children = gpc_get_bool( 'show_children' );
# sort direction
$f_sort_d = gpc_get_string( 'sort', '' );
$f_dir_d = gpc_get_string( 'dir', '' );
@@ -248,6 +250,11 @@
$f_sticky_issues = 'off';
}
+ if ( $f_show_children ) {
+ $f_show_children = 'on';
+ } else {
+ $f_show_children = 'off';
+ }
if ( $f_type < 0 ) {
print_header_redirect( 'view_all_bug_page.php' );
}
@@ -364,6 +371,8 @@
$t_setting_arr['view_state'] = $f_view_state;
$t_setting_arr['custom_fields'] = $f_custom_fields_data;
$t_setting_arr['sticky_issues'] = $f_sticky_issues;
+ # by Mike
+ $t_setting_arr['show_children'] = $f_show_children;
$t_setting_arr['relationship_type'] = $f_relationship_type;
$t_setting_arr['relationship_bug'] = $f_relationship_bug;
$t_setting_arr['show_profile'] = $f_show_profile;
Index: view_filters_page.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/view_filters_page.php,v
retrieving revision 1.38.6.2
diff -u -r1.38.6.2 view_filters_page.php
--- view_filters_page.php 10 Dec 2005 03:02:07 -0000 1.38.6.2
+++ view_filters_page.php 2 Mar 2006 14:21:22 -0000
@@ -241,7 +241,7 @@
<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"> </td>
<?php } ?>
<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'priority' ) ?></td>
- <td class="small-caption" colspan="<?php echo ( ( $t_filter_cols - 7 ) * $t_custom_cols ); ?>"> </td>
+ <td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'children' ) ?></td>
</tr>
<tr class="row-1">
<!-- Status -->
@@ -282,7 +282,10 @@
<td valign="top" colspan="<?php echo ( 1 * $t_custom_cols ); ?>">
<?php print_filter_show_priority(); ?>
</td>
- <td colspan="<?php echo ( ( $t_filter_cols - 7 ) * $t_custom_cols ); ?>"> </td>
+ <!-- Mike: children -->
+ <td valign="top" colspan="<?php echo ( 1 * $t_custom_cols ); ?>">
+ <?php print_filter_children(); ?>
+ </td>
</tr>
<tr class="row-category2">
Index: core/filter_api.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/filter_api.php,v
retrieving revision 1.122.2.2.2.3
diff -u -r1.122.2.2.2.3 filter_api.php
--- core/filter_api.php 12 Dec 2005 02:46:19 -0000 1.122.2.2.2.3
+++ core/filter_api.php 2 Mar 2006 14:19:37 -0000
@@ -311,6 +311,15 @@
}
}
+ # by Mike
+ if( $t_filter['show_children'] == 'off' ) {
+ $t_relationship_type = 2;
+ $t_sub_query_relationship = "SELECT DISTINCT $t_bug_table.id FROM $t_bug_relationship_table, $t_bug_table WHERE ($t_bug_table.id=$t_bug_relationship_table.destination_bug_id) AND ($t_bug_relationship_table.relationship_type=$t_relationship_type)";
+
+ $t_filter_children = "($t_bug_table.id NOT IN ($t_sub_query_relationship))";
+
+ array_push( $t_where_clauses, $t_filter_children);
+ }
# show / hide status
# take a list of all available statuses then remove the ones that we want hidden, then make sure
# the ones we want shown are still available
@@ -1377,9 +1386,9 @@
<td colspan="1" class="small-caption" valign="top">
<a href="<?php PRINT $t_filters_url . 'show_priority[]'; ?>" id="show_priority_filter"><?php PRINT lang_get( 'priority' ) ?>:</a>
</td>
- <?php if ( $t_filter_cols > 7 ) {
- echo '<td class="small-caption" valign="top" colspan="' . ( $t_filter_cols - 7 ) . '"> </td>';
- } ?>
+ <td colspan="1" class="small-caption" valign="top">
+ <a href="<?php PRINT $t_filters_url . 'show_children[]'; ?>" id="show_children"><?php PRINT lang_get( 'children' ) ?>:</a>
+ </td>
</tr>
<tr class="row-1">
@@ -1605,9 +1614,13 @@
}
?>
</td>
- <?php if ( $t_filter_cols > 7 ) {
- echo '<td class="small-caption" valign="top" colspan="' . ( $t_filter_cols - 7 ) . '"> </td>';
- } ?>
+ <td class="small-caption" valign="top" id="show_children_filter_target">
+ <?php
+ $t_show_children_state = gpc_string_to_bool( $t_filter['show_children'] ) ;
+ PRINT ( $t_show_children_state ? lang_get( 'yes' ) : lang_get( 'no' ) );
+ ?>
+ <input type="hidden" name="show_children" value="<?php echo $t_show_children_state ? 'on' : 'off';?>" />
+ </td>
</tr>
@@ -2349,6 +2362,9 @@
if ( !isset( $p_filter_arr['sticky_issues'] ) ) {
$p_filter_arr['sticky_issues'] = config_get( 'show_sticky_issues' );
}
+ if ( !isset( $p_filter_arr['show_children'] ) ) {
+ $p_filter_arr['show_children'] = "on"; #config_get( 'show_children' );
+ }
if ( !isset( $p_filter_arr['sort'] ) ) {
$p_filter_arr['sort'] = "last_updated";
}
@@ -2755,6 +2771,13 @@
<?php
}
+ function print_filter_children(){
+ global $t_filter;
+ ?><!-- Show or hide sticky bugs -->
+ <input type="checkbox" name="show_children" <?php check_checked( gpc_string_to_bool( $t_filter['show_children'] ), 'on' ); ?> />
+ <?php
+ }
+
function print_filter_highlight_changed(){
global $t_filter;
?><!-- Highlight changed bugs -->
Index: lang/strings_english.txt
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/lang/strings_english.txt,v
retrieving revision 1.267
diff -u -r1.267 strings_english.txt
--- lang/strings_english.txt 7 Aug 2005 13:42:04 -0000 1.267
+++ lang/strings_english.txt 15 May 2006 07:36:00 -0000
@@ -555,6 +555,7 @@
$s_reporter = 'Reporter';
$s_assigned_to = 'Assigned To';
$s_priority = 'Priority';
+$s_children = 'Show Children';
$s_resolution = 'Resolution';
$s_status = 'Status';
$s_duplicate_id = 'Duplicate ID';
mantis_child_vs_105.patch (6,810 bytes)
? bug_timetrack_view_inc.php
? config_inc.php
Index: view_all_set.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/view_all_set.php,v
retrieving revision 1.57.4.1.2.1.4.1
diff -u -r1.57.4.1.2.1.4.1 view_all_set.php
--- view_all_set.php 6 Apr 2006 00:28:52 -0000 1.57.4.1.2.1.4.1
+++ view_all_set.php 25 Aug 2006 12:51:16 -0000
@@ -143,6 +143,8 @@
$f_per_page = gpc_get_int( 'per_page', -1 );
$f_highlight_changed = gpc_get_int( 'highlight_changed', config_get( 'default_show_changed' ) );
$f_sticky_issues = gpc_get_bool( 'sticky_issues' );
+ # Sx: Hide child issues
+ $f_show_children = gpc_get_bool( 'show_children' );
# sort direction
$f_sort_d = gpc_get_string( 'sort', '' );
$f_dir_d = gpc_get_string( 'dir', '' );
@@ -248,6 +250,13 @@
$f_sticky_issues = 'off';
}
+ # Sx: Hide child issues
+ if ( $f_show_children ) {
+ $f_show_children = 'on';
+ } else {
+ $f_show_children = 'off';
+ }
+
if ( $f_type < 0 ) {
print_header_redirect( 'view_all_bug_page.php' );
}
@@ -364,6 +373,8 @@
$t_setting_arr['view_state'] = $f_view_state;
$t_setting_arr['custom_fields'] = $f_custom_fields_data;
$t_setting_arr['sticky_issues'] = $f_sticky_issues;
+ # Sx: Hide child issues
+ $t_setting_arr['show_children'] = $f_show_children;
$t_setting_arr['relationship_type'] = $f_relationship_type;
$t_setting_arr['relationship_bug'] = $f_relationship_bug;
$t_setting_arr['show_profile'] = $f_show_profile;
Index: view_filters_page.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/view_filters_page.php,v
retrieving revision 1.38.6.2
diff -u -r1.38.6.2 view_filters_page.php
--- view_filters_page.php 10 Dec 2005 03:02:07 -0000 1.38.6.2
+++ view_filters_page.php 6 Jul 2006 09:36:55 -0000
@@ -241,7 +241,7 @@
<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"> </td>
<?php } ?>
<td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'priority' ) ?></td>
- <td class="small-caption" colspan="<?php echo ( ( $t_filter_cols - 7 ) * $t_custom_cols ); ?>"> </td>
+ <td class="small-caption" colspan="<?php echo ( 1 * $t_custom_cols ); ?>"><?php echo lang_get( 'children' ) ?></td>
</tr>
<tr class="row-1">
<!-- Status -->
@@ -282,7 +282,10 @@
<td valign="top" colspan="<?php echo ( 1 * $t_custom_cols ); ?>">
<?php print_filter_show_priority(); ?>
</td>
- <td colspan="<?php echo ( ( $t_filter_cols - 7 ) * $t_custom_cols ); ?>"> </td>
+ <!-- Sx: Hide child issues -->
+ <td valign="top" colspan="<?php echo ( 1 * $t_custom_cols ); ?>">
+ <?php print_filter_children(); ?>
+ </td>
</tr>
<tr class="row-category2">
Index: core/filter_api.php
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/core/filter_api.php,v
retrieving revision 1.122.2.2.2.3.2.5.2.3.2.1
diff -u -r1.122.2.2.2.3.2.5.2.3.2.1 filter_api.php
--- core/filter_api.php 6 May 2006 03:01:07 -0000 1.122.2.2.2.3.2.5.2.3.2.1
+++ core/filter_api.php 25 Aug 2006 12:51:22 -0000
@@ -311,6 +311,16 @@
}
}
+ # Sx: Hide child issues
+ if( $t_filter['show_children'] == 'off' ) {
+ $t_relationship_type = 2;
+ $t_sub_query_relationship = "SELECT DISTINCT $t_bug_table.id FROM $t_bug_relationship_table, $t_bug_table WHERE ($t_bug_table.id=$t_bug_relationship_table.destination_bug_id) AND ($t_bug_relationship_table.relationship_type=$t_relationship_type)";
+
+ $t_filter_children = "($t_bug_table.id NOT IN ($t_sub_query_relationship))";
+
+ array_push( $t_where_clauses, $t_filter_children);
+ }
+
# show / hide status
# take a list of all available statuses then remove the ones that we want hidden, then make sure
# the ones we want shown are still available
@@ -1374,9 +1384,11 @@
<td colspan="1" class="small-caption" valign="top">
<a href="<?php PRINT $t_filters_url . 'show_priority[]'; ?>" id="show_priority_filter"><?php PRINT lang_get( 'priority' ) ?>:</a>
</td>
- <?php if ( $t_filter_cols > 7 ) {
- echo '<td class="small-caption" valign="top" colspan="' . ( $t_filter_cols - 7 ) . '"> </td>';
- } ?>
+
+ <!-- Sx: Hide child issues -->
+ <td colspan="1" class="small-caption" valign="top">
+ <a href="<?php PRINT $t_filters_url . 'show_children[]'; ?>" id="show_children"><?php PRINT lang_get( 'children' ) ?>:</a>
+ </td>
</tr>
<tr class="row-1">
@@ -1605,9 +1617,14 @@
}
?>
</td>
- <?php if ( $t_filter_cols > 7 ) {
- echo '<td class="small-caption" valign="top" colspan="' . ( $t_filter_cols - 7 ) . '"> </td>';
- } ?>
+ <!-- Sx: Hide child issues -->
+ <td class="small-caption" valign="top" id="show_children_filter_target">
+ <?php
+ $t_show_children_state = gpc_string_to_bool( $t_filter['show_children'] ) ;
+ PRINT ( $t_show_children_state ? lang_get( 'yes' ) : lang_get( 'no' ) );
+ ?>
+ <input type="hidden" name="show_children" value="<?php echo $t_show_children_state ? 'on' : 'off';?>" />
+ </td>
</tr>
@@ -2349,6 +2366,12 @@
if ( !isset( $p_filter_arr['sticky_issues'] ) ) {
$p_filter_arr['sticky_issues'] = config_get( 'show_sticky_issues' );
}
+
+ # Sx: Hide child issues
+ if ( !isset( $p_filter_arr['show_children'] ) ) {
+ $p_filter_arr['show_children'] = "on"; #config_get( 'show_children' );
+ }
+
if ( !isset( $p_filter_arr['sort'] ) ) {
$p_filter_arr['sort'] = "last_updated";
}
@@ -2753,6 +2776,14 @@
<?php
}
+ # Sx: Hide child issues
+ function print_filter_children(){
+ global $t_filter;
+ ?><!-- Show or hide sticky bugs -->
+ <input type="checkbox" name="show_children" <?php check_checked( gpc_string_to_bool( $t_filter['show_children'] ), 'on' ); ?> />
+ <?php
+ }
+
function print_filter_highlight_changed(){
global $t_filter;
?><!-- Highlight changed bugs -->
Index: lang/strings_english.txt
===================================================================
RCS file: /cvsroot/mantisbt/mantisbt/lang/strings_english.txt,v
retrieving revision 1.267.10.1
diff -u -r1.267.10.1 strings_english.txt
--- lang/strings_english.txt 7 May 2006 05:56:22 -0000 1.267.10.1
+++ lang/strings_english.txt 11 Oct 2006 10:40:11 -0000
@@ -556,6 +556,8 @@
$s_reporter = 'Reporter';
$s_assigned_to = 'Assigned To';
$s_priority = 'Priority';
+# Sx: Hide child issues
+$s_children = 'Show Children';
$s_resolution = 'Resolution';
$s_status = 'Status';
$s_duplicate_id = 'Duplicate ID';
| ||||
|
I second this idea. I was about to log a feature request similar to this, for the same reasons. |
|
|
Are you guys interested in this as a configuration option or something that is controllable at runtime? |
|
|
I've been rethinking this one. I also use the "child of" relationship to group issues together for upcoming releases. But I also usually make these groups prerequisites (children) of other group issues, like when a release of a software product depends on a release of a framework I'm also developing. So, in this case, eliminating issues that have parents wouldn't work so well. Therefore, I think we'll need a filter that's even more refined. Actually, two filters: #/Children (None, One, Many, "Don't Care"-default) and #/Parents (None, One, Many, "Don't Care"-default). Providing this feature if a configuration option is set would be fine to me if it doesn't make sense to include these filters amongst the normal set of filters. edited on: 09-29-04 10:51 |
|
|
I agree that this would be helpful. Some thoughts for this discussion: Instead of using children to group issues to upcoming releases, we introduced a custom field "target version" (see my feature request 0004640 :-). This way, there would be no interference between hiding children and target versions. And: I suggested to introduce a dependency relationship in addition to the children (see 0004639). So this discussion is in fact a good argument that this distinction makes sense: You can hide all children while keeping dependent issues visible. Re vboctor: This should be configurable at runtime. Once you have a parent-children hierarchy, the next thing you wish is (of course) the hierarchy view like in MS Project etc. ... hiding children is the first small step in this direction ;-) |
|
|
An add-on idea: Maybe, if should be possible to hide all children, or to hide the children of some specified issue only (e.g. add a "Hide children of this issue" button to view.php) |
|
|
I like the idea of a target version field for the sake of filtering, but I still also like to group version children under a version parent. This is because of the scenario I stated where one version of an app depends on another version of a framework. Making all the issues under one app version individually dependent on the new version of a framework (which includes its own set of issues) would be inflexible without version parents. Also consider the visual representation of these relationships--a target version field won't help me here. Unless there's a way of creating and visually representating dependencies between target versions (and there's not now), I have to continue with version grouping. |
|
|
I would simply need a filter for hiding those entries who are in a "child of" relationship with an other issue. I especially disagree with tandler, because the grouping doesn't always corellate with a version. |
|
|
Has anyone looked at this issue lately? It would be cool if this were implemented. However, I'd call this issue a new feature rather than a bug. |
|
|
To vboctor: Sorry, I didn't see your question so I didn't answer. I'd like to see that as filter setting (controllable at runtime). And, yes, it's a feature. |
|
|
For inspiration: http://www.trackplus.de/ has a nice way of visualizing child issues: The first column has [+] / [-] buttons to fold / unfold children, quite similar to MS Excel's grouping feature. |
|
|
VBoctor: could you give me a hint on how to implement this feature? (0004853 unfortunately doesn't resolve this issue here.) I'm quite sure I can add a checkbox to the filter-view. Then I would think that I have to modify the SQL-query that filters the issue that have to be displayed in view_all_bug_page.php, but I have no idea WHERE this query is generated. Thanks, |
|
|
Has someone a solution for that issue? |
|
|
A solution as described in 0004617:0010195 would naturally be fantastic. |
|
|
ralfiii, I'd be happy to check out your mod. Could you post it to this issue? Thanks! |
|
|
I attached the patch against version 1.0.0rc4. |
|
|
Well, I'm using 1.0.3 (latest version)... will the patch work against this as well? |
|
|
Eerh... To test this I checked out revision 1.0.3 and wanted to apply the patch ... and found out that I can MAKE patch-files, but I don't know how to apply them. Any hint? (Win-user) |
|
|
Can someone put the attached files back? |
|
|
Additional to the patch I also uploaded the files that need to be changed in V1.0.5 as windows-users may find that easier to use. |
|
|
This is exactly what I've been looking for :D |
|
|
Typo: filter_api.php: |
|
|
Does this work on 1.1.2 ? |
|
related to
child of
duplicate of