Built files from Bizgaze WebServer
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

cardviewer.js 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Analytics;
  6. (function (Analytics) {
  7. let Viewers;
  8. (function (Viewers) {
  9. class CardViewer extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.reportManager = Analytics.Managers.ReportManager.Instance();
  13. this.viewerManager = Analytics.Managers.ViewerManager.Instance();
  14. this._reportBuilder = Analytics.Reports.ReportBuilder.Instance();
  15. this._reportViewer = Analytics.Components.ReportViewer.Instance();
  16. this.ViewerSettings = new Analytics.Providers.ViewerSettings();
  17. }
  18. loadmore(boardname, page, reportid, CardViewId, cardvalues, appliedcolumn, assignedcolumn, TemplateText) {
  19. var instance = this;
  20. var data = [];
  21. let rv_ins = Unibase.Platform.Analytics.Components.ReportViewer.Instance().getReportViewerInstance(instance.containerId);
  22. let { fromDate, toDate } = rv_ins.checkForReportDatePicker(reportid, this.containerId);
  23. var footerElement = $("[data-id='" + boardname + "']").find('footer').find('button');
  24. if (footerElement.length) {
  25. var element = footerElement[0].className.split(/\s+/);
  26. page = element[element.length - 1].match(/\d+/g).map(Number)[0];
  27. let postdata = {
  28. ReportId: reportid,
  29. page: page,
  30. ViewerTypeId: 5,
  31. pageSize: 5,
  32. ViewerId: CardViewId,
  33. BoardName: boardname.toString(),
  34. IsJson: true,
  35. DisplayModeTypeId: this._reportViewer.getDisplayModeTypeId(),
  36. DateFilter: rv_ins.dateFilters,
  37. Filter: rv_ins.dynamicFilters,
  38. InputParameters: rv_ins.inputParameters,
  39. FromDate: fromDate,
  40. ToDate: toDate,
  41. };
  42. instance.reportManager.getReportViewerData(postdata).then(function (tableresponse) {
  43. if (tableresponse.status == Unibase.Data.Status.Success) {
  44. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  45. let response = JSON.parse(tableresponse.result);
  46. if (response.Data && response.Data.length) {
  47. let tablevalues = JSON.parse(response.Data);
  48. if (tablevalues && tablevalues.length) {
  49. let prevData = rv_ins.reportData;
  50. let currentData = JSON.parse(response.Data);
  51. rv_ins.reportData = $.merge(prevData, currentData);
  52. rv_ins.reportDatalength = rv_ins.reportData.length;
  53. if (rv_ins && rv_ins.reportResponse && rv_ins.reportResponse.result && rv_ins.reportResponse.result.ReportJsonData && rv_ins.reportResponse.result.ReportJsonData.Result && rv_ins.reportResponse.result.ReportJsonData.Result.Data) {
  54. var data = JSON.parse(rv_ins.reportResponse.result.ReportJsonData.Result.Data);
  55. data = data.concat(tablevalues);
  56. rv_ins.reportResponse.result.ReportJsonData.Result.Data = JSON.stringify(data);
  57. if (rv_ins.isEnableCount) {
  58. $("#Viewer_pagintion" + instance.containerId).html(data.length + ' ' + 'of' + ' ' + rv_ins.totalRecords).removeClass('hidden');
  59. }
  60. }
  61. }
  62. var pageno = page + 1;
  63. footerElement.addClass("lenght_" + pageno).removeClass("lenght_" + page);
  64. for (let i = 0; i < tablevalues.length; i++) {
  65. if (TemplateText) {
  66. var context;
  67. TemplateText = TemplateText.trim();
  68. var templateScript = Handlebars.compile(TemplateText);
  69. var script = templateScript(tablevalues[i]);
  70. instance._reportBuilder.kanban_board.addElement(boardname, { title: tablevalues[i][assignedcolumn] });
  71. }
  72. else {
  73. }
  74. }
  75. var result = cardvalues.filter(function (o) { return o[appliedcolumn] === boardname; });
  76. if (result.length > 0) {
  77. var TrimmedBoardName = boardname.replace(" ", "");
  78. $("#spn_" + TrimmedBoardName + "").text(instance._reportBuilder.kanban_board.getBoardElements(boardname).length);
  79. if (result[0].groupbycount == instance._reportBuilder.kanban_board.getBoardElements(boardname).length) {
  80. $($("div").find("[data-id='" + boardname + "']")).find('button').addClass('hidden');
  81. }
  82. }
  83. }
  84. }
  85. else
  86. return MessageHelper.Instance().showError(tableresponse.message, "div_ErrorMessage");
  87. });
  88. }
  89. }
  90. loadView(reportresponse, reportid, CardViewId, page, pageSize, containerid, ViewerSettings, callback, reportwidgetdata) {
  91. var instance = this;
  92. instance.containerId = containerid;
  93. let rv_ins = Unibase.Platform.Analytics.Components.ReportViewer.Instance().getReportViewerInstance(containerid);
  94. instance.fileCacheHelper.loadCssFiles(["libs/kanban/jkanban.min.css"], () => {
  95. instance.fileCacheHelper.loadJsFiles(["libs/kanban/jkanban.min.js", "platform/analytics/components/reportbuilder/reportbuilderhiddenfields.js"], () => {
  96. $("#Table_View_" + containerid).removeClass("hidden");
  97. instance.viewerManager.getCardView(CardViewId).then(function (res) {
  98. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  99. if (res != null) {
  100. instance.res = res;
  101. let tablevalues = [];
  102. let reportViewerDataResult = reportresponse.result.ReportJsonData.Result;
  103. if (reportViewerDataResult.Data) {
  104. tablevalues = JSON.parse(reportViewerDataResult.Data).sort((a, b) => (a.stageindex > b.stageindex) ? 1 : (a.stageindex < b.stageindex) ? -1 : 0);
  105. var data = [];
  106. var uniqueidarray = [];
  107. var item = [];
  108. var morearray = [];
  109. let values = [...new Set(tablevalues.map(item => item[instance.res.AppliedColumn.trim()]))];
  110. for (let i = 0; i < values.length; i++) {
  111. var result = tablevalues.filter(function (o) { return o[instance.res.AppliedColumn.trim()] === values[i]; });
  112. if (result.length > 0) {
  113. if (result[0].groupbycount <= result.length) {
  114. uniqueidarray.push(values[i]);
  115. }
  116. else {
  117. morearray.push(values[i]);
  118. }
  119. }
  120. for (let i = 0; i < result.length; i++) {
  121. if (instance.res.TemplateText) {
  122. var context;
  123. var templateScript = Handlebars.compile(instance.res.TemplateText);
  124. var script = templateScript(result[i]);
  125. item.push({
  126. title: script,
  127. });
  128. }
  129. }
  130. data.push({ id: values[i], title: values[i], "item": item, });
  131. item = [];
  132. }
  133. var data1 = data;
  134. var dataids = data.map(function (el) {
  135. return `${el.id}`;
  136. });
  137. data1.forEach(function (e, i) {
  138. data1[i]['dragTo'] = dataids;
  139. });
  140. var kanbandata = data;
  141. instance._reportBuilder.cardviewerpage = 2;
  142. let viewerEl = $(`#Viewer_${containerid}`);
  143. viewerEl.empty().css("overflow-x", "scroll");
  144. ;
  145. viewerEl.find(".Templateheader").addClass("hidden");
  146. let isDragging = false;
  147. let mousemoveTagHeader = false;
  148. let currentDraggingEle = null;
  149. $(`#filters-list${containerid}`).find('.filter-item').each(function (i, el) {
  150. $(el).mouseover(function (e) {
  151. if (isDragging) {
  152. mousemoveTagHeader = true;
  153. $(el).addClass('kanban-item-hover');
  154. }
  155. });
  156. $(el).mouseout(function (e) {
  157. if (mousemoveTagHeader) {
  158. mousemoveTagHeader = false;
  159. let idtag = $(el).attr('data-filtername');
  160. viewerEl.find(`[data-id="${idtag}"]`).find('.kanban-drag').append(currentDraggingEle);
  161. $(el).removeClass("kanban-item-hover");
  162. }
  163. });
  164. });
  165. eval(`Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().kanban_board = new jKanban({
  166. element: '#Viewer_${containerid}',
  167. layout: { horizontal: true },
  168. responsive: '700',
  169. responsivePercentage: false,
  170. widthBoard: '370px',
  171. dragItems: true,
  172. dropEl: function (el, target, source, sibling) { },
  173. boards: data1,
  174. dragBoards: false,
  175. addItemButton: true,
  176. dragEl: function (el, source) {
  177. $(el).css({ opacity: '0.6', 'pointer-events': 'none' });
  178. isDragging = true;
  179. currentDraggingEle = el;
  180. $('body').mousemove(function (e) {
  181. if (isDragging) {
  182. let closestCardBoard = $(el).closest('.kanban-drag')[0];
  183. let closestCardBoardContainer =
  184. viewerEl.find('.kanban-container').closest('.card-body')[0];
  185. let dragRect = closestCardBoard.getBoundingClientRect();
  186. let dragRectContainer =
  187. closestCardBoardContainer.getBoundingClientRect();
  188. let dragRectContainerLeft = dragRectContainer.x;
  189. let top = dragRect.y;
  190. let y = e.clientY;
  191. let x = e.clientX;
  192. if (y < top + 20) {
  193. closestCardBoard.scrollBy(0, -20);
  194. } else if (y < top + 60) {
  195. closestCardBoard.scrollBy(0, -10);
  196. } else if (y > top + dragRect.height - 20) {
  197. closestCardBoard.scrollBy(0, 20);
  198. } else if (y > top + dragRect.height - 60) {
  199. closestCardBoard.scrollBy(0, 10);
  200. }
  201. if (x < dragRectContainerLeft + 20) {
  202. closestCardBoardContainer.scrollBy(-20, 0);
  203. } else if (x < dragRectContainerLeft + 60) {
  204. closestCardBoardContainer.scrollBy(-10, 0);
  205. } else if (x > dragRectContainerLeft + dragRectContainer.width - 20) {
  206. closestCardBoardContainer.scrollBy(20, 0);
  207. } else if (x > dragRectContainerLeft + dragRectContainer.width - 60) {
  208. closestCardBoardContainer.scrollBy(10, 0);
  209. }
  210. }
  211. });
  212. },
  213. dragendEl: function (el) {
  214. $('body').off('mousemove');
  215. $(el).css({ opacity: '1', 'pointer-events': 'auto' });
  216. isDragging = false;
  217. if(!isDragging){
  218. if($(el).find('[data-kanban2view="stagechange"][data-stagechange="true"]').length>0){
  219. let id, stageId,recordId, installedAppId;
  220. $('[data-kanban2view="stagechange"][data-stagechange="true"]').attr('data-click2event','false');
  221. $(el).find('[data-kanban2view="stagechange"][data-stagechange="true"]').attr('data-click2event','active');
  222. recordId = Number($(el).find('[data-kanban2view="stagechange"][data-stagechange="true"]').attr('data-record2id'));
  223. installedAppId = Number($(el).find('[data-kanban2view="stagechange"][data-stagechange="true"]').attr('data-installed2appid'));
  224. stageId = Number($(el).find('[data-kanban2view="stagechange"][data-stagechange="true"]').attr('data-oldstageid'));
  225. id = $(el).find('[data-kanban2view="stagechange"][data-stagechange="true"]').attr('id');
  226. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(["platform/apps/managers/stagemanager.js","platform/apps/components/stages/stagereason.js"], function () {
  227. Unibase.Themes.Compact.Components.Details.Instance().change(stageId, installedAppId, id);
  228. });
  229. }
  230. }
  231. },
  232. buttonClick: function (el, boardId) {
  233. var page = Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().cardviewerpage;
  234. Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().cardviewerpage = Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().cardviewerpage + 1;
  235. instance.loadmore(boardId,page,reportid,CardViewId,tablevalues,instance.res.AppliedColumn.trim(),instance.res.AssignColumn.trim(),instance.res.TemplateText);
  236. var formItem = document.createElement('form');
  237. formItem.setAttribute('class', 'itemform');
  238. //KanbanTest.addForm(boardId, formItem);
  239. //document.getElementById('CancelBtn').onclick = function () {
  240. // formItem.parentNode.removeChild(formItem);
  241. //};
  242. },
  243. }); if($('[data-isconclusive="true"]').length !=0){
  244. let stageNameConclusive = $('[data-isconclusive="true"]').parents('.kanban-board').attr('data-id');
  245. $('[data-id="'+stageNameConclusive+'"]').addClass('position-absolute').css('margin-top', '440px');}`);
  246. viewerEl.find(".kanban-title-board").addClass('text-truncate');
  247. viewerEl.find('.kanban-container').addClass('d-flex align-items-start');
  248. for (let i = 0; i < uniqueidarray.length; i++) {
  249. var uniqueresult = tablevalues.filter(function (o) { return o[instance.res.AppliedColumn.trim()] === uniqueidarray[i]; });
  250. viewerEl.find(`[data-id='${uniqueidarray[i]}'] .kanban-title-button`).addClass('d-none');
  251. var TrimmedBoardName = uniqueidarray[i];
  252. viewerEl.find(`[data-id='${uniqueidarray[i]}'] .kanban-board-header`).append('<span class="kanban-header-badge badge badge-primary badge-outline font-14 font-weight-600 flex-shrink-0"><span id=spn_' + TrimmedBoardName + '>' + uniqueresult.length + '</span> of ' + uniqueresult[0].groupbycount + '</span>');
  253. }
  254. if (morearray.length > 0) {
  255. for (let i = 0; i < morearray.length; i++) {
  256. var moreeresult = tablevalues.filter(function (o) { return o[instance.res.AppliedColumn.trim()] === morearray[i]; });
  257. var TrimmedBoardName = morearray[i].toString().replace(" ", "");
  258. viewerEl.find(`[data-id='${morearray[i]}'] .kanban-board-header`).append('<span class="kanban-header-badge badge badge-primary badge-outline font-14 font-weight-600 flex-shrink-0"><span id=spn_' + TrimmedBoardName + '>' + moreeresult.length + '</span> of ' + moreeresult[0].groupbycount + '</span>');
  259. }
  260. }
  261. viewerEl.find(".kanban-drag").css({ "min-height": "max-content", "max-height": "500px", "min-width": "250px" }).addClass('biz-custom-scrollbar');
  262. viewerEl.find("main.kanban-drag").css('height', 'fit-content');
  263. uniqueidarray = [];
  264. viewerEl.find(".btnfritem").parent().addClass('w-100 d-flex justify-content-center mt-1 align-items-center mb-2').attr('style', '');
  265. viewerEl.find(".btnfritem").addClass("lenght_2");
  266. viewerEl.find(".btnfritem").html("More");
  267. $(".btnfritem").css({ "background-color": "white", "padding": "4px 12px", "font-weight": "bold" });
  268. }
  269. else {
  270. $(`#${containerid} .kanban-container`).html(`<div class="alert alert-primary text-center mb-0 border-0 rounded-0 w-100 font-14 font-weight-500">No data available</div>`).css("width", "100%");
  271. }
  272. if (rv_ins.isEnableCount) {
  273. $("#Viewer_pagintion" + instance.containerId).html(tablevalues.length + ' ' + 'of' + ' ' + rv_ins.totalRecords);
  274. }
  275. }
  276. else
  277. return MessageHelper.Instance().showError("Something went wrong", "div_ErrorMessage");
  278. });
  279. });
  280. });
  281. }
  282. static Instance() {
  283. return new Unibase.Platform.Analytics.Viewers.CardViewer();
  284. }
  285. }
  286. Viewers.CardViewer = CardViewer;
  287. })(Viewers = Analytics.Viewers || (Analytics.Viewers = {}));
  288. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  289. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  290. })(Unibase || (Unibase = {}));