VSTS - Widget 仅适用于某些人,不适用于其他人。可能是什么问题?
VSTS - Widget only works for some people anod not others. What might be the issue?
原版POST:
我构建了一个适用于公司中某些人的小部件,但不适用于其他人,我想知道是否有人可以帮助我。
对于它所服务的人来说,无论他们使用什么计算机或浏览器,它都能正常工作。而对于那些它不起作用的人,无论他们使用什么计算机或浏览器,它都不起作用。
Widget 非常简单。在将结果绘制到图表上之前,它使用查询 API 构建查询。
主要问题似乎是查询对某些人返回零结果,原因不明。
它似乎与许可证或安全权限没有任何关系,因为一些拥有堆栈持有者许可证的人可以看到该小部件,而其他具有项目管理员权限的基本许可证的人则不能。
如有任何建议,我们将不胜感激。
代码:
首先,我有一个方法可以根据我想要的查询类型构建查询。
var queryString = buildWiql(queryType, dateString, iterationPath);
buildWiql()
的实现是:
var buildWiql = function (queryType, dateString, iterationPath) {
var queryString;
if (queryType=== "someType") {
queryString = {
"query": "Select [Microsoft.VSTS.Scheduling.RemainingWork] From WorkItems Where [System.WorkItemType] = 'Task' AND [System.State] <> 'Done' AND [System.State] <> 'Closed' AND [System.IterationPath] = '" + iterationPath + "' order by [System.CreatedDate] desc ASOF " + dateString
};
}
else if (queryType === "someOtherType") {
....
}
else {
....
}
return queryString;
};
然后在main函数里面:
return TFS_Wit_WebApi.getClient().queryByWiql(queryString)
.then(function (query) {
console.log(query);
....
}
当控制台记录查询结果时。对于那些它不起作用的人,查询 returns 一个包含 0 个元素的数组。
更新:
对于小部件不起作用的帐户。在浏览器中打开控制台出现此错误:
Failed to load resource: the server responded with a status of 400 (Bad Request)
*******ERROR*******:
Error: Expecting date-time. The error is caused by <<'20/8/2016'>>.(....)
这个小部件的问题显然是,每个人都可以在他们的个人资料中设置不同的日期时间格式首选项。例如。 “25/08/2016”与“2016 年 8 月 25 日”。
但是,我的小部件假定格式始终为 'dd/MM/yyyy',这是它传递到查询的 'ASOF' 部分的 dateString 的格式。
对于具有不同日期时间格式设置的用户。结果将为零,因为 VSTS 无法理解“25/08/16”是什么
解决方法是将字符串转换成这种格式:2016-08-20T20:49:34.193Z
现在,无论用户的日期时间格式设置如何,查询都会 return 正确的结果。我用来做转换的代码是:
var dateToString = function (dateIn) {
var date = new Date(dateIn.getTime() + 86400000);
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
//Format date as '2016-08-20T20:49:34.193Z'"
var dateString = year + '-' + month + '-' + day + 'T00:00:00.000Z';
return dateString;
};
原版POST:
我构建了一个适用于公司中某些人的小部件,但不适用于其他人,我想知道是否有人可以帮助我。
对于它所服务的人来说,无论他们使用什么计算机或浏览器,它都能正常工作。而对于那些它不起作用的人,无论他们使用什么计算机或浏览器,它都不起作用。
Widget 非常简单。在将结果绘制到图表上之前,它使用查询 API 构建查询。
主要问题似乎是查询对某些人返回零结果,原因不明。
它似乎与许可证或安全权限没有任何关系,因为一些拥有堆栈持有者许可证的人可以看到该小部件,而其他具有项目管理员权限的基本许可证的人则不能。
如有任何建议,我们将不胜感激。
代码:
首先,我有一个方法可以根据我想要的查询类型构建查询。
var queryString = buildWiql(queryType, dateString, iterationPath);
buildWiql()
的实现是:
var buildWiql = function (queryType, dateString, iterationPath) {
var queryString;
if (queryType=== "someType") {
queryString = {
"query": "Select [Microsoft.VSTS.Scheduling.RemainingWork] From WorkItems Where [System.WorkItemType] = 'Task' AND [System.State] <> 'Done' AND [System.State] <> 'Closed' AND [System.IterationPath] = '" + iterationPath + "' order by [System.CreatedDate] desc ASOF " + dateString
};
}
else if (queryType === "someOtherType") {
....
}
else {
....
}
return queryString;
};
然后在main函数里面:
return TFS_Wit_WebApi.getClient().queryByWiql(queryString)
.then(function (query) {
console.log(query);
....
}
当控制台记录查询结果时。对于那些它不起作用的人,查询 returns 一个包含 0 个元素的数组。
更新: 对于小部件不起作用的帐户。在浏览器中打开控制台出现此错误:
Failed to load resource: the server responded with a status of 400 (Bad Request)
*******ERROR*******:
Error: Expecting date-time. The error is caused by <<'20/8/2016'>>.(....)
这个小部件的问题显然是,每个人都可以在他们的个人资料中设置不同的日期时间格式首选项。例如。 “25/08/2016”与“2016 年 8 月 25 日”。
但是,我的小部件假定格式始终为 'dd/MM/yyyy',这是它传递到查询的 'ASOF' 部分的 dateString 的格式。
对于具有不同日期时间格式设置的用户。结果将为零,因为 VSTS 无法理解“25/08/16”是什么
解决方法是将字符串转换成这种格式:2016-08-20T20:49:34.193Z
现在,无论用户的日期时间格式设置如何,查询都会 return 正确的结果。我用来做转换的代码是:
var dateToString = function (dateIn) {
var date = new Date(dateIn.getTime() + 86400000);
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
//Format date as '2016-08-20T20:49:34.193Z'"
var dateString = year + '-' + month + '-' + day + 'T00:00:00.000Z';
return dateString;
};