我们正在遍历JSON对象,用预定义的头项填充表数据。
(来自前一个问题答案的代码)
var stories = {};
for (var i=0; i<QueryResults.Results.length; i++) {
var result = QueryResults.Results[i],
name = result.StoryName
if (!(name in stories))
stories[name] = {};
stories[name][result.Name] = result.State;
}
var keys = ['QA Cycle 1', 'QA Cycle 2', 'Development - GUI', 'Development - Backend'];
var data = "<table><tr><th>Story Name</th><th colspan='2'>Quality Assuance</th><th colspan='2'>Development</th></tr><tr><td> </td>";
for (var i=0; i<keys.length; i++)
data += "<th>"+keys[i]+"</th>";
data += "</tr>";
for (var storyname in stories) {
data += "<tr><th>"+storyname+"</th>";
for (var i=0; i<keys.length; i++)
data += "<td>"+(stories[storyname][keys[i]] || "n.a.")+"</td>";
data += "</tr>";
}
data += "</table>";
$('body').append(data);
到目前为止,每个任务都有一个状态,如"已定义"、"正在进行"、"完成"&"不适用。
现在,我想合并两个子任务"开发-GUI"&"开发-后端"到一个主要任务"开发"中,然后通过以下规则计算插入累积状态:
- 在"开发"任务下,若第一个子任务的状态为"已完成",第二个子任务为"已定义",则结果为"正在进行"
- 如果任何子任务具有"NA"状态,则累积结果将变为"NA"
这样,第二行[即子任务]将从表中删除,累积结果将呈现为主任务列。
JSFiddle:http://jsfiddle.net/ylokesh/a5HRu/4/
任何建议或帮助都将是伟大的。提前谢谢。
只需更改即可:
var keys = ['QA Cycle 1', 'QA Cycle 2', 'Development'];
…
for (var storyname in stories) {
var story = stories[storyname];
// variables for shortening the code
var sub1 = story['Development - GUI'],
sub2 = story['Development - Backend'],
main = 'Development';
if (sub1 && sub2) { // neither is NA
if (sub1 == sub2)
story[main] = sub1;
else if (sub1=="Completed" && sub2=="Defined")
story[main] = "In-Progress";
else
story[main] = "unknown subtask state combination";
}
data += "<tr><th>"+storyname+"</th>";
for (var i=0; i<keys.length; i++)
data += "<td>"+(story[keys[i]] || "n.a.")+"</td>";
data += "</tr>";
}
…