prognose_kehl/graph_jahre.php
2023-01-30 08:01:11 +01:00

381 lines
17 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>
";
?>