Chrysostomos for scheduler
[unfold.git] / plugins / scheduler2 / static / js / scheduler-SchedulerCtrl.js
1 var myApp = angular.module('myApp', []);\r
2 myApp.config(function ($interpolateProvider) {\r
3     $interpolateProvider.startSymbol('{[{').endSymbol('}]}');\r
4 });\r
5 myApp.factory('$exceptionHandler', function () {\r
6     return function (exception, cause) {\r
7         if (exception.message.contains('leases')) {\r
8             console.log(exception.message);\r
9             \r
10             var tmpScope = angular.element(document.getElementById('SchedulerCtrl')).scope();\r
11             //tmpScope.initSlots(_schedulerCurrentCellPosition, _schedulerCurrentCellPosition + SchedulerTotalVisibleCells);\r
12         }\r
13             \r
14     };\r
15 });\r
16 \r
17 // Create a private execution space for our controller. When\r
18 // executing this function expression, we're going to pass in\r
19 // the Angular reference and our application module.\r
20 (function (ng, app) {\r
21 \r
22 \r
23     // Define our Controller constructor.\r
24     function Controller($scope) {\r
25 \r
26         // Store the scope so we can reference it in our\r
27         // class methods\r
28         this.scope = $scope;\r
29 \r
30         // Set up the default scope value.\r
31         this.scope.errorMessage = null;\r
32         this.scope.name = "";\r
33         //Pagin\r
34         $scope.totalPages = 4;\r
35         $scope.curPage = 0;\r
36         this.scope.pageSize = 25;\r
37 \r
38         $scope.resources = new Array();\r
39         $scope.slots = SchedulerSlotsViewData;\r
40         //$scope.msg = "hello";\r
41 \r
42         angular.element(document).ready(function() {\r
43             //console.log('Hello World');\r
44             //alert('Hello World');\r
45             //afterAngularRendered();\r
46         });\r
47 \r
48         $scope.clearStuff = function() {\r
49             $scope.resources = new Array();\r
50             $scope.$apply();\r
51         }\r
52 \r
53         $scope.initSchedulerResources = function (pageSize) {\r
54             $scope.resources = new Array();\r
55 \r
56             for (var k = 0; k < pageSize; k++) {\r
57                 $scope.resources.push(jQuery.extend(true, {}, SchedulerDataViewData[k]));\r
58                 $scope.resources[k].leases = [];\r
59             }\r
60             $scope.pageSize = pageSize;\r
61             $scope.curPage = 0;\r
62             $scope.totalPages = parseInt(Math.ceil(SchedulerDataViewData.length / $scope.pageSize));\r
63             $scope.initSlots(0, SchedulerTotalVisibleCells);\r
64         };\r
65 \r
66         $scope.setPage = function(page) {\r
67             var tmpFrm = $scope.pageSize * page;\r
68             var tmpTo = tmpFrm + $scope.pageSize;\r
69             tmpTo = SchedulerDataViewData.length < tmpTo ? SchedulerDataViewData.length : tmpTo;\r
70             $scope.curPage = page;\r
71             $scope.resources = [];\r
72             var j = 0;\r
73             for (var k = tmpFrm; k < tmpTo; k++) {\r
74                 $scope.resources.push(jQuery.extend(true, {}, SchedulerDataViewData[k]));\r
75                 $scope.resources[j].leases = [];\r
76                 j++;\r
77             }\r
78             //fix slider\r
79             $('#tblSlider').slider('value', 0);\r
80             //init Slots\r
81             $scope.initSlots(0, SchedulerTotalVisibleCells);\r
82         };\r
83 \r
84         $scope.initSlots = function (from, to) {\r
85             //init\r
86             $scope.slots = [];\r
87 \r
88             var resourceIndex; //gia to paging\r
89             //set\r
90             for (var i = from; i < to; i++) {\r
91                 $scope.slots.push(SchedulerSlots[i]);\r
92                 resourceIndex = $scope.pageSize * $scope.curPage;\r
93                 for (var j = 0; j < $scope.resources.length; j++) {\r
94                     if (i == from) {\r
95                         $scope.resources[j].leases = [];\r
96                     }\r
97                     $scope.resources[j].leases.push(SchedulerDataViewData[resourceIndex].leases[i]);\r
98                     resourceIndex++;\r
99                 }\r
100             }\r
101             //apply\r
102             $scope.$apply();\r
103         };\r
104 \r
105         $scope.moveFrontSlot = function(from, to) {\r
106             //$scope.slots.shift();\r
107             //$scope.slots.push(SchedulerSlots[to]);\r
108             //for (var j = 0; j < $scope.resources.length; j++) {\r
109             //    $scope.resources[j].leases.shift();\r
110             //    $scope.resources[j].leases.push(SchedulerData[j].leases[to]);\r
111             //}\r
112             //try {\r
113             //    $scope.$digest();\r
114             //    //$scope.$apply();\r
115             //} catch (err) {\r
116             //    $scope.initSlots(from, to);\r
117             //}\r
118             $scope.initSlots(from, to);\r
119         };\r
120 \r
121         $scope.moveBackSlot = function(from, to) {\r
122             //$scope.$apply(function() {\r
123                 //try {\r
124                 //    $scope.slots.pop();\r
125                 //    $scope.slots.unshift(SchedulerSlots[from]);\r
126                 //    for (var j = 0; j < $scope.resources.length; j++) {\r
127                 //        $scope.resources[j].leases.pop();\r
128                 //        $scope.resources[j].leases.unshift(SchedulerData[j].leases[from]);\r
129                 //    }\r
130                 //} catch (err) {\r
131                 //    alert("error");\r
132                 //}\r
133 \r
134             $scope.initSlots(from, to);\r
135             //});\r
136         };\r
137 \r
138         $scope.getPageNumbers = function () {\r
139             var totalNumbersShowned = ($scope.totalPages > 10 ? 10 : $scope.totalPages + 1 );\r
140             var tmtNumDiv = totalNumbersShowned / 2;\r
141             //local\r
142             var numFrom = 1;\r
143             var numTo = totalNumbersShowned;\r
144             var rtrnArr = new Array();\r
145 \r
146             if (totalNumbersShowned > 1) {\r
147                 //set from - to\r
148                 if ($scope.totalPages > totalNumbersShowned) {\r
149                     if ($scope.curPage <= tmtNumDiv) {\r
150                         //nothing\r
151                     } else if ($scope.curPage >= $scope.totalPages - tmtNumDiv) {\r
152                         numTo = $scope.totalPages;\r
153                         numFrom = numTo - totalNumbersShowned;\r
154                     } else {\r
155                         numFrom = $scope.curPage - tmtNumDiv;\r
156                         numTo = numFrom + totalNumbersShowned;\r
157                     }\r
158                 }\r
159 \r
160                 for (var i = numFrom; i < numTo; i++)\r
161                     rtrnArr.push(i);\r
162             } else {\r
163                 rtrnArr.push(1);\r
164             }\r
165             return rtrnArr;\r
166         };\r
167 \r
168         // Return this object reference.\r
169         return (this);\r
170 \r
171     }\r
172 \r
173 \r
174     // Define the Controller as the constructor function.\r
175     app.controller("SchedulerCtrl", Controller);\r
176 \r
177 \r
178 })(angular, myApp);