各部門のtask_timeの合計を表示しましたが、現時点では、日付のみを表示するすべての値を表示します。現在の日付。現在の日付の合計合計を表示する
たとえば、「array」= 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の答えの下でmycommentをチェックできますか? (この問題はur関数でもあります) –
最初の条件を60で割っているのを忘れてしまったと思います。さらに、時間と分で時間を取得したい場合は、各部門の合計時間を分けることができます。 60分で数分、残りを60分で分けると、それらの組み合わせによって正しい結果が得られます。 – jd1990