如何在故事板中添加自定义数据?

How to add custom data in a story board?

问题 1:是否可以向故事板中的每张卡片添加自定义数据(例如:测试用例计数:5)?如果是这样,如何?我在文档中找不到示例或特定信息。

问题 2:是否可以在一个查询中获取高级故事的测试用例计数(包括子故事测试用例)?

请告诉我。这是我的代码

Ext.define('Rally.Story.View', {
    extend: 'Rally.app.App',

    launch: function() {
        this.add({
            xtype: 'rallyfieldvaluecombobox',
            fieldLabel: 'Filter by Target Release:',
            model: 'UserStory',
            field: 'c_TargetRelease',
            value: '15.0',
            listeners: {
                select: this._onSelect,
                ready: this._onLoad,
                scope: this
            }
        });
    },

    _onLoad: function() {
        this.add({
            xtype: 'rallycardboard',
            types: ['User Story'],
            attribute: 'ScheduleState',
            readOnly: true,
            fetch: ['Name', 'TestCases', 'c_StoryType', 'c_TargetRelease', 'PlanEstimate', 'Priority', 'TaskEstimateTotal', 'TaskRemainingTotal'],
            context: this.getContext(),
            cardConfig: {
                editable: false,
                showIconsAndHighlightBorder: false,
                fields: ['Name', 'c_StoryType', 'c_TargetRelease', 'PlanEstimate', 'c_PriorityBin', 'Parent', 'TestCases', 'TaskEstimateTotal', 'TaskRemainingTotal']
            },
            storeConfig: {
                filters: [
                    {
                        property: 'c_StoryType',
                        value: 'SAGA Feature'
                    },
                    {
                        property: 'c_TargetRelease',
                        operator: '=',
                        value: this.down('rallyfieldvaluecombobox').getValue()
                    }
                ]
            }
        });
    },

    _onSelect: function() {
        var board = this.down('rallycardboard');
        board.refresh({
            storeConfig: {
                filters: [
                    {
                        property: 'c_StoryType',
                        value: 'SAGA Feature'
                    },
                    {
                        property: 'c_TargetRelease',
                        operator: '=',
                        value: this.down('rallyfieldvaluecombobox').getValue()
                    }
                ]
            }
        });
    },           
});

这是我制作的包含测试用例计数的示例卡片:

您可以通过简单地在 cardConfig 的字段数组中包含一个包含一些呈现信息的对象来添加一个字段,而不是仅仅包含一个简单的字符串:

cardConfig: {
    fields: [
        'Name', //simple string field to show
        {
            name: 'TCCount', //field name
            hasValue: function() {return true;}, //always show this field
            renderTpl: Ext.create('Rally.ui.renderer.template.LabeledFieldTemplate', {
                        fieldLabel: 'Test Case Count', //the field label
                        valueTemplate: Ext.create('Ext.XTemplate', 
                            ['{[this.getTestCaseCount(values)]}',
                             {getTestCaseCount: function(data) { return data.Summary.TestCases.Count;}}])
                    })
        },
        //additional string fields
        'PlanEstimate', 'Parent', 'TestCases', 'TaskEstimateTotal', 'TaskRemainingTotal']
}

这最终没有我想象的那么简单,但至少它是可行的。关键部分是使用 LabeledFieldTemplate,指定字段标签和值模板来实际呈现内容。

您还会注意到页脚中的小烧杯状态图标,它是自动呈现的,因为 TestCases 包含在字段列表中。

关于你的第二个问题,故事中没有关于子故事中包含的测试用例总数的汇总字段。