510514479d17d455055267c587bf2273df2a5447
[myslice.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                 if ($scope.resources.length < SchedulerDataViewData.length)\r
58                     $scope.resources.push(jQuery.extend(true, {}, SchedulerDataViewData[k]));\r
59                 $scope.resources[k].leases = [];\r
60             }\r
61             $scope.pageSize = pageSize;\r
62             $scope.curPage = 0;\r
63             $scope.totalPages = parseInt(Math.ceil(SchedulerDataViewData.length / $scope.pageSize));\r
64             $scope.initSlots(0, SchedulerTotalVisibleCells);\r
65         };\r
66 \r
67         $scope.setPage = function(page) {\r
68             var tmpFrm = $scope.pageSize * page;\r
69             var tmpTo = tmpFrm + $scope.pageSize;\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                 if ($scope.resources.length < SchedulerDataViewData.length)\r
75                     $scope.resources.push(jQuery.extend(true, {}, SchedulerDataViewData[k]));\r
76                 $scope.resources[j].leases = [];\r
77                 j++;\r
78             }\r
79             $scope.initSlots(0, SchedulerTotalVisibleCells);\r
80         };\r
81 \r
82         $scope.initSlots = function (from, to) {\r
83             //init\r
84             $scope.slots = [];\r
85 \r
86             var resourceIndex; //gia to paging\r
87             //set\r
88             for (var i = from; i < to; i++) {\r
89                 $scope.slots.push(SchedulerSlots[i]);\r
90                 resourceIndex = $scope.pageSize * $scope.curPage;\r
91                 for (var j = 0; j < $scope.resources.length; j++) {\r
92                     if (i == from) {\r
93                         $scope.resources[j].leases = [];\r
94                     }\r
95                     $scope.resources[j].leases.push(SchedulerDataViewData[resourceIndex].leases[i]);\r
96                     resourceIndex++;\r
97                 }\r
98             }\r
99             //apply\r
100             $scope.$apply();\r
101         };\r
102 \r
103         $scope.moveFrontSlot = function(from, to) {\r
104             //$scope.slots.shift();\r
105             //$scope.slots.push(SchedulerSlots[to]);\r
106             //for (var j = 0; j < $scope.resources.length; j++) {\r
107             //    $scope.resources[j].leases.shift();\r
108             //    $scope.resources[j].leases.push(SchedulerData[j].leases[to]);\r
109             //}\r
110             //try {\r
111             //    $scope.$digest();\r
112             //    //$scope.$apply();\r
113             //} catch (err) {\r
114             //    $scope.initSlots(from, to);\r
115             //}\r
116             $scope.initSlots(from, to);\r
117         };\r
118 \r
119         $scope.moveBackSlot = function(from, to) {\r
120             //$scope.$apply(function() {\r
121                 //try {\r
122                 //    $scope.slots.pop();\r
123                 //    $scope.slots.unshift(SchedulerSlots[from]);\r
124                 //    for (var j = 0; j < $scope.resources.length; j++) {\r
125                 //        $scope.resources[j].leases.pop();\r
126                 //        $scope.resources[j].leases.unshift(SchedulerData[j].leases[from]);\r
127                 //    }\r
128                 //} catch (err) {\r
129                 //    alert("error");\r
130                 //}\r
131 \r
132             $scope.initSlots(from, to);\r
133             //});\r
134         };\r
135 \r
136         $scope.getPageNumbers = function () {\r
137             var totalNumbersShowned = ($scope.totalPages > 10 ? 10 : $scope.totalPages );\r
138             var tmtNumDiv = totalNumbersShowned / 2;\r
139             //local\r
140             var numFrom = 1;\r
141             var numTo = totalNumbersShowned;\r
142             var rtrnArr = new Array();\r
143 \r
144             if (totalNumbersShowned > 1) {\r
145                 //set from - to\r
146                 if ($scope.totalPages > totalNumbersShowned) {\r
147                     if ($scope.curPage <= tmtNumDiv) {\r
148                         //nothing\r
149                     } else if ($scope.curPage >= $scope.totalPages - tmtNumDiv) {\r
150                         numTo = $scope.totalPages;\r
151                         numFrom = numTo - totalNumbersShowned;\r
152                     } else {\r
153                         numFrom = $scope.curPage - tmtNumDiv;\r
154                         numTo = numFrom + totalNumbersShowned;\r
155                     }\r
156                 }\r
157 \r
158                 for (var i = numFrom; i < numTo; i++)\r
159                     rtrnArr.push(i);\r
160             } else {\r
161                 rtrnArr.push(1);\r
162             }\r
163             return rtrnArr;\r
164         };\r
165 \r
166         // Return this object reference.\r
167         return (this);\r
168 \r
169     }\r
170 \r
171 \r
172     // Define the Controller as the constructor function.\r
173     app.controller("SchedulerCtrl", Controller);\r
174 \r
175 \r
176 })(angular, myApp);