var seconds = 0;
var Clock = {
totalSeconds: 0,
interval: 0,
start: function () {
if (Clock.interval !== undefined) {
var self = this;
function pad(val) { return val > 9 ? val : "0" + val; }
if (Clock.interval !== undefined) {
Clock.interval = setInterval(function () {
self.totalSeconds += 1;
if ($("#startButton").is(":visible") != true) {
if (document.getElementsByClassName("startButton Active").length > 0) {
$('#startButton').removeClass('startButton Active');
self.totalSeconds = 0;
$("#hours").text(pad(Math.floor(self.totalSeconds / 3600)));
$("#min").text(pad(Math.floor(self.totalSeconds / 60 % 60)));
$("#sec").text(pad(self.totalSeconds % 60));
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
Unibase.Apps.PM.Components.TimeTracker.Instance().saveTaskSession(date, null, false, false, false, false);
}
else {
if (document.getElementsByClassName("resumeButton Active").length > 0) {
$('#startButton').removeClass('resumeButton Active');
var a = Number(Number($(".beforeTimer").text().split(':')[0]) * 60 * 60) + (Number($(".beforeTimer").text().split(':')[1]) * 60) + (Number($(".beforeTimer").text().split(':')[2]));
if (a < Number(self.totalSeconds - 2)) {
self.totalSeconds = a;
}
}
$("#hours").text(pad(Math.floor(self.totalSeconds / 3600)));
$("#min").text(pad(Math.floor(self.totalSeconds / 60 % 60)));
$("#sec").text(pad(self.totalSeconds % 60));
}
}
}, 1000);
}
}
},
reset: function () {
Clock.totalSeconds = null;
clearInterval(Clock.interval);
$("#hours").text("00");
$("#min").text("00");
$("#sec").text("00");
delete Clock.interval;
},
pause: function () {
clearInterval(Clock.interval);
delete Clock.interval;
},
resume: function () {
Clock.start();
},
stop: function () {
var value = this;
Clock.reset();
},
restart: function () {
Clock.reset();
Clock.start();
},
};
var Unibase;
(function (Unibase) {
let Apps;
(function (Apps) {
let PM;
(function (PM) {
let Components;
(function (Components) {
class TimeTracker extends Unibase.Platform.Core.BaseComponent {
constructor() {
super();
}
cssFiles() {
return [""];
}
jsFiles() {
return ['platform/pm/managers/taskmanager.js', 'platform/pm/components/sessionlog.js', 'platform/pm/infos/task.js', 'platform/pm/infos/sessionlog.js', 'platform/pm/requests/task.js', 'platform/pm/requests/sessionlog.js'];
}
init(containerId) {
var instance = this;
instance.html(id, containerId);
$('#startButton').attr('readonly', 'true');
document.addEventListener("click", function (event) {
if ($(this)[0].activeElement.className == "d-flex h-60p align-items-center nav-link active" || $(this)[0].activeElement.className == "btn detail-close mr-auto btn-light btn-sm" || $(this)[0].activeElement.className == "d-flex h-60p align-items-center nav-link") {
if ($("#pauseButton").is(":visible") == true && $("#stopButton").is(":visible") == true) {
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
instance.ResumeTask(date);
}
}
}, true);
var id = "";
var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
instance.InstalledAppId = InstalledAppId;
for (let obj of Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters) {
if (obj.Key === "hf_" + InstalledAppId + "_recordid") {
id = obj.Value;
}
}
var jsfiles = ['apps/pm/managers/taskmanager.js', 'apps/pm/components/sessionlog.js', 'apps/pm/infos/task.js', 'apps/pm/infos/sessionlog.js', 'apps/pm/requests/task.js', 'apps/pm/requests/sessionlog.js'];
instance.fileCacheHelper.loadJsFiles(jsfiles, function () {
var Id = Unibase.Themes.Providers.Detail_Settings.Instance().RecordId;
Bizgaze.Apps.PM.Managers.TaskManager.Instance().getTaskDetails(Id).then(function (response) {
var data = JSON.parse(response.result)[0];
instance.TaskId = data.taskid;
instance.Points = data.points;
instance.RefStatusId = data.refstatusid;
if (data.istaskpause == true) {
var seconds = Number(data.timer.split(":")[0]) * 60 * 60 + Number(data.timer.split(":")[1]) * 60 + data.timer.split(":")[2];
Clock.totalSeconds = Number(seconds);
var timehours = data.timer.split(":")[0];
var timemins = data.timer.split(":")[1];
var timeseconds = data.timer.split(":")[2];
if (timehours == undefined)
timehours = "00:";
if (timemins == undefined)
timehours = "00:";
if (timeseconds == undefined)
timehours = "00";
$('#stopButton').removeClass('hidden');
$('#resumeButton').removeClass('hidden');
if (instance.RefStatusId == 6) {
$('.divTimerResume').removeClass('hidden');
$(".starticon").css("color", "");
}
else if (instance.RefStatusId == 7) {
$("#ProgressButton").prop("disabled", "disabled");
}
}
else if (data.istaskpause == false && data.timerstoppeddate.toString() != "[object Object]") {
$('#stopButton').addClass('hidden');
$('#resumeButton').addClass('hidden');
$("#pauseButton").addClass('hidden');
}
else if (data.istaskpause == false && data.timerstoppeddate.toString() == "[object Object]") {
if (data.timer != "00:00:00" && data.timer.toString() != "[object Object]") {
var timehours = data.timer.split(":")[0];
var timemins = data.timer.split(":")[1];
var timeseconds = data.timer.split(":")[2];
if (timehours == undefined)
timehours = "00:";
if (timemins == undefined)
timehours = "00:";
if (timeseconds == undefined)
timehours = "00";
$('#pauseButton').removeClass('hidden');
$("#ProgressButton").prop("disabled", false);
}
}
instance.load(id, containerId, null);
});
});
}
html(id, containerid) {
let html = `
`;
$("." + containerid).html(html);
return "";
}
load(id, containerid, callback) {
var instance = this;
var Id = Unibase.Themes.Providers.Detail_Settings.Instance().RecordId;
$("#txtPoints").text(instance.Points + ' pts');
$('#startButton').click(function () {
Bizgaze.Apps.PM.Managers.TaskManager.Instance().getTaskByAssignToAndRefStatus().then(function (response) {
if (response.result.toString() != "[]") {
var taskmessage = '';
if (response.result.length == 1)
taskmessage = '' + response.result[0].code + '-' + response.result[0].subject + ' is already Inprogress. Would you like to continue';
else
taskmessage = '' + response.result.length + ' Tasks are inprogress. Would you like to continue';
bootbox.confirm({
message: taskmessage,
buttons: {
confirm: {
label: 'Continue',
className: 'btn-success'
},
cancel: {
label: 'Cancel',
className: 'btn-danger'
}
},
callback: function (result) {
if (result == true) {
$(".divTimerPause").removeClass('hidden');
$(".divTimerStop").removeClass('hidden');
$(".divTimerStart").addClass('hidden');
$("#ProgressButton").prop("disabled", false);
$('#startButton').addClass('startButton Active');
Clock.interval = 0;
Clock.totalSeconds = 0;
var maxId = setTimeout(function () { }, 0);
for (var i = 0; i < maxId; i += 1) {
clearTimeout(i);
}
Clock.start();
}
}
});
}
else {
$(".divTimerPause").removeClass('hidden');
$(".divTimerStop").removeClass('hidden');
$(".divTimerStart").addClass('hidden');
$("#ProgressButton").prop("disabled", false);
$('#startButton').addClass('startButton Active');
Clock.interval = 0;
Clock.totalSeconds = 0;
var maxId = setTimeout(function () { }, 0);
for (var i = 0; i < maxId; i += 1) {
clearTimeout(i);
}
Clock.start();
}
});
});
$('#pauseButton').click(function () {
$(".divTimerPause").addClass('hidden');
$(".divTimerResume").removeClass('hidden');
$(".divTimerStop").removeClass('hidden');
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
instance.pauseTask(date);
Clock.pause();
});
$('#resumeButton').click(function () {
$(".divTimerPause").removeClass('hidden');
$(".divTimerStop").removeClass('hidden');
$(".divTimerResume").addClass('hidden');
seconds = Clock.totalSeconds;
var date = new Date($.now());
var a = document.getElementsByClassName("resume");
if (a != undefined) {
Clock.interval = 0;
}
$('#resumeButton').addClass('resumeButton Active');
Clock.resume();
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
instance.saveTaskSession(date, null, false, false, false, false);
});
$('#stopButton').click(function () {
$(".divTimerPause").addClass('hidden');
$(".divTimerResume").addClass('hidden');
$(".divTimerStop").addClass('hidden');
$(".divTimerStart").addClass('hidden');
Clock.pause();
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
instance.saveTaskSession(date, date, false, false, true, false);
});
$('#resetButton').click(function () {
Clock.reset();
});
$('#restartButton').click(function () {
Clock.restart();
});
var instance = this;
window.onbeforeunload = function (event) {
if ($("#pauseButton").is(":visible") == true && $("#stopButton").is(":visible") == true) {
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
instance.ResumeTask(date);
}
else {
if ($("#startButton").is(":visible") != true)
instance.updateTimer();
}
};
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "\o/";
(e || window.event).returnValue = confirmationMessage;
if ($("#pauseButton").is(":visible") == true && $("#stopButton").is(":visible") == true) {
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
instance.ResumeTask(date);
instance.navigationHelper.closePopUp();
}
else {
if ($("#startButton").is(":visible") != true)
instance.updateTimer();
}
return confirmationMessage;
});
instance.getTimer(Id);
if (instance.RefStatusId == 3 || instance.RefStatusId == 6) {
$("#startButton").children.bind('click');
$("#resumeButton").children.bind('click');
}
else {
$("#startButton").children().bind('click', function () { return false; });
$("#resumeButton").children().bind('click', function () { return false; });
$(".starticon").css("color", "#8edde6");
$(".divTimerStop").addClass('hidden');
$("#ProgressButton").prop("disabled", "disabled");
}
if (instance.RefStatusId == 3)
instance.updateTimer();
}
saveTaskSession(startdate, enddate, istimerupdate, ispause, isstop, isloghour) {
var instance = this;
var ismanual = false;
var timer = "";
var pause = false;
var stop = false;
var sessionid = 0;
if (istimerupdate || isstop == true)
timer = $(".beforeTimer").text();
if (ispause)
pause = true;
if (isstop)
stop = true;
startdate = new Date(startdate);
if (($("#hfTaskSessionId").val() != "" && $("#hfTaskSessionId").val() != undefined) || isloghour) {
startdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#txt_LogHourStartDate").val());
enddate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#txt_LogHourEndDate").val());
ismanual = true;
sessionid = $("#hfTaskSessionId").val();
}
var postData = {
taskid: instance.TaskId,
sessionid: sessionid,
startdate: startdate,
enddate: enddate,
timer: timer,
issessionpause: pause,
issessionstop: stop,
ismanual: ismanual,
installedappid: instance.InstalledAppId,
stagestatusid: instance.RefStatusId,
percentage: 0,
};
Bizgaze.Apps.PM.Managers.TaskManager.Instance().saveSessionLog(postData).then(function (response) {
MessageHelper.Instance().showSuccess(response, '');
if (isloghour)
instance.refreshLog();
}, function (response) {
});
}
updateSessionEnd(enddate) {
var instance = this;
var postData = {
taskid: instance.TaskId,
enddate: enddate,
timer: $(".beforeTimer").text(),
percentage: 100,
sessionid: 0,
startdate: new Date(),
issessionpause: false,
issessionstop: false,
ismanual: false,
installedappid: 0,
stagestatusid: 0,
};
Bizgaze.Apps.PM.Managers.TaskManager.Instance().updateSessionLogEndDate(postData).then(function (response) {
MessageHelper.Instance().showSuccess(response, '');
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
pauseTask(enddate) {
var instance = this;
var postData = {
taskid: instance.TaskId,
pausedate: enddate,
timer: $(".beforeTimer").text(),
istaskpause: true,
percentage: 0,
timerstoppeddate: new Date(),
isresumetask: false,
istaskstopped: false
};
Bizgaze.Apps.PM.Managers.TaskManager.Instance().pauseTask(postData).then(function (response) {
instance.saveTaskSession(null, enddate, false, true, false, false);
}, function (response) {
instance.saveTaskSession(null, enddate, false, true, false, false);
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
ResumeTask(enddate) {
var instance = this;
var postData = {
taskid: instance.TaskId,
pausedate: enddate,
isresumetask: true,
timer: $(".beforeTimer").text(),
istaskpause: false,
percentage: 0,
timerstoppeddate: new Date(),
istaskstopped: false,
};
Bizgaze.Apps.PM.Managers.TaskManager.Instance().resumeTask(postData).then(function (response) {
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
StopTask(enddate) {
var instance = this;
var postData = {
taskid: instance.TaskId,
timerstoppeddate: enddate,
istaskstopped: true,
timer: $(".beforeTimer").text(),
istaskpause: false,
percentage: 0,
pausedate: enddate,
isresumetask: false,
};
Bizgaze.Apps.PM.Managers.TaskManager.Instance().stopTask(postData).then(function (response) {
MessageHelper.Instance().showSuccess(response, '');
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
getTimer(taskId) {
var instance = this;
Bizgaze.Apps.PM.Managers.TaskManager.Instance().getTimerDetails(taskId).then(function (response) {
if (response.result != "") {
if (response != null) {
var result = response.result.split('_');
var data = result[0];
data = data.replace(/['"]+/g, '');
if (result.length > 1) {
if (data == "False") {
var maxId = setTimeout(function () { }, 0);
for (var i = 0; i < maxId; i += 1) {
clearTimeout(i);
}
Clock.totalSeconds = Number(result[1]);
Clock.interval = 0;
Clock.start();
$(".divTimerPause").removeClass('hidden');
$(".divTimerStop").removeClass('hidden');
$(".divTimerStart").addClass('hidden');
}
else if (data == "NotStarted") {
$(".divTimerStart").removeClass('hidden');
$(".divTimerPause").addClass('hidden');
$(".divTimerStop").addClass('hidden');
}
else {
var value = result[1];
value = value.replace(/['"]+/g, '');
function pad(val) { return val > 9 ? val : "0" + val; }
$("#hours").text(pad(Math.floor(Number(value) / 3600)));
$("#min").text(pad(Math.floor(Number(value) / 60 % 60)));
$("#sec").text(pad(parseInt(value) % 60));
Clock.pause();
$(".divTimerStart").addClass('hidden');
$("#ProgressButton").addClass("hidden");
}
}
else {
$(".divTimerStart").removeClass('hidden');
}
}
}
});
}
updateTimer() {
var instance = this;
var date = new Date($.now());
date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
var postData = {
taskid: instance.TaskId,
timerstoppeddate: null,
timer: $(".beforeTimer").text(),
istaskpause: false,
percentage: 0,
pausedate: new Date(),
isresumetask: false,
istaskstopped: false,
};
Bizgaze.Apps.PM.Managers.TaskManager.Instance().updateTimer(postData).then(function (response) {
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
showLogDetails() {
var instance = this;
instance.navigationHelper.popup(0, "", Bizgaze.Apps.PM.Components.SessionLog.Instance(), function () {
instance.refreshLog();
instance.managePermission();
}, Unibase.Platform.Helpers.Size.DockLeft);
}
getTaskSession(id) {
var instance = this;
Bizgaze.Apps.PM.Managers.TaskManager.Instance().getSessionLog(id).then(function (response) {
$('#ul_ShowLog_Details').find('.li-' + id).remove();
$("#hfTaskSessionId").val(id);
Bizgaze.Apps.PM.Components.SessionLog.Instance().addLogHourRow(true);
$("#txt_LogHourStartDate").val(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(response.result.startdate));
$("#txt_LogHourEndDate").val(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(response.result.enddate));
Bizgaze.Apps.PM.Components.SessionLog.Instance().calculateDateDiff();
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
removeSession(id) {
var instance = this;
Bizgaze.Apps.PM.Managers.TaskManager.Instance().deleteSession(id).then(function (response) {
MessageHelper.Instance().showSuccess(response, '');
instance.refreshLog();
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
refreshLog() {
var instance = this;
var taskId = instance.TaskId;
Bizgaze.Apps.PM.Managers.TaskManager.Instance().getSessionLogDetails(taskId).then(function (response) {
if (response.result.length == 0) {
$('#ul_ShowLog_Details').after('There is no Data
');
}
$("#ulLogDetails").html('');
for (var i = 0; i < response.result.length; i++) {
var data = response.result[i];
var da = moment(data.enddate).format('DD-MM-YYYY hh:mm:ss a');
var ismanual = '';
if (data.ismanual)
ismanual = ' M';
var html = '';
if (data.ismanual) {
html = '' +
'' +
'' +
'
' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.startdate) + '
' +
'
' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.enddate) + '
' +
'
' + data.timer + '
' +
'
' +
'
';
}
else {
html = '' +
'' +
'' +
'
' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.startdate) + '
' +
'
' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.enddate) + '
' +
'
' + data.timer + '
' +
'
' +
'
';
}
$(".sessionlog-item:last").after(html);
}
Bizgaze.Apps.PM.Components.SessionLog.Instance().addLogHourRow(false);
Bizgaze.Apps.PM.Components.SessionLog.Instance().calculateDateDiff();
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
managePermission() {
var instance = this;
Bizgaze.Apps.PM.Managers.TaskManager.Instance().getLogHourPermission().then(function (response) {
if (response.result == '5' || Unibase.Platform.Membership.Infos.Identity.getCurrentUser().isAdmin == true) {
$(".editloghour").removeClass('hidden');
$(".deleteloghour").removeClass('hidden');
}
else {
$(".editloghour").addClass('hidden');
$(".deleteloghour").addClass('hidden');
}
instance.managePermission();
}, function (response) {
MessageHelper.Instance().showError(response, 'divTimeTrackerError');
});
}
static Instance() {
if (this.instance == undefined) {
this.instance = new TimeTracker();
}
return this.instance;
}
}
Components.TimeTracker = TimeTracker;
})(Components = PM.Components || (PM.Components = {}));
})(PM = Apps.PM || (Apps.PM = {}));
})(Apps = Unibase.Apps || (Unibase.Apps = {}));
})(Unibase || (Unibase = {}));