tasks.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /**
  2. * Copyright (c) UNA, Inc - https://una.io
  3. * MIT License - https://opensource.org/licenses/MIT
  4. * @defgroup Tasks Tasks
  5. * @ingroup UnaModules
  6. *
  7. * @{
  8. */
  9. function BxTasksView(oOptions) {
  10. this._oOptions = oOptions;
  11. }
  12. BxTasksView.prototype.init = function () {
  13. var $this = this;
  14. $('.bx-tasks-tasklist').each(function() {
  15. $(this).addClass(localStorage.getItem('bx-tasks-tasklist-' + $(this).attr('data-list')));
  16. });
  17. };
  18. BxTasksView.prototype.toggle = function (sList, oSource) {
  19. var sClass = 'bx-tasks-tl-collapsed';
  20. var oParent = $(oSource).parents('.bx-tasks-tasklist:first');
  21. oParent.toggleClass(sClass);
  22. oParent.siblings('.bx-tasks-tasks').toggle();
  23. localStorage.setItem('bx-tasks-tasklist-' + sList, oParent.hasClass(sClass) ? sClass : '');
  24. return false;
  25. };
  26. BxTasksView.prototype.setCompleted = function (iId, oObj) {
  27. var iVal = ($(oObj).prop('checked') ? 1 : 0);
  28. this._setCompleted(iId, iVal);
  29. };
  30. BxTasksView.prototype.setCompletedByMenu = function (iId, iValue, oObj) {
  31. $(oObj).addClass('bx-btn-disabled');
  32. this._setCompleted(iId, iValue, function(oData) {
  33. processJsonData(oData);
  34. });
  35. };
  36. BxTasksView.prototype._setCompleted = function (iId, iValue, onComplete) {
  37. $.getJSON(this._oOptions.sActionUrl + 'set_completed/' + iId + '/' + iValue + '/', function(oData) {
  38. if(typeof onComplete === 'function')
  39. onComplete(oData);
  40. });
  41. };
  42. BxTasksView.prototype.processTaskList = function (iContextId, iId, oSource, oEvent) {
  43. oEvent.stopPropagation();
  44. var $this = this;
  45. $(window).dolPopupAjax({
  46. url: $this._oOptions.sActionUrl + 'process_task_list_form/' + iContextId + '/' + iId + '/',
  47. closeOnOuterClick: false,
  48. removeOnClose: true
  49. });
  50. };
  51. BxTasksView.prototype.deleteTaskList = function (iContextId, iId, obj) {
  52. var $this = this;
  53. bx_confirm($this._oOptions.t_confirm_block_deletion, function () {
  54. $.getJSON($this._oOptions.sActionUrl + 'delete_task_list/' + iContextId + '/' + iId + '/', {}, function (oData) {
  55. $this.reloadData(oData, iContextId)
  56. });
  57. });
  58. };
  59. BxTasksView.prototype.processTask = function (iContextId, iListId, oSource) {
  60. var $this = this;
  61. $(window).dolPopupAjax({
  62. url: $this._oOptions.sActionUrl + 'process_task_form/' + iContextId + '/' + iListId + '/',
  63. closeOnOuterClick: false,
  64. removeOnClose: true
  65. });
  66. };
  67. BxTasksView.prototype.processTaskEditTasksList = function (iContentId, oSource) {
  68. this.processTaskEditProperty(iContentId, 'tasks_list', oSource);
  69. };
  70. BxTasksView.prototype.processTaskEditType = function (iContentId, oSource) {
  71. this.processTaskEditProperty(iContentId, 'type', oSource);
  72. };
  73. BxTasksView.prototype.processTaskEditPriority = function (iContentId, oSource) {
  74. this.processTaskEditProperty(iContentId, 'priority', oSource);
  75. };
  76. BxTasksView.prototype.processTaskEditEstimate = function (iContentId, oSource) {
  77. this.processTaskEditProperty(iContentId, 'estimate', oSource);
  78. };
  79. BxTasksView.prototype.processTaskEditDueDate = function (iContentId, oSource) {
  80. this.processTaskEditProperty(iContentId, 'due_date', oSource);
  81. };
  82. BxTasksView.prototype.processTaskEditState = function (iContentId, oSource) {
  83. this.processTaskEditProperty(iContentId, 'state', oSource);
  84. };
  85. BxTasksView.prototype.processTaskEditProperty = function (iContentId, sProperty, oSource) {
  86. var $this = this;
  87. $(window).dolPopupAjax({
  88. url: $this._oOptions.sActionUrl + 'process_task_form_edit_property/' + iContentId + '/' + sProperty + '/',
  89. closeOnOuterClick: false,
  90. removeOnClose: true
  91. });
  92. };
  93. BxTasksView.prototype.changeAlloViewTo = function (oSource) {
  94. var iContext = parseInt($(oSource).val());
  95. if(iContext && iContext < 0)
  96. document.location = bx_append_url_params(document.location.href, {context: iContext});
  97. };
  98. BxTasksView.prototype.hidePopup = function (oData) {
  99. $(".bx-popup-applied:visible").dolPopupHide();
  100. };
  101. BxTasksView.prototype.reloadData = function (oData, iContextId) {
  102. $(".bx-popup-applied:visible").dolPopupHide();
  103. loadDynamicBlockAuto($('.bx-tasks-tasklist-add'), window.location.href )
  104. };
  105. BxTasksView.prototype.reload = function (oData) {
  106. $(".bx-popup-applied:visible").dolPopupHide();
  107. document.location = document.location;
  108. };
  109. BxTasksView.prototype.applyFilter = function (oSource, iContextId) {
  110. var $this = this;
  111. var iFilter = $(oSource).val();
  112. var oDate = new Date();
  113. this.loadingInBlock(oSource, true);
  114. $.get(
  115. this._oOptions.sActionUrl + 'apply_filter/' + iContextId + '/' + iFilter,
  116. {
  117. _t: oDate.getTime()
  118. },
  119. function(oData) {
  120. $this.loadingInBlock(oSource, false);
  121. processJsonData(oData);
  122. },
  123. 'json'
  124. );
  125. return false;
  126. };
  127. BxTasksView.prototype.onApplyFilter = function (oData) {
  128. if(oData && oData.content) {
  129. var sTasksId = '#' + this._oOptions.aHtmlIds['tasks'];
  130. $(sTasksId).replaceWith(oData.content);
  131. $(sTasksId).bxProcessHtml();
  132. }
  133. };
  134. BxTasksView.prototype.createFilter = function (oSource, iContextId) {
  135. var $this = this;
  136. var oDate = new Date();
  137. this.loadingInBlock(oSource, true);
  138. $.get(
  139. this._oOptions.sActionUrl + 'create_filter/' + iContextId,
  140. {
  141. _t: oDate.getTime()
  142. },
  143. function(oData) {
  144. $this.loadingInBlock(oSource, false);
  145. processJsonData(oData);
  146. },
  147. 'json'
  148. );
  149. return false;
  150. };
  151. BxTasksView.prototype.onChangeSave = function (oElement) {
  152. $(oElement).parents('form').find('#bx-form-element-title').toggleClass('bx-tasks-ffi-hidden', !($("[name = 'save_me']").prop('checked') || $("[name = 'save_all']").prop('checked')));
  153. };
  154. BxTasksView.prototype.loadingInBlock = function(e, bShow) {
  155. var oParent = $(e).length ? $(e).parents('.bx-db-container:first') : $('body');
  156. bx_loading(oParent, bShow);
  157. };