拉力赛自定义 HTML - 按里程碑筛选

Rally Custom HTML - Filter on Milestones

我正在使用这个分组网格示例创建一个 "Rally Custom HTML" 看板。
https://help.rallydev.com/apps/2.1/doc/#!/example/groupable-grid

我在为特定里程碑添加过滤器时遇到问题。我可以毫无问题地将下面的代码获取到 return 个用户故事。它有一个通用的名称过滤器。

<!DOCTYPE html>
<html>
<head>
    <title>Grouped Grid Example</title>

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

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

                launch: function() {
                    this.add({
                        xtype: 'rallygrid',
                        columnCfgs: [
                            'FormattedID',
                            'Name',
                            'ScheduleState',
                            'Milestones'
                        ],
                        context: this.getContext(),
                        features: [{
                            ftype: 'groupingsummary',
                            groupHeaderTpl: '{name} ({rows.length})'
                        }],
                        storeConfig: {
                            model: 'UserStory',
                            groupField: 'Project',
                            groupDir: 'ASC',
                            filters : [
                                {
                                    property : 'Name',
                                    operator : 'contains',
                                    value : ' ' 
                                }
                            ],
                            fetch: ['Project'],
                            getGroupString: function(record) {
                                var Project = record.get('Project');
                                return (Project && Project._refObjectName) || 'No Project';
                            }
                        }
                    });
                }
            });

            Rally.launchApp('CustomGrid', {
              name: 'Custom Grid'
            });
        });
    </script>

    <style type="text/css">

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

当我尝试将过滤器更改为使用 "Milestones" 时,return 没有任何结果。我能够访问里程碑 属性 将其显示为一列。

<!DOCTYPE html>
<html>
<head>
    <title>Grouped Grid Example</title>

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

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

                launch: function() {
                    this.add({
                        xtype: 'rallygrid',
                        columnCfgs: [
                            'FormattedID',
                            'Name',
                            'ScheduleState',
                            'Milestones'
                        ],
                        context: this.getContext(),
                        features: [{
                            ftype: 'groupingsummary',
                            groupHeaderTpl: '{name} ({rows.length})'
                        }],
                        storeConfig: {
                            model: 'UserStory',
                            groupField: 'Project',
                            groupDir: 'ASC',
                            filters : [
                                {
                                    property : 'Milestones',
                                    operator : 'contains',
                                    value : ' ' 
                                }
                            ],
                            fetch: ['Project'],
                            getGroupString: function(record) {
                                var Project = record.get('Project');
                                return (Project && Project._refObjectName) || 'No Project';
                            }
                        }
                    });
                }
            });

            Rally.launchApp('CustomGrid', {
              name: 'Custom Grid'
            });
        });
    </script>

    <style type="text/css">

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

如果您知道要过滤的里程碑的 ObjectId,则可以像这样创建过滤器:

{
    property : 'Milestones',
    operator : 'contains',
    value : '/milestone/12345' 
}

或者,您也可以按名称搜索:

{
    property : 'Milestones.Name',
    operator : 'contains',
    value : 'A Milestone' 
}

您也可以将 url 粘贴到您的浏览器中进行测试,直到您得到正确的查询:

https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?query=(Milestones contains /milestone/12345)