我確實顯示了每個部門的task_time總額,但此時它顯示了所有我只想在日期=當前日期之前顯示總和的值。顯示當前日期的所有總金額
例如,我只想顯示「數組」的日期= 2017年3月的值的總和。我不關心日期。
HTML:
<body ng-app="ngrepeatSelect">
<div ng-controller="ExampleController">
<p>
Current date: {{currTime | date:'yyyy-MM-dd'}}
</p>
<md-table-container>
<table md-table>
<thead md-head>
<tr md-row>
<th md-column>Dept</th>
<th md-column>Total time</th>
<th md-column></th>
</tr>
</thead>
<tbody md-body>
<tr ng-if="!data.model" md-row md-select="test" md-on-select="" md-auto-select ng-repeat="test in tests">
<td md-cell>{{ test.dept }}</td>
<td md-cell>{{ test.total }}</td>
<td md-cell></td>
</tr>
</tbody>
</table>
</md-table-container>
</div>
</body>
JS:
angular.module('ngrepeatSelect', ['ngMaterial'])
.controller('ExampleController', function($scope, $filter) {
var data = [{
id: "1",
user: "John Doe",
dept: "test",
date: "2017-03-02",
task_time: "83"
}, {
id: "2",
user: "Mark Doe",
dept: "test",
date: "2017-02-02",
task_time: "41"
}, {
id: "3",
user: "Zac Doe",
dept: "other",
date: "2017-02-04",
task_time: "12"
}, {
id: "4",
user: "Zac Doe",
dept: "test",
date: "2017-03-02",
task_time: "41"
}, {
id: "5",
user: "Zac Doe",
dept: "test",
date: "2017-03-02",
task_time: "41"
},{
id: "6",
user: "Zac Doe",
dept: "test2",
date: "2017-03-02",
task_time: "41"
},{
id: "7",
user: "John Doe",
dept: "test",
date: "2017-01-02",
task_time: "41"
},{
id: "8",
user: "Zac Doe",
dept: "test",
date: "2017-01-01",
task_time: "41"
},{
id: "9",
user: "John Doe",
dept: "tests",
date: "2017-02-12",
task_time: "41"
}, {
id: "10",
user: "Zac Doe",
dept: "test2",
date: "2017-02-13",
task_time: "53"
}];
$scope.currTime = new Date();
var totalPerDept = [];
angular.forEach(data, function(item) {
var index = findWithAttr(totalPerDept, 'dept', item.dept);
if (index < 0) {
totalPerDept.push({
dept: item.dept,
total: parseFloat(item.task_time)
});
} else {
totalPerDept[index].total += parseFloat(item.task_time);
}
});
$scope.tests = totalPerDept;
function findWithAttr(array, attr, value) {
for (var i = 0; i < array.length; i += 1) {
if (array[i][attr] === value) {
return i;
}
}
return -1;
}
});
我創建jsFiddle顯示我在做什麼。
超酷它也有效。你可以在machinehead115答案下檢查一下你的評論嗎? (這個問題也適用於你的功能) –
我覺得你忘了把第一個條件除以60.此外,如果你想在幾分鐘內得到時間,你可以劃分每個部門的總時間。 60小時,剩餘60分鐘,然後他們的組合會給你正確的結果。 – jd1990