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.

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 = {}));