1(function() { 2 'use strict'; 3 4 angular 5 .module('irk') 6 .controller('WyksztalcenieController', WyksztalcenieController); 7 8 function WyksztalcenieController($templateCache, $controller, $http, $resource, $scope, $injector, toaster, i18n, 9 slownik, zarzadcaModulow, $rootScope, SIDEBAR_MENU_EVENTS, PYTANIA_DODATKOWE_EVENTS) { 10 angular.extend(this, $controller('IntakeControllerMixin', {$scope: $scope})); 11 $scope.typyAnkietPytanDodatkowych = ['WYKSZTALCENIE_KANDYDATA', 'WYKSZTALCENIE_KANDYDATA_MATURY']; 12 $templateCache.remove('irk.auth.wyksztalcenie.Wyksztalcenie'); 13 $scope.wartosciSlownikowe = {}; 14 $scope.groups = {}; 15 $scope.dostepneModuly = {}; 16 $scope.procesyRekrutacyjne = []; 17 $scope.konkursy = {}; 18 var skaleOcen = {}; 19 var ocenaIntakeMap = {}; 20 var przedmiotMap = {}; 21 var znanaOcenaMap = {}; 22 var procesyRekrutacyjneMap = {}; 23 var constantEmptyArray = []; 24 25 var updateKonkursy = function() { 26 return $http.get('REST/wyksztalcenie/konkursy', {}).then(function(result) { 27 var map = {}; 28 var selectValues = []; 29 for(var i = 0; i < result.data.length; ++i) { 30 var konkurs = result.data[i]; 31 var id = konkurs.idKonkursu.toString() 32 map[id] = konkurs; 33 selectValues.push({value: id, label: konkurs.nazwa}); 34 } 35 $scope.konkursy.map = map; 36 $scope.konkursy.selectValues = selectValues; 37 }); 38 }; 39 40 var getWybraneKonkursy = function() { 41 var result = []; 42 if($scope.konkursy.laureat) { 43 var ids = $scope.konkursy.fieldMap.IdKonkursu.value; 44 for(var i = 0; i < ids.length; ++i) { 45 var id = ids[i]; 46 if(id) { 47 result.push($scope.konkursy.map[id]) 48 } 49 } 50 } 51 return result; 52 }; 53 54 var isOcenaZaKonkurs = function(idWymagania, idPrzedmiotu) { 55 return idPrzedmiotu && getWybraneKonkursy().some(function(konkurs) { 56 var zaliczanePrzedmioty = konkurs.idZaliczanychPrzedmiotowWymagan[idWymagania]; 57 return zaliczanePrzedmioty && zaliczanePrzedmioty.indexOf(Number(idPrzedmiotu)) >= 0; 58 }); 59 }; 60 61 $scope.isOcenaZaKonkurs = function(wymaganie) { 62 var group = $scope.getOcenaGroup(wymaganie) 63 return group && isOcenaZaKonkurs(wymaganie.idWymagania, group.IdPrzedmiotu.value); 64 }; 65 66 $scope.isSpelnioneKonkursem = function(wymaganie) { 67 return getWybraneKonkursy().some(function(konkurs) { 68 return konkurs.idSpelnianychWymagan.indexOf(wymaganie.idWymagania) >= 0; 69 }); 70 }; 71 72 var getSkaleOcen = function(wymaganie) { 73 var group = $scope.getOcenaGroup(wymaganie); 74 if(!group || !group.IdPrzedmiotu.value) { 75 return constantEmptyArray; 76 } 77 var skale = []; 78 skale = skaleOcen.list.filter(function(skala) { 79 return wymaganie.dostepneSkaleOcen.indexOf(skala.idSkali) >= 0; 80 }); 81 82 return skale.map(function(skala) { 83 return { 84 value: skala.idSkali.toString(), 85 label: skala.nazwa 86 }; 87 }); 88 }; 89 90 $scope.getRodzajeDokumentow = function(wymaganie) { 91 var group = $scope.getOcenaGroup(wymaganie); 92 if(!group) { 93 return constantEmptyArray; 94 } 95 96 var rodzajeOcen = $scope.wartosciSlownikowe['RodzajOcenyPrzedmiotuMaturalnego']; 97 if(rodzajeOcen.length == 0) { 98 return rodzajeOcen; 99 } 100 101 var rodzajeDokumentow = getSkaleOcen(wymaganie);
102 rodzajeOcen.forEach(function(rodzajOcen) { 103 if(rodzajOcen.value != 'SKALA_OCEN') { 104 rodzajeDokumentow.push(rodzajOcen); 105 } 106 }); 107 108 if(!angular.equals(rodzajeDokumentow, group.cache.getRodzajeDokumentow)) { 109 group.cache.getRodzajeDokumentow = rodzajeDokumentow; 110 } 111 112 var values = group.cache.getRodzajeDokumentow.map(function(elem) { 113 return elem.value; 114 }); 115 if(skaleOcen.zaladowane && isSkalaOcen(group) && values.indexOf(group.rodzajDokumentu) < 0) { 116 group.rodzajDokumentu = undefined; 117 } 118 119 return group.cache.getRodzajeDokumentow; 120 } 121 122 $scope.getOcenaMinimalna = function(wymaganie) { 123 return getSkalaParams($scope.getOcenaGroup(wymaganie)).ocenaMinimalna; 124 }; 125 126 $scope.getOcenaMaksymalna = function(wymaganie) { 127 return getSkalaParams($scope.getOcenaGroup(wymaganie)).ocenaMaksymalna; 128 }; 129 130 $scope.getKrok = function(wymaganie) { 131 return getSkalaParams($scope.getOcenaGroup(wymaganie)).krok; 132 }; 133 134 $scope.getTypSkali = function(wymaganie) { 135 return getSkalaParams($scope.getOcenaGroup(wymaganie)).typSkali; 136 }; 137 138 $scope.getOcenySkali = function(wymaganie) { 139 return getSkalaParams($scope.getOcenaGroup(wymaganie)).oceny; 140 }; 141 142 var isSkalaOcen = function(group) { 143 return group && group.rodzajDokumentu != null && isFinite(group.rodzajDokumentu); 144 } 145 146 var getSkalaParams = function(group) { 147 if(!isSkalaOcen(group)) { 148 return {}; 149 } 150 var params = buildSkalaParams(getSkalaOcen(group)); 151 if(!angular.equals(params, group.cache.getSkalaParams)) { 152 group.cache.getSkalaParams = params; 153 } 154 return group.cache.getSkalaParams; 155 } 156 157 var buildSkalaParams = function(skala) { 158 return { 159 ocenaMinimalna: skala.ocenaMinimalna == null ? null : skala.ocenaMinimalna, 160 ocenaMaksymalna: skala.ocenaMaksymalna == null ? null : skala.ocenaMaksymalna, 161 krok: skala.krok == null ? null : skala.krok, 162 oceny: skala.oceny || [], 163 typSkali: getTypSkali(skala), 164 }; 165 }; 166 167 var getSkalaOcen = function(group) { 168 if(!skaleOcen.map) { 169 return undefined; 170 } 171 if(!isSkalaOcen(group)) { 172 return {}; 173 } 174 return skaleOcen.map[group.rodzajDokumentu] || {}; 175 } 176 177 var getTypSkali = function(skala) { 178 if(skala.ocenaMinimalna == null || skala.ocenaMaksymalna == null || skala.krok == null) { 179 return 'select'; 180 } 181 if(skala.oceny.length > 20 || skala.krok % 1 != 0) { 182 return 'number'; 183 } 184 return 'number-select'; 185 }; 186 187 $scope.isOcenaGlowna = function(wymaganie) { 188 return isOcenaGlowna($scope.getOcenaGroup(wymaganie)); 189 } 190 191 var isOcenaGlowna = function(group) { 192 var skalaParams = getSkalaParams(group); 193 return skalaParams.oceny && skalaParams.oceny.length > 0; 194 }; 195 196 $scope.isOcenaDodatkowa = function(wymaganie) { 197 return isOcenaDodatkowa($scope.getOcenaGroup(wymaganie)); 198 }; 199 200 var isOcenaDodatkowa = function(group) { 201 if(!isOcenaGlowna(group) || group.OcenaGlowna.value == null || Number.isNaN(group.OcenaGlowna.value)) { 202 return false; 203 } 204 var rodzajMatury; 205 switch(przedmiotMap[group.IdPrzedmiotu.value].czescUstna) { 206 case 'ZAWSZE': 207 rodzajMatury = getRodzajMatury(); 208 return rodzajMatury == 'NOWA_MATURA' || 209 rodzajMatury == 'STARA_MATURA_DO_1991' || 210 rodzajMatury == 'STARA_MATURA_OD_1992'; 211 case 'BEZ_NOWEJ_MATURY': 212 rodzajMatury = getRodzajMatury(); 213 return rodzajMatury == 'STARA_MATURA_DO_1991' || 214 rodzajMatury == 'STARA_MATURA_OD_1992'; 215 case 'BRAK': 216 return false;
217 } 218 }; 219 220 $scope.isOcenaOpisowa = function(group) { 221 return group && group.IdPrzedmiotu.value && group.rodzajDokumentu == 'OCENA_OPISOWA'; 222 }; 223 224 var getRodzajMatury = function() { 225 var szkolaList = $scope.groups.ModulUkonczonaSzkolaSredniaV1IntakeList; 226 if(typeof szkolaList == 'undefined' || szkolaList.length == 0 || !szkolaList[0].WersjaEgzaminuDojrzalosci) { 227 return null; 228 } 229 return szkolaList[0].WersjaEgzaminuDojrzalosci.value; 230 }; 231 232 var getIdKrajuSwiadectwaDojrzalosci = function() { 233 var krajList = $scope.groups.ModulKrajSwiadectwaDojrzalosciV1IntakeList; 234 if(typeof krajList == 'undefined' || krajList.length == 0 || !krajList[0].IdKraju) { 235 return null; 236 } 237 return krajList[0].IdKraju.value; 238 }; 239 240 $scope.$watch(getRodzajMatury, function(_newValue, oldValue) { 241 if(!oldValue) { 242 return; 243 } 244 var key, group; 245 for(key in ocenaIntakeMap) { 246 group = ocenaIntakeMap[key]; 247 if(isSkalaOcen(group)) { 248 group.rodzajDokumentu = null; 249 } 250 group.OcenaGlowna.value = null; 251 group.OcenaDodatkowa.value = null; 252 group.OcenaOpisowa.value = null; 253 } 254 }); 255 256 $scope.getWymagania = function(proces) { 257 var rodzajMatury = getRodzajMatury(); 258 return proces.wymagania.filter(function(wymaganie) { 259 return wymaganie.rodzajeMatury.indexOf(rodzajMatury) >= 0; 260 }); 261 }; 262 263 $scope.isDostepnePunktyRekrutacyjne = function(proces) { 264 return proces.punktyRekrutacyjne != null && 265 typeof proces.punktyRekrutacyjne == 'object' && 266 typeof proces.punktyRekrutacyjne.punkty == 'number'; 267 }; 268 269 $scope.isBlokadaOceny = function(wymaganie) { 270 var key = getOcenaUniqueKey($scope.getOcenaGroup(wymaganie)); 271 var groups = znanaOcenaMap[key] || []; 272 return groups.some(function(group) { 273 var idProcesu = group.IdProcesuRekrutacyjnego.value; 274 var proces = procesyRekrutacyjneMap[idProcesu.toString()]; 275 return $scope.isBlokadaProcesu(proces); 276 }); 277 }; 278 279 $scope.isBlokadaProcesu = function(proces) { 280 return proces.blokadaWyksztalcenia; 281 }; 282 283 $scope.isBlokadaKonkursow = function() { 284 return $scope.procesyRekrutacyjne.some($scope.isBlokadaProcesu); 285 }; 286 287 $scope.getOcenaGroup = function(wymaganie) { 288 if(!wymaganie || !wymaganie.proces) { 289 return null; 290 } 291 return ocenaIntakeMap[wymaganie.proces.idProcesu + '_' + wymaganie.nrWymagania]; 292 }; 293 294 var getGroupId = function(group) { 295 return group.IdProcesuRekrutacyjnego.value + '_' + group.NrWymagania.value; 296 }; 297 298 var isBrakWartosciOceny = function(group) { 299 if(!group.rodzajDokumentu) { 300 return true; 301 } 302 if(isSkalaOcen(group)) { 303 return group.OcenaGlowna.value == null || Number.isNaN(group.OcenaGlowna.value); 304 } 305 return group.rodzajDokumentu != 'OCENA_OPISOWA' || !group.OcenaOpisowa.value; 306 }; 307 308 var sanitizeGroup = function(group) { 309 if(isBrakWartosciOceny(group)) { 310 group.Rodzaj.value = group.rodzajDokumentu == 'BRAK_OCENY' ? 'BRAK_OCENY' : null; 311 group.IdSkaliOcen.value = null; 312 group.OcenaGlowna.value = null; 313 group.OcenaDodatkowa.value = null; 314 group.OcenaOpisowa.value = null; 315 } 316 else if(group.rodzajDokumentu == 'OCENA_OPISOWA') { 317 group.Rodzaj.value = 'OCENA_OPISOWA'; 318 group.IdSkaliOcen.value = null; 319 group.OcenaGlowna.value = null; 320 group.OcenaDodatkowa.value = null; 321 } 322 else if(isSkalaOcen(group)) {
323 group.Rodzaj.value = 'SKALA_OCEN'; 324 if(!isOcenaGlowna(group)) { 325 group.IdSkaliOcen.value = null; 326 group.OcenaGlowna.value = null; 327 } 328 else { 329 group.IdSkaliOcen.value = group.rodzajDokumentu; 330 group.OcenaGlowna.value = formatujOcene(group.IdSkaliOcen.value, group.OcenaGlowna.value); 331 } 332 if(!isOcenaDodatkowa(group)) { 333 group.OcenaDodatkowa.value = null; 334 } 335 else { 336 group.OcenaDodatkowa.value = formatujOcene(group.IdSkaliOcen.value, group.OcenaDodatkowa.value); 337 } 338 group.OcenaOpisowa.value = null; 339 } 340 group.rodzajDokumentu = undefined; 341 group.cache = undefined; 342 }; 343 344 var formatujOcene = function(idSkali, ocena) { 345 if(idSkali == null || ocena == null) { 346 return ocena; 347 } 348 var skala = skaleOcen.map[idSkali.toString()]; 349 if(skala == null || skala.krok == null) { 350 return ocena; 351 } 352 return skala.ocenyNumeryczneMap[ocena.toString()]; 353 }; 354 355 var beforeSave = function(groupCopy) { 356 var key, group; 357 for(key in groupCopy.ocenaprzedmiotumaturalnegointake) 358 { 359 group = groupCopy.ocenaprzedmiotumaturalnegointake[key].fieldMap; 360 sanitizeGroup(group); 361 } 362 for(key in groupCopy.konkurskandydataintake) 363 { 364 group = groupCopy.konkurskandydataintake[key].fieldMap; 365 if(!$scope.konkursy.laureat) { 366 group.IdKonkursu.value = []; 367 } 368 } 369 }; 370 371 var getDaneDoPunktacji = function(idWymagania, group, wymaganieSpelnioneKonkursem, przedmiotZaliczonyOlimpiada, 372 idKrajuSwiadectwaDojrzalosci) { 373 if(wymaganieSpelnioneKonkursem) { 374 return { 375 idWymagania: idWymagania, 376 rodzaj: 'BRAK_OCENY', 377 konkurs: true, 378 idKrajuSwiadectwaDojrzalosci: idKrajuSwiadectwaDojrzalosci 379 }; 380 } 381 if(group) { 382 if(!przedmiotZaliczonyOlimpiada && isBrakWartosciOceny(group)) { 383 return 0; 384 } 385 var groupCopy = angular.copy(group); 386 sanitizeGroup(groupCopy); 387 var result = { 388 idWymagania: idWymagania, 389 idPrzedmiotu: groupCopy.IdPrzedmiotu.value, 390 idSkaliOcen: groupCopy.IdSkaliOcen.value, 391 ocenaGlowna: groupCopy.OcenaGlowna.value, 392 ocenaDodatkowa: groupCopy.OcenaDodatkowa.value, 393 rodzaj: groupCopy.Rodzaj.value, 394 konkurs: przedmiotZaliczonyOlimpiada, 395 idKrajuSwiadectwaDojrzalosci: idKrajuSwiadectwaDojrzalosci 396 }; 397 if(result.idPrzedmiotu && result.rodzaj && result.idKrajuSwiadectwaDojrzalosci) { 398 return result; 399 } 400 } 401 return null; 402 }; 403 404 var getIdSkaliOcen = function(group) { 405 if(!group || !group.IdSkaliOcen || !skaleOcen.zaladowane) { 406 return undefined; 407 } 408 if(!isSkalaOcen(group)) { 409 return ""; 410 } 411 return group.rodzajDokumentu; 412 } 413 414 $scope.$watch( 415 function() { 416 return [getIdKrajuSwiadectwaDojrzalosci(), getRodzajMatury()] 417 }, 418 function(value) { 419 var kraj = value[0]; 420 var rodzajMatury = value[1]; 421 if(kraj && rodzajMatury) { 422 $http.get('REST/wyksztalcenie/skalaocen/' + kraj + '/' + rodzajMatury, {}).then(function(result) { 423 if(angular.equals(value, [getIdKrajuSwiadectwaDojrzalosci(), getRodzajMatury()])) { 424 var list = result.data; 425 var map = {}; 426 for(var i = 0; i < list.length; ++i) { 427 var skalaOcen = result.data[i]; 428 var id = skalaOcen.idSkali.toString(); 429 var oceny = []; 430 var ocenyNumeryczneMap = {}; 431 for(var ocena of skalaOcen.oceny) { 432 oceny.push({value: ocena, label: ocena}); 433 if(skalaOcen.krok != null) { 434 ocenyNumeryczneMap[parseFloat(ocena).toString()] = ocena; 435 } 436 } 437 skalaOcen.oceny = oceny; 438 skalaOcen.ocenyNumeryczneMap = ocenyNumeryczneMap; 439 map[id] = skalaOcen; 440 } 441 skaleOcen.list = list; 442 skaleOcen.map = map; 443 skaleOcen.zaladowane = true; 444 if(skaleOcen.intakeMap) { 445 var intakeMap = skaleOcen.intakeMap; 446 skaleOcen.intakeMap = undefined; 447 updateOceny(intakeMap); 448 } 449 } 450 }); 451 } 452 else { 453 skaleOcen.list = []; 454 skaleOcen.map = {}; 455 skaleOcen.zaladowane = false;
456 } 457 }, 458 true 459 ); 460 461 var watchOcenaZaKonkurs = function(wymaganie) { 462 if(wymaganie) { 463 $scope.$watch( 464 function() { 465 return $scope.isOcenaZaKonkurs(wymaganie); 466 }, 467 function(przedmiotZaliczonyOlimpiada) { 468 if(przedmiotZaliczonyOlimpiada) { 469 $scope.getOcenaGroup(wymaganie).rodzajDokumentu = 'BRAK_OCENY'; 470 } 471 } 472 ); 473 } 474 }; 475 476 var watchZaleznosciDanychDoPunktacji = function(wymaganie) { 477 if(wymaganie) { 478 $scope.$watch( 479 function() { 480 var group = $scope.getOcenaGroup(wymaganie); 481 var isSpelnioneKonkursem = $scope.isSpelnioneKonkursem(wymaganie); 482 var przedmiotZaliczonyOlimpiada = $scope.isOcenaZaKonkurs(wymaganie); 483 return [group, getIdSkaliOcen(group), isSpelnioneKonkursem, przedmiotZaliczonyOlimpiada, 484 getIdKrajuSwiadectwaDojrzalosci(), getWybraneKonkursy()]; 485 }, 486 function(grupaZeSkalaOcen) { 487 var group = grupaZeSkalaOcen[0]; 488 var isSpelnioneKonkursem = grupaZeSkalaOcen[2]; 489 var przedmiotZaliczonyOlimpiada = grupaZeSkalaOcen[3]; 490 var idKrajuSwiadectwaDojrzalosci = grupaZeSkalaOcen[4]; 491 wymaganie.daneDoPunktacji = getDaneDoPunktacji(wymaganie.idWymagania, group, 492 isSpelnioneKonkursem, przedmiotZaliczonyOlimpiada, idKrajuSwiadectwaDojrzalosci); 493 }, 494 true 495 ); 496 } 497 }; 498 499 var watchZmianaWidocznosciWymagania = function(proces, wymaganie) { 500 $scope.$watch( 501 function() { 502 return $scope.getWymagania(proces).indexOf(wymaganie) < 0; 503 }, 504 function(disabled) { 505 if(disabled) { 506 var group = $scope.getOcenaGroup(wymaganie); 507 if(group) { 508 group.IdPrzedmiotu.value = null; 509 } 510 } 511 } 512 ); 513 }; 514 515 var watchZmianaProcesu = function(proces) { 516 var punktyPath = 'REST/punktyrekrutacyjne/' + proces.idProcesu; 517 var getDaneDoPunktacjiFunc = function() { 518 var wybraneKonkursyIdList = getWybraneKonkursy().map(function(konkurs) { 519 return konkurs.idKonkursu; 520 }); 521 var listaOcen = $scope.getWymagania(proces).map(function(wymaganie) { 522 return wymaganie.daneDoPunktacji; 523 }).filter(function(dane) { 524 return dane != 0; 525 }); 526 return {ocenyProcesu: listaOcen, wybraneKonkursyIdList: wybraneKonkursyIdList} 527 } 528 $scope.$watch( 529 getDaneDoPunktacjiFunc, 530 function(daneDoPunktacji) { 531 if(daneDoPunktacji.ocenyProcesu.length > 0 && daneDoPunktacji.ocenyProcesu.indexOf(null) < 0) { 532 $http.post(punktyPath, daneDoPunktacji) 533 .then(function(result) { 534 if(angular.equals(daneDoPunktacji, getDaneDoPunktacjiFunc())) { 535 proces.punktyRekrutacyjne = result.data; 536 } 537 }); 538 } 539 else { 540 proces.punktyRekrutacyjne = null; 541 } 542 }, 543 true 544 ); 545 }; 546 547 var updateProcesyRekrutacyjne = function() { 548 return $http.get('REST/wyksztalcenie', {}).then(function(result) { 549 angular.forEach(result.data, function(proces) { 550 angular.forEach(proces.wymagania, function(wymaganie) { 551 wymaganie.proces = proces; 552 angular.forEach(wymaganie.przedmioty, function(przedmiot) { 553 przedmiotMap[przedmiot.idPrzedmiotu] = przedmiot; 554 }); 555 watchOcenaZaKonkurs(wymaganie); 556 watchZaleznosciDanychDoPunktacji(wymaganie); 557 watchZmianaWidocznosciWymagania(proces, wymaganie); 558 }); 559 watchZmianaProcesu(proces); 560 procesyRekrutacyjneMap[proces.idProcesu.toString()] = proces; 561 }); 562 $scope.procesyRekrutacyjne = result.data; 563 $scope.loadGroup(); 564 }); 565 }; 566 567 var intakeResource = $resource('REST/wyksztalcenie/intake'); 568 569 $scope.zapisz = function() {
570 $scope.saveGroup($scope.gidGroupMap); 571 }; 572 573 $scope.saveGroup = function(group) { 574 var groupCopy = angular.copy(group); 575 beforeSave(groupCopy); 576 intakeResource.save({gidGroupMap: groupCopy}, function(groupDefinition) { 577 $scope.updateAllGroups(groupDefinition); 578 if(groupDefinition.valid) { 579 i18n.get('interfejs.irk.shared.ZapisanoFormularz').then(function(komunikat) { 580 toaster.pop('success', komunikat); 581 $rootScope.$broadcast(SIDEBAR_MENU_EVENTS.zmianaLiczbyNieprzeczytanychWiadomosci); 582 $rootScope.$broadcast(PYTANIA_DODATKOWE_EVENTS.przeladuj); 583 }); 584 } 585 }); 586 }; 587 588 $scope.loadGroup = function() { 589 intakeResource.get(function (groupDefinition) { 590 $scope.updateAllGroups(groupDefinition); 591 }); 592 }; 593 594 var parseNumericField = function(field) { 595 if(field.value) { 596 field.value = parseFloat(String(field.value).replaceAll(',', '.')); 597 } 598 }; 599 600 $scope.updateAllGroups = function(gidGroupMap) { 601 $scope.updateGroup(gidGroupMap); 602 ocenaIntakeMap = {}; 603 var key; 604 var fieldMap; 605 var field; 606 for(key in gidGroupMap.gidGroupMap.konkurskandydataintake) 607 { 608 fieldMap = gidGroupMap.gidGroupMap.konkurskandydataintake[key].fieldMap; 609 field = fieldMap.IdKonkursu; 610 if(!field.value || field.value.length === 0) { 611 field.value = [null]; 612 } 613 $scope.konkursy.fieldMap = fieldMap; 614 $scope.konkursy.laureat = field.value.some(function(e){ return e != null }); 615 } 616 617 updateOceny(gidGroupMap.gidGroupMap.ocenaprzedmiotumaturalnegointake); 618 619 zarzadcaModulow.getModulyDoWyswietlenia().then(function(moduly) { 620 angular.forEach(moduly, function(modul) { 621 var modulDoUruchomienia = $injector.get(modul); 622 modulDoUruchomienia.updateGroup($scope, gidGroupMap); 623 }); 624 }); 625 }; 626 627 var updateOceny = function(intakeMap) { 628 if(skaleOcen.list.length == 0) { 629 skaleOcen.intakeMap = intakeMap; 630 } 631 var key; 632 var fieldMap; 633 var skalaOcen; 634 var skalaOcenParams; 635 for(key in intakeMap) 636 { 637 fieldMap = intakeMap[key].fieldMap; 638 fieldMap.cache = {}; 639 fieldMap.rodzajDokumentu = fieldMap.Rodzaj.value == 'SKALA_OCEN' ? fieldMap.IdSkaliOcen.value : fieldMap.Rodzaj.value; 640 ocenaIntakeMap[getGroupId(fieldMap)] = fieldMap; 641 skalaOcen = getSkalaOcen(fieldMap); 642 skalaOcenParams = buildSkalaParams(skalaOcen); 643 if(skalaOcenParams.typSkali == 'number' || skalaOcenParams.typSkali == 'number-select') { 644 parseNumericField(fieldMap.OcenaGlowna); 645 parseNumericField(fieldMap.OcenaDodatkowa); 646 } 647 watchGroup(fieldMap); 648 } 649 }; 650 651 var getOcenaUniqueKey = function(group) { 652 var idSemestru = group.IdSemestru.value; 653 var idPrzedmiotu = group.IdPrzedmiotu.value; 654 var idSkaliOcen = getIdSkaliOcen(group); 655 if(idSemestru == null || idPrzedmiotu == null || idSkaliOcen == null) { 656 return null; 657 } 658 return idSemestru + '_' + idPrzedmiotu + '_' + idSkaliOcen; 659 }; 660 661 var watchGroup = function(group) { 662 $scope.$watch( 663 function() { 664 return getOcenaUniqueKey(group); 665 }, 666 function(newKey, oldKey) { 667 var groups; 668 if(oldKey && oldKey != newKey) { 669 groups = znanaOcenaMap[oldKey]; 670 if(groups) { 671 znanaOcenaMap[oldKey] = groups.filter(function(otherGroup) { 672 return group != otherGroup; 673 }); 674 } 675 group.OcenaGlowna.value = undefined; 676 group.OcenaDodatkowa.value = undefined; 677 group.OcenaOpisowa.value = undefined; 678 } 679 if(newKey) { 680 groups = znanaOcenaMap[newKey]; 681 if(groups) { 682 if(groups.length > 0) { 683 group.OcenaGlowna.value = groups[0].OcenaGlowna.value; 684 group.OcenaDodatkowa.value = groups[0].OcenaDodatkowa.value; 685 group.OcenaOpisowa.value = groups[0].OcenaOpisowa.value; 686 } 687 if(groups.indexOf(group) < 0) { 688 groups.push(group); 689 } 690 } 691 else { 692 znanaOcenaMap[newKey] = [group]; 693 } 694 } 695 } 696 ); 697 $scope.$watch( 698 function() { 699 return [group.OcenaGlowna.value, group.OcenaDodatkowa.value, group.OcenaOpisowa.value] 700 }, 701 function() { 702 var key = getOcenaUniqueKey(group); 703 var groups = key && znanaOcenaMap[key]; 704 if(groups) { 705 for(var i = 0; i < groups.length; ++i) { 706 groups[i].OcenaGlowna.value = group.OcenaGlowna.value; 707 groups[i].OcenaDodatkowa.value = group.OcenaDodatkowa.value; 708 groups[i].OcenaOpisowa.value = group.OcenaOpisowa.value; 709 } 710 } 711 }, 712 true 713 ); 714 } 715 716 $scope.popErrorToasters = function(response){ 717 try{ 718 var jsonResponse = JSON.parse(response) 719 if(angular.isArray(jsonResponse)) 720 { 721 angular.forEach(jsonResponse, function(message) { 722 toaster.pop('error', message); 723 }); 724 } 725 else 726 { 727 toaster.pop('error', jsonResponse); 728 } 729 } 730 catch(error) 731 { 732 toaster.pop('error', response); 733 } 734 }; 735 736 $scope.updateSlowniki = function() { 737 var slowniki = [ 738 'DeklaracjaPodjeciaNauki', 739 'FormaKsztalcenia', 740 'FormaStudiow', 741 'Jezyk', 742 'JezykNaMaturze', 743 'KategoriaZdrowia', 744 'Kraj', 745 'OkregowaKomisjaEgzaminacyjna', 746 'OkresPrzyjazdu', 747 'Plec', 748 'PoziomZnajomosciJezyka', 749 'PrzyczynaNiepelnosprawnosci', 750 'RodzajDokumentuTozsamosci', 751 'RodzajKartyPobytu', 752 'StopienNiepelnosprawnosci', 753 'StopienPokrewienstwa', 754 'StopienWojskowy', 755 'StosunekDoSluzbyWojskowej', 756 'TypEltRejestruSzkol', 757 'Uczelnia', 758 'WarunkiFinansowe', 759 'WersjaEgzaminuDojrzalosci', 760 'Wojewodztwo', 761 'WKU', 762 'RodzajOcenyPrzedmiotuMaturalnego' 763 ]; 764 765 zarzadcaModulow.getModulyDoWyswietlenia().then(function(moduly) { 766 angular.forEach(moduly, function(modul) { 767 var modulDoUruchomienia = $injector.get(modul); 768 slowniki = slowniki.concat(modulDoUruchomienia.getNazwyUzywanychSlownikow()); 769 }); 770 771 angular.forEach(slowniki, function(nazwaSlownika) { 772 $scope.wartosciSlownikowe[nazwaSlownika] = slownik.get(nazwaSlownika); 773 }); 774 }); 775 776 }; 777 778 zarzadcaModulow.getModulyDoWyswietlenia().then(function(moduly) { 779 angular.forEach(moduly, function(modul) { 780 var modulDoUruchomienia = $injector.get(modul); 781 modulDoUruchomienia.process($scope); 782 }); 783 }); 784 785 $scope.updateSlowniki(); 786 updateKonkursy(); 787 updateProcesyRekrutacyjne(); 788 } 789})();
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.