Rally Software

 View Only
Expand all | Collapse all

I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

  • 1.  I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Broadcom Employee
    Posted Jun 06, 2016 04:15 PM
    As a Product Owner I like using the Custom List app to list all of the User Stories scheduled for a PI for each of the teams working the PI Backlog.  I would also like to be able to see any Defects the teams have created/assigned for resolution in the PI as part of this list.  Unfortunately the Custom List app doesn't let you select both User Stories and Defects for display.

    Is there any way to get this joint list from a Custom List app?


  • 2.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Jun 07, 2016 09:26 AM
    Short answer, no. As you've observed you can only return one work item type at a time in a custom list. There's a request for this in Idea Manager at https://ideas.rallydev.com/ideas/D3918 but it hasn't gotten much traction to date.

    What I do (and what I'm sure you're probably doing as well) is to simply put two or more custom list apps on a single custom page with the desired Release or Iteration filtering on it. Hope that helps.


  • 3.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Broadcom Employee
    Posted Jun 07, 2016 09:43 AM
    Thanks Eric.  I appreciate you pointing me to the Idea.  I'll go vote for it.  Yes I'm doing something similar to what you are doing to get around the limitation.  As you know, that approach doesn't let you prioritize a teams Release backlog for Stories and Defects.  And yes I know there are other areas, such as Team Planning where you can do this, but I prefer the Custom List because it allows me to see everything in the Release, not just what hasn't been assigned to an iteration.  And I can't customize the view to see the Release Backlogs of different teams on the same screen.

    Que Sera, Sera.

    Thanks again Eric.


  • 4.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Jun 07, 2016 10:00 AM
    I just gave this answer to a previous question. Place the code below into a Custom HTML app on a page of your choice:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Customizable Columns Grid Board Example</title>

        <script type="text/javascript" src="/apps/2.1/sdk.js"></script>

        <script type="text/javascript">
            Rally.onReady(function() {
                Ext.define('Rally.example.CustomizableColumnsGridBoard', {
                    extend: 'Rally.app.App',
                    componentCls: 'app',
                
                    launch: function() {
                        Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
                            models: ['defect', 'userstory'],
                            autoLoad: true,
                            enableHierarchy: true
                        }).then({
                            success: this._onStoreBuilt,
                            scope: this
                        });
                    },
                
                    _onStoreBuilt: function(store) {
                        var modelNames = ['defect', 'userstory'],
                            context = this.getContext();
                        this.add({
                            xtype: 'rallygridboard',
                            context: context,
                            modelNames: modelNames,
                            toggleState: 'grid',
                            stateful: false,
                            plugins: [
                                'rallygridboardaddnew',
                                {
                                    ptype: 'rallygridboardfieldpicker',
                                    headerPosition: 'left',
                                    modelNames: modelNames,
                                    stateful: true,
                                    stateId: context.getScopedStateId('columns-example')
                                }
                            ],
                            gridConfig: {
                                store: store,
                                columnCfgs: [
                                    'Name',
                                    'State',
                                    'Release',
                                    'Iteration'
                                ]
                            },
                            height: this.getHeight()
                        });
                    }
                });
                

                Rally.launchApp('Rally.example.CustomizableColumnsGridBoard', {
                  name: 'Customizable Columns Grid Board Example'
                });
            });
        </script>

        <style type="text/css">
            
        </style>
    </head>
    <body></body>
    </html>


  • 5.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Broadcom Employee
    Posted Jun 07, 2016 12:49 PM
    Hey Nik, that is GREAT.  Thanks.  Can I ask for a little more?  I would like to filter on Project.  In my custom Grid List I use the following query: (Project.Name contains "some_string")  Is there additional code that could be added to your above HTML that would provide this behavior?  And how would I exclude Defects where STATE=CLOSED?

    Sorry, if this comes across as demanding.

    Andy


  • 6.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Broadcom Employee
    Posted Jun 07, 2016 02:49 PM
    Nik Antonelli provided an updated set of code that adds Filtering to his original solution.  It is PERFECT for my needs.  Thanks Nik.  Here is his updated code...

    <!DOCTYPE html>
    <html>
    <head>
    <title>Customizable Columns Grid Board Example</title>

    <script type="text/javascript" src="/apps/2.1/sdk.js"></script>

    <script type="text/javascript">
    Rally.onReady(function() {
    Ext.define('Rally.example.CustomizableColumnsGridBoard', {
    extend: 'Rally.app.App',
    componentCls: 'app',

    launch: function() {
    Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
    models: ['defect', 'userstory'],
    autoLoad: true,
    enableHierarchy: true
    }).then({
    success: this._onStoreBuilt,
    scope: this
    });
    },

    _onStoreBuilt: function(store) {
    var modelNames = ['defect', 'userstory'],
    context = this.getContext();
    this.add({
    xtype: 'rallygridboard',
    context: context,
    modelNames: modelNames,
    toggleState: 'grid',
    stateful: false,
    plugins: [
    'rallygridboardaddnew',
    {
    ptype: 'rallygridboardfieldpicker',
    headerPosition: 'left',
    modelNames: modelNames,
    stateful: true,
    stateId: context.getScopedStateId('columns-example')
    },{
    ptype: 'rallygridboardinlinefiltercontrol',
    inlineFilterButtonConfig: {
    stateful: true,
    stateId: context.getScopedStateId('filters'),
    modelNames: modelNames,
    inlineFilterPanelConfig: {
    quickFilterPanelConfig: {
    defaultFields: [
    'ArtifactSearch',
    'Owner',
    'ModelType'
    ]
    }
    }
    }
    }
    ],
    gridConfig: {
    store: store,
    columnCfgs: [
    'Name',
    'State',
    'Release',
    'Iteration'
    ]
    },
    height: this.getHeight()
    });
    }
    });


    Rally.launchApp('Rally.example.CustomizableColumnsGridBoard', {
    name: 'Customizable Columns Grid Board Example'
    });
    });
    </script>

    <style type="text/css">

    </style>
    </head>
    <body></body>
    </html>

     


  • 7.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Jun 07, 2016 04:27 PM
    Holy %^*#@)&! I've been longing for this solution forever.  I literally did my happy dance.  Once agin, Eric Nash to the rescue.   I also added my comment to the Idea Manager.  


  • 8.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Jun 08, 2016 07:09 AM
    Jennifer (lord, I wish that the Q&A forums had @mentions) it was all Andy and Nik! All I did was share this over to Idea Manager. Either this was a lot simpler than we all thought or Nik is simply a bloody genius ;-)


  • 9.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Jun 08, 2016 07:22 AM
    I wish I was a genius that could write apps in a flash, but I would defer the praise to the SDK guys in Boulder for that snippet. It came mainly from the help pages with a few mods by me. Praise should go to Kyle in that team for all his support and encouragement.


  • 10.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?
    Best Answer

    Broadcom Employee
    Posted Jun 13, 2016 11:02 PM

    I wanted to post an update to this thread regarding the above script Nik provided...

     

    For some reason the CUSTOM HTML app isn't applying the filter correctly when it first loads the page.  I've opened Case #831878 regarding this and current opinion from them is that is is a problem with the CUSTOM HTML app and not a problem with the script.  I'll update this thread when a solution is available.

     

    To force the correct filtering you can modify the number of rows displayed per page or click "Show Columns" and then click "Apply" without changing the columns displayed.  I've also updated the script to allow you to Export the rows and flip between a List and Board display.  Toggling between the LIst and Board views will also force correct filtering.

     

    For those interested here is the updated script with Export and List/Board flipping...

     

    <!DOCTYPE html>
    <html>
    <head>
    <title>UserStory Defect List</title>

     

    <script type="text/javascript" src="/apps/2.1/sdk.js"></script>

     

    <script type="text/javascript">
    Rally.onReady(function() {
      Ext.define('UserStory.Defect.CustomizableColumnsGridBoard', {
        extend: 'Rally.app.App',
        componentCls: 'app',
     
        launch: function() {
          Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
            models: ['defect', 'userstory'],
            autoLoad: true,
            enableHierarchy: true
          }).then({
            success: this._onStoreBuilt,
            scope: this
        });
      },
     
      _onStoreBuilt: function(store) {
        var modelNames = ['defect', 'userstory'],
        context = this.getContext();
        this.add({
          xtype: 'rallygridboard',
          context: context,
          modelNames: modelNames,
          toggleState: 'grid',
          stateful: false,
          plugins: [
            'rallygridboardaddnew',
            {
              ptype: 'rallygridboardinlinefiltercontrol',
              inlineFilterButtonConfig: {
                stateful: true,
                stateId: context.getScopedStateId('filters'),
                modelNames: modelNames,
                inlineFilterPanelConfig: {
                  quickFilterPanelConfig: {
                    defaultFields: [
                      'ArtifactSearch',
                      'Release',
                      'Project',
                      'ModelType'
                    ]
                  }
                }
              }
            },
            {
              ptype: 'rallygridboardfieldpicker',
              headerPosition: 'left',
              modelNames: modelNames,
              stateful: true,
              stateId: context.getScopedStateId('columns-example')
            },
            {
              ptype: 'rallygridboardactionsmenu',
              menuItems: [
                {
                  text: 'Export...',
                  handler: function() {
                    window.location = Rally.ui.gridboard.Export.buildCsvExportUrl(
                      this.down('rallygridboard').getGridOrBoard()
                    );
                  },
                  scope: this
                }
              ],
              buttonConfig: {
                iconCls: 'icon-export'
              }
            },
            'rallygridboardtoggleable'
          ],
          cardBoardConfig: {
            attribute: 'ScheduleState'
          },
          gridConfig: {
            store: store,
            columnCfgs: [
              'Name',
              'ScheduleState',
              'State',
              'Iteration'
            ]
          },
          height: this.getHeight()
        });
      }
    });

     

    Rally.launchApp('UserStory.Defect.CustomizableColumnsGridBoard', {
      name: 'UserStory Defect List'
    });
    });
    </script>

     

    <style type="text/css">

     

    </style>
    </head>
    <body></body>
    </html>

     

     

    _____________

    Support EDIT - Also see Development's response: 

    Hi Everyone,

     

    When using the inline filter plugin you need to be sure create the store with autoload off. This is because the plugin will take over responsibility for loading the store the first time after it retrieves the saved preferences. So changing the TreeStoreBuilder to the following should resolve the issue.

     

    Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
            models: ['defect', 'userstory'],
            autoLoad: false,
            enableHierarchy: true
          }).then({
            success: this._onStoreBuilt,
            scope: this
        });



  • 11.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Mar 24, 2017 11:32 AM

    Hi Everyone,

     

    When using the inline filter plugin you need to be sure create the store with autoload off. This is because the plugin will take over responsibility for loading the store the first time after it retrieves the saved preferences. So changing the TreeStoreBuilder to the following should resolve the issue.

     

    Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
            models: ['defect', 'userstory'],
            autoLoad: false,
            enableHierarchy: true
          }).then({
            success: this._onStoreBuilt,
            scope: this
        });



  • 12.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 06, 2018 05:00 PM

    This is a really great app!

    However is it possible to add milestones and tags to this please please please?

     

    This would make it perfect for our use case. 

     

    Can someone help?



  • 13.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 06, 2018 05:12 PM

    You can replace the Inline Filter Config section with the code below to whitelist Milestones and Tags and also add Advanced Filtering:

     

    inlineFilterPanelConfig: {
    quickFilterPanelConfig: {
    addQuickFilterConfig: {
    whiteListFields: ['Milestones', 'Tags']
    },
    defaultFields: [
    'ArtifactSearch',
    'Release',
    'Project',
    'ModelType'
    ]
    },
    advancedFilterPanelConfig: {
    advancedFilterRowsConfig: {
    propertyFieldConfig: {
    whiteListFields: ['Milestones', 'Tags']
    }

    }

    },
    }



  • 14.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 07, 2018 09:22 AM

    Hey Terry,

     

    I tried doing this, but the app isn't responding. I'm sure I made some minor error with some braces or punctuation. Would you mind checking this and confirming if this is the right code please?

     

    <!DOCTYPE html>
    <html>
    <head>
    <title>UserStory Defect List</title>

     

    <script type="text/javascript" src="/apps/2.1/sdk.js"></script>

     


    <script type="text/javascript">
    Rally.onReady(function() {
    Ext.define('UserStory.Defect.CustomizableColumnsGridBoard', {
    extend: 'Rally.app.App',
    componentCls: 'app',

    launch: function() {
    Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
    models: ['defect', 'userstory'],
    autoLoad: true,
    enableHierarchy: true
    }).then({
    success: this._onStoreBuilt,
    scope: this
    });
    },

    _onStoreBuilt: function(store) {
    var modelNames = ['defect', 'userstory'],
    context = this.getContext();
    this.add({
    xtype: 'rallygridboard',
    context: context,
    modelNames: modelNames,
    toggleState: 'grid',
    stateful: false,
    plugins: [
    'rallygridboardaddnew',
    {
    ptype: 'rallygridboardinlinefiltercontrol',
    inlineFilterButtonConfig: {
    stateful: true,
    stateId: context.getScopedStateId('filters'),
    modelNames: modelNames,
    inlineFilterPanelConfig: {
    quickFilterPanelConfig: {
    addQuickFilterConfig: {
    whiteListFields: ['Milestones', 'Tags']
    },
    defaultFields: [
    'ArtifactSearch',
    'Release',
    'Project',
    'ModelType'
    ]
    },
    advancedFilterPanelConfig: {
    advancedFilterRowsConfig: {
    propertyFieldConfig: {
    whiteListFields: ['Milestones', 'Tags']
    }

    }

    },
    }
    {
    ptype: 'rallygridboardfieldpicker',
    headerPosition: 'left',
    modelNames: modelNames,
    stateful: true,
    stateId: context.getScopedStateId('columns-example')
    },
    {
    ptype: 'rallygridboardactionsmenu',
    menuItems: [
    {
    text: 'Export...',
    handler: function() {
    window.location = Rally.ui.gridboard.Export.buildCsvExportUrl(
    this.down('rallygridboard').getGridOrBoard()
    );
    },
    scope: this
    }
    ],
    buttonConfig: {
    iconCls: 'icon-export'
    }
    },
    'rallygridboardtoggleable'
    ],
    cardBoardConfig: {
    attribute: 'ScheduleState'
    },
    gridConfig: {
    store: store,
    columnCfgs: [
    'Name',
    'ScheduleState',
    'State',
    'Iteration'
    ]
    },
    height: this.getHeight()
    });
    }
    });

     

    Rally.launchApp('UserStory.Defect.CustomizableColumnsGridBoard', {
    name: 'UserStory Defect List'
    });
    });
    </script>

     

    <style type="text/css">

     

    </style>
    </head>
    <body></body>
    </html>



  • 15.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 07, 2018 09:50 AM

    I compared to mine, and it looks like you're missing a couple of curly braces and a comma.  I pasted in just a snippet below, and marked my adds in red. That's the only difference I see.

     

    advancedFilterPanelConfig: {
    advancedFilterRowsConfig: {
    propertyFieldConfig: {
    whiteListFields: ['Milestones', 'Tags']
    }

    }

    },
    }
      } },
    {
    ptype: 'rallygridboardfieldpicker',



  • 16.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 07, 2018 09:55 AM

    It's working now! Thank you so much Terry!

     

    This is of so much help to me. I really appreciate it. 

     

    Regards,

    Nivi



  • 17.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Oct 05, 2016 02:16 PM
    Has anyone done the same thing with a card view?  I have a user who wants to display both user stories and defects on one board, and wants to be able to include a built-in query, but she wants it in a kanban-board type of view.  Any suggestions?


  • 18.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Oct 05, 2016 02:22 PM
    Terry, maybe I'm missing something but the standard Kanban Board app already shows both stories and defects, supports timebox filtering and can be driven from a query. Did I miss something in your use case?


  • 19.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Oct 05, 2016 02:25 PM
    You didn't miss something, I did.  I looked at a number of the kanban apps but somehow missed the one called Kanban App!  The others don't have the ability to add a query.  Thank you for pointing out what I should have seen!


  • 20.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Oct 10, 2016 05:09 PM
    Yeah, this is helpful.  I was not aware that "Custom HTML" loaded a powerful JS library.  


  • 21.  Re: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Oct 18, 2017 10:29 AM

    I love this app! 

     

    Is there a way to make this respond to a page filter?  I'd like to filter by milestone as we're using milestones to track code releases and would like one list of stories and defects included in a release.  We'd also like to be able to have Milestones and Tags as options in the quick and advanced filters.  Anyone able to help with that?



  • 22.  RE: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 18, 2019 08:24 AM
    While not as elegant as custom HTML code below, if you create a Custom List based on Task, you can then list "Work Product" as one of columns.  This will show all Tasks for both User Stories and Defects with a link provided back to the parent User Story or Defect.


  • 23.  RE: I would like a Custom List app that lists both User Stories and Defects. Is there a way to get that?

    Posted Dec 19, 2019 07:53 AM
    I've always used the "Ready to Accept" app, and that way I have access to update a custom query AND have filtering. The only downside is dealing with the occasional TestSet that meets the criteria. We have enough US and Defects that I can use (FormattedID > "8000") to only show them.

    ------------------------------
    Benefitfocus.com, Inc
    ------------------------------