From c40cfc83bc248d567dcd6c6d8172e9f22ba8a4b1 Mon Sep 17 00:00:00 2001 From: Andreas Moik Date: Tue, 8 Mar 2016 10:59:50 +0100 Subject: [PATCH] Excel-export for aliquote reduction --- content/statistik/dokumente.xls.php | 8 +- include/meta/js_utils.php | 2 +- vilesci/personen/aliquote_reduktion.json.php | 131 ++++++++++++++++++- vilesci/personen/aliquote_reduktion.php | 54 +++++++- 4 files changed, 184 insertions(+), 11 deletions(-) diff --git a/content/statistik/dokumente.xls.php b/content/statistik/dokumente.xls.php index e6257744f..85330ce45 100644 --- a/content/statistik/dokumente.xls.php +++ b/content/statistik/dokumente.xls.php @@ -127,7 +127,7 @@ if($studiengang_kz!='') $worksheet->write($zeile,++$spalte, $row->status); if(mb_strlen($row->status)>$maxlength[$spalte]) $maxlength[$spalte]=mb_strlen($row->status); - + $worksheet->write($zeile,++$spalte, $row->semester, $format_center); if(mb_strlen($row->semester)>$maxlength[$spalte]) $maxlength[$spalte]=mb_strlen($row->semester); @@ -142,11 +142,11 @@ if($studiengang_kz!='') } } } - + //Die Breite der Spalten setzen foreach($maxlength as $i=>$breite) $worksheet->setColumn($i, $i, $breite+2); - + $workbook->close(); } else @@ -166,4 +166,4 @@ else '; } -?> \ No newline at end of file +?> diff --git a/include/meta/js_utils.php b/include/meta/js_utils.php index 077b8ff0e..b0783886d 100644 --- a/include/meta/js_utils.php +++ b/include/meta/js_utils.php @@ -77,7 +77,7 @@ echo ' } else { - die(result); + die(res.message); } }).fail(function(jqXHR, status) diff --git a/vilesci/personen/aliquote_reduktion.json.php b/vilesci/personen/aliquote_reduktion.json.php index 7cbd7e2d3..c6878855a 100644 --- a/vilesci/personen/aliquote_reduktion.json.php +++ b/vilesci/personen/aliquote_reduktion.json.php @@ -28,6 +28,8 @@ require_once(dirname(__FILE__).'/../../include/studiengang.class.php'); require_once(dirname(__FILE__).'/../../include/studiensemester.class.php'); require_once(dirname(__FILE__).'/../../include/prestudent.class.php'); require_once(dirname(__FILE__).'/../../include/studienplatz.class.php'); +require_once(dirname(__FILE__).'/../../include/Excel/excel.php'); +require_once(dirname(__FILE__).'/../../include/dokument.class.php'); $user = get_uid(); @@ -110,8 +112,135 @@ switch($action) returnAJAX(true, ""); break; + case "dlTable": + + if(!isset($_REQUEST["students"])) + die("keine Studenten erhalten"); + $students = json_decode($_REQUEST["students"]); + + + + // Creating a workbook + $workbook = new Spreadsheet_Excel_Writer(); + + // sending HTTP headers + $workbook->send('aliquote_reduktion_'.$studiengang_kz.'.xls'); + $workbook->setVersion(8); + + // Creating a worksheet + $worksheet =& $workbook->addWorksheet("Tabelle"); + $worksheet->setInputEncoding('utf-8'); + + $format_bold =& $workbook->addFormat(); + $format_bold->setBold(); + + $format_float =& $workbook->addFormat(); + $format_float->setNumFormat("0.0000"); + + + $spalte=0; + $zeile=0; + + $worksheet->write($zeile,$spalte,'ID',$format_bold); + $maxlength[$spalte]=3; + $worksheet->write($zeile,++$spalte,'Nachname',$format_bold); + $maxlength[$spalte]=7; + $worksheet->write($zeile,++$spalte,'Vorname',$format_bold); + $maxlength[$spalte]=7; + $worksheet->write($zeile,++$spalte,'ZGV Gruppe',$format_bold); + $maxlength[$spalte]=8; + $worksheet->write($zeile,++$spalte,'Reihung',$format_bold); + $maxlength[$spalte]=8; + $worksheet->write($zeile,++$spalte,'RT Gesamt',$format_bold); + $maxlength[$spalte]=8; + $worksheet->write($zeile,++$spalte,'Status',$format_bold); + $maxlength[$spalte]=8; + $worksheet->write($zeile,++$spalte,'Auswahl',$format_bold); + $maxlength[$spalte]=8; + + + usort($students, "studentsSort"); + foreach($students as $s) + { + $zeile++; + $spalte=0; + + $worksheet->writeNumber($zeile,$spalte,$s->prestudent_id); + if(mb_strlen($s->prestudent_id)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->prestudent_id); + + $worksheet->write($zeile,++$spalte,$s->nachname); + if(mb_strlen($s->nachname)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->nachname); + + $worksheet->write($zeile,++$spalte, $s->vorname); + if(mb_strlen($s->vorname)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->vorname); + + if(isset($s->bezeichnung) && $s->bezeichnung) + { + $worksheet->write($zeile,++$spalte, $s->bezeichnung); + if(mb_strlen($s->bezeichnung)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->bezeichnung); + } + else + { + $worksheet->write($zeile,++$spalte, ""); + if(mb_strlen("")>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen(""); + } + + $worksheet->writeNumber($zeile,++$spalte, $s->seqPlace); + if(mb_strlen($s->seqPlace)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->seqPlace); + + if(isset($s->rt_gesamtpunkte) && $s->rt_gesamtpunkte) + { + $worksheet->writeNumber($zeile,++$spalte, $s->rt_gesamtpunkte, $format_float); + if(mb_strlen($s->rt_gesamtpunkte)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->rt_gesamtpunkte); + } + else + { + $worksheet->write($zeile,++$spalte, ""); + if(mb_strlen("")>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen(""); + } + + $worksheet->write($zeile,++$spalte, $s->laststatus); + if(mb_strlen($s->laststatus)>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen($s->laststatus); + + if(isset($s->selected) && $s->selected) + { + $worksheet->write($zeile,++$spalte, "x"); + if(mb_strlen("x")>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen("x"); + } + else + { + $worksheet->write($zeile,++$spalte, ""); + if(mb_strlen("")>$maxlength[$spalte]) + $maxlength[$spalte]=mb_strlen(""); + } + } + + //Die Breite der Spalten setzen + foreach($maxlength as $i=>$breite) + $worksheet->setColumn($i, $i, $breite+2); + + $workbook->close(); + break; + default: - returnAJAX(false,"eine Aktion erhalten"); + returnAJAX(false,"unknown action: " . $action); } + +function studentsSort($a, $b) +{ + return $a->seqPlace > $b->seqPlace; +} + + ?> diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php index afc85b84d..057dbe503 100644 --- a/vilesci/personen/aliquote_reduktion.php +++ b/vilesci/personen/aliquote_reduktion.php @@ -75,7 +75,7 @@ aqr.studiensemester = []; aqr.studienplaetze = []; aqr.actualSequence = 1; - SERVICE_TARGET = "aliquote_reduktion.json.php" + SERVICE_TARGET = "aliquote_reduktion.json.php"; if(!aqr.studiensemester_kurzbz) die("Es wurde kein Studiensemester angegeben"); @@ -330,6 +330,49 @@ aqr.recursiveChoose(needed, zgvElems); } } + + aqr.download = function() + { + var filteredStudents = []; + + + aqr.studenten.forEach(function(i) + { + if(i.applicant) + { + filteredStudents.push(i); + } + }); + + + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "aliquote_reduktion.json.php"); + form.setAttribute("target", "view"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", "action"); + hiddenField.setAttribute("value", "dlTable"); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", "studiengang_kz"); + hiddenField.setAttribute("value", aqr.selectedStudiengang.studiengang_kz); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", "students"); + hiddenField.setAttribute("value", JSON.stringify(filteredStudents)); + form.appendChild(hiddenField); + + document.body.appendChild(form); + + + form.submit(); + } }); @@ -349,8 +392,8 @@ ID - Vorname Nachname + Vorname ZGV Gruppe Reihung RT Gesamt @@ -362,8 +405,8 @@ {{stud.prestudent_id}} - {{stud.vorname}} {{stud.nachname}} + {{stud.vorname}} {{stud.bezeichnung}} Keine Angabe {{stud.seqPlace}} @@ -378,14 +421,15 @@ +

Bereits aufgenommene

- + @@ -396,8 +440,8 @@ - +
IDVorname NachnameVorname ZGV Gruppe Reihung RT Gesamt
{{stud.prestudent_id}}{{stud.vorname}} {{stud.nachname}}{{stud.vorname}} {{stud.bezeichnung}} Keine Angabe {{stud.seqPlace}}