Filtered out Lehrauftraege with non-employees and where stunden is 0 (or null)

Now the initial filter and the new/changed filter will filter out
Lehrauftraege, where no mitarbeiter exist or stunden are not assigned to.

The 'show-all'-filter still displays these Lehrauftraege, but will set
them to unselectable.

A tooltip on the status-icon will show an appropriate
information-
This commit is contained in:
Cris
2020-03-24 17:48:59 +01:00
parent 1a9ac9e1fa
commit f4747e431c
+63 -17
View File
@@ -88,10 +88,16 @@ function hf_filterStringnumberWithOperator(headerValue, rowValue, rowData){
*/
function func_dataLoaded(data, table){
table.setFilter([
{field: 'personalnummer', type: '>=', value: 0}, // not dummy lector AND
[
{field: 'status', type: '=', value: 'Neu'}, // neu OR
{field: 'status', type: '=', value: 'Geändert'} // geaendert
{field: 'personalnummer', type: '>', value: 0}, // not dummy
{field: 'personalnummer', type: '=', value: null} // include projektbetreuer
],
{field: 'mitarbeiter_uid', type: '!=', value: null}, // AND is Mitarbeiter
{field: 'stunden', type: '!=', value: null}, // AND has Semesterstunden (not null and not 0)
{field: 'stunden', type: '!=', value: 0},
[
{field: 'status', type: '=', value: 'Neu'}, // AND neu
{field: 'status', type: '=', value: 'Geändert'} // OR geaendert
]
]);
}
@@ -114,6 +120,8 @@ function func_groupHeader(data) {
// Formats the rows
function func_rowFormatter(row){
var is_dummy = (row.getData().personalnummer <= 0 && row.getData().personalnummer != null);
var is_mitarbeiter = row.getData().mitarbeiter_uid != null;
var has_stunden = row.getData().stunden != 0 && row.getData().stunden != null;
var bestellt = row.getData().bestellt;
var erteilt = row.getData().erteilt;
@@ -149,15 +157,19 @@ function func_rowFormatter(row){
Formats the color of the rows depending on their status
- blue: dummy lectors
- bold: geaendert
- default (white): neu und erteilt
- default (white): neu
- green: akzeptiert
- grey: all other (marks unselectable)
- grey: all other (marks unselectable), not mitarbeiter, has no semesterstunden
*/
row.getCells().forEach(function(cell){
if(is_dummy)
{
cell.getElement().classList.add('bg-info'); // dummy lectors
}
else if ((!is_mitarbeiter || !has_stunden) && akzeptiert == null)
{
row.getElement().style["background-color"] = COLOR_LIGHTGREY;
}
else if (bestellt != null && (betrag != vertrag_betrag) ||
bestellt != null && stunden != vertrag_stunden &&
!row._row.element.classList.contains('tabulator-calcs')) // exclude calculation rows
@@ -181,7 +193,9 @@ function func_rowFormatter(row){
// Formats row selectable/unselectable
function func_selectableCheck(row){
var is_dummy = (row.getData().personalnummer <= 0 && row.getData().personalnummer != null);
var is_dummy = row.getData().personalnummer <= 0;
var is_mitarbeiter = row.getData().mitarbeiter_uid != null;
var has_stunden = row.getData().stunden != 0 && row.getData().stunden != null;
var stunden = parseFloat(row.getData().stunden);
var vertrag_stunden = parseFloat(row.getData().vertrag_stunden);
@@ -211,10 +225,12 @@ function func_selectableCheck(row){
// Only allow to select neue and geaenderte
return !is_dummy && // NOT dummy lector
return !is_dummy && // NOT dummy lector
is_mitarbeiter && // AND is Mitarbeiter
has_stunden && // AND has Semesterstunden (not null and not 0)
row.getData().bestellt == null || // AND neue
row.getData().bestellt != null && betrag != vertrag_betrag || // OR geaenderte
row.getData().bestellt != null && stunden != vertrag_stunden // OR geanderte (if betrag is 0 or null)
row.getData().bestellt != null && stunden != vertrag_stunden
}
// Adds column status
@@ -349,10 +365,18 @@ function footer_downloadCSV(){
*/
function footer_selectAll(){
$('#tableWidgetTabulator').tabulator('getRows', true)
.filter(row => row.getData().personalnummer >= 0 && // NOT dummies
row.getData().bestellt == null || // AND neu
row.getData().bestellt != null && // OR (bestellt
row.getData().status == 'Geändert') // AND geaendert)
.filter(row => (
row.getData().personalnummer > 0 || // not dummies
row.getData().personalnummer == null) && // include Projektbetreuer
row.getData().mitarbeiter_uid != null && // AND is Mitarbeiter
row.getData().stunden != null && // AND has Semesterstunden (not null and not 0)
row.getData().stunden != 0 &&
(
row.getData().bestellt == null || // AND neu
row.getData().bestellt != null && // OR (bestellt
row.getData().status == 'Geändert' // AND geaendert)
)
)
.forEach((row => row.select()));
}
@@ -448,6 +472,8 @@ status_formatter = function(cell, formatterParams, onRendered){
// Generates status tooltip
status_tooltip = function(cell){
var is_dummy = (cell.getRow().getData().personalnummer <= 0 && cell.getRow().getData().personalnummer != null);
var is_mitarbeiter = cell.getRow().getData().mitarbeiter_uid != null;
var has_stunden = cell.getRow().getData().stunden != 0 && cell.getRow().getData().stunden != null;
var bestellt = cell.getRow().getData().bestellt;
var erteilt = cell.getRow().getData().erteilt;
@@ -492,6 +518,14 @@ status_tooltip = function(cell){
{
return 'Neuer Lehrauftrag. Ohne Lektor verplant.'
}
else if (!is_mitarbeiter)
{
return 'Lektor ist nicht als Mitarbeiter erfasst.'
}
else if (!has_stunden)
{
return 'Es wurden noch keine Stunden zugeteilt.'
}
else if (isNaN(vertrag_betrag)) // neu
{
return 'Neuer Lehrauftrag. Wartet auf Bestellung.'
@@ -547,11 +581,17 @@ $(function() {
$('#tableWidgetTabulator').tabulator('clearFilter');
});
// Show only rows with new lehrauftraege (not dummy lectors)
// Show only rows with new lehrauftraege (not dummy lectors or external projektbetreuer; stunden not 0 or null)
$("#show-new").click(function(){
$('#tableWidgetTabulator').tabulator('setFilter',
[
{field: 'personalnummer', type: '>=', value: 0},
[
{field: 'personalnummer', type: '>', value: 0}, // not dummy lector
{field: 'personalnummer', type: '=', value: null} // include Projektbetreuer
],
{field: 'mitarbeiter_uid', type: '!=', value: null}, // AND is Mitarbeiter
{field: 'stunden', type: '!=', value: null}, // AND has Semesterstunden (not null and not 0)
{field: 'stunden', type: '!=', value: 0},
{field: 'bestellt', type: '=', value: null},
{field: 'erteilt', type: '=', value: null},
{field: 'akzeptiert', type: '=', value: null}
@@ -598,9 +638,15 @@ $(function() {
// needs custom filter to compare fields betrag and vertrag_betrag
$('#tableWidgetTabulator').tabulator('setFilter',
[
{field: 'personalnummer', type: '>=', value: 0}, // NOT dummy lector AND
{field: 'bestellt', type: '!=', value: null}, // bestellt AND
{field: 'status', type: '=', value: 'Geändert'} // geaendert
[
{field: 'personalnummer', type: '>', value: 0}, // NOT dummy lector
{field: 'personalnummer', type: '=', value: null} // include Projektbetreuer
],
{field: 'mitarbeiter_uid', type: '!=', value: null}, // AND is Mitarbeiter
{field: 'stunden', type: '!=', value: null}, // AND has Semesterstunden (not null and not 0)
{field: 'stunden', type: '!=', value: 0},
{field: 'bestellt', type: '!=', value: null}, // bestellt AND
{field: 'status', type: '=', value: 'Geändert'} // geaendert
]
);
});