如何将过滤器应用于拉力赛网格视图

时间:2017-09-29 19:53:41

标签: javascript gridview filter rally

我需要将一些计算过滤应用于与Rally Grid相关联的数据存储。

这段代码有一些调试“噪音”,但它表明我试图在配置时提供一些过滤器,它们被忽略,或者似乎是因为我的过滤器功能没有触发。 / p>

Ext.define('CustomApp', {
    extend: 'Rally.app.App',
    componentCls: 'app',
    launch: function () {
        //Write app code here
        console.log("Overall App Launch function entered");
        //API Docs: https://help.rallydev.com/apps/2.1/doc/
    }
});

Rally.onReady(function () {
    Ext.define('BOA.AdoptedWork.MultiArtifactGrid', {
        extend: 'Rally.app.App',
        componentCls: 'app',

        launch: function () {
            console.log("onReady Launch function entered");
            this.theGrid = {
                xtype: 'rallygrid',
                showPagingToolbar: true,
                showRowActionsColumn: false,
                editable: false,
                columnCfgs: [
                    'FormattedID',
                    'Name',
                    'ScheduleState',
                    'Iteration',
                    'Release',
                    'PlanEstimate',
                    'TaskEstimateTotal',
                    'TaskActualTotal', // For some reason this does not display ?? :o( ??
                    'TaskRemainingTotal'
                ],
                listeners: {
                    afterrender: {
                        fn: function (_myVar, eOpts) {
                            console.log("Arg to afterrender: ", _myVar, " and ", eOpts);
                            console.log("Filters: ", _myVar.filters);
                            var _myStore = _myVar.getStore();
                            console.log("Store : ", _myStore);
                            console.log("Store filters: ", _myStore.filters);
                        }
                    }
                },
                filters: [{
                    // This did not work ...
                    property: 'ScheduleState',
                    operator: '==',
                    value: 'Defined',
                    // Trying dynamic Filter Function.  Update: Never called.
                    filterFn: function (item) {
                        console.log("Entered Filter Function!");
                        var iter = item.get("Iteration");
                        console.log("Iteration field: ", iter);
                        if (iter !== null && iter !== undefined) {
                            return (iter.name === "Sprint 3");
                        } else {
                            return false;
                        }
                    }
                }],
                context: this.getContext(),
                storeConfig: {
                    models: ['userstory', 'defect']
                },
                scope: this
            };
            this.add(this.theGrid);
            console.log("The Grid Object: ", this.theGrid);
        }
    });


    Rally.launchApp('BOA.AdoptedWork.MultiArtifactGrid', {
        name: 'Multi-type Grid'
    });
});

我没有编写12年的编码,也从未使用过JavaScript。所以,我正在接受我的支持。

1 个答案:

答案 0 :(得分:0)

拉力赛社区中的某个人提供了答案和有用的反馈:

corkr03说...

@miguelfuerte一些事情: "过滤器"配置需要是storeConfig的一部分。在上面的代码中,它是gridConfig的一部分。

storeConfig: {
      filters: [{
            property: "Iteration.Name",
            value: "Sprint 3"
      }]
}

此外,过滤器的属性为"迭代"期望引用迭代引用。对于该特定实现,您将需要使用属性:" Iteration.Name"。有关查询和使用点表示法的良好信息:常规查询示例| CA Agile Central帮助