381 lines
17 KiB
PHP
Executable File
381 lines
17 KiB
PHP
Executable File
<?php
|
||
require_once("config.inc.php");
|
||
require_once("func_rollenrechte.php");
|
||
$jahrgang = $_COOKIE["jahrgang"];
|
||
|
||
// Rechteüberprüfung
|
||
#$db = dbconnect();
|
||
if ($user_admin == ""){ require("index.php"); exit;} //Wenn man nicht angemeldet ist, darf man nicht auf die Seite
|
||
if(!rore($user_admin,'a_graph_ges','RE')){echo "Keine Rechte";exit;}
|
||
// Rechteüberprüfung ende
|
||
|
||
# Vorschau soll in Jahren begrenzt werden. Aktuell 15 Jahre vom aktuellen Jahrgang ab, bis maximal der letzte Prof in Ruhestand geht
|
||
$query_anzj = $db->query("SELECT wert1
|
||
FROM `prog_parameter`
|
||
WHERE pid =9
|
||
");
|
||
$row_anz_ja = $query_anzj->fetch_array();
|
||
$max_jahr = $row_anz_ja['wert1'] + $jahrgang+1;
|
||
|
||
# Letztes Jahr nicht ausgeben, da dieses nur bis ggf. Mitte des Jahres berechnet wird, wenn der letzte Professor im März 2051 geht
|
||
|
||
$result_last = $db->query("SELECT max(date_format(monat,'%Y')) lastyear
|
||
FROM `prog_tmp_synopse`
|
||
");
|
||
$row_last = $result_last->fetch_array();
|
||
$lastyear = $row_last['lastyear'];
|
||
if($lastyear >= $max_jahr){
|
||
$lastyear = $max_jahr;
|
||
}
|
||
|
||
header('Content-Type: text/html; charset=ISO-8859-1');
|
||
echo"
|
||
<!doctype html>
|
||
<html>
|
||
<head>
|
||
<title> Prognose der Jahre </title>
|
||
<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>
|
||
<script src='chart/Chart.bundle.js'></script>
|
||
<script src='chart/samples/utils.js'></script>
|
||
<script src='chart/hammer.js'></script>
|
||
<script src='chart/zoom/chartjs-plugin-zoom.js'></script>
|
||
<style>
|
||
canvas {
|
||
-moz-user-select: none;
|
||
-webkit-user-select: none;
|
||
-ms-user-select: none;
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
<div style='width: 90%;'>
|
||
<canvas id='canvas'></canvas>
|
||
<progress id='animationProgress' max='1' value='0' style='width: 100%'></progress>
|
||
</div>
|
||
<br>
|
||
<br>
|
||
<script>
|
||
|
||
var progress = document.getElementById('animationProgress');
|
||
var config = {
|
||
type: 'line',
|
||
data: {
|
||
labels: [";
|
||
$query2 = "SELECT distinct date_format(monat, '%Y') jahr
|
||
FROM `prog_tmp_professor_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
ORDER BY date_format(monat, '%Y') ASC";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['jahr']."',";
|
||
}
|
||
echo "
|
||
],
|
||
datasets: [{
|
||
label: 'Vergaberahmen – Übertrag aus dem Vorjahr ',
|
||
fill: false,
|
||
borderColor: window.chartColors.red,
|
||
backgroundColor: window.chartColors.red,
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2)
|
||
,round(sum(besausgaben),2)
|
||
,round(sum(vergaberahmen),2)
|
||
,round(sum(verg_uebertragvj),2)
|
||
,round(sum(leistungsbez),2)
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['vergaberahmen_vj']."',";
|
||
}
|
||
echo"]
|
||
}, {
|
||
label: 'VZÄ x Besoldungsdurchschnitt ',
|
||
fill: false,
|
||
borderColor: window.chartColors.blue,
|
||
backgroundColor: window.chartColors.blue,
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2) jahresrahmen
|
||
,round(sum(besausgaben),2) besausgaben
|
||
,round(sum(vergaberahmen),2) vergaberahmen
|
||
,round(sum(verg_uebertragvj),2) verg_uebertragvj
|
||
,round(sum(leistungsbez),2) leistungsbez
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['jahresrahmen']."',";
|
||
}
|
||
echo"
|
||
]
|
||
}
|
||
, {
|
||
label: 'Besoldungsausgaben ',
|
||
fill: false,
|
||
borderColor: window.chartColors.green,
|
||
backgroundColor: window.chartColors.green,
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2) jahresrahmen
|
||
,round(sum(besausgaben),2) besausgaben
|
||
,round(sum(vergaberahmen),2) vergaberahmen
|
||
,round(sum(verg_uebertragvj),2) verg_uebertragvj
|
||
,round(sum(leistungsbez),2) leistungsbez
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['besausgaben']."',";
|
||
}
|
||
echo"
|
||
]
|
||
}
|
||
, {
|
||
label: 'Vergaberahmen akt. Jahr ',
|
||
fill: false,
|
||
borderColor: window.chartColors.yellow,
|
||
backgroundColor: window.chartColors.yellow,
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2) jahresrahmen
|
||
,round(sum(besausgaben),2) besausgaben
|
||
,round(sum(vergaberahmen),2) vergaberahmen
|
||
,round(sum(verg_uebertragvj),2) verg_uebertragvj
|
||
,round(sum(leistungsbez),2) leistungsbez
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['vergaberahmen']."',";
|
||
}
|
||
echo"
|
||
]
|
||
}
|
||
|
||
, {
|
||
label: 'Vergaberahmen mit Übertrag aus Vorjahr ',
|
||
fill: false,
|
||
borderColor: window.chartColors.black,
|
||
backgroundColor: window.chartColors.black,
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2) jahresrahmen
|
||
,round(sum(besausgaben),2) besausgaben
|
||
,round(sum(vergaberahmen),2) vergaberahmen
|
||
,round(sum(verg_uebertragvj),2) verg_uebertragvj
|
||
,round(sum(leistungsbez),2) leistungsbez
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['verg_uebertragvj']."',";
|
||
}
|
||
echo"
|
||
]
|
||
}
|
||
, {
|
||
label: 'Summe der Leistungsbezüge ',
|
||
fill: false,
|
||
borderColor: window.chartColors.orange,
|
||
backgroundColor: window.chartColors.orange,
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2) jahresrahmen
|
||
,round(sum(besausgaben),2) besausgaben
|
||
,round(sum(vergaberahmen),2) vergaberahmen
|
||
,round(sum(verg_uebertragvj),2) verg_uebertragvj
|
||
,round(sum(leistungsbez),2) leistungsbez
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['leistungsbez']."',";
|
||
}
|
||
echo"
|
||
]
|
||
}
|
||
|
||
/* Wird auskommentiert, da es dieselben Werte sind, wie die rote Vorjahreskurve, nur um ein Jahr versetzt.
|
||
, {
|
||
label: 'Vergaberahmen nächstes Jahr ',
|
||
fill: false,
|
||
borderColor: 'rgba(47, 132, 71, 0.8)',
|
||
backgroundColor: 'rgba(47, 132, 71, 0.8)',
|
||
data: [";
|
||
$query2 = "SELECT date_format(monat,'%Y') jahr
|
||
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
|
||
,round(sum(jahresrahmen),2) jahresrahmen
|
||
,round(sum(besausgaben),2) besausgaben
|
||
,round(sum(vergaberahmen),2) vergaberahmen
|
||
,round(sum(verg_uebertragvj),2) verg_uebertragvj
|
||
,round(sum(leistungsbez),2) leistungsbez
|
||
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
|
||
FROM `prog_tmp_synopse`
|
||
WHERE date_format(monat,'%Y') < '$lastyear'
|
||
GROUP BY date_format(monat,'%Y')
|
||
ORDER BY jahr
|
||
";
|
||
$result2 = $db->query( $query2)
|
||
or die ("Cannot execute query2");
|
||
|
||
while ($row2 = $result2->fetch_array()){
|
||
echo "'".$row2['vergaberahmen_nj']."',";
|
||
}
|
||
echo"
|
||
]
|
||
}
|
||
*/
|
||
]
|
||
},
|
||
options: {
|
||
title:{
|
||
display:true,
|
||
text: 'Prognose der Leistungsbezuege '
|
||
},
|
||
tooltips: {
|
||
callbacks: {
|
||
label: function(tooltipItems, data) {
|
||
value = tooltipItems.yLabel.toString();
|
||
value = value.replace(/\B(?=(\d{3})+(?!\d))/g, '|');
|
||
value = value.replace('.', ',');
|
||
value = value.replace('|', '.');
|
||
value = value.replace('|', '.');
|
||
value = value.split(',');
|
||
if (typeof value[1] !== 'undefined') { // Wenn Nachkommastelle vorhanden
|
||
value1 = value[1];
|
||
}else{
|
||
value1 = '00';
|
||
}
|
||
//if ?(then=?) :(else)
|
||
value1 = value1.length == 1 ? value1+'0' : value1;
|
||
value = value[0]+','+value1;
|
||
return data.datasets[tooltipItems.datasetIndex].label +': ' + value + ' €';
|
||
}
|
||
}
|
||
|
||
},
|
||
animation: {
|
||
duration: 1000,
|
||
onProgress: function(animation) {
|
||
progress.value = animation.animationObject.currentStep / animation.animationObject.numSteps;
|
||
},
|
||
onComplete: function(animation) {
|
||
window.setTimeout(function() {
|
||
progress.value = 0;
|
||
}, 1000);
|
||
}
|
||
},
|
||
scales: {
|
||
yAxes: [
|
||
{
|
||
ticks: {
|
||
callback: function(value, index, values) {
|
||
// Convert the number to a string and splite the string every 3 charaters from the end
|
||
value = value.toString();
|
||
value = value.split(/(?=(?:...)*$)/);
|
||
|
||
// Convert the array to a string and format the output
|
||
value = value.join('.');
|
||
return value+' €';
|
||
}
|
||
},
|
||
scaleLabel: {
|
||
display: true,
|
||
labelString: 'Betrag in Euro'
|
||
}
|
||
}
|
||
]
|
||
},
|
||
// Container for pan options
|
||
pan: {
|
||
// Boolean to enable panning
|
||
enabled: true,
|
||
|
||
// Panning directions. Remove the appropriate direction to disable
|
||
// Eg. 'y' would only allow panning in the y direction
|
||
mode: 'y',
|
||
threshold: 10
|
||
},
|
||
|
||
// Container for zoom options
|
||
zoom: {
|
||
// Boolean to enable zooming
|
||
enabled: true,
|
||
|
||
// Zooming directions. Remove the appropriate direction to disable
|
||
// Eg. 'y' would only allow zooming in the y direction
|
||
mode: 'y',
|
||
},
|
||
},
|
||
|
||
};
|
||
|
||
window.onload = function() {
|
||
var ctx = document.getElementById('canvas').getContext('2d');
|
||
window.myLine = new Chart(ctx, config);
|
||
};
|
||
|
||
document.getElementById('randomizeData').addEventListener('click', function() {
|
||
config.data.datasets.forEach(function(dataset) {
|
||
dataset.data = dataset.data.map(function() {
|
||
return randomScalingFactor();
|
||
});
|
||
});
|
||
|
||
window.myLine.update();
|
||
});
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|
||
";
|
||
|
||
?>
|