/** * Javascript file for infocenter overview page */ /** * Global function used by FilterWidget JS to refresh the side menu * NOTE: it is called from the FilterWidget JS therefore must be a global function * To be called only if the page has a customized menu (currently only index) */ if (FHC_JS_DATA_STORAGE_OBJECT.called_method == 'index') { function refreshSideMenuHook() { FHC_NavigationWidget.refreshSideMenuHook('system/infocenter/InfoCenter/setNavigationMenuArrayJson'); } } /** * */ var InfocenterPersonDataset = { infocenter_studiensemester_variablename: 'infocenter_studiensemester', infocenter_studienganstyp_variablename: 'infocenter_studiensgangtyp', /** * adds person table additional actions html (above and beneath it) */ appendTableActionsHtml: function(infocenter_studiensemester, infocenter_studiengangstyp) { var url = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/system/messages/Messages/writeTemplate"; var formHtml = '
'; $("#datasetActionsTop").before(formHtml); var auswahlStudienart = ''; InfocenterPersonDataset.getStudienartData(infocenter_studiengangstyp); var auswahlAbsageToggle = 'Erweiterte Einstellungen'; var auswahlAbsage = '' + '' + '' + ''; InfocenterPersonDataset.getAbsageData(); var studienSemesterHtml = ' ' + infocenter_studiensemester + ' '; var selectAllHtml = '' + ' Alle  ' + '' + ' Keinen    '; var actionHtml = 'Mit Ausgewählten:  ' + '' + ' Nachricht senden'; var legendHtml = ' Gesperrt    ' + ' Geparkt    ' + ' Zurückgestellt'; // userdefined Semestervariable shown independently of personcount, // it is possible to change the semester $("#datasetActionsTop, #datasetActionsBottom").append( "
" + "
" + auswahlStudienart + "
" + "
" + studienSemesterHtml + "
" + "
" + "

" ); $('.auswahlStudienArt').change(function() { InfocenterPersonDataset.changeStudengangsTyp($(this).find('option:selected').val()); }); $("#datasetActionsBottom").append( "
"+ "
"+auswahlAbsageToggle+"
"+ ""+ "
" + "
" + "
" ) $("button.incStudiensemester").click(function() { InfocenterPersonDataset.changeStudiensemesterUservar(1); }); $("button.decStudiensemester").click(function() { InfocenterPersonDataset.changeStudiensemesterUservar(-1); }); $('button.auswahlAbsageBtn').click(function() { var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]"); if(idsel.length <= 0) return FHC_DialogLib.alertInfo("Bitte wählen Sie die Personen aus."); if($('.absgstatusgrund').val() === 'null' || $('.auswahlAbsageStg').val() === 'null') return FHC_DialogLib.alertInfo("Bitte den Absagegrund und Studiengang auswählen."); $(".absageModalForAll").modal("show"); }); $('#saveAbsageForAll').click(function() { InfocenterPersonDataset.saveAbsageForAll(); }); $('a.absageToggle').click(function() { $('#absagePunkte').toggle(); }) var personcount = 0; FHC_AjaxClient.ajaxCallGet( 'widgets/Filters/rowNumber', { filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() }, { successCallback: function(data, textStatus, jqXHR) { if (FHC_AjaxClient.hasData(data)) { personcount = FHC_AjaxClient.getData(data); if (personcount > 0) { var persontext = personcount === 1 ? "Person" : "Personen"; var countHtml = personcount + " " + persontext; // Count Records after Filtering $("#filterTableDataset").bind("filterEnd", function() { var cnt = $("#filterTableDataset tr:visible").length - 2; $(".filterTableDatasetCntFiltered").html(cnt + ' / '); }); $("#datasetActionsTop, #datasetActionsBottom").append( "
"+ "
" + selectAllHtml + "  " + actionHtml + "
"+ "
" + legendHtml + "
"+ "
" + "" + countHtml + "
"+ "
"+ "
" ); $("#datasetActionsBottom").append("

"); InfocenterPersonDataset.setTableActions(); } } }, errorCallback: function(jqXHR, textStatus, errorThrown) { alert(textStatus); } } ); }, /** * sets functionality for the actions above and beneath the person table */ setTableActions: function() { $(".sendMsgsLink").click(function() { var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]"); if(idsel.length > 0) { var form = $("#sendMsgsForm"); form.find("input[type=hidden]").remove(); for (var i = 0; i < idsel.length; i++) { var id = $(idsel[i]).val(); form.append(""); } form.submit(); } }); $(".selectAll").click(function() { //select only trs if not filtered by tablesorter var trs = $("#filterTableDataset tbody tr").not(".filtered"); trs.find("input[name=PersonId\\[\\]]").prop("checked", true); } ); $(".unselectAll").click(function() { var trs = $("#filterTableDataset tbody tr").not(".filtered"); trs.find("input[name=PersonId\\[\\]]").prop("checked", false); } ); //make sure tablesorter local storage for homepage url with and without "/index" shares same values $("#filterTableDataset").bind('filterEnd', function() { if (FHC_JS_DATA_STORAGE_OBJECT.called_method === 'index') { var pathname = window.location.pathname; var storageobj = localStorage.getItem("tablesorter-filters"); var parsed = JSON.parse(storageobj); var regex = new RegExp(/\/index(?!\.ci\.php)/); if (regex.test(pathname)) { parsed[pathname.replace(regex, "")] = parsed[pathname]; } else { parsed[pathname + "/index"] = parsed[pathname]; } storageobj = JSON.stringify(parsed); localStorage.setItem("tablesorter-filters", storageobj); } }); }, changeStudengangsTyp: function(typ) { let change = typ; if (typ === 'all') change = change = 'b\', \'m\', \'l'; FHC_AjaxClient.showVeil(); FHC_AjaxClient.ajaxCallPost( 'system/Variables/changeStudengangsTypVar', { 'name': InfocenterPersonDataset.infocenter_studienganstyp_variablename, 'change': change, }, { successCallback: function(data, textStatus, jqXHR) { if (FHC_AjaxClient.hasData(data)) { // refresh filterwidget with page reload FHC_FilterWidget.reloadDataset(); } }, errorCallback: function(jqXHR, textStatus, errorThrown) { FHC_AjaxClient.hideVeil(); alert(textStatus); } } ); }, /** * initializes change of the uservariable infocenter_studiensemesster, either * to next semester (change > 0) or previous semester (change < 0) */ changeStudiensemesterUservar: function(change) { FHC_AjaxClient.showVeil(); FHC_AjaxClient.ajaxCallPost( 'system/Variables/changeStudiensemesterVar', { 'name': InfocenterPersonDataset.infocenter_studiensemester_variablename, 'change': change }, { successCallback: function(data, textStatus, jqXHR) { if (FHC_AjaxClient.hasData(data)) { // refresh filterwidget with page reload FHC_FilterWidget.reloadDataset(); } }, errorCallback: function(jqXHR, textStatus, errorThrown) { FHC_AjaxClient.hideVeil(); alert(textStatus);//TODO dialoglib } } ); }, saveAbsageForAll: function() { var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]"); var statusgrund = $('.absgstatusgrund').val(); var studiengang = $('.auswahlAbsageStg').val(); var abgeschickt = $('.auswahlAbsageAbgeschickt').val(); var personen = []; for (var i = 0; i < idsel.length; i++) { personen.push($(idsel[i]).val()); } FHC_AjaxClient.ajaxCallPost( 'system/infocenter/InfoCenter/saveAbsageForAll', { 'statusgrund': statusgrund, 'studiengang': studiengang, 'personen' : personen, 'abgeschickt' : abgeschickt }, { successCallback: function(data, textStatus, jqXHR) { if (FHC_AjaxClient.isError(data)) FHC_DialogLib.alertError(FHC_AjaxClient.getError(data)); if (FHC_AjaxClient.hasData(data)) FHC_DialogLib.alertSuccess("Erfolgreich gespeichert.") $(".absageModalForAll").modal("hide"); }, errorCallback: function(jqXHR, textStatus, errorThrown) { FHC_DialogLib.alertError(textStatus); } } ); }, getAbsageData: function() { FHC_AjaxClient.ajaxCallGet( 'system/infocenter/InfoCenter/getAbsageData', {}, { successCallback: function(data, textStatus, jqXHR) { if (FHC_AjaxClient.hasData(data)) { data = FHC_AjaxClient.getData(data); $.each(data.statusgruende, function(key, value){ $('.absgstatusgrund').append($("