Rally 从看板上筛选史诗
首先,我想说我已经读过了,但是我仍然无法根据Estimation Board应用程序的过滤过程来实现我的过滤。目前,我正在尝试为我的纸板添加一个项目过滤器到我的查询对象中。查询对象调用此函数。\ u getItems返回要从中筛选的项目数组。据我所知,查询调用函数,加载一两秒钟,然后不显示结果。欢迎任何意见、建议或替代解决方案 这是我的密码Rally 从看板上筛选史诗,rally,kanban,Rally,Kanban,首先,我想说我已经读过了,但是我仍然无法根据Estimation Board应用程序的过滤过程来实现我的过滤。目前,我正在尝试为我的纸板添加一个项目过滤器到我的查询对象中。查询对象调用此函数。\ u getItems返回要从中筛选的项目数组。据我所知,查询调用函数,加载一两秒钟,然后不显示结果。欢迎任何意见、建议或替代解决方案 这是我的密码 $that._redisplayBoard = function() { that._getAndStorePrefData(d
$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();
};
};
不确定这是您的问题,但您的纸板配置没有设置“查询”字段。fetch是要检索的所有数据的类型,如果要在向config对象添加query:value时对其进行筛选。 比如:
var cardboardConfig = {
types: ["PortfolioItem", "HierarchicalRequirement", "Feature"],
attribute: dropdownAttribute,
fetch:"Name,FormattedID,Owner,ObjectID,ClassofService",
query : fullQuery,
cardRenderer: PriorityCardRenderer
};
其中,可以使用Rally query对象构造fullQuery。您可以通过在SDK中搜索来找到它。希望这可能会有所帮助。不确定这是您的问题,但您的硬纸板配置没有设置“查询”字段。fetch是要检索的所有数据的类型,如果要在向config对象添加query:value时对其进行筛选。 比如:
var cardboardConfig = {
types: ["PortfolioItem", "HierarchicalRequirement", "Feature"],
attribute: dropdownAttribute,
fetch:"Name,FormattedID,Owner,ObjectID,ClassofService",
query : fullQuery,
cardRenderer: PriorityCardRenderer
};
其中,可以使用Rally query对象构造fullQuery。您可以通过在SDK中搜索来找到它。希望这可能会有所帮助。Per'提示
以下是我是如何按照Charles对拉力赛目录看板的提示来处理这个问题的。首先,修改cardboardConfig中的fetch语句,使其包含子集合,从而:
fetch: "Name,FormattedID,Children,Owner,ObjectID,Rank,Ready,Blocked,LastUpdateDate,Tags,State"
接下来,在这句话之间:
cardboard.addEventListener("preUpdate", that._onBeforeItemUpdated);
cardboard.display("kanbanBoard");
本声明:
cardboard.addEventListener("preUpdate", that._onBeforeItemUpdated);
cardboard.display("kanbanBoard");
添加以下事件侦听器和回调:
cardboard.addEventListener("onDataRetrieved",
function(cardboard, args){
// Grab items hash
filteredItems = args.items;
// loop through hash keys (states)
for (var key in filteredItems) {
// Grab the workproducts objects (Stories, defects)
workproducts = filteredItems[key];
// Array to hold filtered results, childless work products
childlessWorkProducts = new Array();
// loop through 'em and filter for the childless
for (i=0;i<workproducts.length;i++) {
thisWorkProduct = workproducts[i];
// Check first if it's a User Story, since Defects don't have children
if (thisWorkProduct._type == "HierarchicalRequirement") {
if (thisWorkProduct.Children.length === 0 ) {
childlessWorkProducts.push(thisWorkProduct);
}
} else {
// If it's a Defect, it has no children so push it
childlessWorkProducts.push(thisWorkProduct);
}
}
filteredItems[key] = childlessWorkProducts;
}
// un-necessary call to cardboard.setItems() was here - removed
}
);
此回调应仅筛选叶节点项。中的“每”提示
以下是我是如何按照Charles对拉力赛目录看板的提示来处理这个问题的。首先,修改cardboardConfig中的fetch语句,使其包含子集合,从而:
fetch: "Name,FormattedID,Children,Owner,ObjectID,Rank,Ready,Blocked,LastUpdateDate,Tags,State"
接下来,在这句话之间:
cardboard.addEventListener("preUpdate", that._onBeforeItemUpdated);
cardboard.display("kanbanBoard");
本声明:
cardboard.addEventListener("preUpdate", that._onBeforeItemUpdated);
cardboard.display("kanbanBoard");
添加以下事件侦听器和回调:
cardboard.addEventListener("onDataRetrieved",
function(cardboard, args){
// Grab items hash
filteredItems = args.items;
// loop through hash keys (states)
for (var key in filteredItems) {
// Grab the workproducts objects (Stories, defects)
workproducts = filteredItems[key];
// Array to hold filtered results, childless work products
childlessWorkProducts = new Array();
// loop through 'em and filter for the childless
for (i=0;i<workproducts.length;i++) {
thisWorkProduct = workproducts[i];
// Check first if it's a User Story, since Defects don't have children
if (thisWorkProduct._type == "HierarchicalRequirement") {
if (thisWorkProduct.Children.length === 0 ) {
childlessWorkProducts.push(thisWorkProduct);
}
} else {
// If it's a Defect, it has no children so push it
childlessWorkProducts.push(thisWorkProduct);
}
}
filteredItems[key] = childlessWorkProducts;
}
// un-necessary call to cardboard.setItems() was here - removed
}
);
此回调应仅筛选叶节点项。调用carboard.setItemsfilteredItems时,Mark的回答导致了一个模糊的崩溃。然而,由于过滤代码实际上是在操作实际引用,因此实际上并不需要setItems方法。我把它拔了出来,现在它可以正常过滤了。当carboard.setItemsfilteredItems被调用时,马克的回答导致了一个模糊的崩溃。然而,由于过滤代码实际上是在操作实际引用,因此实际上并不需要setItems方法。我把它取出来,现在它可以正常过滤了。fullQuery应该用引号括起来吗?当我按原样添加查询时,看板板无法显示。当我添加引号时,它会加载,但仍然不会产生响应。fullQuery应该在引号中吗?当我按原样添加查询时,看板板无法显示。当我添加引号时,它会加载,但仍然没有响应。非常感谢,这让我开始发疯了!非常感谢你,这让我开始发疯了!我不确定将此标记为答案是否是适当的堆栈溢出礼节,但我还没有足够的重复投票,所以请继续。我不确定将此标记为答案是否是适当的堆栈溢出礼节,但我还没有足够的重复投票,所以请继续。