过滤器不适用于特定工作区拉力赛
filters not working on specific workspace rally
我有两个工作区
当我将我的应用程序加载到一个工作区时,它可以使用过滤器,但是当我使用相同的代码时,它不起作用。
然后我尝试注释掉过滤器然后它给了我完整的记录。无法弄清楚有什么区别,
我正在使用拉力赛 sdk2.0rc3
下面是我的代码片段
this._startDate
值为 2014-09-10
this._endDate
值为 2015-03-03
并且当我打印操作时它给出 false
和iterations = []
@nickm 帮帮我
_onDataLoaded: function() {
console.log("this.getContext().getProject()._ref", this.getContext().getProject()._ref);
console.log("this._startDate", this._startDate);
console.log("this._endDate", this._endDate);
var project_oid = this.getContext().getProject()._ref;
var startDateFilter = Ext.create('Rally.data.QueryFilter', {
property: 'StartDate',
operator: '>',
value: this._startDate
});
startDateFilter = startDateFilter.and({
property: 'StartDate',
operator: '<',
value: this._endDate
});
startDateFilter = startDateFilter.and({
property: 'StartDate',
operator: '!=',
value: null
});
var endDateFilter = Ext.create('Rally.data.QueryFilter', {
property: 'EndDate',
operator: '<',
value: this._endDate
});
endDateFilter = endDateFilter.and({
property: 'EndDate',
operator: '>',
value: this._startDate
});
endDateFilter = endDateFilter.and({
property: 'EndDate',
operator: '!=',
value: null
});
var filter = startDateFilter.or(endDateFilter);
//filter.toString();
Ext.create('Rally.data.WsapiDataStore', {
model: 'Iteration',
limit: Infinity,
context: {
project: project_oid,
projectScopeDown: true,
projectScopeUp: false
},
fetch: ['Name','Project', 'StartDate', 'EndDate', 'Parent', 'Children'],
autoLoad: true,
filters: [
filter
],
listeners: {
load: this._loadGrid,
scope:this
}
}, this);
},
_loadGrid: function(store, iterations, operation) {
console.log("hi there", operation);
我的第一个猜测是,如果相同的代码在一个工作区中工作而在另一个工作区中不起作用,并且罪魁祸首是基于日期值的过滤器,请检查您的工作区是否具有不同的日期格式。例如像这样:
或者像这样:
但我在使用 mm/dd/yyyy 格式的工作区中测试了“2015-02-06”值并且它有效。
无论如何,如果它在一个工作区中工作而在另一个工作区中不工作,这很可能不是代码的问题,而是数据的问题。也许在第二个工作区中,相同的查询 returns 0 结果。此外,根据代码中使用的日期的含义,可以避免硬编码日期。例如,要获取当前迭代,请尝试以下操作:
var today = new Date().toISOString();
filters: [
{
property: 'StartDate',
operator: '<=',
value: today
},
{
property: 'EndDate',
operator: '>=',
value: today
}
]
我有两个工作区
当我将我的应用程序加载到一个工作区时,它可以使用过滤器,但是当我使用相同的代码时,它不起作用。
然后我尝试注释掉过滤器然后它给了我完整的记录。无法弄清楚有什么区别,
我正在使用拉力赛 sdk2.0rc3
下面是我的代码片段
this._startDate
值为 2014-09-10
this._endDate
值为 2015-03-03
并且当我打印操作时它给出 false
和iterations = []
@nickm 帮帮我
_onDataLoaded: function() {
console.log("this.getContext().getProject()._ref", this.getContext().getProject()._ref);
console.log("this._startDate", this._startDate);
console.log("this._endDate", this._endDate);
var project_oid = this.getContext().getProject()._ref;
var startDateFilter = Ext.create('Rally.data.QueryFilter', {
property: 'StartDate',
operator: '>',
value: this._startDate
});
startDateFilter = startDateFilter.and({
property: 'StartDate',
operator: '<',
value: this._endDate
});
startDateFilter = startDateFilter.and({
property: 'StartDate',
operator: '!=',
value: null
});
var endDateFilter = Ext.create('Rally.data.QueryFilter', {
property: 'EndDate',
operator: '<',
value: this._endDate
});
endDateFilter = endDateFilter.and({
property: 'EndDate',
operator: '>',
value: this._startDate
});
endDateFilter = endDateFilter.and({
property: 'EndDate',
operator: '!=',
value: null
});
var filter = startDateFilter.or(endDateFilter);
//filter.toString();
Ext.create('Rally.data.WsapiDataStore', {
model: 'Iteration',
limit: Infinity,
context: {
project: project_oid,
projectScopeDown: true,
projectScopeUp: false
},
fetch: ['Name','Project', 'StartDate', 'EndDate', 'Parent', 'Children'],
autoLoad: true,
filters: [
filter
],
listeners: {
load: this._loadGrid,
scope:this
}
}, this);
},
_loadGrid: function(store, iterations, operation) {
console.log("hi there", operation);
我的第一个猜测是,如果相同的代码在一个工作区中工作而在另一个工作区中不起作用,并且罪魁祸首是基于日期值的过滤器,请检查您的工作区是否具有不同的日期格式。例如像这样:
或者像这样:
但我在使用 mm/dd/yyyy 格式的工作区中测试了“2015-02-06”值并且它有效。
无论如何,如果它在一个工作区中工作而在另一个工作区中不工作,这很可能不是代码的问题,而是数据的问题。也许在第二个工作区中,相同的查询 returns 0 结果。此外,根据代码中使用的日期的含义,可以避免硬编码日期。例如,要获取当前迭代,请尝试以下操作:
var today = new Date().toISOString();
filters: [
{
property: 'StartDate',
operator: '<=',
value: today
},
{
property: 'EndDate',
operator: '>=',
value: today
}
]