Zeiterfassung
This commit is contained in:
parent
b87ac43bd4
commit
90891fa77a
|
|
@ -12,6 +12,8 @@ return [
|
|||
# TIME MANAGEMENT
|
||||
['name' => 'page#startWorkDay', 'url' => '/startday', 'verb' => 'GET'],
|
||||
['name' => 'page#endWorkDay', 'url' => '/endday', 'verb' => 'GET'],
|
||||
['name' => 'page#startBreak', 'url' => '/startbreak', 'verb' => 'GET'],
|
||||
['name' => 'page#endBreak', 'url' => '/endbreak', 'verb' => 'GET'],
|
||||
['name' => 'page#loadTime', 'url' => '/loadtime', 'verb' => 'GET'],
|
||||
# AGENCY
|
||||
['name' => 'agency#show', 'url' => '/getagencydata', 'verb' => 'GET'],
|
||||
|
|
|
|||
128
js/tm.js
128
js/tm.js
|
|
@ -6,8 +6,8 @@ var isbreak = false;
|
|||
var breaktime = 0;
|
||||
|
||||
function loadTMIcon(){
|
||||
var baseUrl = OC.generateUrl('/svg/core/actions/user-admin');
|
||||
icon = $('<a href="#" class="header-menu"><img src="'+baseUrl+'"></a>');
|
||||
var iconBaseUrl = OC.generateUrl('/svg/core/actions/user-admin');
|
||||
icon = $('<a href="#" class="header-menu" style="margin-right: 20px; margin-top: 2px;"><img src="'+iconBaseUrl+'"></a>');
|
||||
$('.header-right').prepend(icon);
|
||||
}
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ function addTMDiv(){
|
|||
realtimediv = $("<div style='position: fixed; z-index: 2000;top: 50px;right: 0;box-sizing: border-box;margin: 0;border-radius: 0 0 var(--border-radius) var(--border-radius);background-color: var(--color-main-background);filter: drop-shadow(0 1px 5px var(--color-box-shadow));'></div>");
|
||||
realtimediv.html(html_content);
|
||||
realtimediv.css("width", "300px");
|
||||
realtimediv.css("height", "250px");
|
||||
realtimediv.css("height", "125px");
|
||||
realtimediv.css("right", "50px");
|
||||
realtimediv.css("position", "fixed");
|
||||
realtimediv.css("overflow", "hidden");
|
||||
|
|
@ -31,22 +31,37 @@ function addTMDiv(){
|
|||
$('.header-right').append(realtimediv);
|
||||
|
||||
// Adding Listener
|
||||
// Start WorkDay
|
||||
$("#startWorkDay").click(function(){
|
||||
startWorkDay();
|
||||
$("#activeDay").show();
|
||||
$("#start_workday").hide();
|
||||
})
|
||||
|
||||
// End WorkDay
|
||||
$("#end_workday").click(function(){
|
||||
endWorkDay();
|
||||
})
|
||||
|
||||
// Start Break
|
||||
$("#start_break").click(function(){
|
||||
startBreak();
|
||||
})
|
||||
|
||||
// Start Break
|
||||
$("#end_break").click(function(){
|
||||
endBreak();
|
||||
})
|
||||
|
||||
// ACTUAL TIME INFO
|
||||
// Load Time
|
||||
$.ajax({
|
||||
url: "/apps/da_agency/loadtime",
|
||||
type: 'GET',
|
||||
}).success(function (response) {
|
||||
$("#td_content").show();
|
||||
$("#loader").hide();
|
||||
|
||||
responsedata = JSON.parse(response);
|
||||
$("#actualTime").html(responsedata['actualtime']);
|
||||
// No workday found
|
||||
|
|
@ -56,18 +71,36 @@ function addTMDiv(){
|
|||
isbreak = false;
|
||||
breaktime = 0;
|
||||
$("#breaksum").html("00:00:00");
|
||||
$("#activeDay").hide();
|
||||
}
|
||||
// Workday found
|
||||
else{
|
||||
isbreak = false;
|
||||
start = responsedata['workdaydata_workday'];
|
||||
startbreaktime_view = 0;
|
||||
starttime_view = parseDate(responsedata['workdaydata_workday']);
|
||||
console.log(starttime_view);
|
||||
$("#start_workday").hide();
|
||||
$("#activeDay").show();
|
||||
$("#starttime").html(responsedata['workdaydata_starttime']);
|
||||
|
||||
realtimediv.css("height", "250px");
|
||||
$("#breaksum").html(convertMS(responsedata['breaksum']));
|
||||
var breaktime = responsedata['breaksum'];
|
||||
// Break found
|
||||
if(responsedata['breakstatus']){
|
||||
isbreak = true;
|
||||
startbreaktime_view = responsedata['breaktimer'];
|
||||
starttime_view = Date.parse(responsedata['workdaydata_workday']);
|
||||
$("#start_workday").hide();
|
||||
$("#activeDay").show();
|
||||
$("#worktime").hide();
|
||||
$("#breaktimeclock").show();
|
||||
$("#end_break").show();
|
||||
$("#start_break").hide();
|
||||
$("#starttime").html(responsedata['workdaydata_starttime']);
|
||||
}
|
||||
// NO BREAK - Day is active
|
||||
else{
|
||||
isbreak = false;
|
||||
start = responsedata['workdaydata_workday'];
|
||||
startbreaktime_view = 0;
|
||||
starttime_view = parseDate(responsedata['workdaydata_workday']);
|
||||
$("#start_workday").hide();
|
||||
$("#activeDay").show();
|
||||
$("#starttime").html(responsedata['workdaydata_starttime']);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -139,10 +172,16 @@ $(document).ready(function(){
|
|||
addTMDiv();
|
||||
})
|
||||
function startWorkDay(){
|
||||
realtimediv.css("height", "250px");
|
||||
$("#td_content").hide();
|
||||
$("#loader").show();
|
||||
|
||||
$.ajax({
|
||||
url: "/apps/da_agency/startday",
|
||||
type: 'GET',
|
||||
}).success(function (response) {
|
||||
$("#td_content").show();
|
||||
$("#loader").hide();
|
||||
responsedata = JSON.parse(response);
|
||||
|
||||
if(responsedata["success"]){
|
||||
|
|
@ -156,10 +195,15 @@ function startWorkDay(){
|
|||
}
|
||||
|
||||
function endWorkDay(){
|
||||
$("#td_content").hide();
|
||||
$("#loader").show();
|
||||
$.ajax({
|
||||
url: "/apps/da_agency/endday",
|
||||
type: 'GET',
|
||||
}).success(function (response) {
|
||||
realtimediv.css("height", "125px");
|
||||
$("#td_content").show();
|
||||
$("#loader").hide();
|
||||
responsedata = JSON.parse(response);
|
||||
if(responsedata["success"]){
|
||||
$("#breaktimeclock").hide();
|
||||
|
|
@ -182,4 +226,62 @@ function endWorkDay(){
|
|||
|
||||
}
|
||||
|
||||
var html_content = '<style>hr.hr_style { border: 1px solid #dadada; margin: 10px; }</style><div id="activeDay" style="display: none;"><span id="worktime"><h3>Heutiger Arbeitstag</h3><h2 id="realtimeclock">00:00</h2><hr class="hr_style"></span><span id="breaktimeclock" style="display: none"><h3>Aktuelle Pause</h3><h2 id="realtimeclock_break">00:00</h2><hr class="hr_style"></span><span><button onclick="javascript:endBreak()" type="button" id="end_break" class="btn btn-success" style="display: none;"><i class="fas fa-play"></i></button><button onclick="javascript:startBreak()" type="button" id="start_break" class="btn btn-primary">Pause</button><button type="button" id="end_workday" class="btn btn-secondary">Beenden</button></span><hr class="hr_style"></div><div>Arbeitsbeginn: <span id="starttime">00:00:00</span><br /> Arbeitsende: <span id="endtime">00:00:00</span><br />Pausenzeit: <span id="breaksum">00:00:00</span> </div><div id="start_workday"><hr class="hr_style"><button type="button" id="startWorkDay" class="btn btn-success">Arbeitstag starten</button><hr class="hr_style">Gleitzeitkonto: <b><span id="actualTime">Lade...</span> Stunden</b></div>';
|
||||
function startBreak(){
|
||||
$("#td_content").hide();
|
||||
$("#loader").show();
|
||||
|
||||
$.ajax({
|
||||
url: "/apps/da_agency/startbreak",
|
||||
type: 'GET',
|
||||
}).success(function (response) {
|
||||
responsedata = JSON.parse(response);
|
||||
isbreak = true;
|
||||
$("#td_content").show();
|
||||
$("#loader").hide();
|
||||
//$("#timemanagement_clock").click(function(e){
|
||||
// e.stopPropagation();
|
||||
//})
|
||||
$("#breaktimeclock").show();
|
||||
$("#realtimeclock").hide();
|
||||
$("#end_break").show();
|
||||
$("#start_break").hide();
|
||||
$("#worktime").hide();
|
||||
startbreaktime_view = -1000;
|
||||
realTimeBreakClock();
|
||||
});
|
||||
}
|
||||
|
||||
function endBreak(){
|
||||
$("#td_content").hide();
|
||||
$("#loader").show();
|
||||
$.ajax({
|
||||
url: "/apps/da_agency/endbreak",
|
||||
type: 'GET',
|
||||
}).success(function (response) {
|
||||
$("#td_content").show();
|
||||
$("#loader").hide();
|
||||
responsedata = JSON.parse(response);
|
||||
|
||||
isbreak = false;
|
||||
|
||||
$("#breaktimeclock").hide();
|
||||
$("#realtimeclock").show();
|
||||
$("#end_break").hide();
|
||||
$("#start_break").show();
|
||||
$("#worktime").show();
|
||||
|
||||
breaktime = responsedata["actualbreaktime"];
|
||||
startbreaktime_view = responsedata["actualbreaktime"];
|
||||
starttime_view = Date.parse(responsedata["wdtime"]);
|
||||
$("#breaksum").html(convertMS(responsedata["actualbreaktime"]));
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function realTimeBreakClock(){
|
||||
breaktime = startbreaktime_view + 1000;
|
||||
startbreaktime_view = startbreaktime_view + 1000;
|
||||
$("#realtimeclock_break").html(convertMS(startbreaktime_view));
|
||||
}
|
||||
|
||||
var html_content = '<div id="td_content" style="display: none";><style>hr.hr_style { border: 1px solid #dadada; margin: 10px; }</style><div id="activeDay" style="display: none;"><span id="worktime"><h3>Heutiger Arbeitstag</h3><h2 id="realtimeclock">00:00</h2><hr class="hr_style"></span><span id="breaktimeclock" style="display: none"><h3>Aktuelle Pause</h3><h2 id="realtimeclock_break">00:00</h2><hr class="hr_style"></span><span><button type="button" id="end_break" class="btn btn-success" style="display: none;">Pause Ende</i></button><button type="button" id="start_break" class="btn btn-primary">Pause</button><button type="button" id="end_workday" class="btn btn-secondary">Arbeitstag beenden</button></span><hr class="hr_style">Arbeitsbeginn: <span id="starttime">00:00:00</span><br /> Arbeitsende: <span id="endtime">00:00:00</span><br />Pausenzeit: <span id="breaksum">00:00:00</span></div><div id="start_workday"><hr class="hr_style"><button type="button" id="startWorkDay" class="btn btn-success">Arbeitstag starten</button><hr class="hr_style">Gleitzeitkonto: <b><span id="actualTime">00:00</span> Stunden</b></div></div><style> .loader {border: 3px solid #f3f3f3; /* Light grey */border-top: 3px solid grey; border-radius: 50%;width: 30px;height: 30px;animation: spin 1s linear infinite;}@keyframes spin {0% { transform: rotate(0deg); }100% { transform: rotate(360deg); }}</style><div id="loader" class="loader" style="margin: auto; margin-top: 18%; "></div>';
|
||||
|
|
@ -64,7 +64,7 @@ class PageController extends Controller {
|
|||
return new DataResponse($file);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* Beendet einen Arbeitstag
|
||||
|
|
@ -87,6 +87,52 @@ class PageController extends Controller {
|
|||
return new DataResponse($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* Beendet einen Arbeitstag
|
||||
*/
|
||||
public function startBreak() {
|
||||
$opts = [
|
||||
"http" => array(
|
||||
"method" => "GET",
|
||||
"header" => ""
|
||||
),
|
||||
"ssl"=> array(
|
||||
"verify_peer"=>false,
|
||||
"verify_peer_name"=>false,
|
||||
),
|
||||
];
|
||||
$context = stream_context_create($opts);
|
||||
|
||||
$file = file_get_contents($this->nclink.'/api/tm/startbreak/'.$this->userSession->getUser()->getUId().'/87zuhjk87GHJ546tzgvhas76aaskbdhr45edfVHAKia87s6gbAVGFGSR3451627gBHAKJBN', false, $context);
|
||||
#$response = new TemplateResponse('da_agency', 'realtimeclock', ['userId' => $this->userSession->getUser()->getUID(), 'data' => "none"]);
|
||||
return new DataResponse($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* Beendet einen Arbeitstag
|
||||
*/
|
||||
public function endBreak() {
|
||||
$opts = [
|
||||
"http" => array(
|
||||
"method" => "GET",
|
||||
"header" => ""
|
||||
),
|
||||
"ssl"=> array(
|
||||
"verify_peer"=>false,
|
||||
"verify_peer_name"=>false,
|
||||
),
|
||||
];
|
||||
$context = stream_context_create($opts);
|
||||
|
||||
$file = file_get_contents($this->nclink.'/api/tm/endbreak/'.$this->userSession->getUser()->getUId().'/87zuhjk87GHJ546tzgvhas76aaskbdhr45edfVHAKia87s6gbAVGFGSR3451627gBHAKJBN', false, $context);
|
||||
#$response = new TemplateResponse('da_agency', 'realtimeclock', ['userId' => $this->userSession->getUser()->getUID(), 'data' => "none"]);
|
||||
return new DataResponse($file);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @NoCSRFRequired
|
||||
|
|
|
|||
Loading…
Reference in New Issue