Filter für Raumübersicht

- Neue Funktion getOrte lädt alle Orte mit den entsprechenden Parametern
- Raumübersicht kann nun gefiltert werden.
- Außerdem wurde der Tablesorter mit Filter hinzugefügt.
This commit is contained in:
Manfred Kindl
2017-11-13 13:18:52 +01:00
parent b891f442f7
commit 0bd3fbfacc
2 changed files with 331 additions and 68 deletions
+68
View File
@@ -121,6 +121,74 @@ class ort extends basis_db
}
return true;
}
/**
* Laedt alle Orte die den Parametern entsprechen
* @param boolean $lehre Optional.
* @param boolean $reservieren Optional.
* @param boolean $aktiv Optional.
* @param int $standort_id Optional.
* @param string $gebaeudeteil Optional.
* @param string $oe_kurzbz Optional.
* @return true wenn ok, false im Fehlerfall
*/
public function getOrte($lehre = null, $reservieren = null, $aktiv = null, $standort_id = '', $gebaeudeteil = '', $oe_kurzbz = '')
{
$qry = 'SELECT * FROM public.tbl_ort WHERE 1=1 ';
if (!is_null($lehre) && is_bool($lehre))
$qry .= ' AND lehre = '.$this->db_add_param($lehre, FHC_BOOLEAN);
if (!is_null($reservieren) && is_bool($reservieren))
$qry .= ' AND reservieren = '.$this->db_add_param($reservieren, FHC_BOOLEAN);
if (!is_null($aktiv) && is_bool($aktiv))
$qry .= ' AND aktiv = '.$this->db_add_param($aktiv, FHC_BOOLEAN);
if ($standort_id != '' && is_numeric($standort_id))
$qry .= ' AND standort_id = '.$this->db_add_param($standort_id, FHC_INTEGER);
if ($gebaeudeteil != '')
$qry .= ' AND gebteil = '.$this->db_add_param($gebaeudeteil);
if ($oe_kurzbz != '')
$qry .= ' AND oe_kurzbz = '.$this->db_add_param($oe_kurzbz);
$qry .= ' ORDER BY ort_kurzbz;';
if (!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Laden der Datensaetze';
return false;
}
while ($row = $this->db_fetch_object())
{
$ort_obj = new ort();
$ort_obj->ort_kurzbz = $row->ort_kurzbz;
$ort_obj->bezeichnung = $row->bezeichnung;
$ort_obj->planbezeichnung = $row->planbezeichnung;
$ort_obj->max_person = $row->max_person;
$ort_obj->aktiv = $this->db_parse_bool($row->aktiv);
$ort_obj->lehre = $this->db_parse_bool($row->lehre);
$ort_obj->lageplan = $row->lageplan;
$ort_obj->dislozierung = $row->dislozierung;
$ort_obj->kosten = $row->kosten;
$ort_obj->reservieren = $this->db_parse_bool($row->reservieren);
$ort_obj->ausstattung = $row->ausstattung;
$ort_obj->stockwerk = $row->stockwerk;
$ort_obj->standort_id = $row->standort_id;
$ort_obj->telefonklappe = $row->telefonklappe;
$ort_obj->content_id = $row->content_id;
$ort_obj->m2 = $row->m2;
$ort_obj->oe_kurzbz = $row->oe_kurzbz;
$ort_obj->gebteil = $row->gebteil;
$ort_obj->arbeitsplaetze = $row->arbeitsplaetze;
$this->result[] = $ort_obj;
}
return true;
}
/**
* Laedt einen Ort
+263 -68
View File
@@ -24,6 +24,8 @@ require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/ort.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/organisationseinheit.class.php');
require_once('../../include/standort.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -34,7 +36,22 @@ $rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/ort', null, 's'))
die('Sie haben keine Rechte fuer diese Seite');
die($rechte->errormsg);
$organisationseinheit = new organisationseinheit();
$organisationseinheit->getAll();
$oe_arr = array();
foreach ($organisationseinheit->result as $oe)
{
$oe_arr[$oe->oe_kurzbz] = $oe->organisationseinheittyp_kurzbz.' '.$oe->bezeichnung;
}
$lehre = (isset($_GET['selectlehre'])?true:'');
$reservieren = (isset($_GET['selectreservieren'])?true:'');
$aktiv = (isset($_GET['sendform'])?(isset($_GET['selectaktiv'])?true:''):true);
$standort_id = (isset($_GET['standort_id'])?$_GET['standort_id']:'');
$gebaeudeteil = (isset($_GET['selectgebaeudeteil'])?$_GET['selectgebaeudeteil']:'');
$oe_kurzbz = (isset($_GET['oe_kurzbz'])?$_GET['oe_kurzbz']:'');
// Speichern der Daten
if(isset($_POST['ort_kurzbz']))
@@ -46,7 +63,7 @@ if(isset($_POST['ort_kurzbz']))
if(isset($_POST['lehre']))
{
if(!$rechte->isBerechtigt('basis/ort', null, 'sui'))
die('Sie haben keine Rechte fuer diese Seite');
die($rechte->errormsg);
$lv_obj = new ort();
if($lv_obj->load($_POST['ort_kurzbz']))
@@ -67,7 +84,7 @@ if(isset($_POST['ort_kurzbz']))
if(isset($_POST['reservieren']))
{
if(!$rechte->isBerechtigt('basis/ort', null, 'sui'))
die('Sie haben keine Rechte fuer diese Seite');
die($rechte->errormsg);
$lv_obj = new ort();
if($lv_obj->load($_POST['ort_kurzbz']))
{
@@ -87,7 +104,7 @@ if(isset($_POST['ort_kurzbz']))
if(isset($_POST['aktiv']))
{
if(!$rechte->isBerechtigt('basis/ort', null, 'sui'))
die('Sie haben keine Rechte fuer diese Seite');
die($rechte->errormsg);
$lv_obj = new ort();
if($lv_obj->load($_POST['ort_kurzbz']))
{
@@ -104,66 +121,177 @@ if(isset($_POST['ort_kurzbz']))
}
}
$sg = new ort();
if (!$sg->getAll())
die($sg->errormsg);
$htmlstr = '<a href="raum_details.php" target="detail_raum">Neuer Raum </a><br>';
$htmlstr .= '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">';
$htmlstr = "
<table class='tablesorter' id='t1'>
<thead>
<tr>
<th></th>
<th>Kurzbezeichnung</th>
<th>Bezeichnung</th>
<th>Planbezeichnung</th>
<th>Max. Person</th>
<th>Arbeitsplaetze</th>
<th>Lehre</th>
<th>Reservieren</th>
<th>Aktiv</th>
<th>Kosten</th>
<th>Stockwerk</th>
</tr>
</thead>
<tbody>\n";
$htmlstr.= ' Lehre<INPUT type="checkbox" name="selectlehre" id="selectlehre" '.($lehre=='true'?'checked':'').'>';
$htmlstr.= ' Reservieren<INPUT type="checkbox" name="selectreservieren" id="selectreservieren" '.($reservieren=='true'?'checked':'').'>';
$htmlstr.= ' Aktiv<INPUT type="checkbox" name="selectaktiv" id="selectaktiv" '.($aktiv=='true'?'checked':'').'>';
$htmlstr.= '<br>';
foreach ($sg->result as $twraum)
// Select Standort ID
$htmlstr.= 'Standort <SELECT name="standort_id">
<OPTION value="">-- keine Auswahl --</OPTION>';
$standort = new standort();
if($standort->getStandorteWithTyp('Intern'))
{
$htmlstr .= " <tr>\n";
$htmlstr .= ' <td><a href="raum_details.php?type=raumtyp&ort_kurzbz='.$twraum->ort_kurzbz.'" target="detail_raum" title="Raumtyp zuteilen" ><img src="../../skin/images/entitlement-pot.png" height="20px"/></a></td>';
$htmlstr .= " <td><a href='raum_details.php?ort_kurzbz=".$twraum->ort_kurzbz."' target='detail_raum'>".$twraum->ort_kurzbz."</a></td>\n";
$htmlstr .= " <td>".$twraum->bezeichnung."</td>\n";
$htmlstr .= " <td>".$twraum->planbezeichnung."</td>\n";
$htmlstr .= " <td>".$twraum->max_person."</td>\n";
$htmlstr .= " <td>".$twraum->arbeitsplaetze."</td>\n";
// Lehre boolean setzen
$htmlstr .= " <div style='display: none'>".$db->convert_html_chars($twraum->lehre)."</div> <td align='center'><a href='#Lehre' onclick='changeboolean(\"".$twraum->ort_kurzbz."\",\"lehre\"); return false'>";
$htmlstr .= " <input type='hidden' id='lehre".$twraum->ort_kurzbz."' value='".($twraum->lehre=="t"?"true":"false")."'>";
$htmlstr .= " <img id='lehreimg".$twraum->ort_kurzbz."' alt='Lehre' title='Lehre' src='../../skin/images/".($twraum->lehre=="t"?"true.png":"false.png")."' height='20'>";
$htmlstr .= " </a></td>";
// Reservieren boolean setzen
$htmlstr .= " <div style='display: none'>".$db->convert_html_chars($twraum->reservieren)."</div> <td align='center'><a href='#Reservieren' onclick='changeboolean(\"".$twraum->ort_kurzbz."\",\"reservieren\"); return false'>";
$htmlstr .= " <input type='hidden' id='reservieren".$twraum->ort_kurzbz."' value='".($twraum->reservieren=="t"?"true":"false")."'>";
$htmlstr .= " <img id='reservierenimg".$twraum->ort_kurzbz."' alt='Reservieren' title='Reservieren' src='../../skin/images/".($twraum->reservieren=="t"?"true.png":"false.png")."' style='margin:0;' height='20'>";
$htmlstr .= " </a></td>";
// Aktiv boolean setzen
$htmlstr .= " <div style='display: none'>".$db->convert_html_chars($twraum->aktiv)."</div> <td align='center'><a href='#Aktiv' onclick='changeboolean(\"".$twraum->ort_kurzbz."\",\"aktiv\"); return false'>";
$htmlstr .= " <input type='hidden' id='aktiv".$twraum->ort_kurzbz."' value='".($twraum->aktiv=="t"?"true":"false")."'>";
$htmlstr .= " <img id='aktivimg".$twraum->ort_kurzbz."' alt='Aktiv' title='Aktiv' src='../../skin/images/".($twraum->aktiv=="t"?"true.png":"false.png")."' style='margin:0;' height='20'>";
$htmlstr .= " </a></td>";
$htmlstr .= " <td>".$twraum->kosten."</td>\n";
$htmlstr .= " <td>".$twraum->stockwerk."</td>\n";
$htmlstr .= " </tr>\n";
foreach($standort->result as $row)
{
if($row->standort_id == $standort_id)
$selected = 'selected';
else
$selected = '';
$htmlstr.='<OPTION value="'.$row->standort_id.'" '.$selected.'>'.$row->kurzbz.'</OPTION>';
}
}
$htmlstr.= '</SELECT>';
// Input Gebäudeteil
$htmlstr.= ' Gebäudeteil <INPUT type="text" name="selectgebaeudeteil" id="selectgebaeudeteil" value="'.$gebaeudeteil.'" style="width: 30px">';
// Select oe_kurzbz
$oe=new organisationseinheit();
$oe->getAll();
$htmlstr.=' Organisationseinheit <SELECT name="oe_kurzbz">';
$htmlstr.='<OPTION value="">-- keine Auswahl --</option>';
foreach($oe->result as $row_oe)
{
if($row_oe->oe_kurzbz == $oe_kurzbz)
$selected = 'selected';
else
$selected = '';
$htmlstr .= '<OPTION value="'.$row_oe->oe_kurzbz.'" '.$selected.'>'.$row_oe->organisationseinheittyp_kurzbz.' '.$row_oe->bezeichnung.'</OPTION>';
}
$htmlstr.='</SELECT>';
$htmlstr.= '<input type="hidden" name="sendform">';
$htmlstr .= '<br><br><input type="submit" value="Anzeigen">';
$htmlstr .= '</form>';
$tooltiptext = '
<div class="tooltiptext">
<div class="table">
<div class="table-caption">Sie können die folgenden Optionen zum filtern verwenden</div>
<div class="tr">
<div class="td"><code>|</code> oder <code>OR</code></div>
<div class="td">Logisches "oder"</div>
</div>
<div class="tr">
<div class="td"><code>&&</code> oder <code>AND</code></div>
<div class="td">Logisches "und"</div>
</div>
<div class="tr">
<div class="td"><code>/\d/</code></div>
<div class="td">Regular Expression</div>
</div>
<div class="tr">
<div class="td"><code>< <= >= ></code></div>
<div class="td">Alphabetisches oder numerisches größer/kleiner gleich</div>
</div>
<div class="tr">
<div class="td"><code>!</code> oder <code>!=</code></div>
<div class="td">Verneinung (not)</div>
</div>
<div class="tr">
<div class="td"><code>"</code> oder <code>=</code></div>
<div class="td">Exake übereinstimmung</div>
</div>
<div class="tr">
<div class="td"><code> - </code> oder <code> to </code></div>
<div class="td">Bereichssuche (Leerzeichen beachten)</div>
</div>
<div class="tr">
<div class="td"><code>?</code></div>
<div class="td">Platzhalter für ein einzelnes Zeichen (nicht Leerzeichen)</div>
</div>
<div class="tr">
<div class="td"><code>+</code></div>
<div class="td">Platzhalter für mehrere Zeichen (nicht Leerzeichen)</div>
</div>
<div class="tr">
<div class="td"><code>~</code></div>
<div class="td">Unscharfe suche</div>
</div>
</div>
</div>
';
if (isset($_GET['sendform']))
{
$htmlstr .= '
<table class="tablesorter" id="t1">
<thead>
<tr>
<th><button type="button" class="resetsaved" title="Reset Filter">Reset Filter</button>
<span class="tooltip"><img src="../../skin/images/information.png" height="20px" name="infoicon"/>
'.$tooltiptext.'
</span>
</th>
<th>Kurzbezeichnung</th>
<th>Bezeichnung</th>
<th>Planbezeichnung</th>
<th>Max. Person</th>
<th>Arbeitsplaetze</th>
<th>Quadratmeter</th>
<th>Organisationseinheit</th>
<th>Lehre</th>
<th>Reservieren</th>
<th>Aktiv</th>
<th>Kosten</th>
<th>Stockwerk</th>
</tr>
</thead>
<tbody>';
$sg = new ort();
if (!$sg->getOrte($lehre, $reservieren, $aktiv, $standort_id, $gebaeudeteil, $oe_kurzbz))
die($sg->errormsg);
foreach ($sg->result as $twraum)
{
$htmlstr .= " <tr>\n";
$htmlstr .= ' <td><a href="raum_details.php?type=raumtyp&ort_kurzbz='.$twraum->ort_kurzbz.'" target="detail_raum" title="Raumtyp zuteilen" ><img src="../../skin/images/entitlement-pot.png" height="20px"/></a></td>';
$htmlstr .= " <td><a href='raum_details.php?ort_kurzbz=".$twraum->ort_kurzbz."' target='detail_raum'>".$twraum->ort_kurzbz."</a></td>\n";
$htmlstr .= " <td>".$twraum->bezeichnung."</td>\n";
$htmlstr .= " <td>".$twraum->planbezeichnung."</td>\n";
$htmlstr .= " <td>".$twraum->max_person."</td>\n";
$htmlstr .= " <td>".$twraum->arbeitsplaetze."</td>\n";
$htmlstr .= " <td>".$twraum->m2."</td>\n";
$htmlstr .= " <td>".(isset($oe_arr[$twraum->oe_kurzbz])?$oe_arr[$twraum->oe_kurzbz]:'')."</td>\n";
// Lehre boolean setzen
$htmlstr .= " <div style='display: none'>".$db->convert_html_chars($twraum->lehre)."</div> <td align='center'><a href='#Lehre' onclick='changeboolean(\"".$twraum->ort_kurzbz."\",\"lehre\"); return false'>";
$htmlstr .= " <input type='hidden' id='lehre".$twraum->ort_kurzbz."' value='".($twraum->lehre=="t"?"true":"false")."'>";
$htmlstr .= " <img id='lehreimg".$twraum->ort_kurzbz."' alt='Lehre' title='Lehre' src='../../skin/images/".($twraum->lehre=="t"?"true.png":"false.png")."' height='20'>";
$htmlstr .= " </a></td>";
// Reservieren boolean setzen
$htmlstr .= " <div style='display: none'>".$db->convert_html_chars($twraum->reservieren)."</div> <td align='center'><a href='#Reservieren' onclick='changeboolean(\"".$twraum->ort_kurzbz."\",\"reservieren\"); return false'>";
$htmlstr .= " <input type='hidden' id='reservieren".$twraum->ort_kurzbz."' value='".($twraum->reservieren=="t"?"true":"false")."'>";
$htmlstr .= " <img id='reservierenimg".$twraum->ort_kurzbz."' alt='Reservieren' title='Reservieren' src='../../skin/images/".($twraum->reservieren=="t"?"true.png":"false.png")."' style='margin:0;' height='20'>";
$htmlstr .= " </a></td>";
// Aktiv boolean setzen
$htmlstr .= " <div style='display: none'>".$db->convert_html_chars($twraum->aktiv)."</div> <td align='center'><a href='#Aktiv' onclick='changeboolean(\"".$twraum->ort_kurzbz."\",\"aktiv\"); return false'>";
$htmlstr .= " <input type='hidden' id='aktiv".$twraum->ort_kurzbz."' value='".($twraum->aktiv=="t"?"true":"false")."'>";
$htmlstr .= " <img id='aktivimg".$twraum->ort_kurzbz."' alt='Aktiv' title='Aktiv' src='../../skin/images/".($twraum->aktiv=="t"?"true.png":"false.png")."' style='margin:0;' height='20'>";
$htmlstr .= " </a></td>";
$htmlstr .= " <td>".$twraum->kosten."</td>\n";
$htmlstr .= " <td>".$twraum->stockwerk."</td>\n";
$htmlstr .= " </tr>\n";
}
$htmlstr .= "</tbody></table>\n";
}
$htmlstr .= "</tbody></table>\n";
?>
@@ -173,11 +301,12 @@ $htmlstr .= "</tbody></table>\n";
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
<style>
table.tablesorter tbody td
@@ -186,6 +315,49 @@ $htmlstr .= "</tbody></table>\n";
padding: 0;
vertical-align: middle;
}
div.table {
display: table;
border-collapse:collapse;
}
div.tr {
display:table-row;
}
div.table-caption {
display:table-caption;
}
div.td {
display:table-cell;
border:thin solid black;
padding:5px;
}
/* Tooltip container */
.tooltip
{
position: relative;
display: inline;
}
.tooltip .tooltiptext
{
visibility: hidden;
width: 400px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
/* Position the tooltip */
position: absolute;
z-index: 1;
top: -5px;
left: 105%;
}
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext
{
visibility: visible;
opacity: 1;
}
</style>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
@@ -193,8 +365,32 @@ $htmlstr .= "</tbody></table>\n";
$("#t1").tablesorter(
{
sortList: [[3,0]],
widgets: ["zebra"]
widgets: ["saveSort", "zebra", "filter", "stickyHeaders"],
headers: { 0: { filter: false, sorter: false }},
widgetOptions : { filter_saveFilters : true,
filter_functions : {
// Add select menu to this column
8 : {
"True" : function(e, n, f, i, $r, c, data) { return /t/.test(e); },
"False" : function(e, n, f, i, $r, c, data) { return /f/.test(e); }
},
9 : {
"True" : function(e, n, f, i, $r, c, data) { return /t/.test(e); },
"False" : function(e, n, f, i, $r, c, data) { return /f/.test(e); }
},
10 : {
"True" : function(e, n, f, i, $r, c, data) { return /t/.test(e); },
"False" : function(e, n, f, i, $r, c, data) { return /f/.test(e); }
}
}}
});
$('.resetsaved').click(function()
{
$("#t1").trigger("filterReset");
location.reload(forceGet);
return false;
});
});
function changeboolean(ort_kurzbz, name)
@@ -232,10 +428,9 @@ $htmlstr .= "</tbody></table>\n";
</head>
<body>
<h2>R&auml;ume &Uuml;bersicht</h2>
<a href="raum_details.php" target="detail_raum">Neuer Raum </a>
<?php
echo $htmlstr;
echo $htmlstr;
?>
</body>