https://rekrutacja.pedagogium.pl/pdg-irk-app/content/script/irk/pages/egzaminy/EgzaminyController.js
1(function() { 2 'use strict'; 3 4 angular.module('irk').controller('EgzaminyController', EgzaminyController); 5 6 function EgzaminyController($templateCache, $controller, $http, $resource, $scope, $injector, $modal, toaster, 7 i18n, $interval, $rootScope, EGZAMIN_EVENTS, $location) { 8 angular.extend(this, $controller('IntakeControllerMixin', { 9 $scope : $scope 10 })); 11 $templateCache.remove('irk.auth.egzaminy.Egzaminy'); 12 $scope.kampanieRekrutacyjne = []; 13 $scope.downloadState = {}; 14 15 var pobierzTlumaczenia = function() { 16 // wartoÅci domyÅlne 17 $scope.i18nNiezapisaneZmiany = "Masz niezapisane zmiany. Czy na pewno chcesz opuÅciÄ tÄ stronÄ?"; 18 $scope.i18nPotwierdz = "Potwierdź"; 19 $scope.i18nAnuluj = "Anuluj"; 20 // pobranie tÅumaczeÅ 21 i18n.get('interfejs.irk.strona.Egzaminy.NiezapisaneZmiany').then(function(tlumaczenie) { 22 $scope.i18nNiezapisaneZmiany = tlumaczenie; 23 }); 24 i18n.get('interfejs.irk.strona.Egzaminy.Potwierdz').then(function(tlumaczenie) { 25 $scope.i18nPotwierdz = tlumaczenie; 26 }); 27 i18n.get('interfejs.irk.strona.Egzaminy.Anuluj').then(function(tlumaczenie) { 28 $scope.i18nAnuluj = tlumaczenie; 29 }); 30 }; 31 32 var usunOstrzezeniaONiezapisanychZmianach = function() { 33 window.onbeforeunload = () => undefined; 34 deregisterLocationChangeListener(); 35 deregisterLocationChangeListener = null; 36 }; 37 38 var deregisterLocationChangeListener = null; 39 pobierzTlumaczenia(); 40 // po wgraniu pliku wyÅwietla ostrzeżenie 41 $scope.$on('filesUpdated', function(event) { 42 // przy opuszczaniu strony 43 window.onbeforeunload = function (event) { 44 return $scope.i18nNiezapisaneZmiany; 45 }; 46 if(deregisterLocationChangeListener == null) 47 { 48 // przy zmianie zakÅadki 49 deregisterLocationChangeListener = $scope.$on('$locationChangeStart', function (event, next, current) { 50 event.preventDefault(); 51 $modal.open({ 52 templateUrl: 'potwierdzOpuszczenieStrony.html', 53 scope: $scope 54 }).result.then(function() { 55 usunOstrzezeniaONiezapisanychZmianach(); 56 var arr = next.split('/'); 57 $location.path('/' + arr[arr.length-1]); 58 }); 59 }); 60 } 61 }); 62 63 var updateKampanieRekrutacyjne = function() { 64 $http.get('REST/egzaminy', {}).then(function(result) { 65 $scope.kampanieRekrutacyjne = result.data; 66 }); 67 }; 68 69 var keepAlive = $interval(function() { 70 $http.get("REST/keepalive"); 71 }, 10000); 72 73 $scope.$on('$destroy', function() { 74 $interval.cancel(keepAlive); 75 }); 76 77 $scope.isDostepneListyPlikow = function() { 78 for (var i = 0; i < $scope.kampanieRekrutacyjne.length; ++i) { 79 if ($scope.isDostepneListyPlikowKampanii($scope.kampanieRekrutacyjne[i])) { 80 return true; 81 } 82 } 83 return false; 84 }; 85 86 $scope.isDostepneListyPlikowKampanii = function(kampania) { 87 for (var i = 0; i < kampania.procesy.length; ++i) { 88 if ($scope.isDostepneListyPlikowProcesu(kampania.procesy[i])) { 89 return true; 90 } 91 } 92 return false; 93 }; 94 95 $scope.isDostepneListyPlikowProcesu = function(proces) { 96 for (var i = 0; i < proces.egzaminy.length; ++i) { 97 if ($scope.isDostepneListyPlikowEgzaminu(proces.egzaminy[i])) { 98 return true; 99 } 100 } 101 return false; 102 }; 103 104 $scope.isDostepneListyPlikowEgzaminu = function(egzamin) { 105 return egzamin.listyPlikow.length > 0; 106 }; 107 108 var getListaPlikowRestDtoList = function(egzamin) { 109 var listyPlikowRestDto = []; 110 for (var i = 0; i < egzamin.listyPlikow.length; ++i) { 111 var listaPlikow = egzamin.listyPlikow[i]; 112 listyPlikowRestDto.push({ 113 idZestawu: listaPlikow.idZestawu, 114 nrReguly: listaPlikow.nrReguly, 115 pliki : listaPlikow.pliki 116 }); 117 } 118 return listyPlikowRestDto; 119 }; 120 121 var getEgzaminRestDtoList = function() { 122 var egzaminRestDtoList = []; 123 for (var i = 0; i < $scope.kampanieRekrutacyjne.length; ++i) { 124 var kampania = $scope.kampanieRekrutacyjne[i]; 125 for (var j = 0; j < kampania.procesy.length; ++j) { 126 var proces = kampania.procesy[j]; 127 for (var k = 0; k < proces.egzaminy.length; ++k) { 128 var egzamin = proces.egzaminy[k]; 129 egzaminRestDtoList.push({ 130 idEgzaminu : egzamin.idEgzaminu, 131 listyPlikow : getListaPlikowRestDtoList(egzamin), 132 }); 133 } 134 } 135 } 136 return egzaminRestDtoList; 137 }; 138 139 $scope.trwaZapisPlikow = false;
140 141 $scope.zapiszPliki = function() { 142 $scope.trwaZapisPlikow = true; 143 var egzaminRestDtoList = getEgzaminRestDtoList(); 144 $http.post('REST/egzaminy/pliki', egzaminRestDtoList).then(function() { 145 $scope.trwaZapisPlikow = false; 146 i18n.get('interfejs.irk.strona.Egzaminy.ZapisanoFormularz').then(function(komunikat) { 147 toaster.pop('success', komunikat); 148 }); 149 updateKampanieRekrutacyjne(); 150 }); 151 usunOstrzezeniaONiezapisanychZmianach(); 152 }; 153 154 $scope.isDostepnyZapisDoGrup = function() { 155 for (var i = 0; i < $scope.kampanieRekrutacyjne.length; ++i) { 156 if ($scope.isDostepnyZapisDoGrupKampanii($scope.kampanieRekrutacyjne[i])) { 157 return true; 158 } 159 } 160 return false; 161 }; 162 163 $scope.isDostepnyZapisDoGrupKampanii = function(kampania) { 164 for (var i = 0; i < kampania.procesy.length; ++i) { 165 if ($scope.isDostepnyZapisDoGrupProcesu(kampania.procesy[i])) { 166 return true; 167 } 168 } 169 return false; 170 }; 171 172 $scope.isDostepnyZapisDoGrupProcesu = function(proces) { 173 for (var i = 0; i < proces.egzaminy.length; ++i) { 174 if ($scope.isDostepnyZapisDoGrupEgzaminu(proces.egzaminy[i])) { 175 return true; 176 } 177 } 178 return false; 179 }; 180 181 $scope.isDostepnyZapisDoGrupEgzaminu = function(egzamin) { 182 return egzamin.budynkiEgzaminu.length > 0; 183 }; 184 185 $scope.zmienWyborGrupy = function(grupa, egzamin) { 186 if (!grupa.wybrana && isDocelowoJednaGrupa()) { 187 odznaczWszystkieGrupy(egzamin); 188 } 189 grupa.wybrana = !grupa.wybrana; 190 }; 191 192 var odznaczWszystkieGrupy = function(egzamin) { 193 for (var k = 0; k < egzamin.budynkiEgzaminu.length; ++k) { 194 var budynek = egzamin.budynkiEgzaminu[k]; 195 for (var i = 0; i < budynek.dniEgzaminu.length; ++i) { 196 var dzien = budynek.dniEgzaminu[i]; 197 for (var j = 0; j < dzien.grupy.length; ++j) { 198 dzien.grupy[j].wybrana = false; 199 } 200 } 201 } 202 }; 203 204 $scope.pokazWybraneTerminyDialog = function() { 205 $modal.open({ 206 animation : true, 207 templateUrl : 'wybraneTerminyDialog.html', 208 scope : $scope 209 }); 210 }; 211 212 $scope.pokazDialogZapisuDoGrupy = function(egzamin) { 213 $scope.egzamin = egzamin; 214 egzamin.wybranyBudynek = undefined; 215 if(egzamin.budynkiEgzaminu.length == 1) { 216 egzamin.wybranyBudynek = egzamin.budynkiEgzaminu[0]; 217 $scope.resetujSelektorDaty(); 218 } 219 $modal.open({ 220 animation : true, 221 templateUrl : 'zapiszSieDoGrupyDialog.html', 222 scope : $scope 223 }).result.then(function() { 224 $modal.open({ 225 animation : true, 226 templateUrl : 'potwierdzZapisDoGrupyEgzaminu.html', 227 scope : $scope 228 }).result.then(function() { 229 zapiszGrupy(egzamin); 230 }); 231 }); 232 }; 233 234 var zapiszGrupy = function(egzamin) { 235 var params = { 236 idEgzaminu : egzamin.idEgzaminu, 237 idWybranychGrup : getIdWybranychGrup(egzamin) 238 } 239 var url = egzamin.metodaZapisu == 'SAMODZIELNIE' 240 ? 'REST/egzaminy/zapisdogrupy' 241 : 'REST/egzaminy/deklaracjagrupy'; 242 $http.post(url, params).then(function(wynik) { 243 if (wynik.data.bledy.length == 0) { 244 i18n.get('interfejs.irk.strona.Egzaminy.ZapisanoFormularz').then(function(komunikat) { 245 toaster.pop('success', komunikat); 246 egzamin.budynkiEgzaminu = []; 247 $rootScope.$broadcast(EGZAMIN_EVENTS.zmianaTerminowEgzaminow); 248 }); 249 } else { 250 i18n.get('interfejs.irk.strona.Egzaminy.' + wynik.data.bledy[0]).then(function(komunikat) { 251 toaster.pop('error', komunikat); 252 }); 253 } 254 }); 255 } 256 257 var getIdWybranychGrup = function(egzamin) { 258 var wybraneGrupy = $scope.getWybraneGrupyEgzaminu(egzamin); 259 var idWybranychGrup = []; 260 for (var i = 0; i < wybraneGrupy.length; ++i) { 261 idWybranychGrup.push(wybraneGrupy[i].idGrupy); 262 } 263 return idWybranychGrup; 264 }; 265 266 $scope.getWybraneGrupyEgzaminu = function(egzamin) { 267 var wybraneGrupy = []; 268 for (var i = 0; i < egzamin.budynkiEgzaminu.length; ++i) { 269 var budynek = egzamin.budynkiEgzaminu[i]; 270 var wybraneGrupyBudynku = getWybraneGrupyBudynku(budynek); 271 wybraneGrupy = wybraneGrupy.concat(wybraneGrupyBudynku); 272 } 273 return wybraneGrupy; 274 }; 275 276 var getWybraneGrupyBudynku = function(budynek) { 277 var wybraneGrupy = []; 278 for (var i = 0; i < budynek.dniEgzaminu.length; ++i) { 279 var dzien = budynek.dniEgzaminu[i]; 280 var wybraneGrupyDnia = $scope.getWybraneGrupyDnia(dzien); 281 wybraneGrupy = wybraneGrupy.concat(wybraneGrupyDnia); 282 } 283 return wybraneGrupy; 284 }; 285 286 $scope.getWybraneGrupyDnia = function(dzien) { 287 var wybraneGrupyDnia = []; 288 for (var i = 0; i < dzien.grupy.length; ++i) { 289 var grupa = dzien.grupy[i]; 290 if (grupa.wybrana) { 291 wybraneGrupyDnia.push(grupa); 292 } 293 } 294 return wybraneGrupyDnia; 295 }; 296 297 $scope.selektorDatyKalendarz = { 298 otwarty : false, 299 wybranaData: null, 300 dateOptions: { 301 formatYear : 'yy', 302 startingDay : 1 303 }, 304 otworz: function($event) { 305 $event.preventDefault(); 306 $event.stopPropagation(); 307 $scope.selektorDatyKalendarz.otwarty = !$scope.selektorDatyKalendarz.otwarty; 308 }, 309 zmienWybranyDzien: function() { 310 var budynek = $scope.egzamin.wybranyBudynek; 311 var formatDaty = formatujDate($scope.selektorDatyKalendarz.wybranaData); 312 for(var i = 0; i < budynek.dniEgzaminu.length; ++i) { 313 var dzienEgzaminu = budynek.dniEgzaminu[i]; 314 if(dzienEgzaminu.data === formatDaty) { 315 budynek.wybranyDzien = dzienEgzaminu; 316 $scope.resetujSelektorGodziny(); 317 return; 318 } 319 } 320 }, 321 isZabronionaData: function(date, mode) { 322 if(!$scope.egzamin || !$scope.egzamin.wybranyBudynek || mode !== 'day') { 323 return false;
324 } 325 var formatDaty = formatujDate(date); 326 var budynek = $scope.egzamin.wybranyBudynek; 327 for(var i = 0; i < budynek.dniEgzaminu.length; ++i) 328 { 329 if(budynek.dniEgzaminu[i].data === formatDaty) 330 { 331 return false; 332 } 333 } 334 return true; 335 } 336 }; 337 338 /** 339 * Po zmianie wyboru budynku należy odÅwieżyÄ dostÄpne opcje w 340 * selektorze daty. 341 */ 342 $scope.resetujSelektorDaty = function() { 343 var budynek = $scope.egzamin.wybranyBudynek; 344 $scope.egzamin.wybranyBudynek = undefined; 345 346 $scope.selektorDatyKalendarz.wybranaData = null; 347 348 for (var k = 0; k < $scope.egzamin.budynkiEgzaminu.length; ++k) { 349 $scope.egzamin.budynkiEgzaminu[k].wybranyDzien = undefined; 350 } 351 352 $scope.egzamin.wybranyBudynek = budynek; 353 354 if(budynek && budynek.dniEgzaminu.length == 1) { 355 budynek.wybranyDzien = budynek.dniEgzaminu[0]; 356 $scope.resetujSelektorGodziny(); 357 } 358 }; 359 360 /** 361 * Po zmienia wyboru dnia należy zaznaczyÄ pierwszÄ grupÄ dnia, jeÅli 362 * dzieÅ ma tylko jednÄ grupÄ i tylko jedna grupa powinna byÄ wybrana. 363 */ 364 $scope.resetujSelektorGodziny = function() { 365 var egzamin = $scope.egzamin; 366 if(!egzamin.wybranyBudynek || !egzamin.wybranyBudynek.wybranyDzien) { 367 return; 368 } 369 var dzien; 370 if(isDocelowoJednaGrupa()) { 371 dzien = egzamin.wybranyBudynek.wybranyDzien; 372 } 373 else if(egzamin.budynkiEgzaminu.length == 1 374 && egzamin.budynkiEgzaminu[0].dniEgzaminu.length == 1) { 375 dzien = egzamin.budynkiEgzaminu[0].dniEgzaminu[0]; 376 } 377 else { 378 return; 379 } 380 odznaczWszystkieGrupy(egzamin); 381 if(dzien.grupy.length == 1) { 382 $scope.zmienWyborGrupy(dzien.grupy[0], egzamin); 383 } 384 }; 385 386 /** 387 * Sprawdzenei czy w widoku powinna byÄ wybrana tylko jedna grupa. 388 */ 389 var isDocelowoJednaGrupa = function() { 390 return $scope.egzamin.metodaZapisu == 'SAMODZIELNIE'; 391 } 392 393 var formatujDate = function(data) { 394 if(!data) { 395 return ""; 396 } 397 var day = "" + data.getDate(); 398 var month = "" + (data.getMonth() + 1); 399 var year = "" + (data.getYear() + 1900); 400 if (month.length < 2) month = '0' + month; 401 if (day.length < 2) day = '0' + day; 402 return day + "." + month + "." + year; 403 }; 404 405 updateKampanieRekrutacyjne(); 406 407 } 408 409})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.