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

chartviewer.js 28KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Unibase;
  11. (function (Unibase) {
  12. let Platform;
  13. (function (Platform) {
  14. let Analytics;
  15. (function (Analytics) {
  16. let Charts;
  17. (function (Charts) {
  18. class ChartViewer extends Analytics.Components._Chart {
  19. constructor() {
  20. super();
  21. this.dynamicParameters = [];
  22. this.reportManager = Analytics.Managers.ReportManager.Instance();
  23. this.Filter = [];
  24. }
  25. jsFiles() {
  26. return ["libs/chartjs/chart.min.js"];
  27. }
  28. cssFiles() {
  29. return [
  30. 'libs/tabulator-tables/css/bootstrap/tabulator_bootstrap4.min.css'
  31. ];
  32. }
  33. html(id, containerid) {
  34. const instance = this;
  35. var reportid = id;
  36. let hidden = 'd-none';
  37. if (containerid.includes("div_kpireport_") || containerid.includes("_previewreport_")) {
  38. hidden = '';
  39. }
  40. let isRestrictHidden = '';
  41. if (Unibase.Platform.Membership.Infos.Identity.currentUser.isRestrictedUser) {
  42. isRestrictHidden = 'd-none';
  43. }
  44. let html = `<div class="card mb-0" id="chartViewerWrap_${containerid}"><div class="card-header h-50p pa-10 d-flex justify-content-between align-items-center p-relative viewer-header ViewerHeader_${containerid}"><div class="chart-header-left d-flex align-items-center text-truncate"><a href="javascript:void(0);" id="reportCloseBtn_${containerid}" class="report-close-btn btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-30p h-30p mr-10 text-dark d-none" onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().closeReportPopup('${containerid}');" data-tooltip="true" title="Close"><span class="btn-icon-wrap"><i data-icon="l"></i></span></a><strong class="ChartName_${containerid} hidden">Chart</strong><span id="ReportTitle_${containerid}" class="font-weight-600 biz-highlight-bg-color text-truncate">Title</span><strong id = "Reportid_${containerid}" class="pl-15 Reportid__dynamicfilter hidden"> Title </strong><strong id = "Reportid_${containerid}" class="pl-15 Reportid__commonfilter hidden"> Title </strong>
  45. ${instance.currentUser.isAdmin ? `<a class="dp-toggle-icon btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-20p h-20p flex-shrink-0 d-none ${!isRestrictHidden ? 'd-xl-block' : ''}" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="ViewerTypes_${containerid}" class="ViewerTypes_${containerid}"><span class="btn-icon-wrap"><i class="fa fa-caret-down" aria-hidden="true"></i></span></a>
  46. <div class="dropdown-menu dropdown-menu-left ViewerTypes_dropdown" id="dp_${containerid}_viewertypes"><a class="dropdown-item ddbtn_Edit" href = "javascript:;" title = "Edit" id = "edit_" onclick = "Unibase.Platform.Analytics.Components.ReportViewer.Instance().EditReport(${reportid},0,0,0,'${containerid}');">Edit</a>
  47. <a href="javascript:;" class="dropdown-item" id="DuplicateTable_${containerid}" onclick = "Unibase.Platform.Analytics.Components.ReportViewer.Instance().EditReport(${reportid},1,0,0,'${containerid}')";>Duplicate</a>
  48. </div>` : ''}<span class="dropdown pull-right mr-30 sp_widget_create_${containerid}" style = "position:static"></span></div>
  49. <div class="card-header-right d-flex align-items-center"><a class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-30p h-30p mr-1 chart-maximize-btn" href="javascript:;" id="chartMaximizeBtn_${containerid}" onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().report_ViewAll(${reportid}, 0, 'fullscreen_${containerid}','${containerid}');" data-tooltip="true" title="Maximize Chart"><span class="btn-icon-wrap"><i class="las la-expand font-18"></i></span></a><a class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-30p h-30p mr-1 chart-minimize-btn d-none" href="javascript:;" id="chartMinimizeBtn_${containerid}" onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().closeReportPopup('${containerid}');" data-tooltip="true" title="Minimize Chart"><span class="btn-icon-wrap"><i class="las la-compress font-18"></i></span></a><a class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-30p h-30p mr-1 d-none link-report-icon" id="linkreport${containerid}" href="javascript:;"><span class="btn-icon-wrap"><i class="las la-table font-18"></i></span></a><div class="filter-dp-wrapper biz-dropdown ${isRestrictHidden} d-none" id="filterDpWrap_${containerid}">
  50. <a href="javascript:;" class="filter-icon btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover w-30p h-30p" id="filter-icon${containerid}"
  51. onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().loadDynamicFilters(${reportid},'${containerid}','.BindData_${containerid}')" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-tooltip="true" title="Dynamic Filters"><span class="btn-icon-wrap"><i class="las la-filter font-18"></i></span></a>
  52. <div class="dropdown-menu biz-custom-dropdown biz-filter-dropdown"
  53. id="biz-filter-dropdown${containerid}" onclick="event.stopPropagation();">
  54. <div class="filter-dropdown-body biz-custom-scrollbar" id="filter-dropdown-body${containerid}">
  55. <div id="dynamic-filters${containerid}" class="dynamic-filters-list row mx-0"></div>
  56. </div>
  57. <div class="filter-dropdown-footer d-none" id="filter-dropdown-footer${containerid}"><a
  58. href="javascript:;" class="btn btn-outline-danger btn-sm Filterbuttons"
  59. id="btn_ClearFilter${containerid}"
  60. onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().clearDynamicFilters(${reportid},'${containerid}')">Clear</a>
  61. <div class="actions-btn-group"><a href="javascript:;"
  62. class="btn btn-outline-primary btn-sm create-filter-btn saveViewAs${containerid}"
  63. onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().saveViewAs(${reportid})">Create</a>
  64. <div class="btn-group apply-btn-group toggle-btn ml-15"><a href="javascript:;"
  65. class="btn btn-outline-primary btn-sm Filterbuttons"
  66. id="ApplyGlobalFilter${containerid}"
  67. onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance()._applyfilter(${reportid},'${containerid}')">Apply</a><a
  68. href="javascript:;"
  69. class="btn btn-outline-primary btn-sm save-filter-btn saveViewAs${containerid} d-none"
  70. id="saveViewAs${containerid}"
  71. onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().saveViewAs(${reportid})">Save</a><button
  72. type="button" class="btn btn-primary btn-sm dropdown-toggle"
  73. id="applyToggleBtn${containerid}"></button></div>
  74. </div>
  75. </div>
  76. <div class="filter-dropdown-errmessage text-center d-none"
  77. id="filter-dropdown-errmessage${containerid}">
  78. <p class="text-danger">No Filters Found!</p><a href="javascript:;"
  79. class="btn btn-outline-primary btn-sm mt-10 create-filter-btn saveViewAs${containerid}"
  80. onclick="Unibase.Platform.Analytics.Components.ReportViewer.Instance().saveViewAs(${reportid})">Create
  81. Filter</a>
  82. </div>
  83. </div>
  84. </div>
  85. </div></div>
  86. <div class="card-body ChartViewer_${containerid} pa-20"><section class="modal-body pa-0 card_section" id="chartSection_${containerid}"><div class="d-none w-100" id="noChartDataMsg_${containerid}"></div><div class="p-relative" id="ChartCanvasDiv${containerid}"><canvas id="${containerid}-chart-canvas" class="chart-canvas"></canvas></div></section></div>
  87. </div>`;
  88. return html;
  89. }
  90. load(id, containerid, callback) {
  91. return __awaiter(this, void 0, void 0, function* () {
  92. const instance = this;
  93. this.reportManager = Analytics.Managers.ReportManager.Instance();
  94. this._reportBuilder = Analytics.Reports.ReportBuilder.Instance();
  95. this._reportBuilder.pivot = new PivotColumns();
  96. var reportid = id;
  97. containerid = containerid;
  98. $("#Reportid_" + containerid).empty();
  99. $('.Reportid__dynamicfilter').text("");
  100. $("#Reportid_" + containerid).text(reportid);
  101. $(`#applyToggleBtn${containerid}`).click(() => {
  102. $(`#ApplyGlobalFilter${containerid}`).toggleClass('d-none');
  103. $(`#saveViewAs${containerid}`).toggleClass('d-none');
  104. });
  105. if (containerid.indexOf("dashboardportletwidget") > 0) {
  106. let widgetheight = $("#" + containerid).siblings('#hf_portletwidgetheight').val();
  107. if (widgetheight == 'undefined' || widgetheight == null || widgetheight == '0px') {
  108. widgetheight = '240px';
  109. }
  110. $(".ChartViewer_" + containerid).find(".card_section").css({ "height": widgetheight, "overflow": "hidden" });
  111. $(".ChartViewer_" + containerid).find("#ChartCanvasDiv" + containerid).addClass('h-100 w-100');
  112. }
  113. if ($(`#${containerid}`).hasClass('_bizgaze_popup_container') || $(`#${containerid}`).hasClass('_bizgaze_detail_container')) {
  114. $(`#chartViewerWrap_${containerid}`).addClass('chart-viewer-card');
  115. $(`#chartMaximizeBtn_${containerid}`).addClass('d-none');
  116. $(`#reportCloseBtn_${containerid},#filterDpWrap_${containerid}`).removeClass('d-none');
  117. $(`#chartSection_${containerid}`).css('height', '100%');
  118. if (containerid.includes('div_dashboardportletwidget')) {
  119. $(`#chartMinimizeBtn_${containerid}`).removeClass('d-none');
  120. }
  121. if (Unibase.Themes.Compact.Components.Index.Instance().tabMode) {
  122. $(`#ChartCanvasDiv${containerid}`).addClass('h-100 w-100');
  123. }
  124. else {
  125. $(`#chartSection_${containerid}`).addClass('d-flex flex-column justify-content-center');
  126. $(`#ChartCanvasDiv${containerid}`).removeClass('h-100').addClass('h-50 w-100');
  127. }
  128. }
  129. instance.xaxisColumns = [], instance.yaxisColumns = [], instance.groupColumns = [];
  130. instance.loadData(containerid, reportid);
  131. });
  132. }
  133. loadData(containerid, reporId) {
  134. return __awaiter(this, void 0, void 0, function* () {
  135. var instance = this;
  136. instance.ChartDivId = containerid + "-chart-canvas";
  137. instance.chartContainerId = containerid;
  138. let rv_instance;
  139. if (Unibase.Platform.Helpers.NavigationHelper.reportViewerInstance.length > 0) {
  140. let reportviewerInstance = Unibase.Platform.Helpers.NavigationHelper.reportViewerInstance.find(x => x.childcontainerid == containerid);
  141. if (reportviewerInstance != undefined)
  142. rv_instance = reportviewerInstance.instance;
  143. else
  144. rv_instance = instance;
  145. }
  146. else {
  147. rv_instance = instance;
  148. }
  149. Unibase.Platform.Helpers.NavigationHelper.Instance().hideLoading();
  150. let reportInfo = rv_instance.reportResponse.result.ReportInfo;
  151. instance._reportBuilder.reportid = reporId;
  152. instance._reportBuilder.DataListId = reportInfo.DataListId;
  153. instance.IsChartBuilder = false;
  154. instance.displayLegend = reportInfo.IsLegend;
  155. instance.isDataLabel = reportInfo.IsDataLabel;
  156. instance.isTooltipHeader = reportInfo.IsTooltipHeader;
  157. instance.tickLabelLength = reportInfo.TickLabelLength;
  158. instance.loadSelectedLegend(reportInfo.LegendTypeId, false);
  159. if (containerid.indexOf("dashboardportletwidget") > 0) {
  160. if (containerid.includes('fullscreen')) {
  161. const widgetContainerId = containerid.replace('fullscreen_', '');
  162. const widgetName = $(`#${widgetContainerId}`).siblings('[id^=hf_widgetName]').val().toString();
  163. $("#ReportTitle_" + containerid).text(widgetName);
  164. }
  165. else {
  166. $("#ReportTitle_" + containerid).text(instance.WidgetName);
  167. }
  168. }
  169. else {
  170. $("#ReportTitle_" + containerid).text(reportInfo.ReportName);
  171. }
  172. var reportColumns = reportInfo.ReportColumns;
  173. instance._reportBuilder.TenureReport = [], instance._reportBuilder.pivot.ColumnName = "";
  174. var tenure;
  175. var pivot;
  176. if (reportColumns.length != 0) {
  177. tenure = reportColumns.find(x => x.IsTenureApplied == true);
  178. pivot = reportColumns.find(x => x.IsPivotColumn == true);
  179. }
  180. if (tenure) {
  181. instance._reportBuilder.TenureReport[tenure.DisplayText] = {
  182. TimeInterval: tenure.TimeInterval,
  183. };
  184. var Values_len = instance._reportBuilder.TenureReport.length;
  185. instance._reportBuilder.TenureReport.length = Values_len + 1;
  186. instance._reportBuilder.tenureTimeIntervalCol = tenure.DisplayText;
  187. return instance.tenureChart(instance.ChartDivId, reporId);
  188. }
  189. if (reportInfo.ChartColumns.length != 0 && instance._reportBuilder.TenureReport.length == 0) {
  190. instance.ChartTypeId = reportInfo.ChartTypeId;
  191. var chartcolumns = reportInfo.ChartColumns;
  192. instance.loadchart(rv_instance.reportData, chartcolumns, reportColumns, pivot);
  193. }
  194. instance.colorAppliedOn = reportInfo.ColorAppliedTypeId;
  195. if (!reportInfo.LegendTitleTypeId)
  196. instance.legendTitleTypeId = Unibase.Platform.Analytics.Enums.LegendTitleType.Data;
  197. else if (reportInfo.LegendTitleTypeId)
  198. instance.legendTitleTypeId = reportInfo.LegendTitleTypeId;
  199. if (reportInfo.ChartBaseValue)
  200. instance.chartBaseValue = reportInfo.ChartBaseValue;
  201. const indexInstance = Unibase.Themes.Compact.Components.Index.Instance();
  202. if (reportInfo.PaletteId !== 0 || indexInstance.currentTheme.paletteId) {
  203. let paletteId = reportInfo.PaletteId;
  204. if (!paletteId) {
  205. instance.paletteColors.push(...indexInstance.themePalette);
  206. }
  207. else {
  208. instance.getpaletteColors(paletteId, false);
  209. }
  210. }
  211. instance.chart_dataSet();
  212. if (reportInfo.LinkReportId != 0)
  213. $(`#linkreport${containerid}`).removeClass("d-none");
  214. $(`#linkreport${containerid}`).click(function () {
  215. let widgetId = Number($(this).closest(".dashboardwidget-addeditem").find("#hf_widgetId").val());
  216. var commonFilters = Unibase.Platform.Analytics.Components._CommonFilter.Instance().appliedFilters;
  217. let filters = [];
  218. if (commonFilters && commonFilters.length) {
  219. var fil = commonFilters.find(x => x.WidgetId == widgetId);
  220. if (fil && fil.AutocompleteFilter && fil.AutocompleteFilter.length) {
  221. filters = fil.AutocompleteFilter;
  222. }
  223. }
  224. var rv_instance = Unibase.Platform.Helpers.NavigationHelper.reportViewerInstance.find(x => x.childcontainerid == containerid);
  225. var dynamicfilters = (rv_instance.instance) ? rv_instance.instance.dynamicFilters : [];
  226. if (dynamicfilters && dynamicfilters.length) {
  227. filters = dynamicfilters;
  228. }
  229. (reportInfo.LinkReportId == reportInfo.ReportId) && (reportInfo.LinkReportId = 0);
  230. instance.linkReport(reportInfo.LinkReportId, filters, "div_linkreport" + containerid.substr(containerid.lastIndexOf("_")) + "_viewall");
  231. });
  232. });
  233. }
  234. loadchart(chartdata, chartcolumns, reportColumns, pivot) {
  235. return __awaiter(this, void 0, void 0, function* () {
  236. var instance = this;
  237. var data = chartdata;
  238. instance.ChartData = data;
  239. const containerid = instance.chartContainerId;
  240. var chartCols = [];
  241. if (reportColumns != null && reportColumns.length != 0) {
  242. reportColumns.map(function (element) {
  243. var cCol = chartcolumns.find(c => c.AliasName == element.AliasName);
  244. if (cCol) {
  245. chartCols.push(cCol);
  246. }
  247. });
  248. }
  249. else {
  250. chartCols = chartcolumns;
  251. }
  252. if (data.length > 0) {
  253. for (var i = 0; i < chartCols.length; i++) {
  254. let chartCol = chartCols[i];
  255. let ColumnValue = chartCol.ColumnValue;
  256. let Field = chartCol.Name;
  257. let AliasName = chartCol.AliasName;
  258. let DataType = chartCol.DataType;
  259. let Name = AliasName != null ? AliasName : Field;
  260. let IsNumAbb = chartCol.IsNumAbb;
  261. if (chartCol.IsXaxis == true) {
  262. let xObj = {
  263. ColumnId: ColumnValue,
  264. ColumnName: Name,
  265. DisplayText: AliasName,
  266. AliasName: AliasName,
  267. DataType: DataType,
  268. ColorType: chartCol.ColorAppliedOn,
  269. CoordinateTypeId: instance.ChartAxis.Horizontal,
  270. divId: "",
  271. IsNumAbb: IsNumAbb
  272. };
  273. instance.selected_Coordinate(xObj);
  274. }
  275. else if (chartCol.IsYaxis == true && chartCol.IsGroupBy != true) {
  276. let yObj = {
  277. ColumnId: ColumnValue,
  278. ColumnName: Name,
  279. DisplayText: AliasName,
  280. AliasName: AliasName,
  281. DataType: DataType,
  282. ColorType: chartCol.ColorAppliedOn,
  283. CoordinateTypeId: instance.ChartAxis.Vertical,
  284. divId: "",
  285. IsNumAbb: IsNumAbb
  286. };
  287. instance.selected_Coordinate(yObj);
  288. }
  289. else if (chartCol.IsGroupBy == true) {
  290. if (chartCol.Color != null) {
  291. instance.chartViewer_Colors(chartCol.Color, ColumnValue, Name);
  292. }
  293. let gObj = {
  294. ColumnId: ColumnValue,
  295. ColumnName: Name,
  296. DisplayText: AliasName,
  297. AliasName: AliasName,
  298. DataType: DataType,
  299. ColorType: chartCol.ColorAppliedOn,
  300. CoordinateTypeId: instance.ChartAxis.GroupBy,
  301. divId: ""
  302. };
  303. instance.selected_Coordinate(gObj);
  304. if (pivot) {
  305. yield instance._reportBuilder.getDistinctData(ColumnValue, Name, chartCol.AggregationValue);
  306. }
  307. }
  308. else if (chartCol.IsLineChart == true) {
  309. let lObj = {
  310. ColumnId: ColumnValue,
  311. ColumnName: Name,
  312. DisplayText: AliasName,
  313. AliasName: AliasName,
  314. DataType: DataType,
  315. ColorType: chartCol.ColorAppliedOn,
  316. CoordinateTypeId: instance.ChartAxis.LineChart,
  317. divId: ""
  318. };
  319. instance.selected_Coordinate(lObj);
  320. }
  321. if (chartCol.IsChartBaseColumn == true) {
  322. let lObj = {
  323. ColumnId: ColumnValue,
  324. ColumnName: Name,
  325. DisplayText: AliasName,
  326. AliasName: AliasName,
  327. DataType: DataType,
  328. ColorType: chartCol.ColorAppliedOn,
  329. CoordinateTypeId: instance.ChartAxis.BaseColumn,
  330. divId: ""
  331. };
  332. instance.selected_Coordinate(lObj);
  333. }
  334. }
  335. }
  336. else {
  337. $(`#ChartCanvasDiv${containerid}`).addClass('d-none');
  338. $(`#chartSection_${containerid}`).removeClass('d-flex');
  339. $(`#noChartDataMsg_${containerid}`).html('<div class="alert alert-primary border-0 font-14 mb-0 rounded-0 text-center w-100">No data available</div>').removeClass('d-none');
  340. }
  341. this.prepareAndBindToolTipColumns(chartCols);
  342. });
  343. }
  344. static Instance() {
  345. this._instance = new ChartViewer();
  346. return this._instance;
  347. }
  348. }
  349. Charts.ChartViewer = ChartViewer;
  350. })(Charts = Analytics.Charts || (Analytics.Charts = {}));
  351. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  352. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  353. })(Unibase || (Unibase = {}));