mise en place télétravail et astreinte
This commit is contained in:
parent
e9b0c17430
commit
c03a2497e8
|
@ -2,9 +2,9 @@ knp_snappy:
|
|||
temporary_folder: "%kernel.cache_dir%/snappy"
|
||||
pdf:
|
||||
enabled: true
|
||||
binary: '/var/www/html/ninegitea/scripts/wkhtmltopdf/wkhtmltopdf'
|
||||
binary: '/var/www/html/ninebadge/scripts/wkhtmltopdf/wkhtmltopdf'
|
||||
options: []
|
||||
image:
|
||||
enabled: true
|
||||
binary: '/var/www/html/ninegitea/scripts/wkhtmltopdf/wkhtmltoimage'
|
||||
binary: '/var/www/html/ninebadge/scripts/wkhtmltopdf/wkhtmltoimage'
|
||||
options: []
|
||||
|
|
|
@ -182,11 +182,11 @@ app_tallyday:
|
|||
defaults: { _controller: App\Controller\TallydayController:tallyday }
|
||||
|
||||
app_tallyday_start:
|
||||
path: /user/tallyday/start
|
||||
path: /user/tallyday/start/{istelework}/{ispenaltypassive}/{ispenaltyactive}
|
||||
defaults: { _controller: App\Controller\TallydayController:start }
|
||||
|
||||
app_tallyday_end:
|
||||
path: /user/tallyday/end
|
||||
path: /user/tallyday/end/{istelework}/{ispenaltypassive}/{ispenaltyactive}
|
||||
defaults: { _controller: App\Controller\TallydayController:end }
|
||||
|
||||
app_tallyday_userlist:
|
||||
|
|
|
@ -107,6 +107,13 @@ class RestController extends AbstractFOSRestController
|
|||
* description="User APIKey",
|
||||
* type="string"
|
||||
* )
|
||||
* @SWG\Parameter(
|
||||
* name="type",
|
||||
* in="formData",
|
||||
* required=false,
|
||||
* description="Type of time = null | istelework | ispenaltypassive | ispenaltyactive",
|
||||
* type="string"
|
||||
* )
|
||||
*/
|
||||
|
||||
|
||||
|
@ -120,6 +127,7 @@ class RestController extends AbstractFOSRestController
|
|||
|
||||
// Récupération des parametres
|
||||
$key=$request->get("key");
|
||||
$type=$request->get("type");
|
||||
|
||||
// Rechercher l'utilisateur associé à la clé
|
||||
$user = $em->getRepository("App:User")->findOneBy(["apikey"=>$key]);
|
||||
|
@ -127,6 +135,13 @@ class RestController extends AbstractFOSRestController
|
|||
$view = $this->view("API Key inconnue", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
// Tester le type
|
||||
if($type!=null && $type!="istelework" && $type!="ispenaltypassive" && $type!="ispenaltyactive") {
|
||||
$view = $this->view("Type inconnu", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
$datenow=new \DateTime("now");
|
||||
$datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 );
|
||||
|
||||
|
@ -146,6 +161,9 @@ class RestController extends AbstractFOSRestController
|
|||
$data->setValidateuser(false);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(($type=="istelework"));
|
||||
$data->setIspenaltyactive(($type=="ispenaltyactive"));
|
||||
$data->setIspenaltypassive(($type=="ispenaltypassive"));
|
||||
$data->setDatestart($datenow);
|
||||
$status="started";
|
||||
}
|
||||
|
@ -153,6 +171,9 @@ class RestController extends AbstractFOSRestController
|
|||
// Sinon c'est que l'on ferme un creneau
|
||||
elseif($data) {
|
||||
$data->setDateend($datenow);
|
||||
$data->setIstelework(($type=="istelework"));
|
||||
$data->setIspenaltyactive(($type=="ispenaltyactive"));
|
||||
$data->setIspenaltypassive(($type=="ispenaltypassive"));
|
||||
$status="stopped";
|
||||
}
|
||||
|
||||
|
@ -211,6 +232,13 @@ class RestController extends AbstractFOSRestController
|
|||
* description="User APIKey",
|
||||
* type="string"
|
||||
* )
|
||||
* @SWG\Parameter(
|
||||
* name="type",
|
||||
* in="formData",
|
||||
* required=false,
|
||||
* description="Type of time = null | istelework | ispenaltypassive | ispenaltyactive",
|
||||
* type="string"
|
||||
* )
|
||||
*/
|
||||
|
||||
|
||||
|
@ -224,6 +252,7 @@ class RestController extends AbstractFOSRestController
|
|||
|
||||
// Récupération des parametres
|
||||
$key=$request->get("key");
|
||||
$type=$request->get("type");
|
||||
|
||||
// Rechercher l'utilisateur associé à la clé
|
||||
$user = $em->getRepository("App:User")->findOneBy(["apikey"=>$key]);
|
||||
|
@ -231,6 +260,13 @@ class RestController extends AbstractFOSRestController
|
|||
$view = $this->view("API Key inconnue", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
// Tester le type
|
||||
if($type!=null && $type!="istelework" && $type!="ispenaltypassive" && $type!="ispenaltyactive") {
|
||||
$view = $this->view("Type inconnu", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
$datenow=new \DateTime("now");
|
||||
$datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 );
|
||||
|
||||
|
@ -250,6 +286,9 @@ class RestController extends AbstractFOSRestController
|
|||
$data->setValidateuser(false);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(($type=="istelework"));
|
||||
$data->setIspenaltyactive(($type=="ispenaltyactive"));
|
||||
$data->setIspenaltypassive(($type=="ispenaltypassive"));
|
||||
$data->setDatestart($datenow);
|
||||
}
|
||||
|
||||
|
@ -309,6 +348,13 @@ class RestController extends AbstractFOSRestController
|
|||
* description="User APIKey",
|
||||
* type="string"
|
||||
* )
|
||||
* @SWG\Parameter(
|
||||
* name="type",
|
||||
* in="formData",
|
||||
* required=false,
|
||||
* description="Type of time = null | istelework | ispenaltypassive | ispenaltyactive",
|
||||
* type="string"
|
||||
* )
|
||||
*/
|
||||
|
||||
|
||||
|
@ -322,6 +368,7 @@ class RestController extends AbstractFOSRestController
|
|||
|
||||
// Récupération des parametres
|
||||
$key=$request->get("key");
|
||||
$type=$request->get("type");
|
||||
|
||||
// Rechercher l'utilisateur associé à la clé
|
||||
$user = $em->getRepository("App:User")->findOneBy(["apikey"=>$key]);
|
||||
|
@ -329,6 +376,13 @@ class RestController extends AbstractFOSRestController
|
|||
$view = $this->view("API Key inconnue", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
// Tester le type
|
||||
if($type!=null && $type!="istelework" && $type!="ispenaltypassive" && $type!="ispenaltyactive") {
|
||||
$view = $this->view("Type inconnu", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
$datenow=new \DateTime("now");
|
||||
$datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 );
|
||||
|
||||
|
@ -349,6 +403,9 @@ class RestController extends AbstractFOSRestController
|
|||
// Sinon c'est que l'on ferme un creneau
|
||||
elseif($data) {
|
||||
$data->setDateend($datenow);
|
||||
$data->setIstelework(($type=="istelework"));
|
||||
$data->setIspenaltyactive(($type=="ispenaltyactive"));
|
||||
$data->setIspenaltypassive(($type=="ispenaltypassive"));
|
||||
}
|
||||
|
||||
// Sinon pas normal
|
||||
|
@ -423,6 +480,14 @@ class RestController extends AbstractFOSRestController
|
|||
* description="Date end format YYYY-MM-DD H:I",
|
||||
* type="string"
|
||||
* )
|
||||
*
|
||||
* @SWG\Parameter(
|
||||
* name="type",
|
||||
* in="formData",
|
||||
* required=false,
|
||||
* description="Type of time = null | istelework | ispenaltypassive | ispenaltyactive",
|
||||
* type="string"
|
||||
* )
|
||||
*/
|
||||
|
||||
public function addtimer(Request $request) {
|
||||
|
@ -437,6 +502,7 @@ class RestController extends AbstractFOSRestController
|
|||
$start=new \DateTime($request->get("start"));
|
||||
$end=$request->get("end");
|
||||
if(!is_null($end)) $end=new \DateTime($end);
|
||||
$type=$request->get("type");
|
||||
|
||||
// Rechercher l'utilisateur associé à la clé
|
||||
$user = $em->getRepository("App:User")->findOneBy(["apikey"=>$key]);
|
||||
|
@ -445,6 +511,14 @@ class RestController extends AbstractFOSRestController
|
|||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
|
||||
// Tester le type
|
||||
if($type!=null && $type!="istelework" && $type!="ispenaltypassive" && $type!="ispenaltyactive") {
|
||||
$view = $this->view("Type inconnu", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
// Controler la validité des timers
|
||||
if(!$em->getRepository("App:Tallyday")->ctrlTallyday($user,$start)) {
|
||||
$view = $this->view("Impossible d'entamer une journée sans avoir terminé les jours précédents", 404);
|
||||
return $this->handleView($view);
|
||||
|
@ -459,6 +533,9 @@ class RestController extends AbstractFOSRestController
|
|||
$data->setValidateuser(false);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(($type=="istelework"));
|
||||
$data->setIspenaltyactive(($type=="ispenaltyactive"));
|
||||
$data->setIspenaltypassive(($type=="ispenaltypassive"));
|
||||
$data->setDatestart($start);
|
||||
$data->setDateend($end);
|
||||
|
||||
|
@ -669,6 +746,9 @@ class RestController extends AbstractFOSRestController
|
|||
$data->setValidateuser(true);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(false);
|
||||
$data->setIspenaltyactive(false);
|
||||
$data->setIspenaltypassive(false);
|
||||
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
|
@ -862,7 +942,11 @@ class RestController extends AbstractFOSRestController
|
|||
foreach($datas as $data) {
|
||||
$isvalideuser=$data->getValidateuser();
|
||||
$isvalidemaster=$data->getValidatemaster();
|
||||
array_push($timers,["start"=>$data->getDatestart(),"end"=>$data->getDateend()]);
|
||||
$type="";
|
||||
if($data->getIstelework()) $type="istelework";
|
||||
if($data->getIspenaltypassive()) $type="ispenaltypassive";
|
||||
if($data->getIspenaltyactive()) $type="ispenaltyactive";
|
||||
array_push($timers,["start"=>$data->getDatestart(),"end"=>$data->getDateend(),"type"=>$type]);
|
||||
$e->add($data->getTimeday());
|
||||
}
|
||||
$interval = $f->diff($e);
|
||||
|
|
|
@ -298,6 +298,9 @@ class TallydayController extends AbstractController
|
|||
$data->setValidateuser(false);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(false);
|
||||
$data->setIspenaltyactive(false);
|
||||
$data->setIspenaltypassive(false);
|
||||
|
||||
// Création du formulaire
|
||||
$form = $this->createForm(Form::class,$data);
|
||||
|
@ -517,6 +520,9 @@ class TallydayController extends AbstractController
|
|||
$data->setValidateuser(true);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(false);
|
||||
$data->setIspenaltyactive(false);
|
||||
$data->setIspenaltypassive(false);
|
||||
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
|
@ -567,6 +573,9 @@ class TallydayController extends AbstractController
|
|||
$data->setValidateuser(false);
|
||||
$data->setValidatemaster(true);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework(false);
|
||||
$data->setIspenaltyactive(false);
|
||||
$data->setIspenaltypassive(false);
|
||||
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
|
@ -709,6 +718,9 @@ class TallydayController extends AbstractController
|
|||
"avatar"=>$user->getAvatar(),
|
||||
"displayname"=>$user->getDisplayname(),
|
||||
"timemonth"=>"00:00",
|
||||
"timetelework"=>"00:00",
|
||||
"timepenaltypassive"=>"00:00",
|
||||
"timepenaltyactive"=>"00:00",
|
||||
"validates"=>[],
|
||||
];
|
||||
|
||||
|
@ -725,6 +737,15 @@ class TallydayController extends AbstractController
|
|||
$emonth = new \DateTime('00:00');
|
||||
$fmonth = clone $emonth;
|
||||
|
||||
$eteleworkmonth = new \DateTime('00:00');
|
||||
$fteleworkmonth = clone $eteleworkmonth;
|
||||
|
||||
$epenaltypassivemonth = new \DateTime('00:00');
|
||||
$fpenaltypassivemonth = clone $epenaltypassivemonth;
|
||||
|
||||
$epenaltyactivemonth = new \DateTime('00:00');
|
||||
$fpenaltyactivemonth = clone $epenaltyactivemonth;
|
||||
|
||||
while($datenow<=$dateend) {
|
||||
$eday = new \DateTime('00:00');
|
||||
$fday = clone $eday;
|
||||
|
@ -733,6 +754,15 @@ class TallydayController extends AbstractController
|
|||
foreach($datas as $data) {
|
||||
$emonth->add($data->getTimeday());
|
||||
$eday->add($data->getTimeday());
|
||||
|
||||
if($data->getIstelework())
|
||||
$eteleworkmonth->add($data->getTimeday());
|
||||
|
||||
if($data->getIspenaltypassive())
|
||||
$epenaltypassivemonth->add($data->getTimeday());
|
||||
|
||||
if($data->getIspenaltyactive())
|
||||
$epenaltyactivemonth->add($data->getTimeday());
|
||||
}
|
||||
|
||||
$interval = $fday->diff($eday);
|
||||
|
@ -750,6 +780,18 @@ class TallydayController extends AbstractController
|
|||
$interval = $fmonth->diff($emonth);
|
||||
$timemonth = (($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i);
|
||||
$dates[$user->getId()]["timemonth"]=$timemonth;
|
||||
|
||||
$interval = $fteleworkmonth->diff($eteleworkmonth);
|
||||
$timemonth = (($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i);
|
||||
$dates[$user->getId()]["timetelework"]=$timemonth;
|
||||
|
||||
$interval = $fpenaltypassivemonth->diff($epenaltypassivemonth);
|
||||
$timemonth = (($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i);
|
||||
$dates[$user->getId()]["timepenaltypassive"]=$timemonth;
|
||||
|
||||
$interval = $fpenaltyactivemonth->diff($epenaltyactivemonth);
|
||||
$timemonth = (($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i);
|
||||
$dates[$user->getId()]["timepenaltyactive"]=$timemonth;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -779,7 +821,6 @@ class TallydayController extends AbstractController
|
|||
$appAlias=$this->getParameter("appAlias");
|
||||
|
||||
$render=str_replace("/$appAlias/","https://$appWeburl/$appAlias/",$render);
|
||||
//dump($render);
|
||||
|
||||
$this->knpSnappy->generateFromHtml($render,$fileloc);
|
||||
return $this->file($fileloc);
|
||||
|
@ -839,7 +880,7 @@ class TallydayController extends AbstractController
|
|||
return $response;
|
||||
}
|
||||
|
||||
public function start() {
|
||||
public function start(bool $istelework,bool $ispenaltypassive,bool $ispenaltyactive) {
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
$datenow=new \DateTime("now");
|
||||
|
@ -856,6 +897,10 @@ class TallydayController extends AbstractController
|
|||
$data->setValidateuser(false);
|
||||
$data->setValidatemaster(false);
|
||||
$data->setIsbreakday(false);
|
||||
$data->setIstelework($istelework);
|
||||
$data->setIspenaltyactive($ispenaltyactive);
|
||||
$data->setIspenaltypassive($ispenaltypassive);
|
||||
|
||||
$data->setDatestart($datenow);
|
||||
}
|
||||
|
||||
|
@ -871,7 +916,7 @@ class TallydayController extends AbstractController
|
|||
|
||||
}
|
||||
|
||||
public function end() {
|
||||
public function end(bool $istelework,bool $ispenaltypassive,bool $ispenaltyactive) {
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
// On recherche le dernier pointage de la journée
|
||||
|
@ -898,6 +943,10 @@ class TallydayController extends AbstractController
|
|||
}
|
||||
|
||||
$data->setDateend($datenow);
|
||||
$data->setIstelework($istelework);
|
||||
$data->setIspenaltyactive($ispenaltyactive);
|
||||
$data->setIspenaltypassive($ispenaltypassive);
|
||||
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
|
||||
|
|
|
@ -52,6 +52,21 @@ class Tallyday
|
|||
*/
|
||||
private $isbreakday;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="boolean")
|
||||
*/
|
||||
private $istelework;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="boolean")
|
||||
*/
|
||||
private $ispenaltypassive;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="boolean")
|
||||
*/
|
||||
private $ispenaltyactive;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="string", nullable=true)
|
||||
*/
|
||||
|
@ -181,6 +196,42 @@ class Tallyday
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function getIstelework(): ?bool
|
||||
{
|
||||
return $this->istelework;
|
||||
}
|
||||
|
||||
public function setIstelework(bool $istelework): self
|
||||
{
|
||||
$this->istelework = $istelework;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getIspenaltypassive(): ?bool
|
||||
{
|
||||
return $this->ispenaltypassive;
|
||||
}
|
||||
|
||||
public function setIspenaltypassive(bool $ispenaltypassive): self
|
||||
{
|
||||
$this->ispenaltypassive = $ispenaltypassive;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getIspenaltyactive(): ?bool
|
||||
{
|
||||
return $this->ispenaltyactive;
|
||||
}
|
||||
|
||||
public function setIspenaltyactive(bool $ispenaltyactive): self
|
||||
{
|
||||
$this->ispenaltyactive = $ispenaltyactive;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -52,6 +52,30 @@ class TallydayType extends AbstractType
|
|||
"attr" => ["class"=>"timepicker"],
|
||||
]
|
||||
);
|
||||
|
||||
$choices=["non" => "0","oui" => "1"];
|
||||
$builder->add("istelework",
|
||||
ChoiceType::class,[
|
||||
"label" =>"En Télétravail ?",
|
||||
"choices" => $choices
|
||||
]
|
||||
);
|
||||
|
||||
$choices=["non" => "0","oui" => "1"];
|
||||
$builder->add("ispenaltypassive",
|
||||
ChoiceType::class,[
|
||||
"label" =>"En Astreinte passive ?",
|
||||
"choices" => $choices
|
||||
]
|
||||
);
|
||||
|
||||
$choices=["non" => "0","oui" => "1"];
|
||||
$builder->add("ispenaltyactive",
|
||||
ChoiceType::class,[
|
||||
"label" =>"En Astreinte active ?",
|
||||
"choices" => $choices
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
|
|
|
@ -81,18 +81,26 @@
|
|||
|
||||
{% block localjavascript %}
|
||||
$(document).ready(function() {
|
||||
/*
|
||||
$('.timepicker').timepicki({
|
||||
show_meridian:false,
|
||||
min_hour_value:0,
|
||||
max_hour_value:23,
|
||||
step_size_minutes:5,
|
||||
overflow_minutes:true,
|
||||
increase_direction:'up',
|
||||
disable_keyboard_mobile: true,
|
||||
reset: true
|
||||
$("#tallyday_istelework").change(function(){
|
||||
if($("#tallyday_istelework").val()==1) {
|
||||
$("#tallyday_ispenaltypassive").val(0);
|
||||
$("#tallyday_ispenaltyactive").val(0);
|
||||
}
|
||||
});
|
||||
|
||||
$("#tallyday_ispenaltypassive").change(function(){
|
||||
if($("#tallyday_ispenaltypassive").val()==1) {
|
||||
$("#tallyday_istelework").val(0);
|
||||
$("#tallyday_ispenaltyactive").val(0);
|
||||
}
|
||||
});
|
||||
|
||||
$("#tallyday_ispenaltyactive").change(function(){
|
||||
if($("#tallyday_ispenaltyactive").val()==1) {
|
||||
$("#tallyday_ispenaltypassive").val(0);
|
||||
$("#tallyday_istelework").val(0);
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
$('.timepicker').timepicker({
|
||||
timeFormat: 'HH:mm',
|
||||
|
|
|
@ -6,7 +6,7 @@ th, td {
|
|||
color: #ffffff;
|
||||
background-color: #37474F;
|
||||
text-align: center;
|
||||
width: 100px;
|
||||
width: 115px;
|
||||
}
|
||||
|
||||
td {
|
||||
|
@ -44,7 +44,7 @@ td {
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="mt-3" style="margin:auto; max-width:1800px;">
|
||||
<div class="mt-3" style="margin:auto; max-width:2035px;">
|
||||
{% for date in dates %}
|
||||
{% if date.validates or date.notvalidates %}
|
||||
<div class="card mr-1 mb-1 float-left">
|
||||
|
@ -93,6 +93,16 @@ td {
|
|||
{% else %}
|
||||
{%if tallyday.datestart %} de {{tallyday.datestart|date("H:i") }} {% endif %}
|
||||
{%if tallyday.dateend %} à {{tallyday.dateend|date("H:i") }} {% endif %}
|
||||
|
||||
{% if tallyday.istelework %}
|
||||
<i class="fas fa-home" title="Télétravail"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltypassive %}
|
||||
<i class="fas fa-glasses" title="Astreinte Passive"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltyactive %}
|
||||
<i class="fas fa-fire" title="Astreinte Active"></i>
|
||||
{% endif %}
|
||||
{%endif%}
|
||||
<br>
|
||||
{% endfor %}
|
||||
|
@ -137,6 +147,15 @@ td {
|
|||
<a href="{{path("app_tallyday_masterupdate",{id:tallyday.id})}}">
|
||||
{%if tallyday.datestart %} de {{tallyday.datestart|date("H:i") }} {% endif %}
|
||||
{%if tallyday.dateend %} à {{tallyday.dateend|date("H:i") }} {% endif %}
|
||||
{% if tallyday.istelework %}
|
||||
<i class="fas fa-home" title="Télétravail"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltypassive %}
|
||||
<i class="fas fa-glasses" title="Astreinte Passive"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltyactive %}
|
||||
<i class="fas fa-fire" title="Astreinte Active"></i>
|
||||
{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
<br>
|
||||
|
|
|
@ -6,7 +6,7 @@ th, td {
|
|||
color: #ffffff;
|
||||
background-color: #37474F;
|
||||
text-align: center;
|
||||
width: {% if fgprint %}120px{%else%}100px{%endif%};
|
||||
width: {% if fgprint %}135px{%else%}115px{%endif%};
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ td {
|
|||
{% endif %}
|
||||
|
||||
|
||||
<div class="mt-3" style="margin:auto; max-width:1800px;">
|
||||
<div class="mt-3" style="margin:auto; max-width:1810px;">
|
||||
{% set nbusers=0 %}
|
||||
{% for date in dates %}
|
||||
{% if date.validates %}
|
||||
|
@ -70,7 +70,7 @@ td {
|
|||
<div class="card mr-1 mb-1 float-left {% if nbusers==2 %}breakpage{% endif %} ">
|
||||
<div class="card-header">
|
||||
<img src="{{date.avatar|urlavatar}}" class="avatar"> {{ date.displayname }}
|
||||
<div class="float-right">
|
||||
<div class="float-right text-right">
|
||||
{{date.timemonth}} / {{ timetowork }}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -123,6 +123,17 @@ td {
|
|||
{% else %}
|
||||
{%if tallyday.datestart %} de {{tallyday.datestart|date("H:i") }} {% endif %}
|
||||
{%if tallyday.dateend %} à {{tallyday.dateend|date("H:i") }} {% endif %}
|
||||
|
||||
|
||||
{% if tallyday.istelework %}
|
||||
<i class="fas fa-home" title="Télétravail"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltypassive %}
|
||||
<i class="fas fa-glasses" title="Astreinte Passive"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltyactive %}
|
||||
<i class="fas fa-fire" title="Astreinte Active"></i>
|
||||
{% endif %}
|
||||
{%endif%}
|
||||
<br>
|
||||
{% endfor %}
|
||||
|
@ -139,6 +150,27 @@ td {
|
|||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{%if date.timetelework!="0:00" or date.timepenaltypassive!="0:00" or date.timepenaltyactive!="0:00" %}
|
||||
<div class="mt-3" style="font-family:var(--fontbody)">
|
||||
<table><tr>
|
||||
{% endif %}
|
||||
{%if date.timetelework!="0:00"%}
|
||||
<td class="p-2" ><i class="fas fa-home fa-2x"></i><br>Télétravail<br>{{date.timetelework}}</td>
|
||||
{%endif%}
|
||||
|
||||
{%if date.timepenaltypassive!="0:00"%}
|
||||
<td class="p-2"><i class="fas fa-glasses fa-2x"></i><br>Astreinte Passive<br>{{date.timepenaltypassive}}</td>
|
||||
{%endif%}
|
||||
|
||||
{%if date.timepenaltyactive!="0:00"%}
|
||||
<td class="p-2"><i class="fas fa-fire fa-2x"></i><br>Astreinte Active<br>{{date.timepenaltyactive}}</td>
|
||||
{%endif%}
|
||||
|
||||
{%if date.timetelework!="0:00" or date.timepenaltypassive!="0:00" or date.timepenaltyactive!="0:00" %}
|
||||
</tr></table></div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
font-size: 40px;
|
||||
text-align: center;
|
||||
line-height:30px;
|
||||
width:250px;
|
||||
width:300px;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.clock small {
|
||||
|
@ -27,11 +27,11 @@
|
|||
}
|
||||
|
||||
.alert {
|
||||
width:250px;
|
||||
width:300px;
|
||||
}
|
||||
|
||||
.tallydaydetail {
|
||||
width:250px;
|
||||
width:300px;
|
||||
text-align: left;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
@ -61,12 +61,10 @@
|
|||
|
||||
{% if not tallydays or not tallydays|last.dateend is null %}
|
||||
{% if not isvalideuser and not isvalidemaster %}
|
||||
<a href="{{path("app_tallyday_start")}}" class="btn btn-success" style="font-size:150%; width:250px;">Début Pointage</a>
|
||||
<bouton id="btnstart" class="btn btn-success" style="font-size:220%; width:300px;">Début Pointage</bouton>
|
||||
{% endif %}
|
||||
{% elseif not isvalideuser and not isvalidemaster %}
|
||||
|
||||
<a href="{{path("app_tallyday_end")}}" class="btn btn-success" style="font-size:150%; width:250px;">Fin Pointage</a>
|
||||
|
||||
<bouton id="btnend" class="btn btn-success" style="font-size:220%; width:300px;">Fin Pointage</bouton>
|
||||
{% endif %}
|
||||
|
||||
<div class="tallydaydetail">
|
||||
|
@ -76,16 +74,24 @@
|
|||
<th>Début</th>
|
||||
<th>Fin</th>
|
||||
<th>Temps</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% set isvalideuser=false %}
|
||||
{% set isvalidemaster=false %}
|
||||
{% set istelework=false %}
|
||||
{% set ispenaltypassive=false %}
|
||||
{% set ispenaltyactive=false %}
|
||||
|
||||
{% for tallyday in tallydays %}
|
||||
{% set isvalideuser=tallyday.validateuser %}
|
||||
{% set isvalidemaster=tallyday.validatemaster %}
|
||||
{% set istelework=tallyday.istelework %}
|
||||
{% set ispenaltypassive=tallyday.ispenaltypassive %}
|
||||
{% set ispenaltyactive=tallyday.ispenaltyactive %}
|
||||
|
||||
{% if tallyday.datestart %}
|
||||
<tr>
|
||||
{% if tallyday.isbreakday %}
|
||||
|
@ -103,6 +109,17 @@
|
|||
</td>
|
||||
{% endif %}
|
||||
<td>{{tallyday.timedayformatted}}</td>
|
||||
<td>
|
||||
{% if tallyday.istelework %}
|
||||
<i class="fas fa-home" title="Télétravail"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltypassive %}
|
||||
<i class="fas fa-glasses" title="Astreinte Passive"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltyactive %}
|
||||
<i class="fas fa-fire" title="Astreinte Active"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
@ -122,6 +139,23 @@
|
|||
</div>
|
||||
|
||||
{% if not isvalideuser and not isvalidemaster %}
|
||||
<div style="width:380px; text-align:left">
|
||||
<div class="custom-control custom-switch" style="zoom:130%">
|
||||
<input type="checkbox" class="custom-control-input" id="istelework" {%if istelework%}checked{%endif%}>
|
||||
<label class="custom-control-label" for="istelework">Télétravail</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch" style="zoom:130%">
|
||||
<input type="checkbox" class="custom-control-input" id="ispenaltypassive" {%if ispenaltypassive%}checked{%endif%}>
|
||||
<label class="custom-control-label" for="ispenaltypassive">Astreinte Passive</label>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch" style="zoom:130%">
|
||||
<input type="checkbox" class="custom-control-input" id="ispenaltyactive" {%if ispenaltyactive%}checked{%endif%}>
|
||||
<label class="custom-control-label" for="ispenaltyactive">Astreinte Active</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="{{path("app_tallyday_uservalidate",{dateof:"now"|date("Y-m-d")})}}" class="btn btn-danger mt-3" style="width:380px" data-method="confirm" data-confirm="Êtes-vous sûr de vouloir valider votre journée ?">Valider ma journée</a>
|
||||
<br>
|
||||
{% endif %}
|
||||
|
@ -135,7 +169,7 @@
|
|||
{% if is_granted('ROLE_MASTER') %}
|
||||
<hr class="mt-5" style="width: 300px; background-color:var(--colorbgbodylight);">
|
||||
<h3>GESTION</h3>
|
||||
<a href="{{path("app_tallyday_masterlist")}}" class="btn btn-success mt-3" style="width:380px">Gestion des Pointages</a>
|
||||
<a href="{{path("app_tallyday_masterlist")}}" class="btn btn-success mt-3 mb-3" style="width:380px">Gestion des Pointages</a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
@ -149,6 +183,59 @@
|
|||
var nextrecalcul=new Date();
|
||||
var firstrecalcul=true;
|
||||
|
||||
$('#istelework').change(function() {
|
||||
if($("#istelework").is(":checked")) {
|
||||
$("#ispenaltyactive").prop("checked",false);
|
||||
$("#ispenaltypassive").prop("checked",false);
|
||||
}
|
||||
});
|
||||
|
||||
$('#ispenaltypassive').change(function() {
|
||||
if($("#ispenaltypassive").is(":checked")) {
|
||||
$("#istelework").prop("checked",false);
|
||||
$("#ispenaltyactive").prop("checked",false);
|
||||
}
|
||||
});
|
||||
|
||||
$('#ispenaltyactive').change(function() {
|
||||
if($("#ispenaltyactive").is(":checked")) {
|
||||
$("#istelework").prop("checked",false);
|
||||
$("#ispenaltypassive").prop("checked",false);
|
||||
}
|
||||
});
|
||||
|
||||
$("#btnstart").click(function() {
|
||||
istelework=0;
|
||||
ispenaltypassive=0;
|
||||
ispenaltyactive=0;
|
||||
|
||||
if($("#istelework").is(":checked")) istelework=1;
|
||||
if($("#ispenaltypassive").is(":checked")) ispenaltypassive=1;
|
||||
if($("#ispenaltyactive").is(":checked")) ispenaltyactive=1;
|
||||
|
||||
url="{{ path("app_tallyday_start",{istelework:'xxx',ispenaltypassive:'yyy',ispenaltyactive:'zzz'}) }}";
|
||||
url=url.replace('xxx',istelework);
|
||||
url=url.replace('yyy',ispenaltypassive);
|
||||
url=url.replace('zzz',ispenaltyactive);
|
||||
document.location.href=url;
|
||||
});
|
||||
|
||||
$("#btnend").click(function() {
|
||||
istelework=0;
|
||||
ispenaltypassive=0;
|
||||
ispenaltyactive=0;
|
||||
|
||||
if($("#istelework").is(":checked")) istelework=1;
|
||||
if($("#ispenaltypassive").is(":checked")) ispenaltypassive=1;
|
||||
if($("#ispenaltyactive").is(":checked")) ispenaltyactive=1;
|
||||
|
||||
url="{{ path("app_tallyday_end",{istelework:'xxx',ispenaltypassive:'yyy',ispenaltyactive:'zzz'}) }}";
|
||||
url=url.replace('xxx',istelework);
|
||||
url=url.replace('yyy',ispenaltypassive);
|
||||
url=url.replace('zzz',ispenaltyactive);
|
||||
document.location.href=url;
|
||||
});
|
||||
|
||||
function showTime(){
|
||||
// to get current time/ date.
|
||||
var date = new Date();
|
||||
|
|
|
@ -87,6 +87,17 @@
|
|||
{%endif%}
|
||||
{% endif %}
|
||||
= {{tallyday.timedayformatted}}
|
||||
|
||||
{% if tallyday.istelework %}
|
||||
<i class="fas fa-home" title="Télétravail"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltypassive %}
|
||||
<i class="fas fa-glasses" title="Astreinte Passive"></i>
|
||||
{% endif %}
|
||||
{% if tallyday.ispenaltyactive %}
|
||||
<i class="fas fa-fire" title="Astreinte Active"></i>
|
||||
{% endif %}
|
||||
|
||||
<br>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
|
Loading…
Reference in New Issue