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

282 lines
11 KiB
PHP
Executable File

<?php
if(isset($_GET["jahrgang"])){
$jahrgang=$_GET["jahrgang"];
}else{
$jahrgang=$_COOKIE["jahrgang"];
}
require_once("config.inc.php");
require_once("func_rollenrechte.php");
// 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,'j_einzel_gr','RE')){echo "Keine Rechte";exit;}
// Rechteüberprüfung ende
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: 80%;'>
<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: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
datasets: [{
label: 'Vergaberahmen Monatsende ',
fill: false,
borderColor: window.chartColors.red,
backgroundColor: window.chartColors.red,
data: [";
$query2 = "SELECT date_format(monat,'%Y-%m') jahr
,round(vergaberahmen_vj,2)*12 vergaberahmen_vj
,round(jahresrahmen,2) jahresrahmen
,round(besausgaben,2) besausgaben
,round(vergaberahmen,2) vergaberahmen
,round(verg_uebertragvj,2) verg_uebertragvj
,round(leistungsbez,2) leistungsbez
,round(vergaberahmen_nj,2) vergaberahmen_nj
,round(vergaberahmen-leistungsbez,2) monatsuebertrag
FROM `prog_tmp_synopse`
WHERE date_format(monat,'%Y') = '$jahrgang'
GROUP BY date_format(monat,'%Y-%m')
ORDER BY jahr
";
$result2 = $db->query( $query2)
or die ("Cannot execute query2");
while ($row2 = $result2->fetch_array()){
if(!isset($monatsuebertrag)){
# Jahresstartwert definieren
$monatsuebertrag = $row2['vergaberahmen_vj'];
}
$monatsuebertrag = $monatsuebertrag+$row2['monatsuebertrag'];
echo "'".$monatsuebertrag."',";
}
echo"]
}, {
label: 'Monatlicher Jahresrahmen ',
fill: false,
borderColor: window.chartColors.blue,
backgroundColor: window.chartColors.blue,
data: [";
$query2 = "SELECT date_format(monat,'%Y-%m') jahr
,round(vergaberahmen_vj,2)*12 vergaberahmen_vj
,round(jahresrahmen,2) jahresrahmen
,round(besausgaben,2) besausgaben
,round(vergaberahmen,2) vergaberahmen
,round(verg_uebertragvj,2) verg_uebertragvj
,round(leistungsbez,2) leistungsbez
,round(vergaberahmen_nj,2) vergaberahmen_nj
,round(vergaberahmen-leistungsbez,2) monatsuebertrag
FROM `prog_tmp_synopse`
WHERE date_format(monat,'%Y') = '$jahrgang'
GROUP BY date_format(monat,'%Y-%m')
ORDER BY jahr
";
$result2 = $db->query( $query2)
or die ("Cannot execute query2");
while ($row2 = $result2->fetch_array()){
echo "'".$row2['jahresrahmen']."',";
}
echo"
]
}
, {
label: 'Monatliche Leistungsbezüge ',
fill: false,
borderColor: window.chartColors.orange,
backgroundColor: window.chartColors.orange,
data: [";
$query2 = "SELECT date_format(monat,'%Y-%m') jahr
,round(vergaberahmen_vj,2)*12 vergaberahmen_vj
,round(jahresrahmen,2) jahresrahmen
,round(besausgaben,2) besausgaben
,round(vergaberahmen,2) vergaberahmen
,round(verg_uebertragvj,2) verg_uebertragvj
,round(leistungsbez,2) leistungsbez
,round(vergaberahmen_nj,2) vergaberahmen_nj
,round(vergaberahmen-leistungsbez,2) monatsuebertrag
FROM `prog_tmp_synopse`
WHERE date_format(monat,'%Y') = '$jahrgang'
GROUP BY date_format(monat,'%Y-%m')
ORDER BY jahr
";
$result2 = $db->query( $query2)
or die ("Cannot execute query2");
while ($row2 = $result2->fetch_array()){
echo "'".$row2['leistungsbez']."',";
}
echo"
]
}
]
},
options: {
title:{
display:true,
text: 'Prognose der Leistungsbezuege $jahrgang'
},
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>
";
#$heute_format = date("Y", mktime(0, 0, 0, 0, 0, date("Y"))); // ISO-8601 Format wie in der Datenbank: Formatierung f&uuml;r Vergleiche erforderlich
# Der erste Wert wird vorgegeben
$result_min = $db->query("SELECT min(date_format(monat, '%Y')) jahr
FROM prog_tmp_professor_synopse");
$row_min = $result_min->fetch_array();
# Wann geht der letzte Prof in Ruhestand
$result_max = $db->query("SELECT max(date_format(weggang,'%Y')) weggang
FROM prog_tmp_professor");
$row_max = $result_max->fetch_array();
# Vor zurückblättern
$jahrgang_next = $jahrgang+1;
$jahrgang_prev = $jahrgang-1;
echo "<table width='100%'>
<tr>";
if($row_min['jahr'] < $jahrgang){
echo "<td width=50% align=center><a href=?jahrgang=$jahrgang_prev>Zurück</a></td>";
}else{
echo "<td width=50%>";
}
if($row_max['weggang'] > $jahrgang){
echo "<td width=50% align=center><a href=?jahrgang=$jahrgang_next>Nächstes Jahr</a></td>";
}else{
echo "<td width=50%>";
}
echo "</tr>
</table>";
?>