【发布时间】:2018-06-14 03:10:43
【问题描述】:
我有一张表格,一周中的每一天都有一列,其中我使用 ng-repeat 将那一周在特定项目上的工作时间。
数据是从数据库中提取的。 我遇到的问题是,每个项目都可以有不同的子项目,当这种情况发生时,它们都被放在同一个主项目下的行跨度中,如图所示(“SU”项目有 2 个子项目“ghfgh”和“testtesttest”)。
现在,最后一列中的总小时数也会从数据库中提取出来,其中某个项目在特定周内的所有小时数是总和。 如果一个项目有子项目,我怎么能做到这一点,他们那一周的时间也被汇总在一个行跨度中? (在图片中我放了一个箭头来显示想要的结果)
如果我使用相同的代码为子项目提供行跨度,它会为总列提供正确的行跨度,但显然只显示第一个子项目的小时数(在本例中为“ghfgh”)
<tr ng-repeat="p in vm.presences">
<td ng-if="p.showProject" rowspan="{{p.projectCount}}">{{p.projectName}}</td>
<td>{{p.description}}</td>
<td>{{p.monday}}</td>
<td>{{p.tuesday}}</td>
<td>{{p.wednesday}}</td>
<td>{{p.thursday}}</td>
<td>{{p.friday}}</td>
<td>{{p.saturday}}</td>
<td>{{p.sunday}}</td>
<td ng-if="p.showProject" rowspan="{{p.projectCount}}">{{p.total}}</td>
</tr>
用于检查同一项目在给定周内是否有多个条目,将它们分组到同一行跨度的代码是
weeklyPresences.forEach((p, i) => {
const differentProject = i === 0 || weeklyPresences[i - 1].projectName !== p.projectName;
p.showProject = differentProject;
if (differentProject) {
p.projectCount = weeklyPresences.filter(pres => pres.projectName === p.projectName).length;
} else {
p.projectCount = weeklyPresences[i - 1].projectCount;
}
});
return weeklyPresences;
知道如何对子项目的时间进行分组吗?
我正在考虑一些循环来检查一个项目是否有多个条目,如上面的代码,如果没有,则 var 总数保持不变,否则,它会将它们汇总到一个新的 var 中。
【问题讨论】:
-
你可以使用reduce方法
-
你能给我举个例子吗?
标签: mysql angularjs database html-table