从看板中过滤史诗 [英] Filtering epics from Kanban board

查看:93
本文介绍了从看板中过滤史诗的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我首先要说我已阅读 Rally看板-隐藏史诗故事,但我仍然无法根据Estimation Board应用程序中的过滤器流程实施过滤器.目前,我正在尝试向纸板的查询对象添加项目过滤器.查询对象调用this._getItems返回要过滤的项目数组.据我所知,查询调用该函数,加载一两秒钟,然后不显示任何结果.欢迎任何意见,建议或替代解决方案.

I would like to start by saying I have read Rally Kanban - hiding Epic Stories but I'm still having trouble on implementing my filter based on the filter process from the Estimation Board app. Currently I'm trying to add an items filter to my query object for my cardboard. The query object calls this._getItems to return an array of items to filter from. As far as I can tell the query calls the function, loads for a second or two, and then displays no results. Any input, suggestions, or alternative solutions are welcomed.

这是我的代码

$that._redisplayBoard = function() {


            that._getAndStorePrefData(displayBoard);

            this._getItems = function(callback) {

            //Build types based on checkbox selections
            var queries = [];

                    queries.push({key:"HierarchicalRequirement",
                        type: "HierarchicalRequirement",
                        fetch: "Name,FormattedID,Owner,ObjectID,Rank,PlanEstimate,Children,Ready,Blocked",
                        order: "Rank"

                    });



            function bucketItems(results) {
                var items = [];

                rally.forEach(queries, function(query) {
                    if (results[query.key]) {
                        rally.forEach(results[query.key], function(item) {
                            //exclude epic stories since estimates cannot be altered
                            if ((item._type !== 'HierarchicalRequirement') ||
                                    (item._type === 'HierarchicalRequirement' && item.Children.length === 0)) {
                                items = items.concat(item);

                            }
                        });
      }
                });


               callback(items);
                }

                 rallyDataSource.findAll(queries, bucketItems);

            };

            function displayBoard() {

                artifactTypes = [];



                var cardboardConfig = {

                    types: [],

                    items: that._getItems,

                    attribute: kanbanField,

                    sortAscending: true,

                    maxCardsPerColumn: 200,

                    order: "Rank",

                    cardRenderer: KanbanCardRenderer,

                    cardOptions: {

                        showTaskCompletion: showTaskCompletion,

                        showAgeAfter: showAgeAfter

                    },

                    columnRenderer: KanbanColumnRenderer,

                    columns: columns,

                    fetch: "Name,FormattedID,Owner,ObjectID,Rank,Ready,Blocked,LastUpdateDate,Tags,State,Priority,StoryType,Children"

                };



                if (showTaskCompletion) {

                    cardboardConfig.fetch += ",Tasks";

                }



                if (hideLastColumnIfReleased) {

                    cardboardConfig.query = new rally.sdk.util.Query("Release = null").or(kanbanField + " != " + '"' + lastState + '"');

                }



                if (filterByTagsDropdown && filterByTagsDropdown.getDisplayedValue()) {

                    cardboardConfig.cardOptions.filterBy = { field: FILTER_FIELD, value: filterByTagsDropdown.getDisplayedValue() };

                }



                cardboardConfig.types.push("HierarchicalRequirement");



                if (cardboard) {

                    cardboard.destroy();

                }



                artifactTypes = cardboardConfig.types;






                cardboard = new rally.sdk.ui.CardBoard(cardboardConfig, rallyDataSource);




                cardboard.addEventListener("preUpdate", that._onBeforeItemUpdated); 
                cardboard.addEventListener("onDataRetrieved", function(cardboard,args){ console.log(args.items); }); 

                cardboard.display("kanbanBoard");

            }

        };


        that.display = function(element) {



            //Build app layout

            this._createLayout(element);



            //Redisplay the board

            this._redisplayBoard();

        };

    };

推荐答案

调用纸板.setItems(filteredItems)时,马克的答案引起了难以理解的崩溃.但是,由于过滤代码实际上是在操纵实际的引用,因此事实证明实际上不需要setItems()方法.我将其拔出,现在可以正确过滤了.

Mark's answer caused an obscure crash when cardboard.setItems(filteredItems) was called. However, since the filtering code is actually manipulating the actual references, it turns out that setItems() method is actually not needed. I pulled it out, and it now filters properly.

这篇关于从看板中过滤史诗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆