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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  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 (isChart && subreportdata.Filters == '[]') {
  373. this._reportBuilder.linkReportId = subreportdata.ChildReportId;
  374. }
  375. if (subReportArray.length != 0 && typeof (subReportArray) == 'object') {
  376. var Index;
  377. if (instance.linkreport_aliasname)
  378. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  379. else
  380. Index = subReportArray.findIndex(s => s.RowClick == true);
  381. if (Index > -1 && subreportdata.Filters != "[]" && subreportdata.ChildReportId) {
  382. subReportArray[Index] = subreportdata;
  383. }
  384. else if (subreportdata.Filters != "[]" && subreportdata.ChildReportId) {
  385. subReportArray.push(subreportdata);
  386. }
  387. }
  388. else {
  389. if (subreportdata.ChildReportId)
  390. subReportArray.push(subreportdata);
  391. }
  392. instance._reportBuilder.subreporttabledata = subReportArray;
  393. return false;
  394. }
  395. saveSubReport_DetailFields() {
  396. var instance = this;
  397. var subreportdata = new NestedTableModel();
  398. subreportdata.InstalledAppId = Number($("#detailInstalledApps").val());
  399. subreportdata.PrimaryKeyColumn = $("#detailPrimaryKeyColumns option:selected").text().trim();
  400. subreportdata.Inline = instance.inline;
  401. subreportdata.SubReportTypeId = ($("#detailRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail : 0;
  402. subreportdata.AliasName = instance.linkreport_aliasname;
  403. subreportdata.AppName = instance.appName;
  404. if (subreportdata.PrimaryKeyColumn.toLowerCase() == "select column")
  405. return MessageHelper.Instance().showError("Please select primary key column", "sub_report_error_message");
  406. else if (!subreportdata.InstalledAppId)
  407. return MessageHelper.Instance().showError("Please select installed app", "sub_report_error_message");
  408. let subReportArray = instance.getSubReportContainerArray();
  409. if (subReportArray.length != 0) {
  410. var Index;
  411. if (instance.linkreport_aliasname)
  412. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  413. else
  414. Index = subReportArray.findIndex(s => s.RowClick == true);
  415. if (Index > -1 && subreportdata.AppName != 'Select') {
  416. subReportArray[Index] = subreportdata;
  417. }
  418. else if (subreportdata.AppName != 'Select') {
  419. subReportArray.push(subreportdata);
  420. }
  421. }
  422. else {
  423. subReportArray.push(subreportdata);
  424. }
  425. }
  426. removefilters(reportid, mainreportcolumn, subreportcolumn, id) {
  427. var instance = this;
  428. if (instance.linkreport_aliasname) {
  429. if (instance._reportBuilder.subreportdata.length != 0) {
  430. var index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  431. if (index > -1) {
  432. instance._reportBuilder.subreportdata.splice(index, 1);
  433. }
  434. }
  435. }
  436. else {
  437. if (instance.filters.length == 1) {
  438. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  439. return (o.ChildReportId === reportid);
  440. });
  441. if (index !== -1)
  442. instance._reportBuilder.subreportdata.splice(index, 1);
  443. }
  444. }
  445. var fillIndex = instance.filters.findIndex(function (f) { return (f.ParameterName == mainreportcolumn) && (f.ParameterValue === subreportcolumn); });
  446. if (fillIndex > -1)
  447. instance.filters.splice(fillIndex, 1);
  448. if (!instance.filters.length)
  449. $(event.target).closest(".report-body").find(".select_reports.custom-select").empty();
  450. $("#" + id + "").empty();
  451. }
  452. ;
  453. load_old(id, containerid, callback) {
  454. var instance = this;
  455. $('#cmbmainrptCols_1').empty();
  456. var data = [];
  457. var subreportid = 0;
  458. instance._reportManager.getReports().then(function (response) {
  459. var Data = response;
  460. data.push({ id: 0, text: "Select" });
  461. data.push({ id: 0, text: "Select" });
  462. for (let i = 0; i < Data.length; i++) {
  463. data.push({ id: Data[i].ReportId, text: Data[i].ReportName });
  464. }
  465. $('.select_reports').select2({
  466. placeholder: 'Select',
  467. data: data,
  468. }).on('select2:select', function (e) {
  469. var reportid = Number($(".select_reports").val());
  470. let sub_blk = this.closest(".sub-report-block");
  471. if (sub_blk)
  472. $(sub_blk).data("subreportid", reportid.toString());
  473. $("#cmbsbrptCols_1").find('option').not(':first').remove();
  474. instance._reportManager.getColumns(reportid).then(function (response) {
  475. for (let i = 0; i < response.result.length; i++) {
  476. var columnname = response.result[i].DisplayText;
  477. var columnvalue = response.result[i].ReportColumnId;
  478. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbsbrptCols_1');
  479. }
  480. });
  481. });
  482. if (instance._reportBuilder.subreporttabledata != undefined && instance._reportBuilder.subreporttabledata != null && instance._reportBuilder.subreporttabledata != "") {
  483. if (instance._reportBuilder.subreporttabledata.length > 0) {
  484. var subreports_array = [];
  485. var subarray = [];
  486. var element = [];
  487. var currentsubreport = [];
  488. instance._reportBuilder.subreportdata = [];
  489. instance._reportBuilder.subreport_count = 1;
  490. for (let m = 0; m < instance._reportBuilder.subreporttabledata.length; m++) {
  491. instance._reportManager.getColumns(instance._reportBuilder.subreporttabledata[m].ChildReportId).then(function (response) {
  492. currentsubreport.push(instance._reportBuilder.subreporttabledata[m]);
  493. element.push(response.result[0].ReportId);
  494. subarray.push(response.result);
  495. if (element.length == instance._reportBuilder.subreporttabledata.length) {
  496. let k = 1;
  497. for (let i = 0; i < currentsubreport.length; i++) {
  498. if (i != 0) {
  499. instance.subReportId = currentsubreport[i].SubReportId;
  500. $("#subrpt_plus").trigger("click");
  501. k = i + 1;
  502. if (data.length == 0) {
  503. }
  504. $("#cmdsub_" + k + "").select2({
  505. placeholder: 'Select',
  506. data: data,
  507. });
  508. let lastSubEle = $("#linkreport_modal").find(".sub-report-block").last();
  509. lastSubEle.data("subreportid", currentsubreport[i].ChildReportId);
  510. lastSubEle.data("subreportcolumnid", currentsubreport[i].SubReportColumnId);
  511. }
  512. $("#cmdsub_" + k + "").val(currentsubreport[i].ChildReportId).trigger('change');
  513. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + k + "");
  514. var whole_tableData = instance._reportBuilder.selectedColumns;
  515. for (let j = 0; j < whole_tableData.length; j++) {
  516. var columnname = whole_tableData[j].DisplayText;
  517. var columnvalue = whole_tableData[j].ColumnId;
  518. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + k + "");
  519. }
  520. let subcolumns = subarray[i].filter(function (o) { return o.ReportId === currentsubreport[i].ChildReportId; });
  521. $("#cmbsbrptCols_" + k + "").find('option').not(':first').remove();
  522. for (let l = 0; l < subcolumns.length; l++) {
  523. var columnname = subcolumns[l].DisplayText;
  524. var columnvalue = subcolumns[l].ReportColumnId;
  525. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + k + "");
  526. }
  527. $("#btnAdd_" + instance._reportBuilder.subreport_count + "").unbind().click(function () {
  528. var id = $(this).attr('id').match(/\d+/g).map(Number);
  529. instance.addfilter(id[0], 0);
  530. $("#btnDeleteCouponItem_" + id[0] + "").click(function () {
  531. instance.removefilters(Number($("#reporthid_" + id[0] + "").val()), Number($("#mainreportcolumnhid_" + id[0] + "").val()), Number($("#subreportcolumnhid_" + id[0] + "").val()), "ul2list_" + id[0] + "");
  532. });
  533. });
  534. $("#cmbmainrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterValue).replace('@', '').trim() + "')").prop('selected', true);
  535. $("#cmbsbrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterName).trim() + "')").prop('selected', true);
  536. if (k == 1) {
  537. subreportid = currentsubreport[i].SubReportId;
  538. $("#btnConfigAddFilter").click();
  539. }
  540. else {
  541. subreportid = currentsubreport[i].SubReportId;
  542. $("#btnAdd_" + k + "").click();
  543. }
  544. instance.subReportId = 0;
  545. }
  546. }
  547. });
  548. }
  549. }
  550. }
  551. else {
  552. $('<option>').val(0).text('Select Column').appendTo('#cmbmainrptCols_1');
  553. var whole_tableData = instance._reportBuilder.selectedColumns;
  554. for (let i = 0; i < whole_tableData.length; i++) {
  555. var columnname = whole_tableData[i].ColumnName;
  556. var columnvalue = whole_tableData[i].ColumnId;
  557. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbmainrptCols_1,#detailPrimaryKeyColumns');
  558. }
  559. }
  560. });
  561. $("#btnLinkReportSave").click(function () {
  562. if (instance.isDetail) {
  563. instance.subReportType_Deatil();
  564. }
  565. var table = instance._reportBuilder.table;
  566. var autoNumFormatter = function (cell) {
  567. var row = cell.getRow();
  568. var rowIndex = row.getPosition(false);
  569. return (rowIndex + 1);
  570. };
  571. if (table.element.children[1].lastChild.firstChild.firstElementChild.firstChild.className != "fa fa-eye") {
  572. var hideIcon = function (cell, formatterParams, onRendered) {
  573. return "<i class='fa fa-eye'></i>";
  574. };
  575. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  576. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  577. }
  578. $('#' + containerid).modal('hide');
  579. $('#' + containerid).remove();
  580. var data = instance._reportBuilder.subreportdata;
  581. });
  582. var Confightml = "";
  583. $("#btnConfigAddFilter").click(function (e) {
  584. let text = $("#cmbmainrptCols_1 option:selected").text();
  585. let text1 = $("#cmbsbrptCols_1 option:selected").text();
  586. if (text == "Select Column" || text1 == "Sub report column")
  587. return;
  588. let exists = instance._reportBuilder.subreportdata.find(x => x.ParameterValue == text && x.ParameterName == text1);
  589. if (exists)
  590. return;
  591. let opertaor = $("#slctdoperater_0 option:selected").text();
  592. let id = text.replaceAll(' ', '_') + text1.replaceAll(' ', '_');
  593. 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>`;
  594. $(".ul2list_0").append(Confightml);
  595. if ($(".ul2list_0").children().length == 1)
  596. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("hidden");
  597. var subreportdata = new NestedTableModel();
  598. if (instance._reportBuilder.reportid != 0) {
  599. subreportdata.SubReportId = subreportid;
  600. }
  601. subreportdata.ChildReportId = Number($('.select_reports').val());
  602. subreportdata.Operator = $("#slctdoperater_0 option:selected").text();
  603. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_1 option:selected").val());
  604. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_1 option:selected").val());
  605. subreportdata.ReportColumnName = $("#cmbmainrptCols_1 option:selected").text();
  606. subreportdata.SubReportColumnName = $("#cmbsbrptCols_1 option:selected").text();
  607. subreportdata.ParameterValue = $("#cmbmainrptCols_1 option:selected").text();
  608. subreportdata.ParameterName = $("#cmbsbrptCols_1 option:selected").text();
  609. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  610. subreportdata.ReportId = instance._reportBuilder.reportid;
  611. instance.childReportId = subreportdata.ChildReportId;
  612. instance.parentReportId = subreportdata.ReportId;
  613. instance._reportBuilder.subreportdata.push(subreportdata);
  614. instance._reportBuilder.subreporttabledata = instance._reportBuilder.subreportdata;
  615. $("#cmbmainrptCols_1").val("0");
  616. $("#cmbsbrptCols_1").val("0");
  617. });
  618. $("#btnLinkReportClose").click(function () {
  619. $('#' + containerid).modal('hide');
  620. $('#' + containerid).remove();
  621. });
  622. $("#subrpt_plus").click(function () {
  623. const subreportCnt = $("[id^=btnAdd]").length + 2;
  624. var template = instance._reportBuilderTemplate.del_loadSubReports_Section();
  625. var templateScript = Handlebars.compile(template);
  626. var context = { "subreport_count": subreportCnt };
  627. var html = templateScript(context);
  628. $("#linkreport_modal").append(html);
  629. $("#cmdsub_" + subreportCnt + "").select2({
  630. placeholder: 'Select',
  631. data: data,
  632. });
  633. var main_reportcolumns = instance._reportBuilder.selectedColumns;
  634. $("#cmbmainrptCols_" + subreportCnt + "").empty();
  635. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + subreportCnt + "");
  636. for (let i = 0; i < main_reportcolumns.length; i++) {
  637. var columnname = main_reportcolumns[i].ColumnName;
  638. var columnvalue = main_reportcolumns[i].ColumnId;
  639. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + subreportCnt + "");
  640. }
  641. $("#btnAdd_" + subreportCnt + "").click(function () {
  642. var colid = $(this).closest(".sub-report-block").find("#div_subColumn").children().first().val();
  643. var id = $(this).attr('id').match(/\d+/g).map(Number);
  644. instance.addfilter(id[0], 0);
  645. let sub_blk = this.closest(".sub-report-block");
  646. if (sub_blk && colid)
  647. $(sub_blk).data("subreportcolumnid", colid);
  648. });
  649. $("#cmdsub_" + subreportCnt + "").on('select2:select', function (e) {
  650. var id = $(this).attr('id').match(/\d+/g).map(Number);
  651. var reportid = Number($("#cmdsub_" + id[0] + "").val());
  652. let sub_blk = this.closest(".sub-report-block");
  653. if (sub_blk)
  654. $(sub_blk).data("subreportid", reportid.toString());
  655. $("#cmbsbrptCols_" + id[0] + "").find('option').not(':first').remove();
  656. instance._reportManager.getColumns(reportid).then(function (response) {
  657. for (let i = 0; i < response.result.length; i++) {
  658. var columnname = response.result[i].DisplayText;
  659. var columnvalue = response.result[i].ReportColumnId;
  660. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + id[0] + "");
  661. }
  662. });
  663. });
  664. $("#cmbsbrpt_" + subreportCnt).empty();
  665. $("#cmbsbrpt_" + subreportCnt).append('<option value="0">--Select SubReport--</option>');
  666. });
  667. $("#linkreport_modal").click(this.subReportMdown.bind(this));
  668. const installedAppsUrl = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  669. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfDetailInstalledApps", installedAppsUrl, null);
  670. $('.subreport-radio-btn').change(function () {
  671. if ($(this).val() == 'report') {
  672. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  673. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  674. $('#subrpt_plus').removeClass('d-none');
  675. }
  676. }
  677. else {
  678. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  679. $('#subrpt_plus').addClass('d-none');
  680. }
  681. });
  682. $('.opentype-radio-btn').change(function () {
  683. if ($(this).val() == 'inline') {
  684. $('#subrpt_plus').removeClass('d-none');
  685. }
  686. else {
  687. $('#subrpt_plus').addClass('d-none');
  688. }
  689. });
  690. }
  691. removefilters_old(reportid, mainreportcolumn, subreportcolumn, id) {
  692. var instance = this;
  693. $("#" + id + "").empty();
  694. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  695. return (o.ChildReportId === reportid) && (o.ReportColumnId === mainreportcolumn) && (o.SubReportColumnId === subreportcolumn);
  696. });
  697. if (index !== -1)
  698. instance._reportBuilder.subreportdata.splice(index, 1);
  699. }
  700. ;
  701. addfilter(id, SubReportId) {
  702. var instance = this;
  703. let text = $("#cmbmainrptCols_" + id + " option:selected").text();
  704. let text1 = $("#cmbsbrptCols_" + id + " option:selected").text();
  705. let opertaor = $("#slctdoperater_" + id + " option:selected").text();
  706. 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>`;
  707. $(".ul2list_" + id + "").append(filterhtml);
  708. var subreportdata = new NestedTableModel();
  709. subreportdata.SubReportId = instance.subReportId || SubReportId;
  710. subreportdata.ChildReportId = Number($("#cmdsub_" + id + "").val());
  711. subreportdata.Operator = $("#slctdoperater_" + id + " option:selected").text();
  712. subreportdata.ParameterValue = $("#cmbmainrptCols_" + id + " option:selected").text();
  713. subreportdata.ParameterName = $("#cmbsbrptCols_" + id + " option:selected").text();
  714. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_" + id + " option:selected").val());
  715. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_" + id + " option:selected").val());
  716. subreportdata.ReportColumnName = ($("#cmbmainrptCols_" + id + " option:selected").text());
  717. subreportdata.SubReportColumnName = $("#cmbsbrptCols_" + id + " option:selected").text();
  718. instance._reportBuilder.subreportdata.push(subreportdata);
  719. $("#cmbmainrptCols_" + id).val("0");
  720. $("#cmbsbrptCols_" + id).val("0");
  721. }
  722. ;
  723. linkreport_old() {
  724. var instance = this;
  725. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  726. }
  727. ;
  728. subReportMdown(e) {
  729. let subrp = e.target.closest(".sub-report-block");
  730. let childReportId = $(subrp).data("subreportid");
  731. if (childReportId)
  732. childReportId = Number(childReportId);
  733. if (e.target.classList.contains("remove_subrpt") || e.target.closest(".remove_subrpt")) {
  734. let sRIdx;
  735. if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length == 1) {
  736. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  737. if (sRIdx != -1)
  738. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  739. }
  740. else if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length > 1) {
  741. let childReportColumnId = Number($(subrp).data("subreportcolumnid"));
  742. if (childReportColumnId) {
  743. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId && x.SubReportColumnId == childReportColumnId);
  744. if (sRIdx != -1)
  745. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  746. }
  747. }
  748. subrp.remove();
  749. }
  750. else if (e.target.classList.contains("remove_subrpt_columns") || e.target.closest(".remove_subrpt_columns")) {
  751. let sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  752. if (sRIdx != -1)
  753. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  754. $(e.target).closest(".filteritems-addedrow").remove();
  755. }
  756. }
  757. removeSubreport() {
  758. let idx = -1;
  759. let subReportArray = this.getSubReportContainerArray();
  760. if (!this.isDetail) {
  761. if (this.subReportId)
  762. idx = subReportArray.findIndex(x => x.SubReportId == this.subReportId);
  763. else
  764. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  765. if (idx > -1) {
  766. this.linkreport_aliasname = '';
  767. this.filters = [];
  768. this.childReportName = '';
  769. subReportArray.splice(idx, 1);
  770. }
  771. $("#subreports-filters-list").empty();
  772. $("#cmdsub_1").val("0").empty();
  773. }
  774. else {
  775. if (this.installedAppId)
  776. idx = subReportArray.findIndex(x => x.AliasName == this.subrpt_AliasName && x.InstalledAppId == this.installedAppId);
  777. else
  778. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  779. if (idx > -1) {
  780. this.installedAppId = 0;
  781. subReportArray.splice(idx, 1);
  782. }
  783. $("#detailPrimaryKeyColumns").val("0").trigger("change");
  784. $("#detailInstalledApps").val("0").trigger("change");
  785. }
  786. }
  787. getSubReportContainerArray() {
  788. if (this.isReportDuplicate) {
  789. return Analytics.Components.DuplicateReport.Instance().subReports;
  790. }
  791. else {
  792. return this._reportBuilder.subreportdata;
  793. }
  794. }
  795. static Instance() {
  796. if (this.instance === undefined) {
  797. this.instance = new SubReport();
  798. }
  799. return this.instance;
  800. }
  801. }
  802. Reports.SubReport = SubReport;
  803. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  804. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  805. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  806. })(Unibase || (Unibase = {}));