Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. <script>
  2. 'use strict';
  3. var App = angular.module('App',['ngResource','App.filters']);
  4.  
  5. App.controller('ExerciseCtrl', ['$scope','$http', function($scope, $http) {
  6.  
  7. $scope.selectedMainMuscle = [];
  8.  
  9. $http.get('/rest/exercises/')
  10. .then(function(res){
  11. $scope.exercises = res.data;
  12. });
  13.  
  14. $scope.orderProp = 'name';
  15.  
  16. $http.get('/rest/muscles/')
  17. .then(function(res){
  18. $scope.muscles = res.data;
  19. });
  20.  
  21. $scope.isChecked = function () {
  22. if (_.contains($scope.selectedMainMuscle, this.muscle.id)) {
  23. return 'glyphicon glyphicon-ok pull-right';
  24. }
  25. return false;
  26. };
  27.  
  28. $scope.setSelectedMainMuscle = function () {
  29. var id = this.muscle.id;
  30. if (_.contains($scope.selectedMainMuscle, id)) {
  31. $scope.selectedMainMuscle = _.without($scope.selectedMainMuscle, id);
  32. } else {
  33. $scope.selectedMainMuscle.push(id);
  34. }
  35. return false;
  36. };
  37. }]);
  38.  
  39. angular.module('App.filters', []).filter('mainMuscleFilter', [function () {
  40. return function (exercises, selectedMainMuscle) {
  41. if (!angular.isUndefined(exercises) && !angular.isUndefined(selectedMainMuscle) && selectedMainMuscle.length > 0) {
  42. var tempClients = [];
  43. angular.forEach(selectedMainMuscle, function (id) {
  44. angular.forEach(exercises, function (exercise) {
  45. if (angular.equals(exercise.main_muscle.id, id)) {
  46. tempClients.push(exercise);
  47. }
  48. });
  49. });
  50. return tempClients;
  51. } else {
  52. return exercises;
  53. }
  54. };
  55. }]);
  56. </script>
  57.  
  58. <div class="btn-group" ng-class="{open: dd2}">
  59. <button type="button" class="btn btn-default dropdown-toggle" ng-click="dd2=!dd2">Main muscle <span class="caret"></span></button>
  60. <ul class="dropdown-menu">
  61. <li ng-repeat="muscle in muscles">
  62. <a href ng-click="setSelectedMainMuscle()">{%verbatim%}{{muscle.name}}{%endverbatim%} <span data-ng-class="isChecked()"></span></a>
  63. </li>
  64. </ul>
  65. </div>
  66. <table class="table table-hover" >
  67. <tr><td><strong>Name</strong></td><td><strong>Main muscle</strong></td><td><strong>Equipment</strong></td></tr>
  68. <tr ng-repeat="exercise in filtered = (exercises | mainMuscleFilter:selectedMainMuscle)">
  69. {%verbatim%}<td>{{exercise.name}}</td><td>{{exercise.main_muscle.name}}</td><td>{{exercise.equipment.name}}</td>{%endverbatim%}
  70. </tr>
  71. </table>
  72.  
  73. $scope.selected = {
  74. muscle: [],
  75. equipment: []
  76. };
  77.  
  78. $scope.isChecked = function (arr, id) {
  79. if (_.contains(arr, id)) {
  80. return 'glyphicon glyphicon-ok pull-right';
  81. }
  82. return false;
  83. };
  84.  
  85. $scope.toggleInclusion = function (arr, id) {
  86. var index = arr.indexOf(id);
  87. if (index >= 0) {
  88. arr.splice(index, 1);
  89. } else {
  90. arr.push(id);
  91. }
  92. return false;
  93. };
  94.  
  95. <li ng-repeat="muscle in muscles">
  96. <a href ng-click="toggleInclusion(selected.muscle, muscle.id)">
  97. {{muscle.name}}
  98. <span data-ng-class="isChecked(selected.muscle, muscle.id)"></span>
  99. </a>
  100. </li>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement