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.

subreport.js 59KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803
  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 Reports;
  17. (function (Reports) {
  18. class SubReport extends Platform.Core.BaseComponent {
  19. constructor() {
  20. super();
  21. this.subReportId = 0;
  22. this.isDetail = false;
  23. this.linkreport_aliasname = "";
  24. this.inline = true;
  25. this.appName = "";
  26. this.childReportName = "";
  27. this.filters = [];
  28. this.filterIndex = 0;
  29. this.subReportsExists = false;
  30. this.childReportId = 0;
  31. this.parentReportId = 0;
  32. this.isReportDuplicate = false;
  33. this._reportManager = Analytics.Managers.ReportManager.Instance();
  34. this._reportBuilder = Reports.ReportBuilder.Instance();
  35. this._reportBuilderTemplate = Reports.ReportBuilder_Template.Instance();
  36. }
  37. cssFiles() {
  38. return [];
  39. }
  40. jsFiles() {
  41. var jsFiles = ['platform/analytics/managers/reportmanager.js', 'platform/analytics/enums/subreporttype.js'];
  42. return jsFiles;
  43. }
  44. html(id, containerid) {
  45. let html = this._reportBuilderTemplate.loadLinkToOtherReportForm();
  46. return html;
  47. }
  48. load(id, containerid, callback) {
  49. var instance = this;
  50. instance.filters = [];
  51. instance.filterIndex = 0;
  52. instance.isDetail = false;
  53. instance.inline = true;
  54. instance.subReportEdit();
  55. $("#btnConfigAddFilter").click(function (e) {
  56. instance.filterIndex++;
  57. let isValueElement = $(e.target).closest(".form-row").find("[id^=isvalue_radio]");
  58. let isValue = isValueElement.prop("checked");
  59. let parametername = $("#cmbmainrptCols option:selected").text().trim();
  60. let parametervalue = $("#cmbsbrptCols option:selected").text().trim();
  61. let operator = $("#slctdoperater option:selected").text().trim();
  62. let isValueText = $("#cmbmainrptCols_textbox").val();
  63. if (!isValue && parametername.toLowerCase() == "main report columns")
  64. return MessageHelper.Instance().showError("Please select main report column", "sub_report_error_message");
  65. else if (isValue && !isValueText)
  66. return MessageHelper.Instance().showError("Please enter text in main report value column", "sub_report_error_message");
  67. if (operator.toLowerCase() == '-select-')
  68. return MessageHelper.Instance().showError("Please select operator type", "sub_report_error_message");
  69. if (isValue && isValueText == parametervalue.toLowerCase())
  70. return MessageHelper.Instance().showError("Main report column name and value column and is value text cannot be same", "sub_report_error_message");
  71. if (parametervalue.toLowerCase() == "sub report column")
  72. return MessageHelper.Instance().showError("Please select sub report column", "sub_report_error_message");
  73. if (isValue)
  74. parametername = isValueText;
  75. instance.filters.push({
  76. ParameterName: parametername,
  77. ParameterValue: parametervalue,
  78. Operator: operator,
  79. Isvalue: isValue,
  80. });
  81. instance.addSubReportFilter(parametername, parametervalue, operator, isValue);
  82. if (isValue) {
  83. $("#cmbmainrptCols_textbox").val("");
  84. isValueElement.trigger("click");
  85. }
  86. $('#cmbmainrptCols').val(0).trigger('change');
  87. $('#cmbsbrptCols').val(0).trigger('change');
  88. $('#slctdoperater').val(0).trigger('change');
  89. });
  90. $("#btnLinkReportSave").click(() => {
  91. let subReportArray = instance.getSubReportContainerArray();
  92. if (instance.isDetail) {
  93. instance.saveSubReport_DetailFields();
  94. }
  95. else {
  96. if (instance.saveSubReport_Report(subReportArray))
  97. return;
  98. }
  99. if (instance.linkreport_aliasname == undefined) {
  100. var table = instance._reportBuilder.table;
  101. var autoNumFormatter = function (cell) {
  102. var row = cell.getRow();
  103. var rowIndex = row.getPosition(false);
  104. return (rowIndex + 1);
  105. };
  106. if (table.element && table.element.children[1] && table.element.children[1].lastChild && table.element.children[1].lastChild.firstChild && table.element.children[1].lastChild.firstChild.firstElementChild && table.element.children[1].lastChild.firstChild.firstElementChild.firstChild && table.element.children[1].lastChild.firstChild.firstElementChild.firstChild.className != "fa fa-eye") {
  107. var hideIcon = function (cell, formatterParams, onRendered) {
  108. return "<i class='fa fa-eye'></i>";
  109. };
  110. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  111. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  112. }
  113. }
  114. $('#' + containerid).modal('hide');
  115. $('#' + containerid).remove();
  116. });
  117. $("#btnLinkReportClose").click(function () {
  118. $('#' + containerid).modal('hide');
  119. $('#' + containerid).remove();
  120. });
  121. $("#subrpt_clear").click(function () {
  122. if (instance._reportBuilder.subreportdata.length != 0) {
  123. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  124. if (subfil_Index > -1) {
  125. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  126. }
  127. }
  128. });
  129. $(".select_reports").change(function () {
  130. let reportId = Number($(".select_reports").val());
  131. instance.subReportColumns(reportId);
  132. });
  133. $('.subreport-radio-btn').change(function () {
  134. if ($(this).val() == 'report') {
  135. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  136. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  137. $('#subrpt_plus').removeClass('d-none');
  138. }
  139. }
  140. else {
  141. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  142. $('#subrpt_plus').addClass('d-none');
  143. }
  144. });
  145. $('.opentype-radio-btn').change(function () {
  146. if ($(this).val() == 'inline') {
  147. instance.inline = true;
  148. $('#subrpt_plus').removeClass('d-none');
  149. }
  150. else {
  151. instance.inline = false;
  152. $('#subrpt_plus').addClass('d-none');
  153. }
  154. if (instance._reportBuilder.subreportdata.length != 0) {
  155. let index;
  156. if (instance.linkreport_aliasname) {
  157. index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  158. }
  159. else {
  160. index = instance._reportBuilder.subreportdata.findIndex(s => s.RowClick == true);
  161. }
  162. if (index > -1) {
  163. instance._reportBuilder.subreportdata[index].Inline = instance.inline;
  164. }
  165. }
  166. });
  167. $("#isvalue_radio_0").unbind().click((e) => {
  168. let isChecked = $(e.target).prop("checked");
  169. $(e.target).closest(".form-row").find("#div_mainreportColumn_textbox").parent().toggleClass("hidden");
  170. $(e.target).closest(".form-row").find("#div_mainreportColumn").parent().toggleClass("hidden");
  171. });
  172. }
  173. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  174. return [];
  175. }
  176. linkreport(aliasname) {
  177. var instance = this;
  178. instance.linkreport_aliasname = aliasname;
  179. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  180. }
  181. ;
  182. loadReports() {
  183. var instance = this;
  184. instance.childReportName = "";
  185. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reports';
  186. AutoCompleteHelper.getHelper().Create(".select_reports", "hfReportAutoComplete", url, function (res) { instance.childReportName = res.text.trim(); });
  187. }
  188. mainReportColumns() {
  189. var instance = this;
  190. var mainrpt_Cols = [];
  191. if (instance._reportBuilder.selectedColumns.length != 0) {
  192. mainrpt_Cols.push({ id: 0, text: "Main Report Columns" });
  193. for (let i = 0; i < instance._reportBuilder.selectedColumns.length; i++) {
  194. let sCol = instance._reportBuilder.selectedColumns[i];
  195. mainrpt_Cols.push({ id: sCol.AliasName, text: sCol.AliasName });
  196. }
  197. $('#cmbmainrptCols').select2({
  198. placeholder: 'Select',
  199. data: mainrpt_Cols,
  200. });
  201. }
  202. }
  203. subReportColumns(reportid) {
  204. var instance = this;
  205. instance._reportManager.getColumns(reportid).then(function (subresponse) {
  206. var subrpt_data = [];
  207. for (let i = 0; i < subresponse.result.length; i++) {
  208. subrpt_data.push({ id: subresponse.result[i].ReportColumnId, text: subresponse.result[i].AliasName });
  209. }
  210. $('#cmbsbrptCols').select2({
  211. placeholder: 'Select',
  212. data: subrpt_data,
  213. });
  214. });
  215. }
  216. loadInstalledApps() {
  217. return __awaiter(this, void 0, void 0, function* () {
  218. var instance = this;
  219. instance.appName = "";
  220. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  221. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfAutoComplete_InstalledApp", url, function (res) { instance.appName = res.text.trim(); });
  222. });
  223. }
  224. primaryColumns() {
  225. var instance = this;
  226. var mainrpt_Cols = [];
  227. if (instance._reportBuilder.selectedColumns.length != 0) {
  228. mainrpt_Cols.push({ id: 0, text: "Main Report Columns" });
  229. for (let i = 0; i < instance._reportBuilder.selectedColumns.length; i++) {
  230. let sCol = instance._reportBuilder.selectedColumns[i];
  231. mainrpt_Cols.push({ id: sCol.AliasName, text: sCol.AliasName });
  232. }
  233. $('#detailPrimaryKeyColumns').select2({
  234. placeholder: 'Select',
  235. data: mainrpt_Cols,
  236. });
  237. }
  238. }
  239. addSubReportFilter(paramname, paramvalue, operator, isValue) {
  240. var Confightml = "";
  241. let id = paramname.replace(' ', '_').trim() + paramvalue.replace(' ', '_').trim();
  242. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10">
  243. <div class="col-auto mt-2 mr-2">
  244. <input class="" type="checkbox" readonly title="Is value" ${isValue && 'checked'} onclick="return false">
  245. </div>
  246. <div class="col"><input type="text" class="form-control disabled-border" value="` + paramname + `" disabled></div><div class="col-auto"><input type="text" class="form-control disabled-border text-center" value="` + operator + `" disabled></div><div class="col"><input type="text" class="form-control disabled-border" value="` + paramvalue + `" disabled></div><div class="col-auto"><a id="btnDeleteCouponItem" onclick = "Unibase.Platform.Analytics.Reports.SubReport.Instance().removefilters( ` + Number($('.select_reports').val()) + `,'` + paramname + `','` + paramvalue + `','li_filter_ul2list_0${id}');" class="btn btn-icon btn-flush-danger flush-soft-hover btn-rounded filter-remove-btn"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-trash-alt font-26 text-danger"></i></span></span></a></div></div></li>`;
  247. $(".ul2list_0").append(Confightml);
  248. if ($(".ul2list_0").children().length == 1) {
  249. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("disabled");
  250. }
  251. }
  252. subReportEdit() {
  253. return __awaiter(this, void 0, void 0, function* () {
  254. var instance = this;
  255. yield instance.loadReports();
  256. instance.mainReportColumns();
  257. instance.primaryColumns();
  258. yield instance.loadInstalledApps();
  259. instance.subReportsExists = false;
  260. let subReportArray = instance.getSubReportContainerArray();
  261. if (subReportArray != undefined) {
  262. var subfil_Index;
  263. if (subReportArray.length)
  264. instance.subReportsExists = true;
  265. if (instance.linkreport_aliasname)
  266. subfil_Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  267. else {
  268. subfil_Index = subReportArray.findIndex(s => s.RowClick == true);
  269. if (subfil_Index == -1) {
  270. subfil_Index = subReportArray.findIndex(s => !s.AliasName && s.SubReportTypeId == Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail);
  271. }
  272. }
  273. if (subfil_Index > -1) {
  274. var subrpt_data = subReportArray[subfil_Index];
  275. if (subrpt_data.SubReportTypeId == Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report) {
  276. $("#reportRadioBtn").prop("checked", true);
  277. $(".select_reports").empty().append('<option value = "' + subrpt_data.ChildReportId + '" > ' + subrpt_data.ChildReportName + ' </option>');
  278. $(".select_reports").val(subrpt_data.ChildReportId);
  279. instance.subReportId = subrpt_data.SubReportId;
  280. instance.childReportId = subrpt_data.ChildReportId;
  281. instance.parentReportId = subrpt_data.ReportId;
  282. instance.subReportColumns(subrpt_data.ChildReportId);
  283. var filters = JSON.parse(subrpt_data.Filters);
  284. for (var f = 0; f < filters.length; f++) {
  285. let fill = filters[f];
  286. let id = fill.ParameterName.replaceAll(' ', '_').trim() + fill.ParameterValue.replaceAll(' ', '_').trim();
  287. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10">
  288. <div class="col-auto mt-2 mr-2">
  289. <input class="" type="checkbox" readonly title="Is value" ${fill.Isvalue && 'checked'} onclick="return false">
  290. </div>
  291. <div class="col"><input type="text" class="form-control disabled-border" value="` + fill.ParameterName + `" disabled></div><div class="col-auto"><input type="text" class="form-control disabled-border text-center" value="` + fill.Operator + `" disabled></div><div class="col"><input type="text" class="form-control disabled-border" value="` + fill.ParameterValue + `" disabled></div><div class="col-auto"><a id="btnDeleteCouponItem" onclick = "Unibase.Platform.Analytics.Reports.SubReport.Instance().removefilters( ` + Number($('.select_reports').val()) + `,'` + fill.ParameterName + `','` + fill.ParameterValue + `','li_filter_ul2list_0${id}');" class="btn btn-icon btn-flush-danger flush-soft-hover btn-rounded filter-remove-btn"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-trash-alt font-26 text-danger"></i></span></span></a></div></div></li>`;
  292. $(".ul2list_0").append(Confightml);
  293. !f && $(".ul2list_0").find(".filter-remove-btn").addClass("disabled");
  294. instance.filters.push(fill);
  295. }
  296. var Confightml = "";
  297. if (!subrpt_data.Inline)
  298. $("#outlineRadioBtn").prop("checked", true);
  299. else
  300. $("#inlineRadioBtn").prop("checked", true);
  301. instance.inline = subrpt_data.Inline;
  302. }
  303. else {
  304. instance.isDetail = true;
  305. instance.subrpt_AliasName = subrpt_data.AliasName;
  306. instance.installedAppId = subrpt_data.InstalledAppId;
  307. instance.primaryKeyColumn = subrpt_data.PrimaryKeyColumn;
  308. $("#detailRadioBtn").prop("checked", true);
  309. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  310. $('#subrpt_plus').addClass('d-none');
  311. $("#detailInstalledApps").empty().append('<option value = "' + subrpt_data.InstalledAppId + '" > ' + subrpt_data.AppName + ' </option>');
  312. $("#detailInstalledApps").val(subrpt_data.InstalledAppId);
  313. $('#detailPrimaryKeyColumns').val(subrpt_data.PrimaryKeyColumn).trigger('change');
  314. }
  315. }
  316. }
  317. });
  318. }
  319. subReportType_Deatil() {
  320. var instance = this;
  321. instance.isDetail = true;
  322. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  323. if (subfil_Index > -1) {
  324. var subfill = instance._reportBuilder.subreportdata[subfil_Index];
  325. var fil = JSON.parse(subfill.Filters);
  326. for (var i = 0; i < fil.length; i++) {
  327. let id = fil[i].ParameterName.replace(' ', '_') + fil[i].ParameterValue.replace(' ', '_');
  328. $("#li_filter_ul2list_0" + id).remove();
  329. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  330. }
  331. }
  332. $('.select_reports').val(0).trigger('change');
  333. $('#cmbmainrptCols').val(0).trigger('change');
  334. $('#cmbsbrptCols').val(0).trigger('change');
  335. instance.primaryColumns();
  336. instance.loadInstalledApps();
  337. }
  338. subReportType_Report() {
  339. var instance = this;
  340. instance.isDetail = false;
  341. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  342. if (subfil_Index > -1) {
  343. $('#detailInstalledApps').val('0').trigger('change');
  344. $('#detailPrimaryKeyColumns').val('0').trigger('change');
  345. $("#txt_detailonclick").val("");
  346. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  347. }
  348. }
  349. saveSubReport_Report(subReportArray) {
  350. var instance = this;
  351. var rowclick = true;
  352. if (instance.linkreport_aliasname)
  353. rowclick = false;
  354. let reportType = this._reportBuilder.res ? this._reportBuilder.res.ReportTypeId : this._reportBuilder.reportType;
  355. let isChart = reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table ? false : true;
  356. var subreportdata = new NestedTableModel();
  357. subreportdata.ChildReportId = Number($('.select_reports').val());
  358. subreportdata.ChildReportName = instance.childReportName;
  359. subreportdata.Filters = JSON.stringify(instance.filters);
  360. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  361. subreportdata.Inline = instance.inline;
  362. subreportdata.RowClick = rowclick;
  363. subreportdata.AliasName = instance.linkreport_aliasname;
  364. if (!subreportdata.ChildReportId && !instance.subReportsExists) {
  365. MessageHelper.Instance().showError("Please select sub report ", "sub_report_error_message");
  366. return true;
  367. }
  368. else if (subreportdata.Filters == '[]' && !instance.subReportsExists && !isChart) {
  369. MessageHelper.Instance().showError("Please select sub report columns ", "sub_report_error_message");
  370. return true;
  371. }
  372. if (subReportArray.length != 0 && typeof (subReportArray) == 'object') {
  373. var Index;
  374. if (instance.linkreport_aliasname)
  375. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  376. else
  377. Index = subReportArray.findIndex(s => s.RowClick == true);
  378. if (Index > -1 && subreportdata.ChildReportId) {
  379. subReportArray[Index] = subreportdata;
  380. }
  381. else if (subreportdata.ChildReportId) {
  382. subReportArray.push(subreportdata);
  383. }
  384. }
  385. else {
  386. if (subreportdata.ChildReportId)
  387. subReportArray.push(subreportdata);
  388. }
  389. instance._reportBuilder.subreportdata = subReportArray;
  390. return false;
  391. }
  392. saveSubReport_DetailFields() {
  393. var instance = this;
  394. var subreportdata = new NestedTableModel();
  395. subreportdata.InstalledAppId = Number($("#detailInstalledApps").val());
  396. subreportdata.PrimaryKeyColumn = $("#detailPrimaryKeyColumns option:selected").text().trim();
  397. subreportdata.Inline = instance.inline;
  398. subreportdata.SubReportTypeId = ($("#detailRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail : 0;
  399. subreportdata.AliasName = instance.linkreport_aliasname;
  400. subreportdata.AppName = instance.appName;
  401. if (subreportdata.PrimaryKeyColumn.toLowerCase() == "select column")
  402. return MessageHelper.Instance().showError("Please select primary key column", "sub_report_error_message");
  403. else if (!subreportdata.InstalledAppId)
  404. return MessageHelper.Instance().showError("Please select installed app", "sub_report_error_message");
  405. let subReportArray = instance.getSubReportContainerArray();
  406. if (subReportArray.length != 0) {
  407. var Index;
  408. if (instance.linkreport_aliasname)
  409. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  410. else
  411. Index = subReportArray.findIndex(s => s.RowClick == true);
  412. if (Index > -1 && subreportdata.AppName != 'Select') {
  413. subReportArray[Index] = subreportdata;
  414. }
  415. else if (subreportdata.AppName != 'Select') {
  416. subReportArray.push(subreportdata);
  417. }
  418. }
  419. else {
  420. subReportArray.push(subreportdata);
  421. }
  422. }
  423. removefilters(reportid, mainreportcolumn, subreportcolumn, id) {
  424. var instance = this;
  425. if (instance.linkreport_aliasname) {
  426. if (instance._reportBuilder.subreportdata.length != 0) {
  427. var index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  428. if (index > -1) {
  429. instance._reportBuilder.subreportdata.splice(index, 1);
  430. }
  431. }
  432. }
  433. else {
  434. if (instance.filters.length == 1) {
  435. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  436. return (o.ChildReportId === reportid);
  437. });
  438. if (index !== -1)
  439. instance._reportBuilder.subreportdata.splice(index, 1);
  440. }
  441. }
  442. var fillIndex = instance.filters.findIndex(function (f) { return (f.ParameterName == mainreportcolumn) && (f.ParameterValue === subreportcolumn); });
  443. if (fillIndex > -1)
  444. instance.filters.splice(fillIndex, 1);
  445. if (!instance.filters.length)
  446. $(event.target).closest(".report-body").find(".select_reports.custom-select").empty();
  447. $("#" + id + "").empty();
  448. }
  449. ;
  450. load_old(id, containerid, callback) {
  451. var instance = this;
  452. $('#cmbmainrptCols_1').empty();
  453. var data = [];
  454. var subreportid = 0;
  455. instance._reportManager.getReports().then(function (response) {
  456. var Data = response;
  457. data.push({ id: 0, text: "Select" });
  458. data.push({ id: 0, text: "Select" });
  459. for (let i = 0; i < Data.length; i++) {
  460. data.push({ id: Data[i].ReportId, text: Data[i].ReportName });
  461. }
  462. $('.select_reports').select2({
  463. placeholder: 'Select',
  464. data: data,
  465. }).on('select2:select', function (e) {
  466. var reportid = Number($(".select_reports").val());
  467. let sub_blk = this.closest(".sub-report-block");
  468. if (sub_blk)
  469. $(sub_blk).data("subreportid", reportid.toString());
  470. $("#cmbsbrptCols_1").find('option').not(':first').remove();
  471. instance._reportManager.getColumns(reportid).then(function (response) {
  472. for (let i = 0; i < response.result.length; i++) {
  473. var columnname = response.result[i].DisplayText;
  474. var columnvalue = response.result[i].ReportColumnId;
  475. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbsbrptCols_1');
  476. }
  477. });
  478. });
  479. if (instance._reportBuilder.subreporttabledata != undefined && instance._reportBuilder.subreporttabledata != null && instance._reportBuilder.subreporttabledata != "") {
  480. if (instance._reportBuilder.subreporttabledata.length > 0) {
  481. var subreports_array = [];
  482. var subarray = [];
  483. var element = [];
  484. var currentsubreport = [];
  485. instance._reportBuilder.subreportdata = [];
  486. instance._reportBuilder.subreport_count = 1;
  487. for (let m = 0; m < instance._reportBuilder.subreporttabledata.length; m++) {
  488. instance._reportManager.getColumns(instance._reportBuilder.subreporttabledata[m].ChildReportId).then(function (response) {
  489. currentsubreport.push(instance._reportBuilder.subreporttabledata[m]);
  490. element.push(response.result[0].ReportId);
  491. subarray.push(response.result);
  492. if (element.length == instance._reportBuilder.subreporttabledata.length) {
  493. let k = 1;
  494. for (let i = 0; i < currentsubreport.length; i++) {
  495. if (i != 0) {
  496. instance.subReportId = currentsubreport[i].SubReportId;
  497. $("#subrpt_plus").trigger("click");
  498. k = i + 1;
  499. if (data.length == 0) {
  500. }
  501. $("#cmdsub_" + k + "").select2({
  502. placeholder: 'Select',
  503. data: data,
  504. });
  505. let lastSubEle = $("#linkreport_modal").find(".sub-report-block").last();
  506. lastSubEle.data("subreportid", currentsubreport[i].ChildReportId);
  507. lastSubEle.data("subreportcolumnid", currentsubreport[i].SubReportColumnId);
  508. }
  509. $("#cmdsub_" + k + "").val(currentsubreport[i].ChildReportId).trigger('change');
  510. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + k + "");
  511. var whole_tableData = instance._reportBuilder.selectedColumns;
  512. for (let j = 0; j < whole_tableData.length; j++) {
  513. var columnname = whole_tableData[j].DisplayText;
  514. var columnvalue = whole_tableData[j].ColumnId;
  515. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + k + "");
  516. }
  517. let subcolumns = subarray[i].filter(function (o) { return o.ReportId === currentsubreport[i].ChildReportId; });
  518. $("#cmbsbrptCols_" + k + "").find('option').not(':first').remove();
  519. for (let l = 0; l < subcolumns.length; l++) {
  520. var columnname = subcolumns[l].DisplayText;
  521. var columnvalue = subcolumns[l].ReportColumnId;
  522. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + k + "");
  523. }
  524. $("#btnAdd_" + instance._reportBuilder.subreport_count + "").unbind().click(function () {
  525. var id = $(this).attr('id').match(/\d+/g).map(Number);
  526. instance.addfilter(id[0], 0);
  527. $("#btnDeleteCouponItem_" + id[0] + "").click(function () {
  528. instance.removefilters(Number($("#reporthid_" + id[0] + "").val()), Number($("#mainreportcolumnhid_" + id[0] + "").val()), Number($("#subreportcolumnhid_" + id[0] + "").val()), "ul2list_" + id[0] + "");
  529. });
  530. });
  531. $("#cmbmainrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterValue).replace('@', '').trim() + "')").prop('selected', true);
  532. $("#cmbsbrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterName).trim() + "')").prop('selected', true);
  533. if (k == 1) {
  534. subreportid = currentsubreport[i].SubReportId;
  535. $("#btnConfigAddFilter").click();
  536. }
  537. else {
  538. subreportid = currentsubreport[i].SubReportId;
  539. $("#btnAdd_" + k + "").click();
  540. }
  541. instance.subReportId = 0;
  542. }
  543. }
  544. });
  545. }
  546. }
  547. }
  548. else {
  549. $('<option>').val(0).text('Select Column').appendTo('#cmbmainrptCols_1');
  550. var whole_tableData = instance._reportBuilder.selectedColumns;
  551. for (let i = 0; i < whole_tableData.length; i++) {
  552. var columnname = whole_tableData[i].ColumnName;
  553. var columnvalue = whole_tableData[i].ColumnId;
  554. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbmainrptCols_1,#detailPrimaryKeyColumns');
  555. }
  556. }
  557. });
  558. $("#btnLinkReportSave").click(function () {
  559. if (instance.isDetail) {
  560. instance.subReportType_Deatil();
  561. }
  562. var table = instance._reportBuilder.table;
  563. var autoNumFormatter = function (cell) {
  564. var row = cell.getRow();
  565. var rowIndex = row.getPosition(false);
  566. return (rowIndex + 1);
  567. };
  568. if (table.element.children[1].lastChild.firstChild.firstElementChild.firstChild.className != "fa fa-eye") {
  569. var hideIcon = function (cell, formatterParams, onRendered) {
  570. return "<i class='fa fa-eye'></i>";
  571. };
  572. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  573. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  574. }
  575. $('#' + containerid).modal('hide');
  576. $('#' + containerid).remove();
  577. var data = instance._reportBuilder.subreportdata;
  578. });
  579. var Confightml = "";
  580. $("#btnConfigAddFilter").click(function (e) {
  581. let text = $("#cmbmainrptCols_1 option:selected").text();
  582. let text1 = $("#cmbsbrptCols_1 option:selected").text();
  583. if (text == "Select Column" || text1 == "Sub report column")
  584. return;
  585. let exists = instance._reportBuilder.subreportdata.find(x => x.ParameterValue == text && x.ParameterName == text1);
  586. if (exists)
  587. return;
  588. let opertaor = $("#slctdoperater_0 option:selected").text();
  589. let id = text.replaceAll(' ', '_') + text1.replaceAll(' ', '_');
  590. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10"><div class="col"><input type="text" class="form-control disabled-border" value="` + text + `" disabled></div><div class="col-auto"><input type="text" class="form-control disabled-border text-center" value="` + opertaor + `" disabled></div><div class="col"><input type="text" class="form-control disabled-border" value="` + text1 + `" disabled></div><div class="col-auto"><a id="btnDeleteCouponItem" onclick = "Unibase.Platform.Analytics.Reports.SubReport.Instance().removefilters( ` + Number($('.select_reports').val()) + `,` + Number($("#cmbmainrptCols_1 option:selected").val()) + `,` + Number($("#cmbsbrptCols_1 option:selected").val()) + `,'li_filter_ul2list_0${id}');" class="btn btn-icon btn-flush-danger flush-soft-hover btn-rounded filter-remove-btn"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-trash-alt font-26 text-danger"></i></span></span></a></div></div></li>`;
  591. $(".ul2list_0").append(Confightml);
  592. if ($(".ul2list_0").children().length == 1)
  593. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("hidden");
  594. var subreportdata = new NestedTableModel();
  595. if (instance._reportBuilder.reportid != 0) {
  596. subreportdata.SubReportId = subreportid;
  597. }
  598. subreportdata.ChildReportId = Number($('.select_reports').val());
  599. subreportdata.Operator = $("#slctdoperater_0 option:selected").text();
  600. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_1 option:selected").val());
  601. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_1 option:selected").val());
  602. subreportdata.ReportColumnName = $("#cmbmainrptCols_1 option:selected").text();
  603. subreportdata.SubReportColumnName = $("#cmbsbrptCols_1 option:selected").text();
  604. subreportdata.ParameterValue = $("#cmbmainrptCols_1 option:selected").text();
  605. subreportdata.ParameterName = $("#cmbsbrptCols_1 option:selected").text();
  606. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  607. subreportdata.ReportId = instance._reportBuilder.reportid;
  608. instance.childReportId = subreportdata.ChildReportId;
  609. instance.parentReportId = subreportdata.ReportId;
  610. instance._reportBuilder.subreportdata.push(subreportdata);
  611. instance._reportBuilder.subreporttabledata = instance._reportBuilder.subreportdata;
  612. $("#cmbmainrptCols_1").val("0");
  613. $("#cmbsbrptCols_1").val("0");
  614. });
  615. $("#btnLinkReportClose").click(function () {
  616. $('#' + containerid).modal('hide');
  617. $('#' + containerid).remove();
  618. });
  619. $("#subrpt_plus").click(function () {
  620. const subreportCnt = $("[id^=btnAdd]").length + 2;
  621. var template = instance._reportBuilderTemplate.del_loadSubReports_Section();
  622. var templateScript = Handlebars.compile(template);
  623. var context = { "subreport_count": subreportCnt };
  624. var html = templateScript(context);
  625. $("#linkreport_modal").append(html);
  626. $("#cmdsub_" + subreportCnt + "").select2({
  627. placeholder: 'Select',
  628. data: data,
  629. });
  630. var main_reportcolumns = instance._reportBuilder.selectedColumns;
  631. $("#cmbmainrptCols_" + subreportCnt + "").empty();
  632. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + subreportCnt + "");
  633. for (let i = 0; i < main_reportcolumns.length; i++) {
  634. var columnname = main_reportcolumns[i].ColumnName;
  635. var columnvalue = main_reportcolumns[i].ColumnId;
  636. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + subreportCnt + "");
  637. }
  638. $("#btnAdd_" + subreportCnt + "").click(function () {
  639. var colid = $(this).closest(".sub-report-block").find("#div_subColumn").children().first().val();
  640. var id = $(this).attr('id').match(/\d+/g).map(Number);
  641. instance.addfilter(id[0], 0);
  642. let sub_blk = this.closest(".sub-report-block");
  643. if (sub_blk && colid)
  644. $(sub_blk).data("subreportcolumnid", colid);
  645. });
  646. $("#cmdsub_" + subreportCnt + "").on('select2:select', function (e) {
  647. var id = $(this).attr('id').match(/\d+/g).map(Number);
  648. var reportid = Number($("#cmdsub_" + id[0] + "").val());
  649. let sub_blk = this.closest(".sub-report-block");
  650. if (sub_blk)
  651. $(sub_blk).data("subreportid", reportid.toString());
  652. $("#cmbsbrptCols_" + id[0] + "").find('option').not(':first').remove();
  653. instance._reportManager.getColumns(reportid).then(function (response) {
  654. for (let i = 0; i < response.result.length; i++) {
  655. var columnname = response.result[i].DisplayText;
  656. var columnvalue = response.result[i].ReportColumnId;
  657. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + id[0] + "");
  658. }
  659. });
  660. });
  661. $("#cmbsbrpt_" + subreportCnt).empty();
  662. $("#cmbsbrpt_" + subreportCnt).append('<option value="0">--Select SubReport--</option>');
  663. });
  664. $("#linkreport_modal").click(this.subReportMdown.bind(this));
  665. const installedAppsUrl = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  666. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfDetailInstalledApps", installedAppsUrl, null);
  667. $('.subreport-radio-btn').change(function () {
  668. if ($(this).val() == 'report') {
  669. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  670. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  671. $('#subrpt_plus').removeClass('d-none');
  672. }
  673. }
  674. else {
  675. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  676. $('#subrpt_plus').addClass('d-none');
  677. }
  678. });
  679. $('.opentype-radio-btn').change(function () {
  680. if ($(this).val() == 'inline') {
  681. $('#subrpt_plus').removeClass('d-none');
  682. }
  683. else {
  684. $('#subrpt_plus').addClass('d-none');
  685. }
  686. });
  687. }
  688. removefilters_old(reportid, mainreportcolumn, subreportcolumn, id) {
  689. var instance = this;
  690. $("#" + id + "").empty();
  691. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  692. return (o.ChildReportId === reportid) && (o.ReportColumnId === mainreportcolumn) && (o.SubReportColumnId === subreportcolumn);
  693. });
  694. if (index !== -1)
  695. instance._reportBuilder.subreportdata.splice(index, 1);
  696. }
  697. ;
  698. addfilter(id, SubReportId) {
  699. var instance = this;
  700. let text = $("#cmbmainrptCols_" + id + " option:selected").text();
  701. let text1 = $("#cmbsbrptCols_" + id + " option:selected").text();
  702. let opertaor = $("#slctdoperater_" + id + " option:selected").text();
  703. var filterhtml = `<li id="li_filter_ul2list` + id + `" class="fltr-row filteritems-addedrow clear"><div class="form-row mb-10"><div class="col"> <input type="text" class="form-control lblViewerFilter_MainReportColumnName disabled-border" value="` + text + ` " disabled> </div><div class="col-auto my-auto text-center"> <input type="text" class="form-control lblViewerFilter_Operator disabled-border text-center" value="` + opertaor + ` " disabled> </div ><div class="col"> <input type="text" class="form-control lblViewerFilter_FilterValue disabled-border" value="` + text1 + ` " disabled></div> <div class="col-auto" > <a id="btnDeleteCouponItem_` + id + `" class="btn btn-icon btn-flush-danger flush-soft-hover btn-rounded" ><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-trash-alt font-26 text-danger"></i></span></span></a></div><input type="hidden" id="operatorhid_` + id + `" name="zyx" value="` + opertaor + `" /><input type="hidden" id="reporthid_` + id + `" name="zyx" value="` + Number($("#cmdsub_" + id + "").val()) + `" /><input type="hidden" id="mainreportcolumnhid_` + id + `" name="zyx" value="` + Number($("#cmbmainrptCols_" + id + " option:selected").val()) + `" /><input type="hidden" id="subreportcolumnhid_` + id + `" name="zyx" value="` + Number($("#cmbsbrptCols_" + id + " option:selected").val()) + `" /></div></li>`;
  704. $(".ul2list_" + id + "").append(filterhtml);
  705. var subreportdata = new NestedTableModel();
  706. subreportdata.SubReportId = instance.subReportId || SubReportId;
  707. subreportdata.ChildReportId = Number($("#cmdsub_" + id + "").val());
  708. subreportdata.Operator = $("#slctdoperater_" + id + " option:selected").text();
  709. subreportdata.ParameterValue = $("#cmbmainrptCols_" + id + " option:selected").text();
  710. subreportdata.ParameterName = $("#cmbsbrptCols_" + id + " option:selected").text();
  711. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_" + id + " option:selected").val());
  712. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_" + id + " option:selected").val());
  713. subreportdata.ReportColumnName = ($("#cmbmainrptCols_" + id + " option:selected").text());
  714. subreportdata.SubReportColumnName = $("#cmbsbrptCols_" + id + " option:selected").text();
  715. instance._reportBuilder.subreportdata.push(subreportdata);
  716. $("#cmbmainrptCols_" + id).val("0");
  717. $("#cmbsbrptCols_" + id).val("0");
  718. }
  719. ;
  720. linkreport_old() {
  721. var instance = this;
  722. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  723. }
  724. ;
  725. subReportMdown(e) {
  726. let subrp = e.target.closest(".sub-report-block");
  727. let childReportId = $(subrp).data("subreportid");
  728. if (childReportId)
  729. childReportId = Number(childReportId);
  730. if (e.target.classList.contains("remove_subrpt") || e.target.closest(".remove_subrpt")) {
  731. let sRIdx;
  732. if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length == 1) {
  733. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  734. if (sRIdx != -1)
  735. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  736. }
  737. else if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length > 1) {
  738. let childReportColumnId = Number($(subrp).data("subreportcolumnid"));
  739. if (childReportColumnId) {
  740. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId && x.SubReportColumnId == childReportColumnId);
  741. if (sRIdx != -1)
  742. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  743. }
  744. }
  745. subrp.remove();
  746. }
  747. else if (e.target.classList.contains("remove_subrpt_columns") || e.target.closest(".remove_subrpt_columns")) {
  748. let sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  749. if (sRIdx != -1)
  750. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  751. $(e.target).closest(".filteritems-addedrow").remove();
  752. }
  753. }
  754. removeSubreport() {
  755. let idx = -1;
  756. let subReportArray = this.getSubReportContainerArray();
  757. if (!this.isDetail) {
  758. if (this.subReportId)
  759. idx = subReportArray.findIndex(x => x.SubReportId == this.subReportId);
  760. else
  761. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  762. if (idx > -1) {
  763. this.linkreport_aliasname = '';
  764. this.filters = [];
  765. this.childReportName = '';
  766. subReportArray.splice(idx, 1);
  767. }
  768. $("#subreports-filters-list").empty();
  769. $("#cmdsub_1").val("0").empty();
  770. }
  771. else {
  772. if (this.installedAppId)
  773. idx = subReportArray.findIndex(x => x.AliasName == this.subrpt_AliasName && x.InstalledAppId == this.installedAppId);
  774. else
  775. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  776. if (idx > -1) {
  777. this.installedAppId = 0;
  778. subReportArray.splice(idx, 1);
  779. }
  780. $("#detailPrimaryKeyColumns").val("0").trigger("change");
  781. $("#detailInstalledApps").val("0").trigger("change");
  782. }
  783. }
  784. getSubReportContainerArray() {
  785. if (this.isReportDuplicate) {
  786. return Analytics.Components.DuplicateReport.Instance().subReports;
  787. }
  788. else {
  789. return this._reportBuilder.subreportdata;
  790. }
  791. }
  792. static Instance() {
  793. if (this.instance === undefined) {
  794. this.instance = new SubReport();
  795. }
  796. return this.instance;
  797. }
  798. }
  799. Reports.SubReport = SubReport;
  800. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  801. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  802. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  803. })(Unibase || (Unibase = {}));