You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

home.controller.js 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. angular.module('app')
  2. .controller('HomeController', ['$scope', '$state', 'DataShareBusiness', 'WeeksBusiness', '$mdDialog',
  3. function($scope, $state, DataShareBusiness, WeeksBusiness, $mdDialog) {
  4. $scope.DataShareBusiness = DataShareBusiness;
  5. $scope.dateFormat = "dd MMM yyyy";
  6. $scope.hourFormat = "HH:mm";
  7. $scope.courses = null;
  8. $scope.days = [{day:"Monday", date: null}, {day:"Tuesday", date: null}, {day:"Wednesday", date: null},
  9. {day:"Thursday", date: null}, {day:"Friday", date: null}, {day:"Saturday", date: null},
  10. {day:"Sunday", date: null}];
  11. $scope.hours = [];
  12. for (var i = 0; i < 48; ++i) {
  13. var d = new Date();
  14. d.setHours(i / 2, 30 * (i % 2), 0, 0);
  15. $scope.hours.push(d);
  16. }
  17. $scope.getSheetCount = function()
  18. {
  19. var sheetCount = function(group)
  20. {
  21. var c = (group.Groups == null || group.Groups.length == 0) ? 1 : 0;
  22. if (group.Groups != null) {
  23. group.Groups.forEach(function (group) {
  24. c += sheetCount(group);
  25. });
  26. }
  27. return c;
  28. };
  29. return sheetCount(DataShareBusiness.getCurrentGroupOrRoot())
  30. };
  31. $scope.getMonday = function(d)
  32. {
  33. d = new Date(d);
  34. var day = d.getDay(), diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
  35. d = new Date(d.setDate(diff));
  36. d.setHours(0, 0, 0, 0);
  37. return d;
  38. };
  39. $scope.setDates = function(monday)
  40. {
  41. $scope.days[0].date = new Date(monday);
  42. for (var i = 1; i < $scope.days.length; ++i) {
  43. $scope.days[i].date = new Date(monday.setDate(monday.getDate() + 1));
  44. }
  45. };
  46. $scope.getDayListByDay = function(date)
  47. {
  48. if ($scope.courses == null || date == null) {
  49. return null;
  50. }
  51. return $scope.courses.DayList.find(function(day)
  52. {
  53. return day.DateTime.getTime() == date.getTime();
  54. });
  55. };
  56. $scope.getCoursesByDate = function(date)
  57. {
  58. var courses = $scope.getDayListByDay(date);
  59. if (courses == null) {
  60. return [];
  61. }
  62. return courses.CourseList;
  63. };
  64. $scope.showCourse = function(course)
  65. {
  66. console.log(course);
  67. $mdDialog.show(
  68. $mdDialog.alert()
  69. .parent(angular.element(document.querySelector('#popupContainer')))
  70. .clickOutsideToClose(true)
  71. .title(course.Name)
  72. .content("<a href=''>42</a>")
  73. .ariaLabel(course.Name)
  74. .ok('Ok')
  75. );
  76. };
  77. $scope.$watch(function(){return DataShareBusiness.CurrentGroups}, function()
  78. {
  79. var group = DataShareBusiness.getCurrentGroup();
  80. if (group != null && $scope.getSheetCount() < 5) {
  81. var promiseLoadCourses = {
  82. id: "promiseLoadCourses",
  83. groups: ["coursesView"]
  84. };
  85. WeeksBusiness.getCurrentWeek({group_id: group.Id, type_id: group.Type}, promiseLoadCourses)
  86. .then(function(data)
  87. {
  88. $scope.courses = data;
  89. $scope.setDates($scope.getMonday(new Date()));
  90. });
  91. }
  92. else {
  93. $scope.courses = null;
  94. }
  95. });
  96. }]);