Zeiterfassung Update
* Fixed Header bei Auswertung und Verrechnung
This commit is contained in:
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
||||||
type="text/css"/>
|
type="text/css"/>
|
||||||
|
<link href="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.css" rel="stylesheet"
|
||||||
|
type="text/css"/>
|
||||||
<style>
|
<style>
|
||||||
.fa-arrow-right-from-bracket {
|
.fa-arrow-right-from-bracket {
|
||||||
margin-top: 3px;
|
margin-top: 3px;
|
||||||
@@ -37,7 +39,7 @@
|
|||||||
|
|
||||||
.filler-left {
|
.filler-left {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: 10px;
|
margin-right: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filler-0 {
|
.filler-0 {
|
||||||
@@ -72,7 +74,8 @@
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 18px;
|
top: 21px;
|
||||||
|
right: 30px;
|
||||||
|
|
||||||
color: #008b0b;
|
color: #008b0b;
|
||||||
}
|
}
|
||||||
@@ -91,7 +94,7 @@
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 18px;
|
top: 21px;
|
||||||
right: 30px;
|
right: 30px;
|
||||||
color: #f1556c;
|
color: #f1556c;
|
||||||
}
|
}
|
||||||
@@ -125,10 +128,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<table id="datatable" class="table table-hover table-sm">
|
<table id="datatable" class="table table-hover table-sm">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr class="bg-white">
|
||||||
<th class="text-center">Mitarbeiter/PersNr.</th>
|
<th class="text-center">Mitarbeiter/PersNr.</th>
|
||||||
<th class="text-center">Leistungszeiten</th>
|
<th class="text-center">LZ</th>
|
||||||
<th class="text-center">Nichtleistungszeiten</th>
|
<th class="text-center">NLZ</th>
|
||||||
<th class="text-center">NLZ+LZ</th>
|
<th class="text-center">NLZ+LZ</th>
|
||||||
<th class="text-center">Sollst.</th>
|
<th class="text-center">Sollst.</th>
|
||||||
<th class="text-center">Sollabweichung</th>
|
<th class="text-center">Sollabweichung</th>
|
||||||
@@ -200,20 +203,20 @@
|
|||||||
</td>
|
</td>
|
||||||
<td data-order="<?= $timerecording->plushours_all ?>"
|
<td data-order="<?= $timerecording->plushours_all ?>"
|
||||||
data-transfer="<?= round($timerecording->transfer_plushours / 3600, 2) ?>"
|
data-transfer="<?= round($timerecording->transfer_plushours / 3600, 2) ?>"
|
||||||
class="text-center transfer_plushours_info position-relative"><?= '<span class="filler-left">' . number_format(round($timerecording->plushours_all / 3600, 2), "2", ",", ".") ?></span><?= ($timerecording->plushours_all > 0) ? '<i class="fas fa-arrow-from-left change-difference" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->plushours_all / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?><?= ($timerecording->transfer_plushours) ? '<span class="sm-text-right ">' . round($timerecording->transfer_plushours * -1 / 3600, 2) . '</span>' : '' ?></td>
|
class="text-center transfer_plushours_info position-relative"><?= '<span class="filler-left">' . number_format(round($timerecording->plushours_all / 3600, 2), "2", ",", ".") ?></span><?= ($timerecording->plushours_all > 0) ? '<i class="fas fa-arrow-from-left change-difference" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->plushours_all / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?><?= ($timerecording->transfer_plushours) ? '<span class="ignore-export sm-text-right ">' . round($timerecording->transfer_plushours * -1 / 3600, 2) . '</span>' : '' ?></td>
|
||||||
<td data-transfer="<?= round($timerecording->transfer_overtime / 3600, 2) ?>"
|
<td data-transfer="<?= round($timerecording->transfer_overtime / 3600, 2) ?>"
|
||||||
data-order="<?= $timerecording->timerecordingEmployee->overtime_now ?>"
|
data-order="<?= $timerecording->timerecordingEmployee->overtime_now ?>"
|
||||||
class="text-center position-relative transfer_overtime_info"><?= '<span class="filler-left">' . number_format(round($timerecording->timerecordingEmployee->overtime_now / 3600, 2), "2", ",", ".") ?></span><?= ($timerecording->timerecordingEmployee->overtime_now > 0) ? '<i class="fas fa-arrow-from-left change-overtime" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->timerecordingEmployee->overtime_now / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?><?= ($timerecording->transfer_overtime) ? '<span class=" ' . $overtimeclass . '">' . round($timerecording->transfer_overtime * -1 / 3600, 2) . '</span>' : '' ?></span></td>
|
class="text-center position-relative transfer_overtime_info"><?= '<span class="filler-left">' . number_format(round($timerecording->timerecordingEmployee->overtime_now / 3600, 2), "2", ",", ".") ?></span><?= ($timerecording->timerecordingEmployee->overtime_now > 0) ? '<i class="fas fa-arrow-from-left change-overtime" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->timerecordingEmployee->overtime_now / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?><?= ($timerecording->transfer_overtime) ? '<span class=" ' . $overtimeclass . '">' . round($timerecording->transfer_overtime * -1 / 3600, 2) . '</span>' : '' ?></span></td>
|
||||||
<?php if ($me->superexpertEnabled()): ?>
|
<?php if ($me->superexpertEnabled()): ?>
|
||||||
<td data-order="<?= $timerecording->timerecordingEmployee->bpahours ?>"
|
<td data-order="<?= $timerecording->timerecordingEmployee->bpahours ?>"
|
||||||
class="text-center position-relative"><?= ($timerecording->transfer_bpahours * -1 > 0) ? '<i class="fas fa-arrow-to-left change-bpa" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->transfer_bpahours * -1 / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->timerecordingEmployee->bpahours / 3600, 2), "2", ",", ".") ?><?= ($timerecording->transfer_bpahours) ? '<span class="sm-text-left">' . (round($timerecording->transfer_bpahours * -1 / 3600, 2)) . '</span>' : '' ?> </span></td>
|
class="text-center position-relative"><?= ($timerecording->transfer_bpahours * -1 > 0) ? '<i class="fas fa-arrow-to-left change-bpa" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->transfer_bpahours * -1 / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->timerecordingEmployee->bpahours / 3600, 2), "2", ",", ".") ?><?= ($timerecording->transfer_bpahours) ? '<span class="ignore-export sm-text-left">' . (round($timerecording->transfer_bpahours * -1 / 3600, 2)) . '</span>' : '' ?> </span></td>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<td data-order="<?= $timerecording->plushours25 ?>"
|
<td data-order="<?= $timerecording->plushours25 ?>"
|
||||||
class="text-center position-relative"><?= ($timerecording->plushours25 > 0) ? '<i class="fas fa-arrow-to-left change-overtime-25" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->plushours25 / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->plushours25 / 3600, 2), "2", ",", ".") ?></span></td>
|
class="text-center position-relative "><?= ($timerecording->plushours25 > 0) ? '<i class="fas fa-arrow-to-left change-overtime-25" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->plushours25 / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->plushours25 / 3600, 2), "2", ",", ".") ?></span></td>
|
||||||
<td data-order="<?= $timerecording->overtime50free ?>"
|
<td data-order="<?= $timerecording->overtime50free ?>"
|
||||||
class="text-center position-relative"><?= ($timerecording->overtime50free > 0) ? '<i class="fas fa-arrow-to-left change-overtime-50" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->overtime50free / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->overtime50free / 3600, 2), "2", ",", ".") ?></span></td>
|
class="text-center position-relative "><?= ($timerecording->overtime50free > 0) ? '<i class="fas fa-arrow-to-left change-overtime-50" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->overtime50free / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->overtime50free / 3600, 2), "2", ",", ".") ?></span></td>
|
||||||
<td data-order="<?= $timerecording->overtime100free ?>"
|
<td data-order="<?= $timerecording->overtime100free ?>"
|
||||||
class="text-center position-relative"><?= ($timerecording->overtime100free > 0) ? '<i class="fas fa-arrow-to-left change-overtime-100" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->overtime100free / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->overtime100free / 3600, 2), "2", ",", ".") ?></span></td>
|
class="text-center position-relative "><?= ($timerecording->overtime100free > 0) ? '<i class="fas fa-arrow-to-left change-overtime-100" data-toggle="modal" data-target="#overtimeModal" data-hours="' . number_format(round($timerecording->overtime100free / 3600, 2), "2", ",", ".") . '" data-id="' . $timerecording->id . '"></i>' : '' ?> <?= '<span class="filler-left">' . number_format(round($timerecording->overtime100free / 3600, 2), "2", ",", ".") ?></span></td>
|
||||||
<td data-order="<?= $timerecording->diet ?>"
|
<td data-order="<?= $timerecording->diet ?>"
|
||||||
class="text-center"><?= number_format($timerecording->diet, 2, ',', '.') . " €" ?></td>
|
class="text-center"><?= number_format($timerecording->diet, 2, ',', '.') . " €" ?></td>
|
||||||
<td class="text-center"><?= $timerecording->homeoffice ?> T</td>
|
<td class="text-center"><?= $timerecording->homeoffice ?> T</td>
|
||||||
@@ -300,7 +303,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var hidesearch = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
|
var hidesearch = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
|
||||||
@@ -493,7 +497,8 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script type="text/javascript"
|
||||||
src="<?= self::getResourcePath() ?>assets/js/datatables-std.js?<?= date('U') ?>"></script>
|
src="<?= self::getResourcePath() ?>assets/js/datatables-std2.js?<?= date('U') ?>"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<?php include(realpath(dirname(__FILE__) . "/../../$mfLayoutPackage") . "/footer.php"); ?>
|
<?php include(realpath(dirname(__FILE__) . "/../../$mfLayoutPackage") . "/footer.php"); ?>
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
?>
|
?>
|
||||||
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
||||||
type="text/css"/>
|
type="text/css"/>
|
||||||
|
<link href="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.css" rel="stylesheet"
|
||||||
|
type="text/css"/>
|
||||||
<!-- start page title -->
|
<!-- start page title -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
@@ -78,17 +80,19 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var hidesearch = [7];
|
var hidesearch = [7];
|
||||||
|
var cstmbuttons=['<a href="<?= self::getUrl("TimerecordingBilling/Overview") ?>" class="btn btn-info margina">Monats Detail Übersicht</a>'];
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript"
|
<script type="text/javascript"
|
||||||
src="<?= self::getResourcePath() ?>assets/js/datatables-std.js?<?= date('U') ?>"></script>
|
src="<?= self::getResourcePath() ?>assets/js/datatables-std2.js?<?= date('U') ?>"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<?php include(realpath(dirname(__FILE__) . "/../../$mfLayoutPackage") . "/footer.php"); ?>
|
<?php include(realpath(dirname(__FILE__) . "/../../$mfLayoutPackage") . "/footer.php"); ?>
|
||||||
134
Layout/default/TimerecordingBilling/Overview.php
Normal file
134
Layout/default/TimerecordingBilling/Overview.php
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
<?php include(realpath(dirname(__FILE__) . "/../../$mfLayoutPackage") . "/header.php");
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
||||||
|
type="text/css"/>
|
||||||
|
<link href="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.css" rel="stylesheet"
|
||||||
|
type="text/css"/>
|
||||||
|
<!-- start page title -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="page-title-box">
|
||||||
|
<div class="page-title-right">
|
||||||
|
<ol class="breadcrumb m-0">
|
||||||
|
<li class="breadcrumb-item"><a href="<?= self::getUrl("Dashboard") ?>"><?= MFAPPNAME_SLUG ?></a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">Monatsdetail Übersicht</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<h4 class="page-title">Zeiterfassung Monatsdetail Übersicht</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end page title -->
|
||||||
|
<div id="demo_info"></div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body mb-3">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="float-left">
|
||||||
|
<h4 class="header-title">Übersicht aller Monate zum Monatsletzten</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<table id="datatable" class="table table-hover table-sm">
|
||||||
|
<thead>
|
||||||
|
<tr class="bg-white">
|
||||||
|
<th class="text-center">Monat</th>
|
||||||
|
<th class="text-center">Mitarbeiter</th>
|
||||||
|
<th class="text-center">LZ</th>
|
||||||
|
<th class="text-center">NLZ</th>
|
||||||
|
<th class="text-center">LZ + NLZ</th>
|
||||||
|
<th class="text-center">Sollst.</th>
|
||||||
|
<th class="text-center">Sollabweichung</th>
|
||||||
|
<th class="text-center">Mehrstunden</th>
|
||||||
|
<th class="text-center">Gutstunden</th>
|
||||||
|
<?php if ($me->superexpertEnabled()): ?>
|
||||||
|
<th class="text-center min-w-70">Black P. St.</th>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr id="filterrow">
|
||||||
|
<th class="text-center edit-width-large">Monat</th>
|
||||||
|
<th class="text-center">Mitarbeiter</th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<th class="text-center"></th>
|
||||||
|
<?php if ($me->superexpertEnabled()): ?>
|
||||||
|
<th></th>
|
||||||
|
<?php endif; ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<?php foreach ($timerecordingbillingsemployees as $timerecordingbillingsemployee):
|
||||||
|
$user = new User($timerecordingbillingsemployee->timerecordingEmployee->user->id);
|
||||||
|
$employee_number = (string)$user->getFlag('employee_number');
|
||||||
|
unset ($nlz);
|
||||||
|
if ($timerecordingbillingsemployee->nlz) {
|
||||||
|
$nlz_details = json_decode($timerecordingbillingsemployee->nlz, true);
|
||||||
|
foreach ($nlz_details as $key => $nlz_detail) {
|
||||||
|
if ($nlz_detail < 100) {
|
||||||
|
$nlz .= $key . ": " . $nlz_detail . " Tag(e)<br>";
|
||||||
|
} else {
|
||||||
|
$nlz .= $key . ": " . round($nlz_detail / 3600, 2) . " Stunden<br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$nlz = "";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td class="text-center"><?= $timerecordingbillingsemployee->timerecordingBilling->month ?></td>
|
||||||
|
<td data-order="<?= $timerecordingbillingsemployee->timerecordingEmployee->user->name . $timerecordingbillingsemployee->timerecordingBilling->month ?>"><?= "(" . $employee_number . ") " . $timerecordingbillingsemployee->timerecordingEmployee->user->name ?></td>
|
||||||
|
<td class="text-center"><?= number_format(round($timerecordingbillingsemployee->ishours / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<td class="text-center"><?= $nlz ?></td>
|
||||||
|
<td class="text-center"><?= number_format(round($timerecordingbillingsemployee->ishourssum / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<td class="text-center"><?= number_format(round($timerecordingbillingsemployee->musthours / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<td class="text-center"><?= number_format(round(($timerecordingbillingsemployee->ishourssum - $timerecordingbillingsemployee->musthours) / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<td class="text-center"
|
||||||
|
data-order="<?= $timerecordingbillingsemployee->plushours_all + $timerecordingbillingsemployee->transfer_plushours ?>"><?= number_format(round(($timerecordingbillingsemployee->plushours_all + $timerecordingbillingsemployee->transfer_plushours) / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<td class="text-center"
|
||||||
|
data-order="<?= $timerecordingbillingsemployee->timerecordingEmployee->overtime_now + $timerecordingbillingsemployee->transfer_overtime ?>"><?= number_format(round(($timerecordingbillingsemployee->timerecordingEmployee->overtime_now + $timerecordingbillingsemployee->transfer_overtime) / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<?php if ($me->superexpertEnabled()): ?>
|
||||||
|
<td class="text-center"
|
||||||
|
data-order="<?= $timerecordingbillingsemployee->timerecordingEmployee->bpahours ?>"><?= number_format(round($timerecordingbillingsemployee->timerecordingEmployee->bpahours / 3600, 2), "2", ",", ".") ?></td>
|
||||||
|
<?php endif; ?>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var hidesearch = [2, 3, 4, 5, 6, 7, 8, 9];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="<?= self::getResourcePath() ?>assets/js/datatables-std2.js?<?= date('U') ?>"></script>
|
||||||
|
|
||||||
|
<?php include(realpath(dirname(__FILE__) . "/../../$mfLayoutPackage") . "/footer.php"); ?>
|
||||||
@@ -44,8 +44,11 @@ $years[time() - 31536000] = date('Y', time() - 31536000);
|
|||||||
?>
|
?>
|
||||||
<link href="<?= self::getResourcePath() ?>assets/css/select2-cstm.css?<?= date('U') ?>" rel="stylesheet"
|
<link href="<?= self::getResourcePath() ?>assets/css/select2-cstm.css?<?= date('U') ?>" rel="stylesheet"
|
||||||
type="text/css"/>
|
type="text/css"/>
|
||||||
|
<link href="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.css" rel="stylesheet"
|
||||||
|
type="text/css"/>
|
||||||
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
<link href="<?= self::getResourcePath() ?>assets/css/datatables-std.css?<?= date('U') ?>" rel="stylesheet"
|
||||||
type="text/css"/>
|
type="text/css"/>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.edit-button {
|
.edit-button {
|
||||||
color: #007bff;
|
color: #007bff;
|
||||||
@@ -343,33 +346,14 @@ $years[time() - 31536000] = date('Y', time() - 31536000);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="col-lg-3">-->
|
|
||||||
<!-- <div class="form-row">-->
|
|
||||||
<!-- <div class="col text-center">-->
|
|
||||||
<!-- <div class="input-group ">-->
|
|
||||||
<!-- <label class="col-form-label form-control fixed-state"><span-->
|
|
||||||
<!-- class="text-bold">Urlaubstage: </span><span id="holidays"-->
|
|
||||||
<!-- class="ml-1 text-normal"></span></label>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- <div class="col text-center">-->
|
|
||||||
<!-- <div class="input-group ">-->
|
|
||||||
<!-- <label class="col-form-label form-control fixed-state"><span-->
|
|
||||||
<!-- class="text-bold">Gutzeit: </span><span-->
|
|
||||||
<!-- id="plushours"-->
|
|
||||||
<!-- class="ml-1 text-normal"></span></label>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<table id="datatable" class="table table-hover table-sm">
|
<table id="datatable" class="table table-hover table-sm">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr class="bg-white">
|
||||||
<th style="min-width: 250px;" class="text-center text-nowrap ">Mitarbeiter</th>
|
<th style="min-width: 250px;" class="text-center text-nowrap ">Mitarbeiter</th>
|
||||||
<th style="width: 200px;" class="text-center text-nowrap ">Datum</th>
|
<th style="width: 200px;max-width: 200px;" class="text-center ">Datum</th>
|
||||||
<th class="text-nowrap edit-width text-center">Von</th>
|
<th class="text-nowrap edit-width text-center">Von</th>
|
||||||
<th class="text-nowrap edit-width text-center">Bis</th>
|
<th class="text-nowrap edit-width text-center">Bis</th>
|
||||||
<th class="text-nowrap edit-width text-center">Summe</th>
|
<th class="text-nowrap edit-width text-center">Summe</th>
|
||||||
@@ -398,7 +382,8 @@ $years[time() - 31536000] = date('Y', time() - 31536000);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="<?= self::getResourcePath() ?>datatables/DataTables-2x/datatables.min.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var hidesearch = [2, 3, 4, 7];
|
var hidesearch = [2, 3, 4, 7];
|
||||||
var pageLength = 100;
|
var pageLength = 100;
|
||||||
|
|||||||
@@ -38,6 +38,15 @@ class TimerecordingBillingController extends mfBaseController
|
|||||||
$this->layout()->setTemplate("TimerecordingBilling/Index");
|
$this->layout()->setTemplate("TimerecordingBilling/Index");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function overviewAction()
|
||||||
|
{
|
||||||
|
$timerecordingBillings = TimerecordingBillingModel::getAll();
|
||||||
|
$timerecordingBillingsEmployees = TimerecordingBillingEmployeeModel::getAll();
|
||||||
|
$this->layout()->setTemplate("TimerecordingBilling/Overview");
|
||||||
|
$this->layout()->set("timerecordingbillings", $timerecordingBillings);
|
||||||
|
$this->layout()->set("timerecordingbillingsemployees", $timerecordingBillingsEmployees);
|
||||||
|
}
|
||||||
|
|
||||||
protected function detailClosedAction($timerecordingBilling)
|
protected function detailClosedAction($timerecordingBilling)
|
||||||
{
|
{
|
||||||
$r = $this->request;
|
$r = $this->request;
|
||||||
|
|||||||
161
public/assets/js/datatables-std2.js
Normal file
161
public/assets/js/datatables-std2.js
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
let table;
|
||||||
|
if (typeof hidesearch === "undefined") {
|
||||||
|
var hidesearch;
|
||||||
|
hidesearch = [100];
|
||||||
|
}
|
||||||
|
if (typeof hidesearch === "undefined") {
|
||||||
|
var cstmbuttons;
|
||||||
|
cstmbuttons = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (typeof pageLength === "undefined") {
|
||||||
|
var pageLength;
|
||||||
|
pageLength = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof cstmdom === "undefined") {
|
||||||
|
var cstmdom;
|
||||||
|
cstmdom = "flBrtip";
|
||||||
|
|
||||||
|
}
|
||||||
|
if (typeof columndefs === "undefined") {
|
||||||
|
var columndefs;
|
||||||
|
columndefs = "";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof columnfilter === "undefined") {
|
||||||
|
var columnfilter;
|
||||||
|
columnfilter = "";
|
||||||
|
}
|
||||||
|
if (typeof columnoptions === "undefined") {
|
||||||
|
var columnoptions;
|
||||||
|
columnoptions = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#filterrow th').each(function (i) {
|
||||||
|
let title = $('#datatable thead th').eq($(this).index()).text();
|
||||||
|
|
||||||
|
if (hidesearch.includes($(this).index())) {
|
||||||
|
|
||||||
|
} else if (columnfilter.includes($(this).index())) {
|
||||||
|
$(this).html('<select style="padding: 0;height: 28px;;text-align: center;" id="selectsearch" class="form-control form-control-select form-control-special" data-index="' + i + '">' + columnoptions + '</select>');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$(this).html('<input type="text" placeholder="' + title + '" class="form-control" data-index="' + i + '" value="" />');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
table = $('#datatable').DataTable({
|
||||||
|
fixedHeader: {
|
||||||
|
header: true,
|
||||||
|
headerOffset: $('#topnav').outerHeight()
|
||||||
|
|
||||||
|
}, lengthMenu: [
|
||||||
|
[25, 50, 100, -1],
|
||||||
|
[25, 50, 100, 'All']
|
||||||
|
],
|
||||||
|
pageLength: pageLength,
|
||||||
|
columnDefs: [
|
||||||
|
columndefs
|
||||||
|
],
|
||||||
|
"language": {
|
||||||
|
"url": "/datatables/json/german.json?v1"
|
||||||
|
},
|
||||||
|
orderCellsTop: true,
|
||||||
|
stateSave: true,
|
||||||
|
stateDuration: 60 * 60 * 24 * 30,
|
||||||
|
"initComplete": function () {
|
||||||
|
$('.dt-search').append('<i id="clear_cookie" class="fas fa-times clear-fa" title="Filter löschen" aria-hidden="true" ></i>');
|
||||||
|
$('.dt-search').addClass('d-inline-block');
|
||||||
|
$.each(cstmbuttons, function (index, value) {
|
||||||
|
$('.dt-buttons').append(value);
|
||||||
|
});
|
||||||
|
$('#dt-length-0').addClass('form-control-sm');
|
||||||
|
$('#clear_cookie').click(function () {
|
||||||
|
$('#filterrow input').val('');
|
||||||
|
$('#filterrow select').val('');
|
||||||
|
table.search('').columns().search('').draw();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
layout:
|
||||||
|
{
|
||||||
|
topStart: {
|
||||||
|
search: {
|
||||||
|
placeholder: ''
|
||||||
|
}, buttons: [
|
||||||
|
{
|
||||||
|
extend: 'excelHtml5',
|
||||||
|
text: 'XLSX Export',
|
||||||
|
className: 'btn-success margina d-none d-lg-block',
|
||||||
|
exportOptions: {
|
||||||
|
columns: ['th:not(:last-child)'],
|
||||||
|
format: {
|
||||||
|
body: function (data, row, column, node) {
|
||||||
|
console.log(data);
|
||||||
|
data = $('<p>' + data + '</p>').text();
|
||||||
|
|
||||||
|
return $.isNumeric(data.replace(',', '.')) ? data.replace(',', '.') : data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
topEnd: {
|
||||||
|
pageLength: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(window).scroll(function () {
|
||||||
|
var height = $(window).scrollTop();
|
||||||
|
|
||||||
|
if (height > 200) {
|
||||||
|
if ($('#filterrow').is(':visible')) {
|
||||||
|
$('#filterrow').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if ($('#filterrow').is(':hidden')) {
|
||||||
|
$('#filterrow').show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#filterrow').on('keyup', 'input', function () {
|
||||||
|
|
||||||
|
table
|
||||||
|
.column($(this).data('index'))
|
||||||
|
.search(this.value)
|
||||||
|
.draw();
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#selectsearch').change(function () {
|
||||||
|
table
|
||||||
|
.column($(this).data('index'))
|
||||||
|
.search(this.value)
|
||||||
|
.draw();
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
let state = table.state.loaded();
|
||||||
|
if (state) {
|
||||||
|
table.columns().eq(0).each(function (colIdx) {
|
||||||
|
var colSearch = state.columns[colIdx].search;
|
||||||
|
|
||||||
|
if (colSearch.search) {
|
||||||
|
|
||||||
|
|
||||||
|
$('#filterrow').find("[data-index='" + colIdx + "']").val(colSearch.search);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
table.draw();
|
||||||
|
}
|
||||||
1516
public/datatables/DataTables-2x/datatables.css
Normal file
1516
public/datatables/DataTables-2x/datatables.css
Normal file
File diff suppressed because it is too large
Load Diff
111046
public/datatables/DataTables-2x/datatables.js
Normal file
111046
public/datatables/DataTables-2x/datatables.js
Normal file
File diff suppressed because one or more lines are too long
37
public/datatables/DataTables-2x/datatables.min.css
vendored
Normal file
37
public/datatables/DataTables-2x/datatables.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
247
public/datatables/DataTables-2x/datatables.min.js
vendored
Normal file
247
public/datatables/DataTables-2x/datatables.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1,25 +1,243 @@
|
|||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"sEmptyTable": "Keine Daten in der Tabelle vorhanden",
|
"emptyTable": "Keine Daten in der Tabelle vorhanden",
|
||||||
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
|
"info": "_START_ bis _END_ von _TOTAL_ Einträgen",
|
||||||
"sInfoEmpty": "0 bis 0 von 0 Einträgen",
|
"infoEmpty": "Keine Daten vorhanden",
|
||||||
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
|
"infoFiltered": "(gefiltert von _MAX_ Einträgen)",
|
||||||
"sInfoPostFix": "",
|
"infoThousands": ".",
|
||||||
"sInfoThousands": ".",
|
"loadingRecords": "Wird geladen ..",
|
||||||
"sLengthMenu": "_MENU_ <span class=\"d-lg-inline-block d-none\">Einträge anzeigen</span>",
|
"processing": "Bitte warten ..",
|
||||||
"sLoadingRecords": "Wird geladen...",
|
"paginate": {
|
||||||
"sProcessing": "Bitte warten...",
|
"first": "Erste",
|
||||||
"sSearch": "Suchen",
|
"next": "Nächste",
|
||||||
"sZeroRecords": "Keine Einträge vorhanden.",
|
"last": "Letzte",
|
||||||
"oPaginate": {
|
"previous": "Vorherige"
|
||||||
"sFirst": "Erste",
|
|
||||||
"sPrevious": "Zurück",
|
|
||||||
"sNext": "Nächste",
|
|
||||||
"sLast": "Letzte"
|
|
||||||
},
|
},
|
||||||
"oAria": {
|
"aria": {
|
||||||
"sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
|
"sortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
|
||||||
"sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
|
"sortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
|
||||||
|
},
|
||||||
|
"select": {
|
||||||
|
"rows": {
|
||||||
|
"_": "%d Zeilen ausgewählt",
|
||||||
|
"1": "1 Zeile ausgewählt"
|
||||||
|
},
|
||||||
|
"cells": {
|
||||||
|
"1": "1 Zelle ausgewählt",
|
||||||
|
"_": "%d Zellen ausgewählt"
|
||||||
|
},
|
||||||
|
"columns": {
|
||||||
|
"1": "1 Spalte ausgewählt",
|
||||||
|
"_": "%d Spalten ausgewählt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"print": "Drucken",
|
||||||
|
"copy": "Kopieren",
|
||||||
|
"copyTitle": "In Zwischenablage kopieren",
|
||||||
|
"copySuccess": {
|
||||||
|
"_": "%d Zeilen kopiert",
|
||||||
|
"1": "1 Zeile kopiert"
|
||||||
|
},
|
||||||
|
"collection": "Aktionen <span class=\"ui-button-icon-primary ui-icon ui-icon-triangle-1-s\"><\/span>",
|
||||||
|
"colvis": "Spaltensichtbarkeit",
|
||||||
|
"colvisRestore": "Sichtbarkeit wiederherstellen",
|
||||||
|
"csv": "CSV",
|
||||||
|
"excel": "Excel",
|
||||||
|
"pageLength": {
|
||||||
|
"-1": "Alle Zeilen anzeigen",
|
||||||
|
"1": "Zeige 1 Zeile",
|
||||||
|
"_": "Zeige %d Zeilen"
|
||||||
|
},
|
||||||
|
"pdf": "PDF",
|
||||||
|
"createState": "Ansicht erstellen",
|
||||||
|
"removeAllStates": "Alle Ansichten entfernen",
|
||||||
|
"removeState": "Entfernen",
|
||||||
|
"renameState": "Umbenennen",
|
||||||
|
"savedStates": "Gespeicherte Ansicht",
|
||||||
|
"stateRestore": "Ansicht %d",
|
||||||
|
"updateState": "Aktualisieren",
|
||||||
|
"copyKeys": "Taste <i>STRG<\\\/i> oder <i>⌘<\\\/i> + <i>C<\\\/i> drücken um die Tabelle<br \/>in den Zwischenspeicher zu kopieren.<br \/><br \/>Um den Vorgang abzubrechen, Nachricht anklicken oder Escape-Taste drücken.<\/i><\/i><\/i>"
|
||||||
|
},
|
||||||
|
"autoFill": {
|
||||||
|
"cancel": "Abbrechen",
|
||||||
|
"fill": "Alle Zellen mit <i>%d<i> füllen<\/i><\/i>",
|
||||||
|
"fillHorizontal": "Alle horizontalen Zellen füllen",
|
||||||
|
"fillVertical": "Alle vertikalen Zellen füllen",
|
||||||
|
"info": "Automatische Vervollständigung"
|
||||||
|
},
|
||||||
|
"decimal": ",",
|
||||||
|
"search": "Suche:",
|
||||||
|
"searchBuilder": {
|
||||||
|
"add": "Bedingung hinzufügen",
|
||||||
|
"button": {
|
||||||
|
"0": "Such-Baukasten",
|
||||||
|
"_": "Such-Baukasten (%d)"
|
||||||
|
},
|
||||||
|
"condition": "Bedingung",
|
||||||
|
"conditions": {
|
||||||
|
"date": {
|
||||||
|
"after": "Nach",
|
||||||
|
"before": "Vor",
|
||||||
|
"between": "Zwischen",
|
||||||
|
"empty": "Leer",
|
||||||
|
"not": "Nicht",
|
||||||
|
"notBetween": "Nicht zwischen",
|
||||||
|
"notEmpty": "Nicht leer",
|
||||||
|
"equals": "Gleich"
|
||||||
|
},
|
||||||
|
"number": {
|
||||||
|
"between": "Zwischen",
|
||||||
|
"empty": "Leer",
|
||||||
|
"equals": "Entspricht",
|
||||||
|
"gt": "Größer als",
|
||||||
|
"gte": "Größer als oder gleich",
|
||||||
|
"lt": "Kleiner als",
|
||||||
|
"lte": "Kleiner als oder gleich",
|
||||||
|
"not": "Nicht",
|
||||||
|
"notBetween": "Nicht zwischen",
|
||||||
|
"notEmpty": "Nicht leer"
|
||||||
|
},
|
||||||
|
"string": {
|
||||||
|
"contains": "Beinhaltet",
|
||||||
|
"empty": "Leer",
|
||||||
|
"endsWith": "Endet mit",
|
||||||
|
"equals": "Entspricht",
|
||||||
|
"not": "Nicht",
|
||||||
|
"notEmpty": "Nicht leer",
|
||||||
|
"startsWith": "Startet mit",
|
||||||
|
"notContains": "enthält nicht",
|
||||||
|
"notStartsWith": "startet nicht mit",
|
||||||
|
"notEndsWith": "endet nicht mit"
|
||||||
|
},
|
||||||
|
"array": {
|
||||||
|
"equals": "ist gleich",
|
||||||
|
"empty": "ist leer",
|
||||||
|
"contains": "enthält",
|
||||||
|
"not": "ist ungleich",
|
||||||
|
"notEmpty": "ist nicht leer",
|
||||||
|
"without": "aber nicht"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"data": "Daten",
|
||||||
|
"deleteTitle": "Filterregel entfernen",
|
||||||
|
"leftTitle": "Äußere Kriterien",
|
||||||
|
"rightTitle": "Innere Kriterien",
|
||||||
|
"title": {
|
||||||
|
"0": "Such-Baukasten",
|
||||||
|
"_": "Such-Baukasten (%d)"
|
||||||
|
},
|
||||||
|
"value": "Wert",
|
||||||
|
"clearAll": "Alle entfernen",
|
||||||
|
"logicAnd": "Und",
|
||||||
|
"logicOr": "Oder"
|
||||||
|
},
|
||||||
|
"searchPanes": {
|
||||||
|
"clearMessage": "Leeren",
|
||||||
|
"collapse": {
|
||||||
|
"0": "Suchmasken",
|
||||||
|
"_": "Suchmasken (%d)"
|
||||||
|
},
|
||||||
|
"countFiltered": "{shown} ({total})",
|
||||||
|
"emptyPanes": "Keine Suchmasken",
|
||||||
|
"title": "Aktive Filter: %d",
|
||||||
|
"showMessage": "zeige Alle",
|
||||||
|
"collapseMessage": "Alle einklappen",
|
||||||
|
"count": "{total}",
|
||||||
|
"loadMessage": "Lade Suchmasken .."
|
||||||
|
},
|
||||||
|
"thousands": ".",
|
||||||
|
"zeroRecords": "Keine passenden Einträge gefunden",
|
||||||
|
"lengthMenu": "_MENU_ Zeilen anzeigen",
|
||||||
|
"datetime": {
|
||||||
|
"previous": "Vorher",
|
||||||
|
"next": "Nachher",
|
||||||
|
"hours": "Stunden",
|
||||||
|
"minutes": "Minuten",
|
||||||
|
"seconds": "Sekunden",
|
||||||
|
"unknown": "Unbekannt",
|
||||||
|
"weekdays": [
|
||||||
|
"Sonntag",
|
||||||
|
"Montag",
|
||||||
|
"Dienstag",
|
||||||
|
"Mittwoch",
|
||||||
|
"Donnerstag",
|
||||||
|
"Freitag",
|
||||||
|
"Samstag"
|
||||||
|
],
|
||||||
|
"months": [
|
||||||
|
"Januar",
|
||||||
|
"Februar",
|
||||||
|
"März",
|
||||||
|
"April",
|
||||||
|
"Mai",
|
||||||
|
"Juni",
|
||||||
|
"Juli",
|
||||||
|
"August",
|
||||||
|
"September",
|
||||||
|
"Oktober",
|
||||||
|
"November",
|
||||||
|
"Dezember"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"close": "Schließen",
|
||||||
|
"create": {
|
||||||
|
"button": "Neu",
|
||||||
|
"title": "Neuen Eintrag erstellen",
|
||||||
|
"submit": "Erstellen"
|
||||||
|
},
|
||||||
|
"remove": {
|
||||||
|
"confirm": {
|
||||||
|
"_": "Sollen %d Zeilen gelöscht werden?",
|
||||||
|
"1": "Soll diese Zeile gelöscht werden?"
|
||||||
|
},
|
||||||
|
"button": "Entfernen",
|
||||||
|
"title": "Entfernen",
|
||||||
|
"submit": "Entfernen"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"system": "Ein Systemfehler ist aufgetreten"
|
||||||
|
},
|
||||||
|
"multi": {
|
||||||
|
"title": "Mehrere Werte",
|
||||||
|
"restore": "Änderungen zurücksetzen",
|
||||||
|
"noMulti": "Dieses Feld kann nur einzeln bearbeitet werden, nicht als Teil einer Mengen-Änderung.",
|
||||||
|
"info": "Die ausgewählten Elemente enthalten mehrere Werte für dieses Feld. Um alle Elemente für dieses Feld zu bearbeiten und auf denselben Wert zu setzen, hier klicken oder tippen, andernfalls behalten diese ihre individuellen Werte bei."
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"button": "Bearbeiten",
|
||||||
|
"title": "Eintrag bearbeiten",
|
||||||
|
"submit": "Bearbeiten"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"searchPlaceholder": "Suchen...",
|
||||||
|
"stateRestore": {
|
||||||
|
"creationModal": {
|
||||||
|
"button": "Erstellen",
|
||||||
|
"columns": {
|
||||||
|
"search": "Spalten Suche",
|
||||||
|
"visible": "Spalten Sichtbarkeit"
|
||||||
|
},
|
||||||
|
"name": "Name:",
|
||||||
|
"order": "Sortieren",
|
||||||
|
"paging": "Seiten",
|
||||||
|
"scroller": "Scroll Position",
|
||||||
|
"search": "Suche",
|
||||||
|
"searchBuilder": "Such-Baukasten",
|
||||||
|
"select": "Auswahl",
|
||||||
|
"title": "Neue Ansicht erstellen",
|
||||||
|
"toggleLabel": "Inkludiert:"
|
||||||
|
},
|
||||||
|
"duplicateError": "Eine Ansicht mit diesem Namen existiert bereits.",
|
||||||
|
"emptyError": "Name darf nicht leer sein.",
|
||||||
|
"emptyStates": "Keine gespeicherten Ansichten",
|
||||||
|
"removeError": "Entfernen der Ansicht fehlgeschlagen.",
|
||||||
|
"removeJoiner": " und ",
|
||||||
|
"removeSubmit": "Entfernen",
|
||||||
|
"removeTitle": "Ansicht entfernen",
|
||||||
|
"renameButton": "Umbenennen",
|
||||||
|
"renameLabel": "Neuer Name für %s:",
|
||||||
|
"renameTitle": "Ansicht umbenennen",
|
||||||
|
"removeConfirm": "Sicher dass %s entfernt werden soll?"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
25
public/datatables/json/german_backup.json
Normal file
25
public/datatables/json/german_backup.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"sEmptyTable": "Keine Daten in der Tabelle vorhanden",
|
||||||
|
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
|
||||||
|
"sInfoEmpty": "0 bis 0 von 0 Einträgen",
|
||||||
|
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
|
||||||
|
"sInfoPostFix": "",
|
||||||
|
"sInfoThousands": ".",
|
||||||
|
"sLengthMenu": "_MENU_ <span class=\"d-lg-inline-block d-none\">Einträge anzeigen</span>",
|
||||||
|
"sLoadingRecords": "Wird geladen...",
|
||||||
|
"sProcessing": "Bitte warten...",
|
||||||
|
"sSearch": "Suchen",
|
||||||
|
"sZeroRecords": "Keine Einträge vorhanden.",
|
||||||
|
"oPaginate": {
|
||||||
|
"sFirst": "Erste",
|
||||||
|
"sPrevious": "Zurück",
|
||||||
|
"sNext": "Nächste",
|
||||||
|
"sLast": "Letzte"
|
||||||
|
},
|
||||||
|
"oAria": {
|
||||||
|
"sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
|
||||||
|
"sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,22 +3,32 @@ if (typeof hidesearch === "undefined") {
|
|||||||
var hidesearch;
|
var hidesearch;
|
||||||
hidesearch = [100];
|
hidesearch = [100];
|
||||||
}
|
}
|
||||||
|
if (typeof hidesearch === "undefined") {
|
||||||
|
var cstmbuttons;
|
||||||
|
cstmbuttons = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (typeof pageLength === "undefined") {
|
||||||
|
var pageLength;
|
||||||
|
pageLength = -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof cstmdom === "undefined") {
|
if (typeof cstmdom === "undefined") {
|
||||||
var cstmdom;
|
var cstmdom;
|
||||||
cstmdom = "flBrtip";
|
cstmdom = "flBrtip";
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
if (typeof columndefs === "undefined") {
|
if (typeof columndefs === "undefined") {
|
||||||
var columndefs;
|
var columndefs;
|
||||||
columndefs = "";
|
columndefs = "";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof columnfilter === "undefined") {
|
if (typeof columnfilter === "undefined") {
|
||||||
var columnfilter;
|
var columnfilter;
|
||||||
columnfilter = "";
|
columnfilter = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof columnoptions === "undefined") {
|
if (typeof columnoptions === "undefined") {
|
||||||
var columnoptions;
|
var columnoptions;
|
||||||
columnoptions = "";
|
columnoptions = "";
|
||||||
@@ -43,20 +53,22 @@ $('#filterrow th').each(function (i) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
table = $('#datatable').DataTable({
|
table = $('#datatable').DataTable({
|
||||||
responsive: true,
|
|
||||||
"order": [[1, "desc"]],
|
"order": [[1, "desc"]],
|
||||||
buttons: [
|
fixedHeader: {
|
||||||
{
|
header: true,
|
||||||
extend: 'excelHtml5',
|
headerOffset: $('#topnav').outerHeight()
|
||||||
text: 'XLSX Export',
|
|
||||||
className: 'btn-success margina d-none d-lg-block',
|
},
|
||||||
exportOptions: {
|
lengthMenu: [
|
||||||
columns: ['th:not(:last-child)']
|
[25, 50, 100, -1],
|
||||||
}
|
[25, 50, 100, 'All']
|
||||||
}
|
|
||||||
], columnDefs: [
|
|
||||||
columndefs
|
|
||||||
],
|
],
|
||||||
|
columnDefs: [
|
||||||
|
{width: '300px', targets: 0},
|
||||||
|
{width: '250px', targets: 1},
|
||||||
|
{width: '80px', targets: 7},
|
||||||
|
],
|
||||||
|
|
||||||
pageLength: 100,
|
pageLength: 100,
|
||||||
"language": {
|
"language": {
|
||||||
"url": "/datatables/json/german.json?v1"
|
"url": "/datatables/json/german.json?v1"
|
||||||
@@ -65,14 +77,18 @@ table = $('#datatable').DataTable({
|
|||||||
stateSave: true,
|
stateSave: true,
|
||||||
stateDuration: 60 * 60 * 24 * 30,
|
stateDuration: 60 * 60 * 24 * 30,
|
||||||
"initComplete": function () {
|
"initComplete": function () {
|
||||||
$('#datatable_filter').append('<i id="clear_cookie" class="fas fa-times clear-fa" title="Filter löschen" aria-hidden="true" ></i>');
|
$('.dt-search').append('<i id="clear_cookie" class="fas fa-times clear-fa" title="Filter löschen" aria-hidden="true" ></i>');
|
||||||
|
$('.dt-search').addClass('d-inline-block');
|
||||||
|
$.each(cstmbuttons, function (index, value) {
|
||||||
|
$('.dt-buttons').append(value);
|
||||||
|
});
|
||||||
|
$('#dt-length-0').addClass('form-control-sm');
|
||||||
$('#clear_cookie').click(function () {
|
$('#clear_cookie').click(function () {
|
||||||
$('#filterrow input').val('');
|
$('#filterrow input').val('');
|
||||||
$('#filterrow select').val('').change();
|
$('#filterrow select').val('');
|
||||||
table.search('').columns().search('').draw();
|
table.search('').columns().search('').draw();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
"dom": cstmdom,
|
|
||||||
"ajax": {
|
"ajax": {
|
||||||
"url": requestUrl,
|
"url": requestUrl,
|
||||||
"type": "GET",
|
"type": "GET",
|
||||||
@@ -145,7 +161,33 @@ table = $('#datatable').DataTable({
|
|||||||
},
|
},
|
||||||
className: "edit-td"
|
className: "edit-td"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
layout:
|
||||||
|
{
|
||||||
|
topStart: {
|
||||||
|
search: {
|
||||||
|
placeholder: ''
|
||||||
|
}, buttons: [
|
||||||
|
{
|
||||||
|
extend: 'excelHtml5',
|
||||||
|
text: 'XLSX Export',
|
||||||
|
className: 'btn-success margina d-none d-lg-block',
|
||||||
|
exportOptions: {
|
||||||
|
columns: ['th:not(:last-child)'],
|
||||||
|
format: {
|
||||||
|
body: function (data, row, column, node) {
|
||||||
|
data = $('<p>' + data + '</p>').text();
|
||||||
|
return $.isNumeric(data.replace(',', '.')) ? data.replace(',', '.') : data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
topEnd: {
|
||||||
|
pageLength: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -177,7 +219,20 @@ if (state) {
|
|||||||
});
|
});
|
||||||
table.draw();
|
table.draw();
|
||||||
}
|
}
|
||||||
|
$(window).scroll(function () {
|
||||||
|
var height = $(window).scrollTop();
|
||||||
|
|
||||||
|
if (height > 450) {
|
||||||
|
if ($('#filterrow').is(':visible')) {
|
||||||
|
$('#filterrow').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if ($('#filterrow').is(':hidden')) {
|
||||||
|
$('#filterrow').show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$(".select2").select2();
|
$(".select2").select2();
|
||||||
|
|
||||||
@@ -280,7 +335,7 @@ $(document).ready(function () {
|
|||||||
$('.car-div').find('input').val('');
|
$('.car-div').find('input').val('');
|
||||||
$('#timerecordingCar_id').val('').change();
|
$('#timerecordingCar_id').val('').change();
|
||||||
$('.car-div').hide();
|
$('.car-div').hide();
|
||||||
} else if (parseInt($(this).find(':selected').data('hourday')) === 7) {
|
} else if (parseInt($(this).find(':selected').data('hourday')) === 7) {
|
||||||
$('.businesstrip-div').show();
|
$('.businesstrip-div').show();
|
||||||
$('.businesstrip-check-div').hide();
|
$('.businesstrip-check-div').hide();
|
||||||
$('#businesstrip').prop("checked", true);
|
$('#businesstrip').prop("checked", true);
|
||||||
|
|||||||
Reference in New Issue
Block a user