所有者下拉列表未过滤故事纸板
Owner dropdown not filtering Story cardboard
我构建了一个自定义的硬纸板mashup,以显示"已提交"迭代中的所有用户故事,这些故事属于当前项目或任何子项目。这么多效果很好。然后我添加了一个"所有者"下拉框(仅限于团队成员),以过滤纸板上的故事。结果查询值的格式似乎很好,但没有显示任何故事。我使用了一个警报来复制查询字符串并将其粘贴到一个自定义网格中,该网格返回了预期的故事列表。
下面是我的代码。如有任何协助,我们将不胜感激。
var rallyDataSource; var cardboard; var ownerDropdown; function refreshCardboard() { var cardboardConfig = { types: ["Defect", "HierarchicalRequirement"], attribute: "ScheduleState", fetch: "Name,FormattedID,Owner,ObjectID" }; var query = rally.sdk.util.Query.and(['Iteration.Name != ""', 'Iteration.State = "Committed"']); if (ownerDropdown) { var ownerQuery = ownerDropdown.getValue(); if (ownerQuery != 'ALL') { query = '(' + query + ' AND Owner.Name = "' + ownerQuery + '")'; } } cardboardConfig.query = query; if (!cardboard) { cardboard = new rally.sdk.ui.CardBoard(cardboardConfig, rallyDataSource); cardboard.display("cardboardDiv"); } else { cardboard.refresh(cardboardConfig); } } function buildOwnerDropdown() { var teamMembersQuery = { key: "teamMembers", type: "User", fetch: "UserName,DisplayName", query: '(TeamMemberships = /project/__PROJECT_OID__)' }; rallyDataSource.findAll(teamMembersQuery, function (results) { var ownerItems = [{ label: "-- ALL --", value: "ALL"}]; rally.forEach(results.teamMembers, function (teamMember) { ownerItems.push({ label: teamMember.DisplayName, value: teamMember.UserName }); }); ownerItems.sort(); var ownerDropdownConfig = { showLabel: true, label: "Owner:", items: ownerItems }; ownerDropdown = new rally.sdk.ui.basic.Dropdown(ownerDropdownConfig); ownerDropdown.display("ownerDropdownDiv"); }); } function onLoad() { rallyDataSource = new rally.sdk.data.RallyDataSource( '__WORKSPACE_OID__', '__PROJECT_OID__', '__PROJECT_SCOPING_UP__', '__PROJECT_SCOPING_DOWN__'); buildOwnerDropdown(); refreshCardboard(); } rally.addOnLoad(onLoad); </script> </head> <body> <div id="ownerDropdownDiv"></div> <input id="refreshButton" type="button" value="Filter" onclick="refreshCardboard()"/> <div id="cardboardDiv"></div> </body>
你真的很接近目标-问题就在这里:
var query = rally.sdk.util.Query.and(['Iteration.Name != ""', 'Iteration.State = "Committed"']);
if (ownerDropdown) {
var ownerQuery = ownerDropdown.getValue();
if (ownerQuery != 'ALL') {
query = '(' + query + ' AND Owner.Name = "' + ownerQuery + '")';
}
}
当添加另一个AND条件时,Rally的查询语法需要另一组嵌套的括号。因此,当您在第三个条件上进行连接时,您最终得到的查询子句如下所示:
((Iteration.Name != "") AND (Iteration.State = "Committed")) AND (Owner.Name = "user@company.com")
当它需要看起来像这样时:
(((Iteration.Name != "") AND (Iteration.State = "Committed")) AND (Owner.Name = "user@company.com"))
我稍微修改了你的refreshCardboard()函数的查询逻辑如下,你的代码现在似乎对我有效
....
var queryArray = new Array('Iteration.Name != ""', 'Iteration.State = "Committed"');
var query;
var selectedOwner = ownerDropdown.getValue();
if (ownerDropdown) {
if (selectedOwner != 'ALL') {
var ownerClause = 'Owner.Name = "' + selectedOwner + '"';
queryArray.push(ownerClause);
}
}
query = rally.sdk.util.Query.and(queryArray);
cardboardConfig.query = query;
....
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- 为什么我的d3.jsselectAll+过滤器没有过滤
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- Angular:使用选择列表选择过滤代码中的对象
- 在单击时过滤 JSON
- 如何在BookshelfJS中通过加入来过滤结果
- 如何使用javascript过滤复杂的json对象
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 过滤AngularJs中的数据
- 通过API调用过滤数据
- 使用angularjs内置过滤器过滤代码中的特定属性
- 如何在重建URL后从URL中传递过滤值,目的是使用Angular2和Typescript实现无限滚动
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 使用PHP通过HTML表单选项选择器过滤MYSQL结果
- 尝试过滤“;引号"基于'"类别“;使用流星&mongo
- Angular中的过滤和$http承诺
- 使用jquery grep过滤具有值数组的json对象
- 过滤后如何将一行推送到表中
- 所有者下拉列表未过滤故事纸板