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.

index.reportbuilder.js 127KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Analytics;
  6. (function (Analytics) {
  7. let Reports;
  8. (function (Reports) {
  9. class ReportFilter extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.isUnLimited = true;
  13. this.isreportViewer = false;
  14. this.dynamicFilters = [];
  15. this.datalistColumns = [];
  16. this.reportManager = Analytics.Managers.ReportManager.Instance();
  17. this.reportBuilder = Unibase.Platform.Analytics.Reports.ReportBuilder.Instance();
  18. }
  19. cssFiles() {
  20. return [];
  21. }
  22. jsFiles() {
  23. var jsFiles = ['platform/analytics/managers/reportmanager.js', 'platform/datasources/managers/datalistmanager.js'];
  24. return jsFiles;
  25. }
  26. html(id, containerid) {
  27. var html = `<section id="is-filterable-section" class="modal-content">
  28. <div class="modal-header pa-10">
  29. <strong class="modal-title biz-highlight-bg-color">CommonFilter</strong>
  30. <a class="btn btn-sm btn-theme ml-auto" id="btnClear">Clear</a>
  31. <div id="report_viewer_filter" class="form-error-message"></div>
  32. </div>
  33. <div data-simplebar class="simple-scroll-bar modal-body" id="CardViewer_modal">
  34. <div class="sub-report-block card">
  35. <header class="sub-report-head">
  36. <h6>
  37. Filter
  38. </h6>
  39. <span><i class="las la-filter filter"></i></span>
  40. </header>
  41. <div class="report-body">
  42. <div class="form-row mb-10">
  43. <div class="form-group col-sm 12">
  44. <label> Display Name </label>
  45. <input type="text" class="form-control" id="txt_DisplayName" placeholder="Display Name">
  46. </div>
  47. </div>
  48. <div class="form-row mb-10">
  49. <div class="col">
  50. <div id="div_datalistColumn">
  51. <label> DataList Name </label>
  52. <select id="datalistauto_AutoComplete" class="form-control text-control required">
  53. <option value="0" selected="">Select Datalist</option>
  54. </select>
  55. </div>
  56. </div>
  57. </div>
  58. <div class="form-row mb-10">
  59. <div class="col-sm-6">
  60. <div id="div_datalistvaluecolumn">
  61. <label> Value Column </label>
  62. <select id="datalistvalue_AutoComplete" class="form-control text-control required">
  63. <option value="0" selected="">Select value Column</option>
  64. </select>
  65. </div>
  66. </div>
  67. <div class="col-sm-6">
  68. <div id="div_datalisttextcolumn">
  69. <label> Text Column </label>
  70. <select id="datalisttext_AutoComplete" class="form-control text-control required">
  71. <option value="0" selected="">Select Text Column</option>
  72. </select>
  73. </div>
  74. </div>
  75. </div>
  76. <div class="form-row mb-10 mappedcolumnsdiv">
  77. <div class="form-group col-sm 12">
  78. <label>Mapped Columns</label>
  79. <select class="form-control custom-select" id="mappedcolumnsdropdown">
  80. <option value="0" selected="">Select Column</option>
  81. </select>
  82. </div>
  83. </div>
  84. <div class="form-row mb-10">
  85. <div class="form-group col-sm 12">
  86. <label>Control Type</label>
  87. <select class="form-control custom-select" id="ControlTypeDropDown">
  88. <option value="0" selected="">Select Control Type</option>
  89. <option value="1">AutoComplete </option>
  90. <option value="2"> TextBox </option>
  91. <option value="3"> Select2 </option>
  92. </select>
  93. </div>
  94. </div>
  95. <div class="form-row mb-10">
  96. <div class="form-group col-sm 12">
  97. <label>FontCase Type</label>
  98. <select class="form-control custom-select" id="FontCaseTypeDropDown">
  99. <option value="0" selected="">Select FontCase Type</option>
  100. <option value="1">No Change</option>
  101. <option value="2">Upper Case</option>
  102. <option value="3">Lower Case</option>
  103. </select>
  104. </div>
  105. </div>
  106. <div class="form-row mb-10">
  107. <div class="form-group col-6 col-sm-6">
  108. <label for="unlimited_checkbox">IsUnLimit</label>
  109. <div><input type="checkbox" class="chkIsUnLimited mr-10" id="isunlimited_checkbox">IsUnLimit</div>
  110. </div>
  111. <div class="form-group col-6 col-sm-6">
  112. <label for="isrequired_checkbox">Is Required</label>
  113. <div><input type="checkbox" class="chkisrequired mr-10" id="isrequired_checkbox">Is Required</div>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <div class="modal-footer pa-10">
  120. <a class="btn btn-sm btn-light mr-auto" id="btnClose">Close</a>
  121. <a class="btn btn-sm btn-primary" id="btnSave">Save</a>
  122. </div>
  123. </section>`;
  124. return html;
  125. }
  126. load(index, containerid, callback) {
  127. var instance = this;
  128. $("#isunlimited_checkbox").click(function () {
  129. if ($('#isunlimited_checkbox').prop('checked') == false) {
  130. instance.isUnLimited = false;
  131. $('#isunlimited_checkbox').prop('checked', false);
  132. }
  133. else {
  134. instance.isUnLimited = true;
  135. $('#isunlimited_checkbox').prop('checked', true);
  136. }
  137. });
  138. var reportcolumn = Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportBuilder.selectedColumns[index];
  139. var filtercols = [];
  140. if (!instance.isreportViewer) {
  141. filtercols = Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().dynamicFilters.filter(function (o) { return o.IsFilterableColumn === reportcolumn.AliasName; });
  142. }
  143. else {
  144. filtercols = instance.dynamicFilters.filter(function (o) { return o.IsFilterableColumn === instance.displayText; });
  145. }
  146. if (filtercols.length > 0) {
  147. if (filtercols[0].IsUnLimited) {
  148. $('#isunlimited_checkbox').prop('checked', true);
  149. }
  150. if (filtercols[0].IsRequired) {
  151. $('#isrequired_checkbox').prop('checked', true);
  152. }
  153. $("#ControlTypeDropDown").val(filtercols[0].ControlTypeId);
  154. $("#FontCaseTypeDropDown").val(filtercols[0].FontCaseTypeId);
  155. $("#datalistauto_AutoComplete").append("<option value=" + filtercols[0].DataListId + " selected>" + filtercols[0].DataListName + "</option>");
  156. $('#datalistauto_AutoComplete').unbind().trigger('change');
  157. Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportManager.getDataListColumns(Number($("#datalistauto_AutoComplete").val()), null, null).then((response) => {
  158. if (response.status == Unibase.Data.Status.Success) {
  159. if (response.result != "") {
  160. this.datalistColumns = JSON.parse(response.result);
  161. var data = [];
  162. for (let i = 0; i < this.datalistColumns.length; i++) {
  163. data.push({ id: this.datalistColumns[i].ColumnId, text: this.datalistColumns[i].AliasName });
  164. }
  165. var valcol;
  166. var txtcol;
  167. if (data.filter(function (o) { return o.text === filtercols[0].ValueColumn; }).length > 0) {
  168. valcol = data.filter(function (o) { return o.text === filtercols[0].ValueColumn; })[0].id;
  169. }
  170. if (data.filter(function (o) { return o.text === filtercols[0].TextColumn; }).length > 0) {
  171. txtcol = data.filter(function (o) { return o.text === filtercols[0].TextColumn; })[0].id;
  172. }
  173. $("#datalistvalue_AutoComplete").select2({
  174. placeholder: 'Select DataList',
  175. data: data,
  176. });
  177. $("#datalisttext_AutoComplete").select2({
  178. placeholder: 'Select DataList',
  179. data: data,
  180. });
  181. $("#datalistvalue_AutoComplete").val(valcol).trigger("change");
  182. $("#datalisttext_AutoComplete").val(txtcol).trigger("change");
  183. }
  184. else {
  185. return MessageHelper.Instance().showError("No DatalistColumns", "divDynamicFilter_ErrorMessage");
  186. }
  187. }
  188. else {
  189. return MessageHelper.Instance().showError(response.message, "divDynamicFilter_ErrorMessage");
  190. }
  191. });
  192. $("#txt_DisplayName").val(filtercols[0].DisplayName);
  193. }
  194. else {
  195. (reportcolumn) && $("#txt_DisplayName").val(reportcolumn.DisplayText);
  196. }
  197. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/datalists/getall_autocomplete';
  198. AutoCompleteHelper.getHelper().Create("#datalistauto_AutoComplete", "#hfcommmonfilterAutoComplete_DataList", url, function (response) {
  199. var data = response;
  200. $("#btnClear").click(function () {
  201. let dynamicFilters = [];
  202. if (!Unibase.Platform.Analytics.Reports.ReportFilter.Instance().isreportViewer) {
  203. dynamicFilters = Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportBuilder.dynamicFilters;
  204. var index = Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportBuilder.dynamicFilters.findIndex(function (o) {
  205. return (o.IsFilterableColumn === reportcolumn.DisplayText);
  206. });
  207. if (index !== -1)
  208. Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportBuilder.dynamicFilters.splice(index, 1);
  209. reportcolumn.IsFilterable = false;
  210. }
  211. else {
  212. dynamicFilters = Unibase.Platform.Filters.Components.Editfilters.Instance().dynamicFilters;
  213. }
  214. var filter = dynamicFilters.find(x => x.TextColumn == $("#datalisttext_AutoComplete").select2('data')[0].text.trim());
  215. Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportManager.deleteDynamicFilter(filter.DynamicFilterId).then(function (response) { });
  216. $("#datalistauto_AutoComplete").text("select");
  217. $("#datalisttext_AutoComplete").text("select");
  218. $("#datalistvalue_AutoComplete").text("select");
  219. });
  220. $("#btnSave").unbind().click(function () {
  221. if (instance.isreportViewer)
  222. Unibase.Platform.Filters.Components.Editfilters.Instance().saveDynamicFilter(containerid);
  223. else
  224. instance.save(reportcolumn, containerid);
  225. });
  226. $("#btnClose").unbind().click(function () {
  227. $('#' + containerid).modal('hide');
  228. $('#' + containerid).remove();
  229. instance.isreportViewer = false;
  230. });
  231. $("#datalistauto_AutoComplete").unbind().change(function () {
  232. Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportManager.getDataListColumns(Number($("#datalistauto_AutoComplete").val()), null, null).then(function (response) {
  233. if (response.status == Unibase.Data.Status.Success) {
  234. var res;
  235. if (response.result != "") {
  236. res = JSON.parse(response.result);
  237. var data = [];
  238. for (let i = 0; i < res.length; i++) {
  239. data.push({ id: res[i].ColumnId, text: res[i].AliasName });
  240. }
  241. $("#datalistvalue_AutoComplete").html("");
  242. $("#datalisttext_AutoComplete").html("");
  243. $("#datalistvalue_AutoComplete").select2({
  244. placeholder: 'Select DataList',
  245. data: data,
  246. });
  247. $("#datalisttext_AutoComplete").select2({
  248. placeholder: 'Select DataList',
  249. data: data,
  250. });
  251. }
  252. else {
  253. return MessageHelper.Instance().showError("No DataListColumns", "divDynamicFilter_ErrorMessage");
  254. }
  255. }
  256. else {
  257. return MessageHelper.Instance().showError(response.message, "divDynamicFilter_ErrorMessage");
  258. }
  259. });
  260. });
  261. });
  262. let dlId = Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().DataListId;
  263. Unibase.Platform.DataSources.Managers.DataListManager.Instance().getDataList(dlId).then((res) => {
  264. if (res.status == Unibase.Data.Status.Success) {
  265. if (res.result.Parameters) {
  266. let params = res.result.Parameters.replaceAll("@", "");
  267. params = params.split("|");
  268. let paramOptions = "";
  269. for (var i = 0; i < params.length; i++) {
  270. let currentFilter = filtercols.find(x => x.MappedColumn == params[i]);
  271. if (currentFilter)
  272. paramOptions += `<option value="${params[i]}" selected > ${params[i]} </option>`;
  273. else
  274. paramOptions += `<option value="${params[i]}"> ${params[i]} </option>`;
  275. }
  276. $("#mappedcolumnsdropdown").append(paramOptions);
  277. }
  278. else {
  279. $(".mappedcolumnsdiv").addClass("d-none");
  280. }
  281. }
  282. });
  283. }
  284. save(reportcolumn, containerid) {
  285. let currentDatalistCol;
  286. let IsFilterable = reportcolumn.IsFilterable;
  287. if (IsFilterable == false)
  288. reportcolumn.IsFilterable = !IsFilterable;
  289. var dynamicFilters = Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportBuilder.dynamicFilters;
  290. let dynamicfilterid = 0;
  291. var dynamicfilIndex = dynamicFilters.find(d => d.IsFilterableColumn == reportcolumn.DisplayText);
  292. var dynFill = dynamicFilters.filter(function (o) { return o.IsFilterableColumn === reportcolumn.DisplayText; });
  293. if (dynFill.length > 0) {
  294. dynamicfilterid = dynFill[0].DynamicFilterId;
  295. var index = dynamicFilters.findIndex(function (o) {
  296. return (o.IsFilterableColumn === reportcolumn.DisplayText);
  297. });
  298. if (index !== -1)
  299. dynamicFilters.splice(index, 1);
  300. }
  301. var model = new DynamicFilterModel();
  302. model.IsFilterableColumn = reportcolumn.AliasName;
  303. model.DynamicFilterId = dynamicfilterid;
  304. model.DataListId = Number($("#datalistauto_AutoComplete").val());
  305. model.DataListName = $("#datalistauto_AutoComplete").select2('data')[0].text;
  306. model.ReportId = 0;
  307. model.MappedColumn = $("#mappedcolumnsdropdown option:selected").val() === "0" ? "" : $("#mappedcolumnsdropdown option:selected").val().toString();
  308. model.TextColumn = $("#datalisttext_AutoComplete").select2('data')[0].text.trim();
  309. model.ValueIdColumn = Number($("#datalistvalue_AutoComplete").val());
  310. model.ValueColumn = $("#datalistvalue_AutoComplete").select2('data')[0].text.trim();
  311. model.TextIdColumn = Number($("#datalisttext_AutoComplete").val());
  312. model.Index = (dynamicfilIndex) ? dynamicfilIndex.Index : dynamicFilters.length;
  313. model.ControlTypeId = Number($("#ControlTypeDropDown").val());
  314. model.FontCaseTypeId = Number($("#FontCaseTypeDropDown").val());
  315. model.DataType = reportcolumn.DataType;
  316. model.DisplayName = $("#txt_DisplayName").val().toString();
  317. model.IsDefault = $(".dynamicfilter-defaultdate_" + reportcolumn.ColumnName).is(":checked");
  318. model.IsUnLimited = $("#isunlimited_checkbox").prop("checked");
  319. model.IsRequired = $("#isrequired_checkbox").prop("checked");
  320. currentDatalistCol = this.datalistColumns.find(x => x.ColumnId == model.ValueIdColumn);
  321. if (currentDatalistCol && reportcolumn.DataType == Reports.Enums.DataType.string &&
  322. currentDatalistCol.DataTypeId != Reports.Enums.DataType.string && currentDatalistCol.DataTypeId != Reports.Enums.DataType.text)
  323. return MessageHelper.Instance().showError("Selected value column data type should be string", "report_viewer_filter");
  324. else if (currentDatalistCol && (reportcolumn.DataType == Reports.Enums.DataType.int32 || reportcolumn.DataType == Reports.Enums.DataType.int64 ||
  325. reportcolumn.DataType == Reports.Enums.DataType.decimal) && currentDatalistCol.DataTypeId != Reports.Enums.DataType.int32 &&
  326. currentDatalistCol.DataTypeId != Reports.Enums.DataType.int64 && currentDatalistCol.DataTypeId != Reports.Enums.DataType.decimal)
  327. return MessageHelper.Instance().showError("Selected value column data type should be integer as dynamic filter data type is integer", "report_viewer_filter");
  328. Unibase.Platform.Analytics.Reports.ReportFilter.Instance().sortDynamicFilter(model);
  329. Unibase.Platform.Analytics.Reports.ReportFilter.Instance().reportBuilder.dynamicFilters.push(model);
  330. $('#' + containerid).modal('hide');
  331. $('#' + containerid).remove();
  332. }
  333. sortDynamicFilter(model) {
  334. var instance = this;
  335. let filetersList = $('#dynamic-list-group-wrapper');
  336. if (!filetersList)
  337. return;
  338. filetersList.sortable({
  339. connectWith: "#dynamic-list-group-wrapper",
  340. cursor: 'move',
  341. update: function (event, ui) {
  342. $.each($('#dynamic-list-group-wrapper .datagroup'), function (index, item) {
  343. let itemName = $(item).attr('data-isfilterablecolumn');
  344. let dynamicFilters = instance.dynamicFilters;
  345. if (dynamicFilters.length != 0) {
  346. for (let x = 0; x < dynamicFilters.length; x++) {
  347. if (dynamicFilters[x].IsFilterableColumn == itemName) {
  348. dynamicFilters[x].Index = index;
  349. break;
  350. }
  351. }
  352. }
  353. if (instance.isreportViewer)
  354. $(item).find('.filter-index').text(index + 1);
  355. });
  356. if (!instance.isreportViewer)
  357. instance.reportBuilder.load_data(instance.reportBuilder.table);
  358. }
  359. });
  360. }
  361. dynamicFilterIsDefaultDateColumn(columnName) {
  362. var dIndex = this.getIndexByDisplayText_dynamicFilterColumns(columnName);
  363. if (dIndex != -1) {
  364. let filtermodelarray = new Array();
  365. let currentFilter = this.reportBuilder.dynamicFilters[dIndex];
  366. if (currentFilter.IsPartition) {
  367. $("#dynamicfilter-defaultdate_" + columnName).prop("checked", false);
  368. return MessageHelper.Instance().showError("Dynamic filter cannot be both partition and default, uncheck partition before making default", "div_ReportBuilderErrorMessage");
  369. }
  370. if ($("#dynamicfilter-defaultdate_" + columnName).hasClass("imchecked")) {
  371. $("input[type=radio][name=defaultdate]").prop('checked', false);
  372. $("#dynamicfilter-defaultdate_" + columnName).removeClass("imchecked");
  373. }
  374. var isdefault = $("#dynamicfilter-defaultdate_" + columnName).is(":checked");
  375. if (isdefault)
  376. $("#dynamicfilter-defaultdate_" + columnName).addClass("imchecked");
  377. currentFilter.IsDefault = isdefault;
  378. this.reportBuilder.dynamicFilters[dIndex] = currentFilter;
  379. Unibase.Platform.Analytics.Managers.ReportManager.Instance().saveDynamicFilter(this.reportBuilder.reportid, this.reportBuilder.dynamicFilters).then((res) => {
  380. if (res.status == Unibase.Data.Status.Success)
  381. MessageHelper.Instance().showSuccess("Filter Saved Sucessfully", "divEditFiltersErrMsg");
  382. else
  383. MessageHelper.Instance().showError(res.message, "div_ReportBuilderErrorMessage");
  384. });
  385. }
  386. }
  387. dynamicFilterIsPartition(columnName) {
  388. var dIndex = this.getIndexByDisplayText_dynamicFilterColumns(columnName);
  389. if (dIndex != -1) {
  390. let filtermodelarray = new Array();
  391. let currentFilter = this.reportBuilder.dynamicFilters[dIndex];
  392. if (currentFilter.IsDefault) {
  393. $("#chk_ispartition_" + columnName).prop("checked", false);
  394. return MessageHelper.Instance().showError("Dynamic filter cannot be both partition and default, uncheck default before making partition", "div_ReportBuilderErrorMessage");
  395. }
  396. var ispartition = $("#chk_ispartition_" + columnName).prop("checked");
  397. currentFilter.IsPartition = ispartition;
  398. this.reportBuilder.dynamicFilters[dIndex] = currentFilter;
  399. Unibase.Platform.Analytics.Managers.ReportManager.Instance().saveDynamicFilter(this.reportBuilder.reportid, this.reportBuilder.dynamicFilters).then((res) => {
  400. if (res.status == Unibase.Data.Status.Success)
  401. MessageHelper.Instance().showSuccess("Filter Saved Sucessfully", "divEditFiltersErrMsg");
  402. else
  403. MessageHelper.Instance().showError(res.message, "div_ReportBuilderErrorMessage");
  404. });
  405. }
  406. }
  407. removeDynamicFilterSelectedColumn_table(DisplayText) {
  408. var instance = this;
  409. bootbox.confirm("Do you want to Delete the Filter?", function (result) {
  410. if (result) {
  411. var index = instance.dynamicFilters.findIndex(function (o) {
  412. if (o.IsFilterableColumn === DisplayText) {
  413. instance.reportManager.deleteDynamicFilter(o.DynamicFilterId).then(function (response) {
  414. if (response.status == Unibase.Data.Status.Success) {
  415. MessageHelper.Instance().showSuccess(response.message, '');
  416. }
  417. else if (response.status == Unibase.Data.Status.Error) {
  418. MessageHelper.Instance().showError(response.message, 'divEditFiltersErrMsg');
  419. }
  420. });
  421. }
  422. return o.IsFilterableColumn === DisplayText;
  423. });
  424. if (index !== -1)
  425. instance.dynamicFilters.splice(index, 1);
  426. $(`[data-isfilterablecolumn="${DisplayText}"]`).remove();
  427. if (instance.dynamicFilters.length != 0) {
  428. for (var i = 0; i < instance.dynamicFilters.length; i++) {
  429. let filterIndex = instance.getIndexByDisplayText_dynamicFilterColumns(instance.dynamicFilters[i].IsFilterableColumn);
  430. instance.dynamicFilters[filterIndex].Index = i;
  431. if (instance.isreportViewer)
  432. $("#dynamic-list-group-wrapper .filter-item").eq(i).find('.filter-index').text(i + 1);
  433. }
  434. }
  435. else {
  436. if (instance.isreportViewer) {
  437. $('#dynamicFiltersCard').addClass('d-none');
  438. if (!$('#staticFiltersCard').is(':visible')) {
  439. $('#noFiltersErrMsg').removeClass('d-none');
  440. }
  441. }
  442. }
  443. }
  444. });
  445. }
  446. getIndexByDisplayText_dynamicFilterColumns(isFilterableColumn) {
  447. return this.reportBuilder.dynamicFilters.findIndex(x => x.IsFilterableColumn == isFilterableColumn);
  448. }
  449. static Instance() {
  450. if (this.instance === undefined) {
  451. this.instance = new ReportFilter();
  452. }
  453. return this.instance;
  454. }
  455. }
  456. Reports.ReportFilter = ReportFilter;
  457. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  458. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  459. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  460. })(Unibase || (Unibase = {}));
  461. var Unibase;
  462. (function (Unibase) {
  463. let Platform;
  464. (function (Platform) {
  465. let Analytics;
  466. (function (Analytics) {
  467. let Reports;
  468. (function (Reports) {
  469. let Requests;
  470. (function (Requests) {
  471. class ReportGroup {
  472. }
  473. Requests.ReportGroup = ReportGroup;
  474. })(Requests = Reports.Requests || (Reports.Requests = {}));
  475. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  476. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  477. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  478. })(Unibase || (Unibase = {}));
  479. var Unibase;
  480. (function (Unibase) {
  481. let Platform;
  482. (function (Platform) {
  483. let Analytics;
  484. (function (Analytics) {
  485. let Reports;
  486. (function (Reports) {
  487. class ReportGroup extends Platform.Core.BaseComponent {
  488. constructor() {
  489. super();
  490. this.parentGroupId = 0;
  491. this.groupId = 0;
  492. this.groupName = '';
  493. this._reportManager = Analytics.Managers.ReportManager.Instance();
  494. }
  495. cssFiles() {
  496. return [];
  497. }
  498. jsFiles() {
  499. var jsFiles = ['platform/analytics/requests/reportgroup.js', 'platform/core/infos/status.js'];
  500. return jsFiles;
  501. }
  502. html(id, containerid) {
  503. let html = `<form id="" method="post" class="" data-formuniquekey="" data-validate="parsley"><header class="b-b bg-white modal-header"><strong class="text-dark Title" id="div_FormName">Create Report Group</strong></header><div class="bg-light control-sorting modal-body bg-white" style="overflow-y:auto; height:475px;"><div id="" class="clear bizgaze_FormErrorMessages"></div><div id="divReportGroup_ErrorMessage"></div><div class="section_ReportGroup card"><div class="card-body">
  504. <div class="row">
  505. <div class="col-sm-6">
  506. <div>
  507. <label for="lbl" id="lbl_GroupName">Report Group Name
  508. <span class="text-danger" id="spnIsRequired_reportgroup"> *</span>
  509. </label>
  510. <input type="text" id="txt_GroupName" class="type-control form-control type-control value-control required"
  511. data-regularexp="" data-validatemsg="" placeholder="Enter Report Group Name *">
  512. </div>
  513. <label for="Validation" id="lblValidation_GroupName"></label>
  514. </div>
  515. <div class="col-sm-6">
  516. <label for="lbl" id="lbl_displayname">Display Name</label>
  517. <input type="text" id="txt_displayname" class="type-control form-control type-control value-control required"
  518. data-regularexp="" data-validatemsg="" placeholder="Enter Display Name ">
  519. <label for="Validation" id="lblValidation_displayname"></label>
  520. </div>
  521. <div class="IsInternalGroupDiv col-sm-6 flex-between-center">
  522. <span>IsInternalGroup</span>
  523. <label class="switch mb-0" for="reportGroup_IsInternalGroup">
  524. <input type="checkbox" id="reportGroup_IsInternalGroup"><span></span>
  525. <input type="hidden" id="hf_IsInternalGroup"> <input type="hidden" class="value-control"
  526. id="hf_IsInternalGroupid">
  527. </label>
  528. </div>
  529. <div id="" class="form-group col-sm-6">
  530. <label for="lbl" id="lbl_reportgroupindex">Report Group Index
  531. <span class="text-danger " id="spnIsRequired_reportgroupindex"></span>
  532. </label>
  533. <input type="text" id="txt_reportgroupindex"
  534. class="type-control form-control type-control value-control required"
  535. data-regularexp="" data-validatemsg="" placeholder="Enter Report Group Index *">
  536. </div>
  537. <div class="form-group col-sm-6">
  538. <label for="parentgroupid">
  539. Parent Group
  540. </label>
  541. <select class="form-control" id="parentgroupid" >
  542. </select>
  543. </div>
  544. <label for="Validation" id="lblValidation_GroupName"></label>
  545. </div></div></div></div></div><footer class="bg-white modal-footer" id="formFooter"><a href="javascript:;" id="btn_CloseForm" class="btn btn-light btn-sm mr-auto" onclick=""> Close</a><a href="javascript:;" id="btn_SaveReportGrp" class="btn btn-primary btn-sm" > Save</a></footer></form>`;
  546. return html;
  547. }
  548. load(id, containerid, callback) {
  549. var instance = this;
  550. instance.parentGroupId = 0;
  551. $("#" + containerid).find(".modal-body").css('height', $(window).outerHeight() - $("#" + containerid).find(".modal-header").outerHeight() - $("#" + containerid).find(".modal-footer").outerHeight() + 'px');
  552. if (id != 0)
  553. instance.loadReportGroup(id);
  554. $("#btn_SaveReportGrp").click(function () {
  555. let isInternal = $("#reportGroup_IsInternalGroup").prop("checked");
  556. let groupIndex = $("#txt_reportgroupindex").val();
  557. if ($("#txt_GroupName").val() == "")
  558. return MessageHelper.Instance().showError("Please select ReportGroup", 'divReportGroup_ErrorMessage');
  559. let model = new Unibase.Platform.Analytics.Reports.Requests.ReportGroup();
  560. model.GroupName = String($("#txt_GroupName").val());
  561. model.ReportGroupId = id;
  562. model.IsInternalGroup = isInternal;
  563. model.ReportGroupIndex = !parseInt(groupIndex) ? 0 : parseInt(groupIndex);
  564. model.ParentGroupId = instance.parentGroupId;
  565. model.DisplayName = String($("#txt_displayname").val());
  566. instance._reportManager.saveReportGroup(model).then(function (response) {
  567. let res = JSON.parse(response.result);
  568. if (response.status == Unibase.Data.Status.Error) {
  569. MessageHelper.Instance().showError(response.message, 'divReportGroup_ErrorMessage');
  570. }
  571. else {
  572. $("#RptGroup_AutoComplete").append("<option selected value=" + res.ReportGroupId + ">" + res.GroupName + "</option>");
  573. MessageHelper.Instance().showSuccess(response.message, '');
  574. $('#' + containerid).modal('hide');
  575. $('#' + containerid).remove();
  576. }
  577. });
  578. });
  579. $("#btn_CloseForm").click(function () {
  580. $('#' + containerid).modal('hide');
  581. $('#' + containerid).remove();
  582. $("#RptGroup_AutoComplete").remove();
  583. });
  584. instance.loadReportGroups();
  585. $("#parentgroupid").change(function (e) {
  586. instance.parentGroupId = Number(e.currentTarget.value);
  587. var parentGroupName = e.currentTarget.textContent.trim();
  588. if (instance.groupId == instance.parentGroupId) {
  589. e.currentTarget.value = "0";
  590. e.currentTarget.textContent = "";
  591. MessageHelper.Instance().showError(`Cannot select same report group as parent group`, 'divReportGroup_ErrorMessage');
  592. return false;
  593. }
  594. if (instance.groupId && instance.parentGroupId) {
  595. instance._reportManager.checkReportGroupDependency(instance.groupId, instance.parentGroupId).then((response) => {
  596. if (response.status == Unibase.Data.Status.Success && response.result) {
  597. e.currentTarget.value = "0";
  598. e.currentTarget.textContent = "";
  599. MessageHelper.Instance().showError(`Parent group ${parentGroupName} has the current report group ${instance.groupName} as parent group, change the parent report group and try again`, 'divReportGroup_ErrorMessage');
  600. return false;
  601. }
  602. });
  603. }
  604. });
  605. }
  606. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  607. var instance = this;
  608. instance.navigationHelper.popup(0, '', instance, null, Platform.Helpers.Size.Large);
  609. }
  610. loadReportGroupForm(iscreate) {
  611. var Pk_Value = 0;
  612. var instance = this;
  613. if (!iscreate) {
  614. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  615. }
  616. instance.navigationHelper.popup(Pk_Value, '', instance, null, Platform.Helpers.Size.Large);
  617. }
  618. editReportGroup() {
  619. var instance = this;
  620. var reportGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  621. instance.navigationHelper.popup(reportGroupId, "", instance, null, Unibase.Platform.Helpers.Size.Large);
  622. }
  623. loadReportGroup(id) {
  624. var instance = this;
  625. instance._reportManager.getReportGroupById(id).then(function (response) {
  626. if (response.status == Unibase.Data.Status.Success) {
  627. var res = response.result;
  628. instance.groupId = response.result.ReportGroupId;
  629. instance.groupName = response.result.GroupName;
  630. instance.displayName = response.result.DisplayName;
  631. $("#txt_GroupName").val(res.GroupName);
  632. $("#reportGroup_IsInternalGroup").prop("checked", res.IsInternalGroup);
  633. $("#txt_reportgroupindex").val(res.ReportGroupIndex);
  634. $("#txt_displayname").val(res.DisplayName);
  635. if (res.ParentGroupId) {
  636. instance.parentGroupId = res.ParentGroupId;
  637. instance._reportManager.getReportGroupById(res.ParentGroupId).then(res => {
  638. if (res.status == Unibase.Data.Status.Success) {
  639. var option = new Option(res.result.GroupName, res.result.ReportGroupId.toString(), true, true);
  640. $("#parentgroupid").append(option);
  641. }
  642. });
  643. }
  644. }
  645. else {
  646. return MessageHelper.Instance().showError(response.message, "divReportGroup_ErrorMessage");
  647. }
  648. });
  649. }
  650. exportGroupReports(reportgroupid) {
  651. var instance = this;
  652. var ReportGroupId = 0;
  653. if (reportgroupid == 0)
  654. ReportGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  655. else
  656. ReportGroupId = reportgroupid;
  657. if (ReportGroupId != 0) {
  658. instance.navigationHelper.showLoading();
  659. instance._reportManager.getReportGroupById(ReportGroupId).then(function (response) {
  660. let groupname = response.result.GroupName;
  661. instance._reportManager.exportGroupreports(ReportGroupId).then(function (rptgrpresponse) {
  662. var filename = groupname + ".xml";
  663. var xmltext = rptgrpresponse.result;
  664. var pom = document.createElement('a');
  665. var bb = new Blob([xmltext], { type: 'text/plain' });
  666. pom.setAttribute('href', window.URL.createObjectURL(bb));
  667. pom.setAttribute('download', filename);
  668. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  669. pom.draggable = true;
  670. pom.classList.add('dragout');
  671. pom.click();
  672. instance.navigationHelper.hideLoading();
  673. });
  674. });
  675. }
  676. }
  677. deleteReportGroup() {
  678. const reportGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  679. const reportCount = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportcount")).Value);
  680. if (!reportCount) {
  681. bootbox.confirm("Are you sure to delete this group?", (result) => {
  682. if (result) {
  683. this._reportManager.deleteReportGroup(reportGroupId).then((response) => {
  684. if (response.status == Unibase.Data.Status.Success) {
  685. MessageHelper.Instance().showSuccess("Report group has been sucessfully deleted", 'divReportGroup_ErrorMessage');
  686. Unibase.Platform.Apps.Managers.AppManager.Instance().getInstallAppId("Unibase_Platform_Analytics_Reports_App_ReportsGroup").then((response) => {
  687. if (response.status == Unibase.Data.Status.Success)
  688. Unibase.Themes.Compact.Components.Nav.Instance().loadList(response.result.InstalledAppId);
  689. });
  690. }
  691. else
  692. MessageHelper.Instance().showError(response.message, 'divReportGroup_ErrorMessage');
  693. });
  694. }
  695. });
  696. }
  697. else
  698. bootbox.confirm("One or more reports are associated with this group, Please ensure to delete all reports associated with this group before deleting", () => { });
  699. }
  700. loadReportGroups() {
  701. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reportgroups_autocomplete';
  702. AutoCompleteHelper.getHelper().Create("#parentgroupid", "#hfAutoComplete_ReportGroup", url, null);
  703. }
  704. updateStatus() {
  705. var instance = this;
  706. let reportidGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  707. let statusId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("statusid")).Value);
  708. let installedappId = Number(Unibase.Themes.Providers.DetailHelper.installedAppId);
  709. $("#DetailSetting_" + installedappId + "_Active").removeClass("btn-outline-primary");
  710. if (statusId == Unibase.Platform.Core.Enums.RowStatus.Active) {
  711. $("#DetailSetting_" + installedappId + "_Active").addClass("btn-success");
  712. $("#DetailSetting_" + installedappId + "_Active").removeClass("btn-red");
  713. }
  714. else {
  715. $("#DetailSetting_" + installedappId + "_Active").removeClass("btn-success");
  716. $("#DetailSetting_" + installedappId + "_Active").addClass("btn-red");
  717. }
  718. $("#DetailSetting_" + installedappId + "_Active").text((statusId == Unibase.Platform.Core.Enums.RowStatus.Active) ? "Active" : "InActive");
  719. $("#DetailSetting_" + installedappId + "_Active").click(function () {
  720. let id = Unibase.Platform.Core.Enums.RowStatus.Active;
  721. if ($("#DetailSetting_" + installedappId + "_Active").text() == "Active")
  722. id = Unibase.Platform.Core.Enums.RowStatus.InActive;
  723. instance._reportManager.updateReportGroupStatus(reportidGroupId, id).then(function (statusres) {
  724. if (statusres.status == Unibase.Data.Status.Success) {
  725. }
  726. });
  727. });
  728. }
  729. static Instance() {
  730. if (this.instance === undefined) {
  731. this.instance = new ReportGroup();
  732. }
  733. return this.instance;
  734. }
  735. }
  736. Reports.ReportGroup = ReportGroup;
  737. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  738. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  739. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  740. })(Unibase || (Unibase = {}));
  741. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  742. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  743. return new (P || (P = Promise))(function (resolve, reject) {
  744. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  745. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  746. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  747. step((generator = generator.apply(thisArg, _arguments || [])).next());
  748. });
  749. };
  750. var Unibase;
  751. (function (Unibase) {
  752. let Platform;
  753. (function (Platform) {
  754. let Analytics;
  755. (function (Analytics) {
  756. let Reports;
  757. (function (Reports) {
  758. class SubReport extends Platform.Core.BaseComponent {
  759. constructor() {
  760. super();
  761. this.subReportId = 0;
  762. this.isDetail = false;
  763. this.linkreport_aliasname = "";
  764. this.inline = true;
  765. this.appName = "";
  766. this.childReportName = "";
  767. this.filters = [];
  768. this.filterIndex = 0;
  769. this.subReportsExists = false;
  770. this.childReportId = 0;
  771. this.parentReportId = 0;
  772. this.isReportDuplicate = false;
  773. this._reportManager = Analytics.Managers.ReportManager.Instance();
  774. this._reportBuilder = Reports.ReportBuilder.Instance();
  775. this._reportBuilderTemplate = Reports.ReportBuilder_Template.Instance();
  776. }
  777. cssFiles() {
  778. return [];
  779. }
  780. jsFiles() {
  781. var jsFiles = ['platform/analytics/managers/reportmanager.js', 'platform/analytics/enums/subreporttype.js'];
  782. return jsFiles;
  783. }
  784. html(id, containerid) {
  785. let html = this._reportBuilderTemplate.loadLinkToOtherReportForm();
  786. return html;
  787. }
  788. load(id, containerid, callback) {
  789. var instance = this;
  790. instance.filters = [];
  791. instance.filterIndex = 0;
  792. instance.isDetail = false;
  793. instance.inline = true;
  794. instance.subReportEdit();
  795. $("#btnConfigAddFilter").click(function (e) {
  796. instance.filterIndex++;
  797. let isValueElement = $(e.target).closest(".form-row").find("[id^=isvalue_radio]");
  798. let isValue = isValueElement.prop("checked");
  799. let parametername = $("#cmbmainrptCols option:selected").text().trim();
  800. let parametervalue = $("#cmbsbrptCols option:selected").text().trim();
  801. let operator = $("#slctdoperater option:selected").text().trim();
  802. let isValueText = $("#cmbmainrptCols_textbox").val();
  803. if (!isValue && parametername.toLowerCase() == "main report columns")
  804. return MessageHelper.Instance().showError("Please select main report column", "sub_report_error_message");
  805. else if (isValue && !isValueText)
  806. return MessageHelper.Instance().showError("Please enter text in main report value column", "sub_report_error_message");
  807. if (operator.toLowerCase() == '-select-')
  808. return MessageHelper.Instance().showError("Please select operator type", "sub_report_error_message");
  809. if (isValue && isValueText == parametervalue.toLowerCase())
  810. return MessageHelper.Instance().showError("Main report column name and value column and is value text cannot be same", "sub_report_error_message");
  811. if (parametervalue.toLowerCase() == "sub report column")
  812. return MessageHelper.Instance().showError("Please select sub report column", "sub_report_error_message");
  813. if (isValue)
  814. parametername = isValueText;
  815. instance.filters.push({
  816. ParameterName: parametername,
  817. ParameterValue: parametervalue,
  818. Operator: operator,
  819. Isvalue: isValue,
  820. });
  821. instance.addSubReportFilter(parametername, parametervalue, operator, isValue);
  822. if (isValue) {
  823. $("#cmbmainrptCols_textbox").val("");
  824. isValueElement.trigger("click");
  825. }
  826. $('#cmbmainrptCols').val(0).trigger('change');
  827. $('#cmbsbrptCols').val(0).trigger('change');
  828. $('#slctdoperater').val(0).trigger('change');
  829. });
  830. $("#btnLinkReportSave").click(() => {
  831. let subReportArray = instance.getSubReportContainerArray();
  832. if (instance.isDetail) {
  833. instance.saveSubReport_DetailFields();
  834. }
  835. else {
  836. if (instance.saveSubReport_Report(subReportArray))
  837. return;
  838. }
  839. if (instance.linkreport_aliasname == undefined) {
  840. var table = instance._reportBuilder.table;
  841. var autoNumFormatter = function (cell) {
  842. var row = cell.getRow();
  843. var rowIndex = row.getPosition(false);
  844. return (rowIndex + 1);
  845. };
  846. 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") {
  847. var hideIcon = function (cell, formatterParams, onRendered) {
  848. return "<i class='fa fa-eye'></i>";
  849. };
  850. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  851. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  852. }
  853. }
  854. $('#' + containerid).modal('hide');
  855. $('#' + containerid).remove();
  856. });
  857. $("#btnLinkReportClose").click(function () {
  858. $('#' + containerid).modal('hide');
  859. $('#' + containerid).remove();
  860. });
  861. $("#subrpt_clear").click(function () {
  862. if (instance._reportBuilder.subreportdata.length != 0) {
  863. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  864. if (subfil_Index > -1) {
  865. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  866. }
  867. }
  868. });
  869. $(".select_reports").change(function () {
  870. let reportId = Number($(".select_reports").val());
  871. instance.subReportColumns(reportId);
  872. });
  873. $('.subreport-radio-btn').change(function () {
  874. if ($(this).val() == 'report') {
  875. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  876. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  877. $('#subrpt_plus').removeClass('d-none');
  878. }
  879. }
  880. else {
  881. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  882. $('#subrpt_plus').addClass('d-none');
  883. }
  884. });
  885. $('.opentype-radio-btn').change(function () {
  886. if ($(this).val() == 'inline') {
  887. instance.inline = true;
  888. $('#subrpt_plus').removeClass('d-none');
  889. }
  890. else {
  891. instance.inline = false;
  892. $('#subrpt_plus').addClass('d-none');
  893. }
  894. if (instance._reportBuilder.subreportdata.length != 0) {
  895. let index;
  896. if (instance.linkreport_aliasname) {
  897. index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  898. }
  899. else {
  900. index = instance._reportBuilder.subreportdata.findIndex(s => s.RowClick == true);
  901. }
  902. if (index > -1) {
  903. instance._reportBuilder.subreportdata[index].Inline = instance.inline;
  904. }
  905. }
  906. });
  907. $("#isvalue_radio_0").unbind().click((e) => {
  908. let isChecked = $(e.target).prop("checked");
  909. $(e.target).closest(".form-row").find("#div_mainreportColumn_textbox").parent().toggleClass("hidden");
  910. $(e.target).closest(".form-row").find("#div_mainreportColumn").parent().toggleClass("hidden");
  911. });
  912. }
  913. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  914. return [];
  915. }
  916. linkreport(aliasname) {
  917. var instance = this;
  918. instance.linkreport_aliasname = aliasname;
  919. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  920. }
  921. ;
  922. loadReports() {
  923. var instance = this;
  924. instance.childReportName = "";
  925. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reports';
  926. AutoCompleteHelper.getHelper().Create(".select_reports", "hfReportAutoComplete", url, function (res) { instance.childReportName = res.text.trim(); });
  927. }
  928. mainReportColumns() {
  929. var instance = this;
  930. var mainrpt_Cols = [];
  931. if (instance._reportBuilder.selectedColumns.length != 0) {
  932. mainrpt_Cols.push({ id: 0, text: "Main Report Columns" });
  933. for (let i = 0; i < instance._reportBuilder.selectedColumns.length; i++) {
  934. let sCol = instance._reportBuilder.selectedColumns[i];
  935. mainrpt_Cols.push({ id: sCol.AliasName, text: sCol.AliasName });
  936. }
  937. $('#cmbmainrptCols').select2({
  938. placeholder: 'Select',
  939. data: mainrpt_Cols,
  940. });
  941. }
  942. }
  943. subReportColumns(reportid) {
  944. var instance = this;
  945. instance._reportManager.getColumns(reportid).then(function (subresponse) {
  946. var subrpt_data = [];
  947. for (let i = 0; i < subresponse.result.length; i++) {
  948. subrpt_data.push({ id: subresponse.result[i].ReportColumnId, text: subresponse.result[i].AliasName });
  949. }
  950. $('#cmbsbrptCols').select2({
  951. placeholder: 'Select',
  952. data: subrpt_data,
  953. });
  954. });
  955. }
  956. loadInstalledApps() {
  957. return __awaiter(this, void 0, void 0, function* () {
  958. var instance = this;
  959. instance.appName = "";
  960. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  961. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfAutoComplete_InstalledApp", url, function (res) { instance.appName = res.text.trim(); });
  962. });
  963. }
  964. primaryColumns() {
  965. var instance = this;
  966. var mainrpt_Cols = [];
  967. if (instance._reportBuilder.selectedColumns.length != 0) {
  968. mainrpt_Cols.push({ id: 0, text: "Main Report Columns" });
  969. for (let i = 0; i < instance._reportBuilder.selectedColumns.length; i++) {
  970. let sCol = instance._reportBuilder.selectedColumns[i];
  971. mainrpt_Cols.push({ id: sCol.AliasName, text: sCol.AliasName });
  972. }
  973. $('#detailPrimaryKeyColumns').select2({
  974. placeholder: 'Select',
  975. data: mainrpt_Cols,
  976. });
  977. }
  978. }
  979. addSubReportFilter(paramname, paramvalue, operator, isValue) {
  980. var Confightml = "";
  981. let id = paramname.replace(' ', '_').trim() + paramvalue.replace(' ', '_').trim();
  982. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10">
  983. <div class="col-auto mt-2 mr-2">
  984. <input class="" type="checkbox" readonly title="Is value" ${isValue && 'checked'} onclick="return false">
  985. </div>
  986. <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>`;
  987. $(".ul2list_0").append(Confightml);
  988. if ($(".ul2list_0").children().length == 1) {
  989. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("disabled");
  990. }
  991. }
  992. subReportEdit() {
  993. return __awaiter(this, void 0, void 0, function* () {
  994. var instance = this;
  995. yield instance.loadReports();
  996. instance.mainReportColumns();
  997. instance.primaryColumns();
  998. yield instance.loadInstalledApps();
  999. instance.subReportsExists = false;
  1000. let subReportArray = instance.getSubReportContainerArray();
  1001. if (subReportArray != undefined) {
  1002. var subfil_Index;
  1003. if (subReportArray.length)
  1004. instance.subReportsExists = true;
  1005. if (instance.linkreport_aliasname)
  1006. subfil_Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1007. else {
  1008. subfil_Index = subReportArray.findIndex(s => s.RowClick == true);
  1009. if (subfil_Index == -1) {
  1010. subfil_Index = subReportArray.findIndex(s => !s.AliasName && s.SubReportTypeId == Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail);
  1011. }
  1012. }
  1013. if (subfil_Index > -1) {
  1014. var subrpt_data = subReportArray[subfil_Index];
  1015. if (subrpt_data.SubReportTypeId == Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report) {
  1016. $("#reportRadioBtn").prop("checked", true);
  1017. $(".select_reports").empty().append('<option value = "' + subrpt_data.ChildReportId + '" > ' + subrpt_data.ChildReportName + ' </option>');
  1018. $(".select_reports").val(subrpt_data.ChildReportId);
  1019. instance.subReportId = subrpt_data.SubReportId;
  1020. instance.childReportId = subrpt_data.ChildReportId;
  1021. instance.parentReportId = subrpt_data.ReportId;
  1022. instance.subReportColumns(subrpt_data.ChildReportId);
  1023. var filters = JSON.parse(subrpt_data.Filters);
  1024. for (var f = 0; f < filters.length; f++) {
  1025. let fill = filters[f];
  1026. let id = fill.ParameterName.replaceAll(' ', '_').trim() + fill.ParameterValue.replaceAll(' ', '_').trim();
  1027. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10">
  1028. <div class="col-auto mt-2 mr-2">
  1029. <input class="" type="checkbox" readonly title="Is value" ${fill.Isvalue && 'checked'} onclick="return false">
  1030. </div>
  1031. <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>`;
  1032. $(".ul2list_0").append(Confightml);
  1033. !f && $(".ul2list_0").find(".filter-remove-btn").addClass("disabled");
  1034. instance.filters.push(fill);
  1035. }
  1036. var Confightml = "";
  1037. if (!subrpt_data.Inline)
  1038. $("#outlineRadioBtn").prop("checked", true);
  1039. else
  1040. $("#inlineRadioBtn").prop("checked", true);
  1041. instance.inline = subrpt_data.Inline;
  1042. }
  1043. else {
  1044. instance.isDetail = true;
  1045. instance.subrpt_AliasName = subrpt_data.AliasName;
  1046. instance.installedAppId = subrpt_data.InstalledAppId;
  1047. instance.primaryKeyColumn = subrpt_data.PrimaryKeyColumn;
  1048. $("#detailRadioBtn").prop("checked", true);
  1049. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1050. $('#subrpt_plus').addClass('d-none');
  1051. $("#detailInstalledApps").empty().append('<option value = "' + subrpt_data.InstalledAppId + '" > ' + subrpt_data.AppName + ' </option>');
  1052. $("#detailInstalledApps").val(subrpt_data.InstalledAppId);
  1053. $('#detailPrimaryKeyColumns').val(subrpt_data.PrimaryKeyColumn).trigger('change');
  1054. }
  1055. }
  1056. }
  1057. });
  1058. }
  1059. subReportType_Deatil() {
  1060. var instance = this;
  1061. instance.isDetail = true;
  1062. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1063. if (subfil_Index > -1) {
  1064. var subfill = instance._reportBuilder.subreportdata[subfil_Index];
  1065. var fil = JSON.parse(subfill.Filters);
  1066. for (var i = 0; i < fil.length; i++) {
  1067. let id = fil[i].ParameterName.replace(' ', '_') + fil[i].ParameterValue.replace(' ', '_');
  1068. $("#li_filter_ul2list_0" + id).remove();
  1069. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  1070. }
  1071. }
  1072. $('.select_reports').val(0).trigger('change');
  1073. $('#cmbmainrptCols').val(0).trigger('change');
  1074. $('#cmbsbrptCols').val(0).trigger('change');
  1075. instance.primaryColumns();
  1076. instance.loadInstalledApps();
  1077. }
  1078. subReportType_Report() {
  1079. var instance = this;
  1080. instance.isDetail = false;
  1081. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1082. if (subfil_Index > -1) {
  1083. $('#detailInstalledApps').val('0').trigger('change');
  1084. $('#detailPrimaryKeyColumns').val('0').trigger('change');
  1085. $("#txt_detailonclick").val("");
  1086. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  1087. }
  1088. }
  1089. saveSubReport_Report(subReportArray) {
  1090. var instance = this;
  1091. var rowclick = true;
  1092. if (instance.linkreport_aliasname)
  1093. rowclick = false;
  1094. let reportType = this._reportBuilder.res ? this._reportBuilder.res.ReportTypeId : this._reportBuilder.reportType;
  1095. let isChart = reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table ? false : true;
  1096. var subreportdata = new NestedTableModel();
  1097. subreportdata.ChildReportId = Number($('.select_reports').val());
  1098. subreportdata.ChildReportName = instance.childReportName;
  1099. subreportdata.Filters = JSON.stringify(instance.filters);
  1100. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  1101. subreportdata.Inline = instance.inline;
  1102. subreportdata.RowClick = rowclick;
  1103. subreportdata.AliasName = instance.linkreport_aliasname;
  1104. if (!subreportdata.ChildReportId && !instance.subReportsExists) {
  1105. MessageHelper.Instance().showError("Please select sub report ", "sub_report_error_message");
  1106. return true;
  1107. }
  1108. else if (subreportdata.Filters == '[]' && !instance.subReportsExists && !isChart) {
  1109. MessageHelper.Instance().showError("Please select sub report columns ", "sub_report_error_message");
  1110. return true;
  1111. }
  1112. if (isChart && subreportdata.Filters == '[]') {
  1113. this._reportBuilder.linkReportId = subreportdata.ChildReportId;
  1114. }
  1115. if (subReportArray.length != 0 && typeof (subReportArray) == 'object') {
  1116. var Index;
  1117. if (instance.linkreport_aliasname)
  1118. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1119. else
  1120. Index = subReportArray.findIndex(s => s.RowClick == true);
  1121. if (Index > -1 && subreportdata.Filters != "[]" && subreportdata.ChildReportId) {
  1122. subReportArray[Index] = subreportdata;
  1123. }
  1124. else if (subreportdata.Filters != "[]" && subreportdata.ChildReportId) {
  1125. subReportArray.push(subreportdata);
  1126. }
  1127. }
  1128. else {
  1129. if (subreportdata.ChildReportId)
  1130. subReportArray.push(subreportdata);
  1131. }
  1132. instance._reportBuilder.subreporttabledata = subReportArray;
  1133. return false;
  1134. }
  1135. saveSubReport_DetailFields() {
  1136. var instance = this;
  1137. var subreportdata = new NestedTableModel();
  1138. subreportdata.InstalledAppId = Number($("#detailInstalledApps").val());
  1139. subreportdata.PrimaryKeyColumn = $("#detailPrimaryKeyColumns option:selected").text().trim();
  1140. subreportdata.Inline = instance.inline;
  1141. subreportdata.SubReportTypeId = ($("#detailRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail : 0;
  1142. subreportdata.AliasName = instance.linkreport_aliasname;
  1143. subreportdata.AppName = instance.appName;
  1144. if (subreportdata.PrimaryKeyColumn.toLowerCase() == "select column")
  1145. return MessageHelper.Instance().showError("Please select primary key column", "sub_report_error_message");
  1146. else if (!subreportdata.InstalledAppId)
  1147. return MessageHelper.Instance().showError("Please select installed app", "sub_report_error_message");
  1148. let subReportArray = instance.getSubReportContainerArray();
  1149. if (subReportArray.length != 0) {
  1150. var Index;
  1151. if (instance.linkreport_aliasname)
  1152. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1153. else
  1154. Index = subReportArray.findIndex(s => s.RowClick == true);
  1155. if (Index > -1 && subreportdata.AppName != 'Select') {
  1156. subReportArray[Index] = subreportdata;
  1157. }
  1158. else if (subreportdata.AppName != 'Select') {
  1159. subReportArray.push(subreportdata);
  1160. }
  1161. }
  1162. else {
  1163. subReportArray.push(subreportdata);
  1164. }
  1165. }
  1166. removefilters(reportid, mainreportcolumn, subreportcolumn, id) {
  1167. var instance = this;
  1168. if (instance.linkreport_aliasname) {
  1169. if (instance._reportBuilder.subreportdata.length != 0) {
  1170. var index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1171. if (index > -1) {
  1172. instance._reportBuilder.subreportdata.splice(index, 1);
  1173. }
  1174. }
  1175. }
  1176. else {
  1177. if (instance.filters.length == 1) {
  1178. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  1179. return (o.ChildReportId === reportid);
  1180. });
  1181. if (index !== -1)
  1182. instance._reportBuilder.subreportdata.splice(index, 1);
  1183. }
  1184. }
  1185. var fillIndex = instance.filters.findIndex(function (f) { return (f.ParameterName == mainreportcolumn) && (f.ParameterValue === subreportcolumn); });
  1186. if (fillIndex > -1)
  1187. instance.filters.splice(fillIndex, 1);
  1188. if (!instance.filters.length)
  1189. $(event.target).closest(".report-body").find(".select_reports.custom-select").empty();
  1190. $("#" + id + "").empty();
  1191. }
  1192. ;
  1193. load_old(id, containerid, callback) {
  1194. var instance = this;
  1195. $('#cmbmainrptCols_1').empty();
  1196. var data = [];
  1197. var subreportid = 0;
  1198. instance._reportManager.getReports().then(function (response) {
  1199. var Data = response;
  1200. data.push({ id: 0, text: "Select" });
  1201. data.push({ id: 0, text: "Select" });
  1202. for (let i = 0; i < Data.length; i++) {
  1203. data.push({ id: Data[i].ReportId, text: Data[i].ReportName });
  1204. }
  1205. $('.select_reports').select2({
  1206. placeholder: 'Select',
  1207. data: data,
  1208. }).on('select2:select', function (e) {
  1209. var reportid = Number($(".select_reports").val());
  1210. let sub_blk = this.closest(".sub-report-block");
  1211. if (sub_blk)
  1212. $(sub_blk).data("subreportid", reportid.toString());
  1213. $("#cmbsbrptCols_1").find('option').not(':first').remove();
  1214. instance._reportManager.getColumns(reportid).then(function (response) {
  1215. for (let i = 0; i < response.result.length; i++) {
  1216. var columnname = response.result[i].DisplayText;
  1217. var columnvalue = response.result[i].ReportColumnId;
  1218. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbsbrptCols_1');
  1219. }
  1220. });
  1221. });
  1222. if (instance._reportBuilder.subreporttabledata != undefined && instance._reportBuilder.subreporttabledata != null && instance._reportBuilder.subreporttabledata != "") {
  1223. if (instance._reportBuilder.subreporttabledata.length > 0) {
  1224. var subreports_array = [];
  1225. var subarray = [];
  1226. var element = [];
  1227. var currentsubreport = [];
  1228. instance._reportBuilder.subreportdata = [];
  1229. instance._reportBuilder.subreport_count = 1;
  1230. for (let m = 0; m < instance._reportBuilder.subreporttabledata.length; m++) {
  1231. instance._reportManager.getColumns(instance._reportBuilder.subreporttabledata[m].ChildReportId).then(function (response) {
  1232. currentsubreport.push(instance._reportBuilder.subreporttabledata[m]);
  1233. element.push(response.result[0].ReportId);
  1234. subarray.push(response.result);
  1235. if (element.length == instance._reportBuilder.subreporttabledata.length) {
  1236. let k = 1;
  1237. for (let i = 0; i < currentsubreport.length; i++) {
  1238. if (i != 0) {
  1239. instance.subReportId = currentsubreport[i].SubReportId;
  1240. $("#subrpt_plus").trigger("click");
  1241. k = i + 1;
  1242. if (data.length == 0) {
  1243. }
  1244. $("#cmdsub_" + k + "").select2({
  1245. placeholder: 'Select',
  1246. data: data,
  1247. });
  1248. let lastSubEle = $("#linkreport_modal").find(".sub-report-block").last();
  1249. lastSubEle.data("subreportid", currentsubreport[i].ChildReportId);
  1250. lastSubEle.data("subreportcolumnid", currentsubreport[i].SubReportColumnId);
  1251. }
  1252. $("#cmdsub_" + k + "").val(currentsubreport[i].ChildReportId).trigger('change');
  1253. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + k + "");
  1254. var whole_tableData = instance._reportBuilder.selectedColumns;
  1255. for (let j = 0; j < whole_tableData.length; j++) {
  1256. var columnname = whole_tableData[j].DisplayText;
  1257. var columnvalue = whole_tableData[j].ColumnId;
  1258. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + k + "");
  1259. }
  1260. let subcolumns = subarray[i].filter(function (o) { return o.ReportId === currentsubreport[i].ChildReportId; });
  1261. $("#cmbsbrptCols_" + k + "").find('option').not(':first').remove();
  1262. for (let l = 0; l < subcolumns.length; l++) {
  1263. var columnname = subcolumns[l].DisplayText;
  1264. var columnvalue = subcolumns[l].ReportColumnId;
  1265. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + k + "");
  1266. }
  1267. $("#btnAdd_" + instance._reportBuilder.subreport_count + "").unbind().click(function () {
  1268. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1269. instance.addfilter(id[0], 0);
  1270. $("#btnDeleteCouponItem_" + id[0] + "").click(function () {
  1271. instance.removefilters(Number($("#reporthid_" + id[0] + "").val()), Number($("#mainreportcolumnhid_" + id[0] + "").val()), Number($("#subreportcolumnhid_" + id[0] + "").val()), "ul2list_" + id[0] + "");
  1272. });
  1273. });
  1274. $("#cmbmainrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterValue).replace('@', '').trim() + "')").prop('selected', true);
  1275. $("#cmbsbrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterName).trim() + "')").prop('selected', true);
  1276. if (k == 1) {
  1277. subreportid = currentsubreport[i].SubReportId;
  1278. $("#btnConfigAddFilter").click();
  1279. }
  1280. else {
  1281. subreportid = currentsubreport[i].SubReportId;
  1282. $("#btnAdd_" + k + "").click();
  1283. }
  1284. instance.subReportId = 0;
  1285. }
  1286. }
  1287. });
  1288. }
  1289. }
  1290. }
  1291. else {
  1292. $('<option>').val(0).text('Select Column').appendTo('#cmbmainrptCols_1');
  1293. var whole_tableData = instance._reportBuilder.selectedColumns;
  1294. for (let i = 0; i < whole_tableData.length; i++) {
  1295. var columnname = whole_tableData[i].ColumnName;
  1296. var columnvalue = whole_tableData[i].ColumnId;
  1297. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbmainrptCols_1,#detailPrimaryKeyColumns');
  1298. }
  1299. }
  1300. });
  1301. $("#btnLinkReportSave").click(function () {
  1302. if (instance.isDetail) {
  1303. instance.subReportType_Deatil();
  1304. }
  1305. var table = instance._reportBuilder.table;
  1306. var autoNumFormatter = function (cell) {
  1307. var row = cell.getRow();
  1308. var rowIndex = row.getPosition(false);
  1309. return (rowIndex + 1);
  1310. };
  1311. if (table.element.children[1].lastChild.firstChild.firstElementChild.firstChild.className != "fa fa-eye") {
  1312. var hideIcon = function (cell, formatterParams, onRendered) {
  1313. return "<i class='fa fa-eye'></i>";
  1314. };
  1315. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  1316. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  1317. }
  1318. $('#' + containerid).modal('hide');
  1319. $('#' + containerid).remove();
  1320. var data = instance._reportBuilder.subreportdata;
  1321. });
  1322. var Confightml = "";
  1323. $("#btnConfigAddFilter").click(function (e) {
  1324. let text = $("#cmbmainrptCols_1 option:selected").text();
  1325. let text1 = $("#cmbsbrptCols_1 option:selected").text();
  1326. if (text == "Select Column" || text1 == "Sub report column")
  1327. return;
  1328. let exists = instance._reportBuilder.subreportdata.find(x => x.ParameterValue == text && x.ParameterName == text1);
  1329. if (exists)
  1330. return;
  1331. let opertaor = $("#slctdoperater_0 option:selected").text();
  1332. let id = text.replaceAll(' ', '_') + text1.replaceAll(' ', '_');
  1333. 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>`;
  1334. $(".ul2list_0").append(Confightml);
  1335. if ($(".ul2list_0").children().length == 1)
  1336. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("hidden");
  1337. var subreportdata = new NestedTableModel();
  1338. if (instance._reportBuilder.reportid != 0) {
  1339. subreportdata.SubReportId = subreportid;
  1340. }
  1341. subreportdata.ChildReportId = Number($('.select_reports').val());
  1342. subreportdata.Operator = $("#slctdoperater_0 option:selected").text();
  1343. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_1 option:selected").val());
  1344. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_1 option:selected").val());
  1345. subreportdata.ReportColumnName = $("#cmbmainrptCols_1 option:selected").text();
  1346. subreportdata.SubReportColumnName = $("#cmbsbrptCols_1 option:selected").text();
  1347. subreportdata.ParameterValue = $("#cmbmainrptCols_1 option:selected").text();
  1348. subreportdata.ParameterName = $("#cmbsbrptCols_1 option:selected").text();
  1349. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  1350. subreportdata.ReportId = instance._reportBuilder.reportid;
  1351. instance.childReportId = subreportdata.ChildReportId;
  1352. instance.parentReportId = subreportdata.ReportId;
  1353. instance._reportBuilder.subreportdata.push(subreportdata);
  1354. instance._reportBuilder.subreporttabledata = instance._reportBuilder.subreportdata;
  1355. $("#cmbmainrptCols_1").val("0");
  1356. $("#cmbsbrptCols_1").val("0");
  1357. });
  1358. $("#btnLinkReportClose").click(function () {
  1359. $('#' + containerid).modal('hide');
  1360. $('#' + containerid).remove();
  1361. });
  1362. $("#subrpt_plus").click(function () {
  1363. const subreportCnt = $("[id^=btnAdd]").length + 2;
  1364. var template = instance._reportBuilderTemplate.del_loadSubReports_Section();
  1365. var templateScript = Handlebars.compile(template);
  1366. var context = { "subreport_count": subreportCnt };
  1367. var html = templateScript(context);
  1368. $("#linkreport_modal").append(html);
  1369. $("#cmdsub_" + subreportCnt + "").select2({
  1370. placeholder: 'Select',
  1371. data: data,
  1372. });
  1373. var main_reportcolumns = instance._reportBuilder.selectedColumns;
  1374. $("#cmbmainrptCols_" + subreportCnt + "").empty();
  1375. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + subreportCnt + "");
  1376. for (let i = 0; i < main_reportcolumns.length; i++) {
  1377. var columnname = main_reportcolumns[i].ColumnName;
  1378. var columnvalue = main_reportcolumns[i].ColumnId;
  1379. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + subreportCnt + "");
  1380. }
  1381. $("#btnAdd_" + subreportCnt + "").click(function () {
  1382. var colid = $(this).closest(".sub-report-block").find("#div_subColumn").children().first().val();
  1383. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1384. instance.addfilter(id[0], 0);
  1385. let sub_blk = this.closest(".sub-report-block");
  1386. if (sub_blk && colid)
  1387. $(sub_blk).data("subreportcolumnid", colid);
  1388. });
  1389. $("#cmdsub_" + subreportCnt + "").on('select2:select', function (e) {
  1390. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1391. var reportid = Number($("#cmdsub_" + id[0] + "").val());
  1392. let sub_blk = this.closest(".sub-report-block");
  1393. if (sub_blk)
  1394. $(sub_blk).data("subreportid", reportid.toString());
  1395. $("#cmbsbrptCols_" + id[0] + "").find('option').not(':first').remove();
  1396. instance._reportManager.getColumns(reportid).then(function (response) {
  1397. for (let i = 0; i < response.result.length; i++) {
  1398. var columnname = response.result[i].DisplayText;
  1399. var columnvalue = response.result[i].ReportColumnId;
  1400. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + id[0] + "");
  1401. }
  1402. });
  1403. });
  1404. $("#cmbsbrpt_" + subreportCnt).empty();
  1405. $("#cmbsbrpt_" + subreportCnt).append('<option value="0">--Select SubReport--</option>');
  1406. });
  1407. $("#linkreport_modal").click(this.subReportMdown.bind(this));
  1408. const installedAppsUrl = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1409. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfDetailInstalledApps", installedAppsUrl, null);
  1410. $('.subreport-radio-btn').change(function () {
  1411. if ($(this).val() == 'report') {
  1412. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1413. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  1414. $('#subrpt_plus').removeClass('d-none');
  1415. }
  1416. }
  1417. else {
  1418. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1419. $('#subrpt_plus').addClass('d-none');
  1420. }
  1421. });
  1422. $('.opentype-radio-btn').change(function () {
  1423. if ($(this).val() == 'inline') {
  1424. $('#subrpt_plus').removeClass('d-none');
  1425. }
  1426. else {
  1427. $('#subrpt_plus').addClass('d-none');
  1428. }
  1429. });
  1430. }
  1431. removefilters_old(reportid, mainreportcolumn, subreportcolumn, id) {
  1432. var instance = this;
  1433. $("#" + id + "").empty();
  1434. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  1435. return (o.ChildReportId === reportid) && (o.ReportColumnId === mainreportcolumn) && (o.SubReportColumnId === subreportcolumn);
  1436. });
  1437. if (index !== -1)
  1438. instance._reportBuilder.subreportdata.splice(index, 1);
  1439. }
  1440. ;
  1441. addfilter(id, SubReportId) {
  1442. var instance = this;
  1443. let text = $("#cmbmainrptCols_" + id + " option:selected").text();
  1444. let text1 = $("#cmbsbrptCols_" + id + " option:selected").text();
  1445. let opertaor = $("#slctdoperater_" + id + " option:selected").text();
  1446. 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>`;
  1447. $(".ul2list_" + id + "").append(filterhtml);
  1448. var subreportdata = new NestedTableModel();
  1449. subreportdata.SubReportId = instance.subReportId || SubReportId;
  1450. subreportdata.ChildReportId = Number($("#cmdsub_" + id + "").val());
  1451. subreportdata.Operator = $("#slctdoperater_" + id + " option:selected").text();
  1452. subreportdata.ParameterValue = $("#cmbmainrptCols_" + id + " option:selected").text();
  1453. subreportdata.ParameterName = $("#cmbsbrptCols_" + id + " option:selected").text();
  1454. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_" + id + " option:selected").val());
  1455. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_" + id + " option:selected").val());
  1456. subreportdata.ReportColumnName = ($("#cmbmainrptCols_" + id + " option:selected").text());
  1457. subreportdata.SubReportColumnName = $("#cmbsbrptCols_" + id + " option:selected").text();
  1458. instance._reportBuilder.subreportdata.push(subreportdata);
  1459. $("#cmbmainrptCols_" + id).val("0");
  1460. $("#cmbsbrptCols_" + id).val("0");
  1461. }
  1462. ;
  1463. linkreport_old() {
  1464. var instance = this;
  1465. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  1466. }
  1467. ;
  1468. subReportMdown(e) {
  1469. let subrp = e.target.closest(".sub-report-block");
  1470. let childReportId = $(subrp).data("subreportid");
  1471. if (childReportId)
  1472. childReportId = Number(childReportId);
  1473. if (e.target.classList.contains("remove_subrpt") || e.target.closest(".remove_subrpt")) {
  1474. let sRIdx;
  1475. if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length == 1) {
  1476. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  1477. if (sRIdx != -1)
  1478. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1479. }
  1480. else if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length > 1) {
  1481. let childReportColumnId = Number($(subrp).data("subreportcolumnid"));
  1482. if (childReportColumnId) {
  1483. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId && x.SubReportColumnId == childReportColumnId);
  1484. if (sRIdx != -1)
  1485. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1486. }
  1487. }
  1488. subrp.remove();
  1489. }
  1490. else if (e.target.classList.contains("remove_subrpt_columns") || e.target.closest(".remove_subrpt_columns")) {
  1491. let sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  1492. if (sRIdx != -1)
  1493. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1494. $(e.target).closest(".filteritems-addedrow").remove();
  1495. }
  1496. }
  1497. removeSubreport() {
  1498. let idx = -1;
  1499. let subReportArray = this.getSubReportContainerArray();
  1500. if (!this.isDetail) {
  1501. if (this.subReportId)
  1502. idx = subReportArray.findIndex(x => x.SubReportId == this.subReportId);
  1503. else
  1504. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  1505. if (idx > -1) {
  1506. this.linkreport_aliasname = '';
  1507. this.filters = [];
  1508. this.childReportName = '';
  1509. subReportArray.splice(idx, 1);
  1510. }
  1511. $("#subreports-filters-list").empty();
  1512. $("#cmdsub_1").val("0").empty();
  1513. }
  1514. else {
  1515. if (this.installedAppId)
  1516. idx = subReportArray.findIndex(x => x.AliasName == this.subrpt_AliasName && x.InstalledAppId == this.installedAppId);
  1517. else
  1518. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  1519. if (idx > -1) {
  1520. this.installedAppId = 0;
  1521. subReportArray.splice(idx, 1);
  1522. }
  1523. $("#detailPrimaryKeyColumns").val("0").trigger("change");
  1524. $("#detailInstalledApps").val("0").trigger("change");
  1525. }
  1526. }
  1527. getSubReportContainerArray() {
  1528. if (this.isReportDuplicate) {
  1529. return Analytics.Components.DuplicateReport.Instance().subReports;
  1530. }
  1531. else {
  1532. return this._reportBuilder.subreportdata;
  1533. }
  1534. }
  1535. static Instance() {
  1536. if (this.instance === undefined) {
  1537. this.instance = new SubReport();
  1538. }
  1539. return this.instance;
  1540. }
  1541. }
  1542. Reports.SubReport = SubReport;
  1543. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1544. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1545. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1546. })(Unibase || (Unibase = {}));
  1547. var Unibase;
  1548. (function (Unibase) {
  1549. let Platform;
  1550. (function (Platform) {
  1551. let Analytics;
  1552. (function (Analytics) {
  1553. let Reports;
  1554. (function (Reports) {
  1555. class ColumnFormat {
  1556. loadFormats(DataType) {
  1557. var formats = [];
  1558. if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  1559. formats = [{ id: 0, format: 'Default' }, { id: 1, format: 'dd/mm/yyyy' }, { id: 2, format: 'mm/dd/yyyy' }, { id: 3, format: 'yyyy/mm/dd' }, { id: 4, format: 'Mon dd, yyyy' }, { id: 5, format: 'Mon/yyyy' }, { id: 6, format: 'hh' }, { id: 7, format: 'mm' }, { id: 8, format: 'ss' }, { id: 9, format: 'hh:mm:ss' }, { id: 10, format: 'hh:mm:ss AM' }, { id: 11, format: 'dd/mm/yyyy hh:mm:ss' }, { id: 12, format: 'dd/mm/yyyy hh:mm' }, { id: 13, format: 'dd/mm/yyyy hh:mm:ss AM' }, { id: 14, format: 'Mon dd, yyyy hh:mm:ss AM' }];
  1560. }
  1561. else if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.decimal) {
  1562. formats = [{ id: 0, format: 'Default' }, { id: 1, format: '0.0' }, { id: 2, format: '0.00' }, { id: 3, format: '0.000' }, { id: 3, format: '0.0000' }];
  1563. }
  1564. return formats;
  1565. }
  1566. static Instance() {
  1567. if (this.instance === undefined) {
  1568. this.instance = new ColumnFormat();
  1569. }
  1570. return this.instance;
  1571. }
  1572. }
  1573. Reports.ColumnFormat = ColumnFormat;
  1574. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1575. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1576. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1577. })(Unibase || (Unibase = {}));
  1578. var Unibase;
  1579. (function (Unibase) {
  1580. let Platform;
  1581. (function (Platform) {
  1582. let Analytics;
  1583. (function (Analytics) {
  1584. let Reports;
  1585. (function (Reports) {
  1586. class ReportRoleSettings extends Platform.Core.BaseComponent {
  1587. constructor() {
  1588. super();
  1589. this.isSingleAppSelected = false;
  1590. this.reportManager = Analytics.Managers.ReportManager.Instance();
  1591. }
  1592. cssFiles() {
  1593. return [];
  1594. }
  1595. jsFiles() {
  1596. var jsFiles = ['platform/analytics/managers/reportmanager.js'];
  1597. return jsFiles;
  1598. }
  1599. html(id, containerid) {
  1600. let html = `<section id="link-report-section" class="modal-content">
  1601. <div class="modal-header pa-10" id="reportrolesetting_header">
  1602. <strong class="modal-title biz-highlight-bg-color">Role Settings</strong>
  1603. </div>
  1604. <div data-simplebar class="simple-scroll-bar">
  1605. <div id="divRoleSetting_ErrorMessage"></div>
  1606. <div class="modal-body bg-charcoal-light-5 sub-report-block" id="reportrolesetting_modal">
  1607. <div class="report-rolesettings-block card" data-select2-id="24">
  1608. <div data-select2-id="23">
  1609. <header class="report-rolesettings-head">
  1610. <h6 class="required">
  1611. Role Settings
  1612. </h6>
  1613. <span>
  1614. <i class="las la-braille dragger"></i>
  1615. </span>
  1616. </button>
  1617. </header>
  1618. <div id="subrpts_div" data-select2-id="subrpts_div" class="">
  1619. <div class="report-body">
  1620. <div class="form-group">
  1621. <div id="divsubrpt_0" data-select2-id="divsubrpt_">
  1622. <div class="form-row">
  1623. <div class="col">
  1624. <div id="div_installedapps">
  1625. <input type="hidden" id="hfrolesettings_installedapps">
  1626. <select id="rolesettings_installedapps" class="form-control text-control required">
  1627. <option value="0" selected="">Apps</option>
  1628. </select>
  1629. </div>
  1630. </div>
  1631. <div class="col">
  1632. <div id="div_rolesettings">
  1633. <select id="rolesettings_ddl" class="form-control custom-select mb-10 required">
  1634. <option value="0" selected="">Role Settings</option>
  1635. </select>
  1636. </div>
  1637. </div>
  1638. <div class="col-auto">
  1639. <a class="btn btn-icon btn-theme" id="btnConfigAddRoleSetting" onclick="" ;="">
  1640. <span class="btn-icon-wrap"><span class="line-icon text-white"><i class="las la-plus"></i></span></span>
  1641. </a>
  1642. </div>
  1643. </div>
  1644. <div class="m-t-sm">
  1645. <div class="form-row">
  1646. <div class="col px-4 py-2">
  1647. <strong> App Name </strong>
  1648. </div>
  1649. <div class="col py-2">
  1650. <strong> RoleSetting </strong>
  1651. </div>
  1652. <div class="col-auto py-2 px-4">
  1653. <a class="invisible"><i class="fa fa-close text-danger"></i></a>
  1654. </div>
  1655. </div>
  1656. </div>
  1657. <div id="RoleSettingExp"></div>
  1658. </div>
  1659. </div>
  1660. </div>
  1661. </div>
  1662. </div>
  1663. </div>
  1664. </div>
  1665. </div>
  1666. </div></div>
  1667. <div class="modal-footer pa-10" id="linkreport_footer">
  1668. <button type="button" class="btn btn-sm btn-light mr-auto" id="btnRoleSettingsClose">Cancel</button>
  1669. <button type="button" class="btn btn-sm btn-primary" id="btnRoleSettingsSave">Save</button>
  1670. </div>
  1671. </section>`;
  1672. return html;
  1673. }
  1674. load(id, containerid, callback) {
  1675. var instance = this;
  1676. let isRoleSettingsExists = false;
  1677. instance._reportbuilder = Reports.ReportBuilder.Instance();
  1678. $("#btnRoleSettingsClose").click(function () {
  1679. $('#' + containerid).modal('hide');
  1680. $('#' + containerid).remove();
  1681. if (instance.isSingleAppSelected) {
  1682. instance._reportbuilder.roleSettings = [];
  1683. instance.isSingleAppSelected = false;
  1684. }
  1685. });
  1686. $('#rolesettings_installedapps').empty();
  1687. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length)
  1688. isRoleSettingsExists = true;
  1689. if (instance._reportbuilder.roleSettings != null) {
  1690. for (let i = 0; i < instance._reportbuilder.roleSettings.length; i++) {
  1691. let item = instance._reportbuilder.roleSettings[i];
  1692. instance.appendRoleSetting(item.AppTitle, item.SettingName);
  1693. }
  1694. }
  1695. $("#btnConfigAddRoleSetting").click(function () {
  1696. let idx = instance._reportbuilder.selectedColumns.findIndex(x => x.AliasName == 'installedappid');
  1697. if (idx == -1) {
  1698. MessageHelper.Instance().showError("Please add installedappid column in order to select app", "divRoleSetting_ErrorMessage");
  1699. return false;
  1700. }
  1701. var appName = $("#rolesettings_installedapps option:selected").text();
  1702. var installedappid = $("#rolesettings_installedapps option:selected").val();
  1703. var rolesetting = $("#rolesettings_ddl option:selected").text();
  1704. if (appName == "" || rolesetting == "")
  1705. return;
  1706. var lefNavigationInstalledAppId = Number($("#InstalledApp_AutoComplete option:selected").val());
  1707. if (installedappid == lefNavigationInstalledAppId) {
  1708. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length == 1) {
  1709. instance.isSingleAppSelected = true;
  1710. }
  1711. return MessageHelper.Instance().showError(`Cannot use same app ${appName} in both role settings and installed app field of left navigation in report builder.`, 'divRoleSetting_ErrorMessage');
  1712. }
  1713. var rolset = false;
  1714. if (instance._reportbuilder.roleSettings != null)
  1715. rolset = instance._reportbuilder.roleSettings.find(x => x.AppName == appName && x.RoleSetting == rolesetting) ? true : false;
  1716. if (!rolset) {
  1717. instance.appendRoleSetting(appName, rolesetting);
  1718. instance._reportbuilder.roleSettings.push({
  1719. InstalledAppId: Number($("#rolesettings_installedapps option:selected").val()),
  1720. AppPermissionId: Number($("#rolesettings_ddl option:selected").val()),
  1721. AppTitle: appName,
  1722. SettingName: rolesetting,
  1723. });
  1724. $("#rolesettings_installedapps").html('<option value="0" selected="">Apps</option>').val("0");
  1725. $("#rolesettings_ddl").html('<option value="0" selected="">Role Settings</option>').val("0");
  1726. }
  1727. });
  1728. $("#btnRoleSettingsSave").click(function () {
  1729. if (instance._reportbuilder.roleSettings != null) {
  1730. if (instance._reportbuilder.roleSettings.length == 0 && !isRoleSettingsExists) {
  1731. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  1732. }
  1733. else if (instance._reportbuilder.roleSettings.length < 2) {
  1734. if (instance._reportbuilder.roleSettings.length == 1) {
  1735. instance.isSingleAppSelected = true;
  1736. }
  1737. return MessageHelper.Instance().showError('Use installed app field in left navigation of report builder, if report have only one role setting', 'divRoleSetting_ErrorMessage');
  1738. }
  1739. else if (instance._reportbuilder.roleSettings.length == 2) {
  1740. let installedid = $("#InstalledApp_AutoComplete option:selected").val();
  1741. if (installedid) {
  1742. return MessageHelper.Instance().showError('Remove installedapp from left navigation of report builder to use multiple report role settings', 'divRoleSetting_ErrorMessage');
  1743. }
  1744. }
  1745. if (instance._reportbuilder.roleSettings.length > 1) {
  1746. instance.isSingleAppSelected = false;
  1747. }
  1748. }
  1749. else {
  1750. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  1751. }
  1752. $('#' + containerid).modal('hide');
  1753. $('#' + containerid).remove();
  1754. });
  1755. instance.loadInstalledApps();
  1756. }
  1757. loadInstalledApps() {
  1758. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1759. AutoCompleteHelper.getHelper().Create("#rolesettings_installedapps", "#hfrolesettings_installedapps", url, function (response) {
  1760. var installedappid = $("#hfrolesettings_installedapps").val();
  1761. Unibase.Platform.Apps.Managers.AppManager.Instance().getAppPermissions(installedappid).then(function (response) {
  1762. var drpdata = '';
  1763. $("#rolesettings_ddl").html("");
  1764. var data = response.result;
  1765. let viewPermission = data.find(function (x) { return x.SettingName.toLowerCase() == 'view'; });
  1766. if (viewPermission) {
  1767. $("#rolesettings_ddl").append('<option value="' + viewPermission.AppPermissionId + '" columnvalue="" selected>' + viewPermission.SettingName + '</option>').val(viewPermission.AppPermissionId).trigger("change");
  1768. }
  1769. });
  1770. });
  1771. }
  1772. appendRoleSetting(appName, rolesetting) {
  1773. let ulDiv = 'ulAppName_' + appName.replace(/ /g, "_") + '-' + rolesetting.replace(/ /g, "_");
  1774. var rshtml = '<div class="border border-1 mt-2 ulDatalistFilters_' + appName.replace(" ", "_") + rolesetting.replace(" ", "_") + '" id = "' + ulDiv + '">' +
  1775. '<div class="form-row" id="li_AppName_' + appName + rolesetting + '"> ' +
  1776. '<div class="col py-2 px-4 lblappname"> ' + appName + ' </div> ' +
  1777. '<div class="col py-2 px-4 lblrolesetting"> ' + rolesetting + ' </div>' +
  1778. '<div class="col-auto py-2 px-4"><a id = "btnRemove" onclick="Unibase.Platform.Analytics.Reports.ReportRoleSettings.Instance().RemoveRoleSettingExp(' + "'" + appName + "'" + ',' + "'" + rolesetting + "'" + ',' + "'" + ulDiv + "'" + ')" class="pull-right" ><i class="fa fa-close text-danger"></i></a></div>' +
  1779. '</div>' +
  1780. '</div>';
  1781. $("#RoleSettingExp").append(rshtml);
  1782. }
  1783. RemoveRoleSettingExp(appname, rolesetting, ul) {
  1784. var instance = this;
  1785. $("#" + ul + "").remove();
  1786. var index = instance._reportbuilder.roleSettings.findIndex(function (r) {
  1787. return (r.AppTitle === appname && r.SettingName === rolesetting);
  1788. });
  1789. if (index !== -1)
  1790. instance._reportbuilder.roleSettings.splice(index, 1);
  1791. }
  1792. static Instance() {
  1793. if (this.instance === undefined) {
  1794. this.instance = new ReportRoleSettings();
  1795. }
  1796. return this.instance;
  1797. }
  1798. }
  1799. Reports.ReportRoleSettings = ReportRoleSettings;
  1800. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1801. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1802. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1803. })(Unibase || (Unibase = {}));