Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

timetracker.js 39KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. var seconds = 0;
  2. var Clock = {
  3. totalSeconds: 0,
  4. interval: 0,
  5. start: function () {
  6. if (Clock.interval !== undefined) {
  7. var self = this;
  8. function pad(val) { return val > 9 ? val : "0" + val; }
  9. if (Clock.interval !== undefined) {
  10. Clock.interval = setInterval(function () {
  11. self.totalSeconds += 1;
  12. if ($("#startButton").is(":visible") != true) {
  13. if (document.getElementsByClassName("startButton Active").length > 0) {
  14. $('#startButton').removeClass('startButton Active');
  15. self.totalSeconds = 0;
  16. $("#hours").text(pad(Math.floor(self.totalSeconds / 3600)));
  17. $("#min").text(pad(Math.floor(self.totalSeconds / 60 % 60)));
  18. $("#sec").text(pad(self.totalSeconds % 60));
  19. var date = new Date($.now());
  20. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  21. Unibase.Apps.PM.Components.TimeTracker.Instance().saveTaskSession(date, null, false, false, false, false);
  22. }
  23. else {
  24. if (document.getElementsByClassName("resumeButton Active").length > 0) {
  25. $('#startButton').removeClass('resumeButton Active');
  26. var a = Number(Number($(".beforeTimer").text().split(':')[0]) * 60 * 60) + (Number($(".beforeTimer").text().split(':')[1]) * 60) + (Number($(".beforeTimer").text().split(':')[2]));
  27. if (a < Number(self.totalSeconds - 2)) {
  28. self.totalSeconds = a;
  29. }
  30. }
  31. $("#hours").text(pad(Math.floor(self.totalSeconds / 3600)));
  32. $("#min").text(pad(Math.floor(self.totalSeconds / 60 % 60)));
  33. $("#sec").text(pad(self.totalSeconds % 60));
  34. }
  35. }
  36. }, 1000);
  37. }
  38. }
  39. },
  40. reset: function () {
  41. Clock.totalSeconds = null;
  42. clearInterval(Clock.interval);
  43. $("#hours").text("00");
  44. $("#min").text("00");
  45. $("#sec").text("00");
  46. delete Clock.interval;
  47. },
  48. pause: function () {
  49. clearInterval(Clock.interval);
  50. delete Clock.interval;
  51. },
  52. resume: function () {
  53. Clock.start();
  54. },
  55. stop: function () {
  56. var value = this;
  57. Clock.reset();
  58. },
  59. restart: function () {
  60. Clock.reset();
  61. Clock.start();
  62. },
  63. };
  64. var Unibase;
  65. (function (Unibase) {
  66. let Apps;
  67. (function (Apps) {
  68. let PM;
  69. (function (PM) {
  70. let Components;
  71. (function (Components) {
  72. class TimeTracker extends Unibase.Platform.Core.BaseComponent {
  73. constructor() {
  74. super();
  75. }
  76. cssFiles() {
  77. return [""];
  78. }
  79. jsFiles() {
  80. 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'];
  81. }
  82. init(containerId) {
  83. var instance = this;
  84. instance.html(id, containerId);
  85. $('#startButton').attr('readonly', 'true');
  86. document.addEventListener("click", function (event) {
  87. 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") {
  88. if ($("#pauseButton").is(":visible") == true && $("#stopButton").is(":visible") == true) {
  89. var date = new Date($.now());
  90. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  91. instance.ResumeTask(date);
  92. }
  93. }
  94. }, true);
  95. var id = "";
  96. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  97. instance.InstalledAppId = InstalledAppId;
  98. for (let obj of Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters) {
  99. if (obj.Key === "hf_" + InstalledAppId + "_recordid") {
  100. id = obj.Value;
  101. }
  102. }
  103. 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'];
  104. instance.fileCacheHelper.loadJsFiles(jsfiles, function () {
  105. var Id = Unibase.Themes.Providers.Detail_Settings.Instance().RecordId;
  106. Bizgaze.Apps.PM.Managers.TaskManager.Instance().getTaskDetails(Id).then(function (response) {
  107. var data = JSON.parse(response.result)[0];
  108. instance.TaskId = data.taskid;
  109. instance.Points = data.points;
  110. instance.RefStatusId = data.refstatusid;
  111. if (data.istaskpause == true) {
  112. var seconds = Number(data.timer.split(":")[0]) * 60 * 60 + Number(data.timer.split(":")[1]) * 60 + data.timer.split(":")[2];
  113. Clock.totalSeconds = Number(seconds);
  114. var timehours = data.timer.split(":")[0];
  115. var timemins = data.timer.split(":")[1];
  116. var timeseconds = data.timer.split(":")[2];
  117. if (timehours == undefined)
  118. timehours = "00:";
  119. if (timemins == undefined)
  120. timehours = "00:";
  121. if (timeseconds == undefined)
  122. timehours = "00";
  123. $('#stopButton').removeClass('hidden');
  124. $('#resumeButton').removeClass('hidden');
  125. if (instance.RefStatusId == 6) {
  126. $('.divTimerResume').removeClass('hidden');
  127. $(".starticon").css("color", "");
  128. }
  129. else if (instance.RefStatusId == 7) {
  130. $("#ProgressButton").prop("disabled", "disabled");
  131. }
  132. }
  133. else if (data.istaskpause == false && data.timerstoppeddate.toString() != "[object Object]") {
  134. $('#stopButton').addClass('hidden');
  135. $('#resumeButton').addClass('hidden');
  136. $("#pauseButton").addClass('hidden');
  137. }
  138. else if (data.istaskpause == false && data.timerstoppeddate.toString() == "[object Object]") {
  139. if (data.timer != "00:00:00" && data.timer.toString() != "[object Object]") {
  140. var timehours = data.timer.split(":")[0];
  141. var timemins = data.timer.split(":")[1];
  142. var timeseconds = data.timer.split(":")[2];
  143. if (timehours == undefined)
  144. timehours = "00:";
  145. if (timemins == undefined)
  146. timehours = "00:";
  147. if (timeseconds == undefined)
  148. timehours = "00";
  149. $('#pauseButton').removeClass('hidden');
  150. $("#ProgressButton").prop("disabled", false);
  151. }
  152. }
  153. instance.load(id, containerId, null);
  154. });
  155. });
  156. }
  157. html(id, containerid) {
  158. let html = `<div class="b-a wrapper"><div class="card"><div id="divTimeTrackerError"></div>
  159. <div class="card-header card-header-action"><span class="" id="hf-widget-title_TimeTracker">Time Tracker</span></div>
  160. <div class="card-body"><div class="row"><div class="col-sm-4 ml-20" style="width:85mm; height:40mm; border:1px solid; background-color: #00acf0; border-radius: 15px; color:white; font-size:15px; font-style:normal;">
  161. <div class="row pt-25"><strong class="pull-left pl-25 pt-0" style="font-size:large">TIMER</strong></div>
  162. <div class="row">
  163. <strong class="pull-left beforeTimer pl-25 pr-15" id="Timer" style="font-size:35px;"><span id="hours">00</span>:<span id="min">00</span>:<span id="sec">00</span></strong>
  164. <a id="startButton" class="divTimerStart btn btn-md">&nbsp;<i class="fa fa-play-circle fa-2x starticon"
  165. aria-hidden="true"></i></a>
  166. <a id="pauseButton" class="divTimerPause hidden btn btn-md">&nbsp;<i class="fa fa-pause-circle-o fa-2x"
  167. aria-hidden="true"></i></a>
  168. <div id="resumeButton" class="divTimerResume hidden btn btn-md">&nbsp;<i class="fa fa-play-circle starticon fa-2x"
  169. aria-hidden="true"></i></div>
  170. <div id="stopButton" class="divTimerStop hidden btn btn-md">&nbsp;<i class="fa fa-stop-circle-o fa-2x" aria-hidden="true"></i></div></div>
  171. <div class="col-xs-5 div_addItems"><a id="btn_additem" title="Show Log" class="default" href="" data-toggle="modal"
  172. data-target="#modalAddItem" data-original-title="Show Log">
  173. <span class="pull-right btn pl-200 pt-2" style="text-decoration:underline;color:white;font-size:large;" onclick="Unibase.Apps.PM.Components.TimeTracker.Instance().showLogDetails();" id="btn_addLog">Log Hours</span></a>
  174. </div></div>
  175. <div class="col-sm-4 ml-20 mt-20 mt-md-0" style="background-color:#7fd5f7;border-radius: 15px;width:85mm; height:40mm;">
  176. <div class="row d-flex mt-20 ml-20">
  177. <span><i class="fa fa-trophy fa-2x" aria-hidden="true" style="color:white"></i></span></div>
  178. <div class="row ml-20"><strong class="pr-15 text-white" style="font-size:40px;" id="txtPoints">
  179. <span>15 pts</span></strong></div></div></div></div></div></div>`;
  180. $("." + containerid).html(html);
  181. return "";
  182. }
  183. load(id, containerid, callback) {
  184. var instance = this;
  185. var Id = Unibase.Themes.Providers.Detail_Settings.Instance().RecordId;
  186. $("#txtPoints").text(instance.Points + ' pts');
  187. $('#startButton').click(function () {
  188. Bizgaze.Apps.PM.Managers.TaskManager.Instance().getTaskByAssignToAndRefStatus().then(function (response) {
  189. if (response.result.toString() != "[]") {
  190. var taskmessage = '';
  191. if (response.result.length == 1)
  192. taskmessage = '' + response.result[0].code + '-' + response.result[0].subject + ' is already Inprogress. Would you like to continue';
  193. else
  194. taskmessage = '' + response.result.length + ' Tasks are inprogress. Would you like to continue';
  195. bootbox.confirm({
  196. message: taskmessage,
  197. buttons: {
  198. confirm: {
  199. label: 'Continue',
  200. className: 'btn-success'
  201. },
  202. cancel: {
  203. label: 'Cancel',
  204. className: 'btn-danger'
  205. }
  206. },
  207. callback: function (result) {
  208. if (result == true) {
  209. $(".divTimerPause").removeClass('hidden');
  210. $(".divTimerStop").removeClass('hidden');
  211. $(".divTimerStart").addClass('hidden');
  212. $("#ProgressButton").prop("disabled", false);
  213. $('#startButton').addClass('startButton Active');
  214. Clock.interval = 0;
  215. Clock.totalSeconds = 0;
  216. var maxId = setTimeout(function () { }, 0);
  217. for (var i = 0; i < maxId; i += 1) {
  218. clearTimeout(i);
  219. }
  220. Clock.start();
  221. }
  222. }
  223. });
  224. }
  225. else {
  226. $(".divTimerPause").removeClass('hidden');
  227. $(".divTimerStop").removeClass('hidden');
  228. $(".divTimerStart").addClass('hidden');
  229. $("#ProgressButton").prop("disabled", false);
  230. $('#startButton').addClass('startButton Active');
  231. Clock.interval = 0;
  232. Clock.totalSeconds = 0;
  233. var maxId = setTimeout(function () { }, 0);
  234. for (var i = 0; i < maxId; i += 1) {
  235. clearTimeout(i);
  236. }
  237. Clock.start();
  238. }
  239. });
  240. });
  241. $('#pauseButton').click(function () {
  242. $(".divTimerPause").addClass('hidden');
  243. $(".divTimerResume").removeClass('hidden');
  244. $(".divTimerStop").removeClass('hidden');
  245. var date = new Date($.now());
  246. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  247. instance.pauseTask(date);
  248. Clock.pause();
  249. });
  250. $('#resumeButton').click(function () {
  251. $(".divTimerPause").removeClass('hidden');
  252. $(".divTimerStop").removeClass('hidden');
  253. $(".divTimerResume").addClass('hidden');
  254. seconds = Clock.totalSeconds;
  255. var date = new Date($.now());
  256. var a = document.getElementsByClassName("resume");
  257. if (a != undefined) {
  258. Clock.interval = 0;
  259. }
  260. $('#resumeButton').addClass('resumeButton Active');
  261. Clock.resume();
  262. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  263. instance.saveTaskSession(date, null, false, false, false, false);
  264. });
  265. $('#stopButton').click(function () {
  266. $(".divTimerPause").addClass('hidden');
  267. $(".divTimerResume").addClass('hidden');
  268. $(".divTimerStop").addClass('hidden');
  269. $(".divTimerStart").addClass('hidden');
  270. Clock.pause();
  271. var date = new Date($.now());
  272. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  273. instance.saveTaskSession(date, date, false, false, true, false);
  274. });
  275. $('#resetButton').click(function () {
  276. Clock.reset();
  277. });
  278. $('#restartButton').click(function () {
  279. Clock.restart();
  280. });
  281. var instance = this;
  282. window.onbeforeunload = function (event) {
  283. if ($("#pauseButton").is(":visible") == true && $("#stopButton").is(":visible") == true) {
  284. var date = new Date($.now());
  285. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  286. instance.ResumeTask(date);
  287. }
  288. else {
  289. if ($("#startButton").is(":visible") != true)
  290. instance.updateTimer();
  291. }
  292. };
  293. window.addEventListener("beforeunload", function (e) {
  294. var confirmationMessage = "\o/";
  295. (e || window.event).returnValue = confirmationMessage;
  296. if ($("#pauseButton").is(":visible") == true && $("#stopButton").is(":visible") == true) {
  297. var date = new Date($.now());
  298. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  299. instance.ResumeTask(date);
  300. instance.navigationHelper.closePopUp();
  301. }
  302. else {
  303. if ($("#startButton").is(":visible") != true)
  304. instance.updateTimer();
  305. }
  306. return confirmationMessage;
  307. });
  308. instance.getTimer(Id);
  309. if (instance.RefStatusId == 3 || instance.RefStatusId == 6) {
  310. $("#startButton").children.bind('click');
  311. $("#resumeButton").children.bind('click');
  312. }
  313. else {
  314. $("#startButton").children().bind('click', function () { return false; });
  315. $("#resumeButton").children().bind('click', function () { return false; });
  316. $(".starticon").css("color", "#8edde6");
  317. $(".divTimerStop").addClass('hidden');
  318. $("#ProgressButton").prop("disabled", "disabled");
  319. }
  320. if (instance.RefStatusId == 3)
  321. instance.updateTimer();
  322. }
  323. saveTaskSession(startdate, enddate, istimerupdate, ispause, isstop, isloghour) {
  324. var instance = this;
  325. var ismanual = false;
  326. var timer = "";
  327. var pause = false;
  328. var stop = false;
  329. var sessionid = 0;
  330. if (istimerupdate || isstop == true)
  331. timer = $(".beforeTimer").text();
  332. if (ispause)
  333. pause = true;
  334. if (isstop)
  335. stop = true;
  336. startdate = new Date(startdate);
  337. if (($("#hfTaskSessionId").val() != "" && $("#hfTaskSessionId").val() != undefined) || isloghour) {
  338. startdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#txt_LogHourStartDate").val());
  339. enddate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#txt_LogHourEndDate").val());
  340. ismanual = true;
  341. sessionid = $("#hfTaskSessionId").val();
  342. }
  343. var postData = {
  344. taskid: instance.TaskId,
  345. sessionid: sessionid,
  346. startdate: startdate,
  347. enddate: enddate,
  348. timer: timer,
  349. issessionpause: pause,
  350. issessionstop: stop,
  351. ismanual: ismanual,
  352. installedappid: instance.InstalledAppId,
  353. stagestatusid: instance.RefStatusId,
  354. percentage: 0,
  355. };
  356. Bizgaze.Apps.PM.Managers.TaskManager.Instance().saveSessionLog(postData).then(function (response) {
  357. MessageHelper.Instance().showSuccess(response, '');
  358. if (isloghour)
  359. instance.refreshLog();
  360. }, function (response) {
  361. });
  362. }
  363. updateSessionEnd(enddate) {
  364. var instance = this;
  365. var postData = {
  366. taskid: instance.TaskId,
  367. enddate: enddate,
  368. timer: $(".beforeTimer").text(),
  369. percentage: 100,
  370. sessionid: 0,
  371. startdate: new Date(),
  372. issessionpause: false,
  373. issessionstop: false,
  374. ismanual: false,
  375. installedappid: 0,
  376. stagestatusid: 0,
  377. };
  378. Bizgaze.Apps.PM.Managers.TaskManager.Instance().updateSessionLogEndDate(postData).then(function (response) {
  379. MessageHelper.Instance().showSuccess(response, '');
  380. }, function (response) {
  381. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  382. });
  383. }
  384. pauseTask(enddate) {
  385. var instance = this;
  386. var postData = {
  387. taskid: instance.TaskId,
  388. pausedate: enddate,
  389. timer: $(".beforeTimer").text(),
  390. istaskpause: true,
  391. percentage: 0,
  392. timerstoppeddate: new Date(),
  393. isresumetask: false,
  394. istaskstopped: false
  395. };
  396. Bizgaze.Apps.PM.Managers.TaskManager.Instance().pauseTask(postData).then(function (response) {
  397. instance.saveTaskSession(null, enddate, false, true, false, false);
  398. }, function (response) {
  399. instance.saveTaskSession(null, enddate, false, true, false, false);
  400. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  401. });
  402. }
  403. ResumeTask(enddate) {
  404. var instance = this;
  405. var postData = {
  406. taskid: instance.TaskId,
  407. pausedate: enddate,
  408. isresumetask: true,
  409. timer: $(".beforeTimer").text(),
  410. istaskpause: false,
  411. percentage: 0,
  412. timerstoppeddate: new Date(),
  413. istaskstopped: false,
  414. };
  415. Bizgaze.Apps.PM.Managers.TaskManager.Instance().resumeTask(postData).then(function (response) {
  416. }, function (response) {
  417. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  418. });
  419. }
  420. StopTask(enddate) {
  421. var instance = this;
  422. var postData = {
  423. taskid: instance.TaskId,
  424. timerstoppeddate: enddate,
  425. istaskstopped: true,
  426. timer: $(".beforeTimer").text(),
  427. istaskpause: false,
  428. percentage: 0,
  429. pausedate: enddate,
  430. isresumetask: false,
  431. };
  432. Bizgaze.Apps.PM.Managers.TaskManager.Instance().stopTask(postData).then(function (response) {
  433. MessageHelper.Instance().showSuccess(response, '');
  434. }, function (response) {
  435. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  436. });
  437. }
  438. getTimer(taskId) {
  439. var instance = this;
  440. Bizgaze.Apps.PM.Managers.TaskManager.Instance().getTimerDetails(taskId).then(function (response) {
  441. if (response.result != "") {
  442. if (response != null) {
  443. var result = response.result.split('_');
  444. var data = result[0];
  445. data = data.replace(/['"]+/g, '');
  446. if (result.length > 1) {
  447. if (data == "False") {
  448. var maxId = setTimeout(function () { }, 0);
  449. for (var i = 0; i < maxId; i += 1) {
  450. clearTimeout(i);
  451. }
  452. Clock.totalSeconds = Number(result[1]);
  453. Clock.interval = 0;
  454. Clock.start();
  455. $(".divTimerPause").removeClass('hidden');
  456. $(".divTimerStop").removeClass('hidden');
  457. $(".divTimerStart").addClass('hidden');
  458. }
  459. else if (data == "NotStarted") {
  460. $(".divTimerStart").removeClass('hidden');
  461. $(".divTimerPause").addClass('hidden');
  462. $(".divTimerStop").addClass('hidden');
  463. }
  464. else {
  465. var value = result[1];
  466. value = value.replace(/['"]+/g, '');
  467. function pad(val) { return val > 9 ? val : "0" + val; }
  468. $("#hours").text(pad(Math.floor(Number(value) / 3600)));
  469. $("#min").text(pad(Math.floor(Number(value) / 60 % 60)));
  470. $("#sec").text(pad(parseInt(value) % 60));
  471. Clock.pause();
  472. $(".divTimerStart").addClass('hidden');
  473. $("#ProgressButton").addClass("hidden");
  474. }
  475. }
  476. else {
  477. $(".divTimerStart").removeClass('hidden');
  478. }
  479. }
  480. }
  481. });
  482. }
  483. updateTimer() {
  484. var instance = this;
  485. var date = new Date($.now());
  486. date = new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime(date));
  487. var postData = {
  488. taskid: instance.TaskId,
  489. timerstoppeddate: null,
  490. timer: $(".beforeTimer").text(),
  491. istaskpause: false,
  492. percentage: 0,
  493. pausedate: new Date(),
  494. isresumetask: false,
  495. istaskstopped: false,
  496. };
  497. Bizgaze.Apps.PM.Managers.TaskManager.Instance().updateTimer(postData).then(function (response) {
  498. }, function (response) {
  499. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  500. });
  501. }
  502. showLogDetails() {
  503. var instance = this;
  504. instance.navigationHelper.popup(0, "", Bizgaze.Apps.PM.Components.SessionLog.Instance(), function () {
  505. instance.refreshLog();
  506. instance.managePermission();
  507. }, Unibase.Platform.Helpers.Size.DockLeft);
  508. }
  509. getTaskSession(id) {
  510. var instance = this;
  511. Bizgaze.Apps.PM.Managers.TaskManager.Instance().getSessionLog(id).then(function (response) {
  512. $('#ul_ShowLog_Details').find('.li-' + id).remove();
  513. $("#hfTaskSessionId").val(id);
  514. Bizgaze.Apps.PM.Components.SessionLog.Instance().addLogHourRow(true);
  515. $("#txt_LogHourStartDate").val(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(response.result.startdate));
  516. $("#txt_LogHourEndDate").val(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(response.result.enddate));
  517. Bizgaze.Apps.PM.Components.SessionLog.Instance().calculateDateDiff();
  518. }, function (response) {
  519. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  520. });
  521. }
  522. removeSession(id) {
  523. var instance = this;
  524. Bizgaze.Apps.PM.Managers.TaskManager.Instance().deleteSession(id).then(function (response) {
  525. MessageHelper.Instance().showSuccess(response, '');
  526. instance.refreshLog();
  527. }, function (response) {
  528. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  529. });
  530. }
  531. refreshLog() {
  532. var instance = this;
  533. var taskId = instance.TaskId;
  534. Bizgaze.Apps.PM.Managers.TaskManager.Instance().getSessionLogDetails(taskId).then(function (response) {
  535. if (response.result.length == 0) {
  536. $('#ul_ShowLog_Details').after('<div class="alert alert-info ma-0" id="div_ShowLog_Details_NoData">There is no Data</div>');
  537. }
  538. $("#ulLogDetails").html('<li class="sessionlog-item hidden"><div class="row mt-10 divAddLogHours_0 hidden"></div></li>');
  539. for (var i = 0; i < response.result.length; i++) {
  540. var data = response.result[i];
  541. var da = moment(data.enddate).format('DD-MM-YYYY hh:mm:ss a');
  542. var ismanual = '';
  543. if (data.ismanual)
  544. ismanual = ' M';
  545. var html = '';
  546. if (data.ismanual) {
  547. html = '<li class="list-group-item sessionlog-item bg-info li-' + data.sessionid + '" >' +
  548. '<div class="row mt-10 divAddLogHours_' + i + ' hidden"></div>' +
  549. '<div class="row mt-10">' +
  550. '<div class="col-sm-4 pl-15"><span class="h6" style="color:white;">' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.startdate) + '</span></div>' +
  551. '<div class="col-sm-4 pl-20 mr-45"><span class="h6" style="color:white;">' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.enddate) + '</span></div>' +
  552. '<div class="col-sm-2 pl-10"><span class="h6" style="color:white;">' + data.timer + '</span></div>' +
  553. '<div class="col-sm-1 pr-5"><span class="editloghour hidden" onclick="return Unibase.Platform.PM.Components.TimeTracker.Instance().getTaskSession(' + data.sessionid + ');" style="color:white;">' +
  554. '<i class="fa fa-pencil-square-o" aria-hidden="true"></i></span>' +
  555. '<a class="btn-icon pull-right deleteloghour hidden" href="javascript:;" onclick="Unibase.Platform.PM.Components.TimeTracker.Instance().removeSession(' + data.sessionid + ');"><i class="fa fa-trash-o text-white"></i></a></div>' +
  556. '</div></li>';
  557. }
  558. else {
  559. html = '<li class="list-group-item sessionlog-item li-' + data.sessionid + '">' +
  560. '<div class="row mt-10 divAddLogHours_' + i + ' hidden"></div>' +
  561. '<div class="row mt-10">' +
  562. '<div class="col-sm-4 pl-15"><span class="h6">' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.startdate) + '</span></div>' +
  563. '<div class="col-sm-4 pl-20 mr-45"><span class="h6">' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateTimeWithoutSeconds(data.enddate) + '</span></div>' +
  564. '<div class="col-sm-2 pl-10"><span class="h6">' + data.timer + '</span></div>' +
  565. '<div class="col-sm-1 pr-5"><span class="editloghour hidden" onclick="return Unibase.Platform.PM.Components.TimeTracker.Instance().getTaskSession(' + data.sessionid + ');">' +
  566. '<i class="fa fa-pencil-square-o" aria-hidden="true"></i></span>' +
  567. '<a class="btn-icon pull-right deleteloghour hidden" href="javascript:;" onclick="Unibase.Platform.PM.Components.TimeTracker.Instance().removeSession(' + data.sessionid + ');"><i class="fa fa-trash-o text-danger"></i></a></div>' +
  568. '</div></li>';
  569. }
  570. $(".sessionlog-item:last").after(html);
  571. }
  572. Bizgaze.Apps.PM.Components.SessionLog.Instance().addLogHourRow(false);
  573. Bizgaze.Apps.PM.Components.SessionLog.Instance().calculateDateDiff();
  574. }, function (response) {
  575. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  576. });
  577. }
  578. managePermission() {
  579. var instance = this;
  580. Bizgaze.Apps.PM.Managers.TaskManager.Instance().getLogHourPermission().then(function (response) {
  581. if (response.result == '5' || Unibase.Platform.Membership.Infos.Identity.getCurrentUser().isAdmin == true) {
  582. $(".editloghour").removeClass('hidden');
  583. $(".deleteloghour").removeClass('hidden');
  584. }
  585. else {
  586. $(".editloghour").addClass('hidden');
  587. $(".deleteloghour").addClass('hidden');
  588. }
  589. instance.managePermission();
  590. }, function (response) {
  591. MessageHelper.Instance().showError(response, 'divTimeTrackerError');
  592. });
  593. }
  594. static Instance() {
  595. if (this.instance == undefined) {
  596. this.instance = new TimeTracker();
  597. }
  598. return this.instance;
  599. }
  600. }
  601. Components.TimeTracker = TimeTracker;
  602. })(Components = PM.Components || (PM.Components = {}));
  603. })(PM = Apps.PM || (Apps.PM = {}));
  604. })(Apps = Unibase.Apps || (Unibase.Apps = {}));
  605. })(Unibase || (Unibase = {}));