var skillList = angular.module('SkillsList', ['ui.bootstrap', 'ngSanitize']) .controller('SkillListControl', function ($scope, $http) { $scope.skills = [] $scope.currentPage=1 $scope.numPerPage=10 $scope.maxSize=5 $scope.rawSkills = [] $scope.$watch("currentPage + numPerPage", function() { var begin = (($scope.currentPage - 1) * $scope.numPerPage), end = begin + $scope.numPerPage; $scope.skills = $scope.rawSkills.slice(begin, end); }) $scope.buildSkillList = function(skillTable) { $scope.rawSkills = []; for( v in skillTable) { $scope.rawSkills.push(skillTable[v]); } $scope.skills = $scope.rawSkills.slice(0, $scope.numPerPage); } $http.get('skilldata.json') .then(function(res) { $scope.buildSkillList(res.data.skills); $scope.lines = res.data.lines; }); }) .filter('info', function() { return function(input, label, suffix) { if(input == '' || input == 0) { return ''; } return "<div class='info'><b>" + label + "</b> " + input + suffix + "</div>"; }; }) .filter('fitQualityClass', function() { return function(input) { input == input || 0 if(input > 0.999) { return 'label-success'; } else if(input > 0.9) { return 'label-warning'; } else { return 'label-danger'; } }; }) .filter('resource',function() { return function(input, label, suffix) { if(input == '' || input == 0) { return ''; } switch(input) { case 'Stamina': return '<span class="stam">Stamina</span>'; case 'Magicka': return '<span class="magk">Magicka</span>'; case 'Ultimate': return '<span class="ultm">Ultimate</span>'; case 'Health': return '<span class="health">Health</span>'; default: return input; } }; }) .filter('fID', function() { return function(input) { input = input || ''; return input.replace(/(##f[0-9]+##)/,'<span class="formulaID">$1</span>'); } }) .filter('nl2br', function() { return function(input) { input = input || ''; return input.replace(/\n/,'<br />'); } }) .directive("skill-desc", function() { function sanitize(scope, element, attrs) { element.html(attrs.skill-desc.replace(/\n/,'<br />')) } return { transclude: true, link: sanitize }; }) .directive("rsq", function() { return { scope: { rsqValue: '=value', }, template: '<span class="rsq label {{fitQualityClass}}">{{rsqValue|number:4}}</span>' } }) ;