Angular: retention stats
http://angularjs.org/
by markokristian
HTML
<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>
<div ng-controller="someController">
<pre>{{ vm | json }}</pre>
<table>
<thead>
<tr>
<td></td>
<td ng-repeat="p in vm.top">{{ p }}</td>
</tr>
</thead>
<tbody ng-repeat="(measure, profileValues) in vm.measures">
<tr>
<td><b>{{ measure }}</b></td>
</tr>
<tr ng-repeat="statKey in vm.statKeys">
<td>{{ statKey }}</td>
<td ng-repeat="profileId in vm.top">
{{ profileValues[profileId].stats[statKey] }}
</td>
</tr>
</tbody>
</table>
</div>
CSS
table tr td {
padding: 10px;
}
JavaScript
var app = angular.module('myApp', []);
app.service('someService', someService);
someService.$inject = [];
function someService() {
var data = [{
"comP_ID": 9,
"fileNum": "T2015",
"croRoute_DT": "2016-03-30T00:00:00",
"checklisTs": [],
"assoC_INC_OFFs": [{
"aiO_ID": 14,
"comP_ID": 9,
"ofcnum": 1,
"linK_TYPE": "Officer",
"allegatioNs": [{
"alleG_ID": 33,
"iabAllegation": "allegation1",
"disciplinedetaiLs": [{
"disciplineDetail_ID": 9,
"penalty": null
}, {
"disciplineDetail_ID": 10,
"penalty": null
}]
}, {
"alleG_ID": 59,
"iabAllegation": "allegation12",
"disciplinedetaiLs": []
}, {
"alleG_ID": 1061,
"iabAllegation": null,
"disciplinedetaiLs": []
}],
"officerinvolveDs": null
}, {
"aiO_ID": 55,
"comP_ID": 9,
"ofcnum": 1,
"linK_TYPE": "Officer",
"allegatioNs": [{
"alleG_ID": 27,
"iabAllegation": "allegation11",
"disciplinedetaiLs": []
}, {
"alleG_ID": 51,
"iabAllegation": "allegation2",
"disciplinedetaiLs": []
}, {
"alleG_ID": 1056,
"iabAllegation": "allegation3",
"disciplinedetaiLs": []
}, {
"alleG_ID": 60,
"iabAllegation": null,
"disciplinedetaiLs": []
}],
"officerinvolveDs": null
}, {
"aiO_ID": 56,
"comP_ID": 9,
"ofcnum": 2,
"linK_TYPE": "Officer",
"allegatioNs": [{
"alleG_ID": 28,
"iabAllegation": "allegation11",
"disciplinedetaiLs": []
}, {
"alleG_ID": 29,
"iabAllegation": "allegation2",
"disciplinedetaiLs": []
}],
"officerinvolveDs": null
}]
}];
return {
'data': data
};
}
app.controller('someController', SomeController);
SomeController.$inject = ['$scope', 'someService'];
function...