Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sessionlog.js 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let PM;
  6. (function (PM) {
  7. let Components;
  8. (function (Components) {
  9. class SessionLog extends Unibase.Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this._taskManager = PM.Managers.TaskManager.Instance();
  13. }
  14. cssFiles() {
  15. return [''];
  16. }
  17. jsFiles() {
  18. return ['apps/pm/managers/taskmanager.js'];
  19. }
  20. html(id, containerid) {
  21. let html = `<form id="createMrp" method="post" data-validate="parsley">
  22. <input type="hidden" id="hfTaskSessionId" value="" />
  23. <header class="b-b bg-white modal-header">
  24. <strong class="text-dark titlename">Log Hours</strong>
  25. <div class="btn-group ml-auto"> <a class="btn btn-sm"><i class="ti-help-alt" title="help" href="" target="_blank"></i></a><div></header><div style="overflow-x:hidden;" class="scrollable">
  26. <div class="b-a wrapper">
  27. <div class="card">
  28. <ul id="ul_ShowLog_Details">
  29. <li class="list-group-item bg-cyan-light-5">
  30. <div class="row">
  31. <div class="col-sm-4"><h6>Start Time</h6></div>
  32. <div class="col-sm-4 mr-45"><h6>End Time</h6></div>
  33. <div class="col-sm-2 mr-10"><h6>Duration</h6></div>
  34. <div class="col-sm-1">
  35. <a href="javascript:;" class="pull-right manageloghour hidden" id="LinkButton" title="CreateLogHour" onclick="_bizgaze_pm_coummunicatios_sessionlog_widget.addLogHourRow(true)"><i class="fa fa-plus"></i></a></div></div>
  36. </li><li class="length-row" id="ulLogDetails"></li></ul></div></div></div>
  37. <footer class="bg-white modal-footer"><a href="javascript:;" id="btn_ShoLogClose" class="btn btn-light btn-sm mr-auto" onclick=" _navigationHelper.closeCreate()"> Close</a>
  38. </footer></form>`;
  39. return html;
  40. }
  41. load(id, containerid, callback) {
  42. var instance = this;
  43. $("#txt_LogHourEndDate").change(function () {
  44. instance.calculateDateDiff();
  45. });
  46. instance.checkPermission();
  47. }
  48. addLogHourRow(isedit) {
  49. var instance = this;
  50. var predivhtml = '<li class="list-group-item sessionlog-item hidden" id="li_AddLogHours">' +
  51. '<div class="row">' +
  52. '<div class="col-sm-4">' +
  53. '<div class="floating-label-form-group floating-label-form-group-with-value" id = "div_LogHourStartDate" >' +
  54. '<div class="input-group">' +
  55. '<input type="text" id="txt_LogHourStartDate" class="form-control value-control datepicker-input floating-label-control" data-isdynamic="false" placeholder="dd/mm/yyyy" data-placeholder="dd/mm/yyyy" data-label="dd/mm/yyyy" />' +
  56. '<span class="input-group-addon mt-10 bg-white no-border"><i class="fa fa-calendar" aria-hidden="true"></i></span>' +
  57. '</div>' +
  58. '</div>' +
  59. '</div>' +
  60. '<div class="col-sm-4 mr-45">' +
  61. '<div class="floating-label-form-group floating-label-form-group-with-value" id = "div_LogHourEndDate">' +
  62. '<div class="input-group">' +
  63. '<input type="text" id="txt_LogHourEndDate" class="form-control value-control datepicker-input floating-label-control" data-isdynamic="false" placeholder="dd/mm/yyyy" data-placeholder="dd/mm/yyyy" data-label="dd/mm/yyyy" />' +
  64. '<span class="input-group-addon mt-10 bg-white no-border"><i class="fa fa-calendar" aria-hidden="true"></i></span>' +
  65. '</div>' +
  66. '</div>' +
  67. '</div>' +
  68. '<div class="col-sm-2 mr-10 pl-6" style="padding-bottom:5px;padding-top:5px">' +
  69. '<span class="h6" id="LogHours"></span>' +
  70. '</div>' +
  71. '<div class="col-sm-1"><span class="pull-right mt-10" onclick="return _bizgaze_extensions_PM_task_timetracker.saveTaskSession(' + null + ', ' + null + ', ' + false + ',' + false + ', ' + false + ',' + true + ');"><i class="fa fa-check" aria-hidden="true"></i></span>' +
  72. '</div></div></li>';
  73. $(".divAddLogHours_0").parent().before(predivhtml);
  74. if (isedit)
  75. $("#li_AddLogHours").removeClass('hidden');
  76. $("#txt_LogHourEndDate,#txt_LogHourStartDate").change(function () {
  77. instance.calculateDateDiff();
  78. });
  79. $('.datepicker-input').daterangepicker({
  80. singleDatePicker: true,
  81. showDropdowns: true,
  82. minYear: 1901,
  83. locale: {
  84. format: 'DD/MM/YYYY HH:mm',
  85. },
  86. });
  87. instance.checkProjectDates();
  88. }
  89. checkProjectDates() {
  90. var instance = this;
  91. $('#txt_LogHourEndDate').val(moment(new Date($.now())).format("DD/MM/YYYY HH:mm"));
  92. $('#txt_LogHourStartDate').val(moment(new Date($.now())).format("DD/MM/YYYY HH:mm"));
  93. instance.calculateDateDiff();
  94. $('#txt_LogHourStartDate').daterangepicker({
  95. timePicker24Hour: true,
  96. timePicker: true,
  97. locale: {
  98. format: 'DD/MM/YYYY HH:mm',
  99. },
  100. singleDatePicker: true,
  101. showDropdowns: true,
  102. });
  103. $('#txt_LogHourEndDate').daterangepicker({
  104. timePicker24Hour: true,
  105. timePicker: true,
  106. locale: {
  107. format: 'DD/MM/YYYY HH:mm',
  108. },
  109. singleDatePicker: true,
  110. showDropdowns: true,
  111. });
  112. }
  113. calculateDateDiff() {
  114. var stdate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#txt_LogHourStartDate").val());
  115. var endate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDateTime($("#txt_LogHourEndDate").val());
  116. var diffDays = 0;
  117. var diffHrs = 0;
  118. var diffMins = 0;
  119. var diffSecs = 0;
  120. var today = new Date(stdate);
  121. var Christmas = new Date(endate);
  122. var diffMs = (Number(Christmas) - Number(today));
  123. if (diffMs != NaN) {
  124. diffDays = Math.floor(diffMs / 86400000);
  125. diffHrs = Math.floor((diffMs) / 3600000);
  126. diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000);
  127. diffSecs = Math.round((((diffMs % 86400000) % 3600000) / 60000) / 60000);
  128. }
  129. }
  130. checkPermission() {
  131. var instance = this;
  132. instance._taskManager.getLogHourPermission().then(function (response) {
  133. if (response.result == '5' || Unibase.Platform.Membership.Infos.Identity.getCurrentUser().isAdmin == true) {
  134. $(".manageloghour").removeClass('hidden');
  135. }
  136. else {
  137. $(".manageloghour").addClass('hidden');
  138. }
  139. }, function (response) {
  140. MessageHelper.Instance().showError(response, '');
  141. });
  142. }
  143. getProjectDetails(_projectId) {
  144. var instance = this;
  145. var projectendDate = '';
  146. let _dateTimeHelper = Unibase.Platform.Helpers.DateTimeHelper.Instance();
  147. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length != 0) {
  148. _projectId = (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_projectid").Value);
  149. }
  150. instance._taskManager.getProjectDetails(Number(_projectId)).then(function (response) {
  151. if (response.result != null) {
  152. $(".date_startdate").val(_dateTimeHelper.formatLocalDate1(response.result.StartDate, ''));
  153. projectendDate = _dateTimeHelper.formatLocalDate1(response.result.EndDate, '');
  154. if (projectendDate == '01/01/1901') {
  155. $('.date_startdate').daterangepicker({
  156. timePicker24Hour: true,
  157. locale: {
  158. format: 'DD/MM/YYYY',
  159. },
  160. singleDatePicker: true,
  161. autoUpdateInput: true,
  162. minDate: _dateTimeHelper.formatLocalDate1(response.result.StartDate, ''),
  163. });
  164. $('.date_enddate').daterangepicker({
  165. timePicker24Hour: true,
  166. locale: {
  167. format: 'DD/MM/YYYY',
  168. },
  169. singleDatePicker: true,
  170. minDate: _dateTimeHelper.formatLocalDate1(response.result.StartDate, ''),
  171. });
  172. }
  173. else {
  174. $(".date_enddate").val(_dateTimeHelper.formatLocalDate1(response.result.EndDate, ''));
  175. }
  176. if (response.result.EndDate != null && projectendDate != '01/01/1901') {
  177. $('.date_startdate').daterangepicker({
  178. timePicker24Hour: true,
  179. locale: {
  180. format: 'DD/MM/YYYY',
  181. },
  182. singleDatePicker: true,
  183. autoUpdateInput: true,
  184. minDate: _dateTimeHelper.formatLocalDate1(response.result.StartDate, ''),
  185. maxDate: _dateTimeHelper.formatLocalDate1(response.result.EndDate, '')
  186. });
  187. $('.date_enddate').daterangepicker({
  188. timePicker24Hour: true,
  189. locale: {
  190. format: 'DD/MM/YYYY',
  191. },
  192. singleDatePicker: true,
  193. autoUpdateInput: true,
  194. minDate: _dateTimeHelper.formatLocalDate1(response.result.StartDate, ''),
  195. maxDate: _dateTimeHelper.formatLocalDate1(response.result.EndDate, ''),
  196. });
  197. }
  198. $('.date_startdate').on('apply.daterangepicker', function (ev, picker) {
  199. var date = $(this).val();
  200. if (projectendDate != "" && projectendDate == '01/01/1901') {
  201. $('.date_enddate').daterangepicker({
  202. timePicker24Hour: true,
  203. locale: {
  204. format: 'DD/MM/YYYY',
  205. },
  206. singleDatePicker: true,
  207. minDate: _dateTimeHelper.formatLocalDate1(date, ''),
  208. maxDate: projectendDate
  209. });
  210. }
  211. else {
  212. $('.date_enddate').daterangepicker({
  213. timePicker24Hour: true,
  214. locale: {
  215. format: 'DD/MM/YYYY',
  216. },
  217. singleDatePicker: true,
  218. minDate: _dateTimeHelper.formatLocalDate1(date, ''),
  219. });
  220. }
  221. });
  222. }
  223. });
  224. }
  225. taskstagechange() {
  226. $('.date_completedate').val(moment(new Date($.now())).format("DD/MM/YYYY HH:mm"));
  227. $('.date_completedate').daterangepicker({
  228. timePicker24Hour: true,
  229. timePicker: true,
  230. locale: {
  231. format: 'DD/MM/YYYY HH:mm',
  232. },
  233. singleDatePicker: true,
  234. showDropdowns: true,
  235. });
  236. let completeddate = $(".date_completedate").val();
  237. completeddate = moment($(".date_completedate").val(), "DD/MM/YYYY HH:mm").format('YYYY/MM/DD HH:mm');
  238. $(".hfdate_completedate").val(completeddate.toString());
  239. setTimeout(function () {
  240. $('.date_completedate').on('apply.daterangepicker', function (ev, picker) {
  241. let completeddate = $(".date_completedate").val();
  242. completeddate = moment($(".date_completedate").val(), "DD/MM/YYYY HH:mm").format('YYYY/MM/DD HH:mm');
  243. $(".hfdate_completedate").val(completeddate.toString());
  244. });
  245. }, 2000);
  246. }
  247. static Instance() {
  248. if (this.instance == undefined) {
  249. this.instance = new SessionLog();
  250. }
  251. return this.instance;
  252. }
  253. }
  254. Components.SessionLog = SessionLog;
  255. })(Components = PM.Components || (PM.Components = {}));
  256. })(PM = Apps.PM || (Apps.PM = {}));
  257. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  258. })(Bizgaze || (Bizgaze = {}));