This commit is contained in:
Andreas Österreicher
2009-10-19 14:01:04 +00:00
parent 424d6c1b7d
commit 4a3fa6f28c
+107 -24
View File
@@ -1,12 +1,32 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/vilesci.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>
*/
/*
* Liefert eine Statistik ueber folgende Daten des LV-Plans:
* - Wie viele Lehreinheiten sind verplant
* - Wie viele Stunden sind verplant
* - Wie viel % der Stunden sind mehrfach verplant
* aufgesplittet nach Studiensemester, Studiengang und Ausbildungssemester
*/
require_once('../../../config/vilesci.config.inc.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/studiensemester.class.php');
@@ -34,6 +54,15 @@ else
$stsem_obj = new studiensemester();
$stsem_obj->getAll();
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/vilesci.css" rel="stylesheet" type="text/css">
</head>
<body>';
echo '<h2>Übersicht - Verplanung der Lehreinheiten ('.$variable->variable->db_stpl_table.')</h2>';
echo '<form method="GET">Studiensemester <select name="stsem">';
@@ -46,9 +75,11 @@ echo '</select> <input type="submit" value="Anzeigen"></form>';
$gesamt=0;
$gesamt_verplant=0;
$gesamt_ps=0;
$gesamt_ps_verplant=0;
$gesamt_ps_offen=0;
$content='';
function drawprogress($prozent)
//Zeichnet den Fortschrittsbalken
function drawprogress($prozent, $ueberplanung=0)
{
$color='red';
if($prozent>=80)
@@ -64,13 +95,22 @@ function drawprogress($prozent)
$bordercolor='2px solid red';
else
$bordercolor='1px solid black';
return '<div style="border: '.$bordercolor.'; width: 300px"><div style="background-color: '.$color.'; width: '.(intval($prozent*3)).'px">&nbsp;'.$prozent.'%</div></div>';
$content = '<div style="border: '.$bordercolor.'; width: 300px"><div style="background-color: '.$color.'; width: '.(intval($prozent*3)).'px">&nbsp;'.$prozent.'%</div>';
if($ueberplanung>0)
$content.= '<div style="background-color: gray; width: '.(intval($ueberplanung*3)).'px">&nbsp;+'.$ueberplanung.'% Überbuchung</div>';
$content.= '</div>';
return $content;
}
//Alle Studiengaenge durchlaufen
$content.= "\n<table>";
$content.= "\n<tr><th>Studiengang/Semester</th><th></th><th></th><th>Lehreinheiten</th><th></th><th>Stunden</th></tr>";
$content.= "\n<tr><th>Studiengang/Semester</th><th></th><th colspan='2'>Lehreinheiten</th><th></th><th colspan='2'>Stunden</th></tr>";
foreach($stg->result as $row_stg)
{
$content.= "\n<tr><td colspan='2'><h3>".$row_stg->kuerzel.'</h3></td></tr>';
//Anzahl der Lehreinheiten holen
$qry = "SELECT count(*) as anzahl, semester
FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem'
@@ -81,17 +121,17 @@ foreach($stg->result as $row_stg)
if($result_sem = $db->db_query($qry))
{
//echo $qry;
while($row_sem = $db->db_fetch_object($result_sem))
{
$content.= '<tr><td>';
$content.= $row_sem->semester.'.Semester </td><td>';
//Anzahl der verplanten Lehreinheiten holen
$qry = "SELECT count(*) as verplant FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem' AND semester='$row_sem->semester' AND tbl_lehreinheit.lehre
AND lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_".$variable->variable->db_stpl_table." WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)
AND lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)";
//echo $qry;
if($result_verplant = $db->db_query($qry))
{
if($row_verplant = $db->db_fetch_object($result_verplant))
@@ -106,6 +146,7 @@ foreach($stg->result as $row_stg)
}
$content.= '</td><td width="20px"></td><td>';
//Planstunden holen
$qry = "SELECT sum(planstunden) as planstunden
FROM
lehre.tbl_lehreinheit
@@ -121,13 +162,13 @@ foreach($stg->result as $row_stg)
{
if($row_ps = $db->db_fetch_object($result_ps))
{
$gesamt_ps+=$row_ps->planstunden;
$ps = $row_ps->planstunden;
}
}
//verplante Stunden aus LVPlan holen
$qry = "SELECT count(*) as verplant
FROM (SELECT distinct datum, stunde, tbl_lehreinheit.unr, tbl_".$variable->variable->db_stpl_table.".mitarbeiter_uid
FROM (SELECT distinct datum, stunde, tbl_lehreinheit.lehreinheit_id, tbl_".$variable->variable->db_stpl_table.".mitarbeiter_uid
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
@@ -140,21 +181,55 @@ foreach($stg->result as $row_stg)
tbl_lehreinheit.lehre
) a";
$stdverplant=0;
//echo $qry;
if($result_std = $db->db_query($qry))
{
if($row_std = $db->db_fetch_object($result_std))
{
$gesamt_ps_verplant+=$row_std->verplant;
$stdverplant = $row_std->verplant;
}
}
//offene Stunden ermitteln
$qry = "
SELECT distinct lehreinheit_id, planstunden, mitarbeiter_uid FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND semester='$row_sem->semester' AND studiensemester_kurzbz='$stsem' AND tbl_lehreinheit.lehre";
$offen=0;
if($result_std = $db->db_query($qry))
{
while($row_std = $db->db_fetch_object($result_std))
{
$qry = "SELECT count(*) as anzahl FROM lehre.tbl_".$variable->variable->db_stpl_table." WHERE lehreinheit_id='$row_std->lehreinheit_id' AND mitarbeiter_uid='$row_std->mitarbeiter_uid'";
if($result_o = $db->db_query($qry))
{
if($row_o = $db->db_fetch_object($result_o))
{
if($row_o->anzahl<$row_std->planstunden)
$offen+=$row_std->planstunden-$row_o->anzahl;
}
}
}
}
$gesamt_ps+=$ps;
$gesamt_ps_offen+=$offen;
$content.= "($stdverplant/$ps)";
$prozent = round($stdverplant*100/$ps,2);
$content.= '</td><td>';
$content.=drawprogress($prozent);
$prozent = round(($ps-$offen)*100/$ps,2);
//Ueberbuchung berechnen
/*
Es werden teilweise Stunden mehrfach verplant damit Lektoren die Stunden der anderen
Lektoren der gleichen LV sehen koennen. Deshalb ist es auch notwendig die offenen Stunden aus der DB zu holen
anstatt zu berechnen
*/
$prozentueber = round(($stdverplant-$ps+$offen)*100/$ps,2);
$content.= '</td><td nowrap>';
$content.=drawprogress($prozent, $prozentueber);
$content.= 'offene Stunden: '.$offen;
$content.='</td></tr>';
//echo $qry;
}
$content.='<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';
}
@@ -164,9 +239,17 @@ foreach($stg->result as $row_stg)
}
}
$content.= '</table>';
//Prozent der gesamten verplanten Lehreinheiten berechnen und anzeigen
$prozent = round($gesamt_verplant*100/$gesamt,2);
echo "<br><hr>\n<table><tr><td><b>Gesamtstatus:</b> (".$gesamt_verplant.'/'.$gesamt.')</td><td width="20px"></td><td>';
echo "<br><hr>\n<table><tr><td><b>Lehreinheiten:</b> (".$gesamt_verplant.'/'.$gesamt.')</td><td width="20px"></td><td>';
echo drawprogress($prozent);
echo "</td></tr><tr><td>";
//Prozent der gesamten verplanten Stunden berechnen und anzeigen
$gesamt_ps_verplant = ($gesamt_ps-$gesamt_ps_offen);
$prozent = round($gesamt_ps_verplant*100/$gesamt_ps,2);
echo "<b>Stunden:</b> (".$gesamt_ps_verplant.'/'.$gesamt_ps.')</td><td width="20px"></td><td>';
echo drawprogress($prozent);
echo "</td></tr></table>\n<hr>";
echo $content;
?>