繁体   English   中英

我尝试向图表中添加版本下拉列表,并在选择新版本时重新加载它,但没有

[英]I tried to add a release dropdown to my chart and have it reload when a new release is selected, but it doesnt

因此,我尝试在此处修改示例累积流程图,使其具有发布下拉列表,使其仅显示与给定发布有关的信息。 我的问题是,当从版本下拉列表中选择一个新版本时,该图不会重新加载自身,因此它实际上不会显示与所选版本有关的信息。 我想我已经正确实现了侦听器,但是我不确定,所以我想知道是否有人可以告诉我为什么会这样以及如何解决它。 谢谢! 我的代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>Historical Summary</title>

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

    <script type="text/javascript">
        Rally.onReady(function() {
            Ext.define('Rally.example.CFDCalculator', {
                extend: 'Rally.data.lookback.calculator.TimeSeriesCalculator',
                config: {
                    stateFieldName: 'ScheduleState',
                    stateFieldValues: ['Defined', 'In-Progress', 'Completed', 'Accepted']
                },

                constructor: function(config) {
                    this.initConfig(config);
                    this.callParent(arguments);
                },

                getMetrics: function() {
                    return _.map(this.getStateFieldValues(), function(stateFieldValue) {
                        return  {
                            as: stateFieldValue,
                            groupByField: this.getStateFieldName(),
                            allowedValues: [stateFieldValue],
                            f: 'groupByCount',
                            display: 'area'
                        };
                    }, this);
                }
            });

            Ext.define('Rally.example.CFDChart', {
                extend: 'Rally.app.App',

                requires: [
                    'Rally.example.CFDCalculator'
                ],

                launch: function() {
                    this.add({
                        xtype: 'rallyreleasecombobox',
                        fieldLabel: 'Filter by Release:',
                        project: this.getContext().getProject(),
                        //value: Rally.util.Ref.getRelativeUri(this.getContext().getRelease()),
                        listeners: {
                            select: this._onSelect,
                            ready: this._onLoad,
                            scope: this
                        }
                    });
                },

                _onLoad: function() {
                        this.add({
                            xtype: 'rallychart',

                            storeType: 'Rally.data.lookback.SnapshotStore',
                            storeConfig: this._getStoreConfig(),
                            calculatorType: 'Rally.example.CFDCalculator',
                            calculatorConfig: {
                                stateFieldName: 'ScheduleState',
                                stateFieldValues: ['Defined', 'In-Progress', 'Completed', 'Accepted']
                            },
                            chartConfig: this._getChartConfig()
                            //context: this.getContext();
                        });
                },

                _onSelect: function() {
                        var histChart = this.down('rallychart');

                        histChart.refresh({
                            storeConfig: {
                                filters: [this._getOwnerFilter()]
                            }
                        });
                },

                _getOwnerFilter: function() {
                    //var userCombo = this.down('rallyusersearchcombobox');
                        var releaseValue = this.down('rallyreleasecombobox');
                        return {
                            property: 'Release',
                            operator: '=',
                            value: releaseValue.getValue()
                        };
                },



                /**
                 * Generate the store config to retrieve all snapshots for stories and defects in the current project scope
                 * within the last 30 days
                 */
                _getStoreConfig: function() {
                    return {
                        find: {
                            _TypeHierarchy: { '$in' : [ 'HierarchicalRequirement', 'TestSet' ] },
                            Children: null,
                            _ProjectHierarchy: this.getContext().getProject().ObjectID,
                            _ValidFrom: {'$gt': Rally.util.DateTime.toIsoString(Rally.util.DateTime.add(new Date(), 'day', -30)) }
                        },
                        fetch: ['ScheduleState'],
                        hydrate: ['ScheduleState'],
                        sort: {
                            _ValidFrom: 1
                        },
                        context: this.getContext().getDataContext(),
                        limit: Infinity
                    };
                },

                /**
                 * Generate a valid Highcharts configuration object to specify the chart
                 */
                _getChartConfig: function() {
                    return {
                        chart: {
                            zoomType: 'xy'
                        },
                        title: {
                            text: 'Project Cumulative Flow: User Stories & Test Sets'
                        },
                        xAxis: {
                            tickmarkPlacement: 'on',
                            tickInterval: 1,
                            title: {
                                text: 'Date'
                            }
                        },
                        yAxis: [
                            {
                                title: {
                                    text: 'Count'
                                }
                            }
                        ],
                        plotOptions: {
                            series: {
                                marker: {
                                    enabled: false
                                }
                            },
                            area: {
                                stacking: 'normal'
                            }
                        }
                    };
                }
            });


            Rally.launchApp('Rally.example.CFDChart', {
              name: 'Historical summary: test cases, stories, and defects'
            });
        });
    </script>

    <style type="text/css">

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

在线上出现“未捕获的TypeError:未定义不是函数”的代码错误

histChart.refresh

我修改了ProjectCumulativeFlow的示例以按发布进行过滤。 完整的代码在这个github repo中

相反延伸Rally.app.App ,我伸出Rally.app.TimeboxScopedApp SnapshotStore可以按Release进行过滤,但需要ObjectID。

这是find

find: {
     _TypeHierarchy: { '$in' : [ 'HierarchicalRequirement', 'Defect' ] },
     Release: this.getContext().getTimeboxScope().record.data.ObjectID, 
     Children: null,
     _ProjectHierarchy: this.getContext().getProject().ObjectID
}

要在发布选择之后更新应用,请检查图表是否已存在(如果存在,则销毁它):

onScopeChange: function() {
        if (this.down('#mychart')) {
        this.down('#mychart').destroy();
    }
        this.add({
            xtype: 'rallychart',
            itemId: 'mychart',
            storeType: 'Rally.data.lookback.SnapshotStore',
            storeConfig: this._getStoreConfig(),
            calculatorType: 'Rally.example.CFDCalculator',
            calculatorConfig: {
                stateFieldName: 'ScheduleState',
                stateFieldValues: ['Defined', 'In-Progress', 'Completed', 'Accepted']
            },
            chartConfig: this._getChartConfig()
        });
    },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM