Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.reportbuilder.js 126KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821
  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. <div class="IsEnableFolder col-sm-6 flex-between-center">
  545. <span>EnableFolder</span>
  546. <label class="switch mb-0" for="reportGroup_IsEnableFolder">
  547. <input type="checkbox" id="reportGroup_IsEnableFolder"><span></span>
  548. <input type="hidden" id="hf_IsEnableFolder"> <input type="hidden" class="value-control" id="hf_IsEnableFolder">
  549. </label>
  550. </div>
  551. <label for="Validation" id="lblValidation_GroupName"></label>
  552. </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>`;
  553. return html;
  554. }
  555. load(id, containerid, callback) {
  556. var instance = this;
  557. instance.parentGroupId = 0;
  558. $("#" + containerid).find(".modal-body").css('height', $(window).outerHeight() - $("#" + containerid).find(".modal-header").outerHeight() - $("#" + containerid).find(".modal-footer").outerHeight() + 'px');
  559. if (id != 0)
  560. instance.loadReportGroup(id);
  561. $("#btn_SaveReportGrp").click(function () {
  562. let isInternal = $("#reportGroup_IsInternalGroup").prop("checked");
  563. let isEnableFolder = $("#reportGroup_IsEnableFolder").prop("checked");
  564. let groupIndex = $("#txt_reportgroupindex").val();
  565. if ($("#txt_GroupName").val() == "")
  566. return MessageHelper.Instance().showError("Please select ReportGroup", 'divReportGroup_ErrorMessage');
  567. let model = new Unibase.Platform.Analytics.Reports.Requests.ReportGroup();
  568. model.GroupName = String($("#txt_GroupName").val());
  569. model.ReportGroupId = id;
  570. model.IsInternalGroup = isInternal;
  571. model.EnableFolder = isEnableFolder;
  572. model.ReportGroupIndex = !parseInt(groupIndex) ? 0 : parseInt(groupIndex);
  573. model.ParentGroupId = instance.parentGroupId;
  574. model.DisplayName = String($("#txt_displayname").val());
  575. instance._reportManager.saveReportGroup(model).then(function (response) {
  576. let res = JSON.parse(response.result);
  577. if (response.status == Unibase.Data.Status.Error) {
  578. MessageHelper.Instance().showError(response.message, 'divReportGroup_ErrorMessage');
  579. }
  580. else {
  581. $("#RptGroup_AutoComplete").append("<option selected value=" + res.ReportGroupId + ">" + res.GroupName + "</option>");
  582. MessageHelper.Instance().showSuccess(response.message, '');
  583. $('#' + containerid).modal('hide');
  584. $('#' + containerid).remove();
  585. }
  586. });
  587. });
  588. $("#btn_CloseForm").click(function () {
  589. $('#' + containerid).modal('hide');
  590. $('#' + containerid).remove();
  591. $("#RptGroup_AutoComplete").remove();
  592. });
  593. instance.loadReportGroups();
  594. $("#parentgroupid").change(function (e) {
  595. instance.parentGroupId = Number(e.currentTarget.value);
  596. var parentGroupName = e.currentTarget.textContent.trim();
  597. if (instance.groupId == instance.parentGroupId) {
  598. e.currentTarget.value = "0";
  599. e.currentTarget.textContent = "";
  600. MessageHelper.Instance().showError(`Cannot select same report group as parent group`, 'divReportGroup_ErrorMessage');
  601. return false;
  602. }
  603. if (instance.groupId && instance.parentGroupId) {
  604. instance._reportManager.checkReportGroupDependency(instance.groupId, instance.parentGroupId).then((response) => {
  605. if (response.status == Unibase.Data.Status.Success && response.result) {
  606. e.currentTarget.value = "0";
  607. e.currentTarget.textContent = "";
  608. 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');
  609. return false;
  610. }
  611. });
  612. }
  613. });
  614. }
  615. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  616. var instance = this;
  617. instance.navigationHelper.popup(0, '', instance, null, Platform.Helpers.Size.Large);
  618. }
  619. loadReportGroupForm(iscreate) {
  620. var Pk_Value = 0;
  621. var instance = this;
  622. if (!iscreate) {
  623. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  624. }
  625. instance.navigationHelper.popup(Pk_Value, '', instance, null, Platform.Helpers.Size.Large);
  626. }
  627. editReportGroup() {
  628. var instance = this;
  629. var reportGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  630. instance.navigationHelper.popup(reportGroupId, "", instance, null, Unibase.Platform.Helpers.Size.Large);
  631. }
  632. loadReportGroup(id) {
  633. var instance = this;
  634. instance._reportManager.getReportGroupById(id).then(function (response) {
  635. if (response.status == Unibase.Data.Status.Success) {
  636. var res = response.result;
  637. instance.groupId = response.result.ReportGroupId;
  638. instance.groupName = response.result.GroupName;
  639. instance.displayName = response.result.DisplayName;
  640. $("#txt_GroupName").val(res.GroupName).attr("disabled", "disabled");
  641. $("#reportGroup_IsInternalGroup").prop("checked", res.IsInternalGroup);
  642. $("#reportGroup_IsEnableFolder").prop("checked", res.EnableFolder);
  643. $("#txt_reportgroupindex").val(res.ReportGroupIndex);
  644. $("#txt_displayname").val(res.DisplayName);
  645. if (res.ParentGroupId) {
  646. instance.parentGroupId = res.ParentGroupId;
  647. instance._reportManager.getReportGroupById(res.ParentGroupId).then(res => {
  648. if (res.status == Unibase.Data.Status.Success) {
  649. var option = new Option(res.result.RecursiveParentName, res.result.ReportGroupId.toString(), true, true);
  650. $("#parentgroupid").append(option);
  651. }
  652. });
  653. }
  654. }
  655. else {
  656. return MessageHelper.Instance().showError(response.message, "divReportGroup_ErrorMessage");
  657. }
  658. });
  659. }
  660. exportGroupReports(reportgroupid) {
  661. var instance = this;
  662. var ReportGroupId = 0;
  663. if (reportgroupid == 0)
  664. ReportGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  665. else
  666. ReportGroupId = reportgroupid;
  667. if (ReportGroupId != 0) {
  668. instance.navigationHelper.showLoading();
  669. instance._reportManager.getReportGroupById(ReportGroupId).then(function (response) {
  670. let groupname = response.result.GroupName;
  671. instance._reportManager.exportGroupreports(ReportGroupId).then(function (rptgrpresponse) {
  672. var filename = groupname + ".xml";
  673. var xmltext = rptgrpresponse.result;
  674. var pom = document.createElement('a');
  675. var bb = new Blob([xmltext], { type: 'text/plain' });
  676. pom.setAttribute('href', window.URL.createObjectURL(bb));
  677. pom.setAttribute('download', filename);
  678. pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
  679. pom.draggable = true;
  680. pom.classList.add('dragout');
  681. pom.click();
  682. instance.navigationHelper.hideLoading();
  683. });
  684. });
  685. }
  686. }
  687. deleteReportGroup() {
  688. const reportGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  689. const reportCount = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportcount")).Value);
  690. if (!reportCount) {
  691. bootbox.confirm("Are you sure to delete this group?", (result) => {
  692. if (result) {
  693. this._reportManager.deleteReportGroup(reportGroupId).then((response) => {
  694. if (response.status == Unibase.Data.Status.Success) {
  695. MessageHelper.Instance().showSuccess("Report group has been sucessfully deleted", 'divReportGroup_ErrorMessage');
  696. Unibase.Platform.Apps.Managers.AppManager.Instance().getInstallAppId("Unibase_Platform_Analytics_Reports_App_ReportsGroup").then((response) => {
  697. if (response.status == Unibase.Data.Status.Success)
  698. Unibase.Themes.Compact.Components.Nav.Instance().loadList(response.result.InstalledAppId);
  699. });
  700. }
  701. else
  702. MessageHelper.Instance().showError(response.message, 'divReportGroup_ErrorMessage');
  703. });
  704. }
  705. });
  706. }
  707. else
  708. bootbox.confirm("One or more reports are associated with this group, Please ensure to delete all reports associated with this group before deleting", () => { });
  709. }
  710. loadReportGroups() {
  711. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reportgroups_autocompleterecursive';
  712. AutoCompleteHelper.getHelper().Create("#parentgroupid", "#hfAutoComplete_ReportGroup", url, null);
  713. }
  714. updateStatus() {
  715. var instance = this;
  716. let reportidGroupId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("reportgroupid")).Value);
  717. let statusId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("statusid")).Value);
  718. let installedappId = Number(Unibase.Themes.Providers.DetailHelper.installedAppId);
  719. $("#DetailSetting_" + installedappId + "_Active").removeClass("btn-outline-primary");
  720. if (statusId == Unibase.Platform.Core.Enums.RowStatus.Active) {
  721. $("#DetailSetting_" + installedappId + "_Active").addClass("btn-success");
  722. $("#DetailSetting_" + installedappId + "_Active").removeClass("btn-red");
  723. }
  724. else {
  725. $("#DetailSetting_" + installedappId + "_Active").removeClass("btn-success");
  726. $("#DetailSetting_" + installedappId + "_Active").addClass("btn-red");
  727. }
  728. $("#DetailSetting_" + installedappId + "_Active").text((statusId == Unibase.Platform.Core.Enums.RowStatus.Active) ? "Active" : "InActive");
  729. $("#DetailSetting_" + installedappId + "_Active").click(function () {
  730. let id = Unibase.Platform.Core.Enums.RowStatus.Active;
  731. if ($("#DetailSetting_" + installedappId + "_Active").text() == "Active")
  732. id = Unibase.Platform.Core.Enums.RowStatus.InActive;
  733. instance._reportManager.updateReportGroupStatus(reportidGroupId, id).then(function (statusres) {
  734. if (statusres.status == Unibase.Data.Status.Success) {
  735. }
  736. });
  737. });
  738. }
  739. static Instance() {
  740. if (this.instance === undefined) {
  741. this.instance = new ReportGroup();
  742. }
  743. return this.instance;
  744. }
  745. }
  746. Reports.ReportGroup = ReportGroup;
  747. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  748. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  749. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  750. })(Unibase || (Unibase = {}));
  751. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  752. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  753. return new (P || (P = Promise))(function (resolve, reject) {
  754. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  755. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  756. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  757. step((generator = generator.apply(thisArg, _arguments || [])).next());
  758. });
  759. };
  760. var Unibase;
  761. (function (Unibase) {
  762. let Platform;
  763. (function (Platform) {
  764. let Analytics;
  765. (function (Analytics) {
  766. let Reports;
  767. (function (Reports) {
  768. class SubReport extends Platform.Core.BaseComponent {
  769. constructor() {
  770. super();
  771. this.subReportId = 0;
  772. this.isDetail = false;
  773. this.linkreport_aliasname = "";
  774. this.inline = true;
  775. this.appName = "";
  776. this.childReportName = "";
  777. this.filters = [];
  778. this.filterIndex = 0;
  779. this.subReportsExists = false;
  780. this.childReportId = 0;
  781. this.parentReportId = 0;
  782. this.isReportDuplicate = false;
  783. this._reportManager = Analytics.Managers.ReportManager.Instance();
  784. this._reportBuilder = Reports.ReportBuilder.Instance();
  785. this._reportBuilderTemplate = Reports.ReportBuilder_Template.Instance();
  786. }
  787. cssFiles() {
  788. return [];
  789. }
  790. jsFiles() {
  791. var jsFiles = ['platform/analytics/managers/reportmanager.js', 'platform/analytics/enums/subreporttype.js'];
  792. return jsFiles;
  793. }
  794. html(id, containerid) {
  795. let html = this._reportBuilderTemplate.loadLinkToOtherReportForm();
  796. return html;
  797. }
  798. load(id, containerid, callback) {
  799. var instance = this;
  800. instance.filters = [];
  801. instance.filterIndex = 0;
  802. instance.isDetail = false;
  803. instance.inline = true;
  804. instance.subReportEdit();
  805. $("#btnConfigAddFilter").click(function (e) {
  806. instance.filterIndex++;
  807. let isValueElement = $(e.target).closest(".form-row").find("[id^=isvalue_radio]");
  808. let isValue = isValueElement.prop("checked");
  809. let parametername = $("#cmbmainrptCols option:selected").text().trim();
  810. let parametervalue = $("#cmbsbrptCols option:selected").text().trim();
  811. let operator = $("#slctdoperater option:selected").text().trim();
  812. let isValueText = $("#cmbmainrptCols_textbox").val();
  813. if (!isValue && parametername.toLowerCase() == "main report columns")
  814. return MessageHelper.Instance().showError("Please select main report column", "sub_report_error_message");
  815. else if (isValue && !isValueText)
  816. return MessageHelper.Instance().showError("Please enter text in main report value column", "sub_report_error_message");
  817. if (operator.toLowerCase() == '-select-')
  818. return MessageHelper.Instance().showError("Please select operator type", "sub_report_error_message");
  819. if (isValue && isValueText == parametervalue.toLowerCase())
  820. return MessageHelper.Instance().showError("Main report column name and value column and is value text cannot be same", "sub_report_error_message");
  821. if (parametervalue.toLowerCase() == "sub report column")
  822. return MessageHelper.Instance().showError("Please select sub report column", "sub_report_error_message");
  823. if (isValue)
  824. parametername = isValueText;
  825. instance.filters.push({
  826. ParameterName: parametername,
  827. ParameterValue: parametervalue,
  828. Operator: operator,
  829. Isvalue: isValue,
  830. });
  831. instance.addSubReportFilter(parametername, parametervalue, operator, isValue);
  832. if (isValue) {
  833. $("#cmbmainrptCols_textbox").val("");
  834. isValueElement.trigger("click");
  835. }
  836. $('#cmbmainrptCols').val(0).trigger('change');
  837. $('#cmbsbrptCols').val(0).trigger('change');
  838. $('#slctdoperater').val(0).trigger('change');
  839. });
  840. $("#btnLinkReportSave").click(() => {
  841. let subReportArray = instance.getSubReportContainerArray();
  842. if (instance.isDetail) {
  843. instance.saveSubReport_DetailFields();
  844. }
  845. else {
  846. if (instance.saveSubReport_Report(subReportArray))
  847. return;
  848. }
  849. if (instance.linkreport_aliasname == undefined) {
  850. var table = instance._reportBuilder.table;
  851. var autoNumFormatter = function (cell) {
  852. var row = cell.getRow();
  853. var rowIndex = row.getPosition(false);
  854. return (rowIndex + 1);
  855. };
  856. 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") {
  857. var hideIcon = function (cell, formatterParams, onRendered) {
  858. return "<i class='fa fa-eye'></i>";
  859. };
  860. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  861. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  862. }
  863. }
  864. $('#' + containerid).modal('hide');
  865. $('#' + containerid).remove();
  866. });
  867. $("#btnLinkReportClose").click(function () {
  868. $('#' + containerid).modal('hide');
  869. $('#' + containerid).remove();
  870. });
  871. $("#subrpt_clear").click(function () {
  872. if (instance._reportBuilder.subreportdata.length != 0) {
  873. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  874. if (subfil_Index > -1) {
  875. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  876. }
  877. }
  878. });
  879. $(".select_reports").change(function () {
  880. let reportId = Number($(".select_reports").val());
  881. instance.subReportColumns(reportId);
  882. });
  883. $('.subreport-radio-btn').change(function () {
  884. if ($(this).val() == 'report') {
  885. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  886. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  887. $('#subrpt_plus').removeClass('d-none');
  888. }
  889. }
  890. else {
  891. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  892. $('#subrpt_plus').addClass('d-none');
  893. }
  894. });
  895. $('.opentype-radio-btn').change(function () {
  896. if ($(this).val() == 'inline') {
  897. instance.inline = true;
  898. $('#subrpt_plus').removeClass('d-none');
  899. }
  900. else {
  901. instance.inline = false;
  902. $('#subrpt_plus').addClass('d-none');
  903. }
  904. if (instance._reportBuilder.subreportdata.length != 0) {
  905. let index;
  906. if (instance.linkreport_aliasname) {
  907. index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  908. }
  909. else {
  910. index = instance._reportBuilder.subreportdata.findIndex(s => s.RowClick == true);
  911. }
  912. if (index > -1) {
  913. instance._reportBuilder.subreportdata[index].Inline = instance.inline;
  914. }
  915. }
  916. });
  917. $("#isvalue_radio_0").unbind().click((e) => {
  918. let isChecked = $(e.target).prop("checked");
  919. $(e.target).closest(".form-row").find("#div_mainreportColumn_textbox").parent().toggleClass("hidden");
  920. $(e.target).closest(".form-row").find("#div_mainreportColumn").parent().toggleClass("hidden");
  921. });
  922. }
  923. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  924. return [];
  925. }
  926. linkreport(aliasname) {
  927. var instance = this;
  928. instance.linkreport_aliasname = aliasname;
  929. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  930. }
  931. ;
  932. loadReports() {
  933. var instance = this;
  934. instance.childReportName = "";
  935. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reports';
  936. AutoCompleteHelper.getHelper().Create(".select_reports", "hfReportAutoComplete", url, function (res) { instance.childReportName = res.text.trim(); });
  937. }
  938. mainReportColumns() {
  939. var instance = this;
  940. var mainrpt_Cols = [];
  941. if (instance._reportBuilder.selectedColumns.length != 0) {
  942. mainrpt_Cols.push({ id: 0, text: "Main Report Columns" });
  943. for (let i = 0; i < instance._reportBuilder.selectedColumns.length; i++) {
  944. let sCol = instance._reportBuilder.selectedColumns[i];
  945. mainrpt_Cols.push({ id: sCol.AliasName, text: sCol.AliasName });
  946. }
  947. $('#cmbmainrptCols').select2({
  948. placeholder: 'Select',
  949. data: mainrpt_Cols,
  950. });
  951. }
  952. }
  953. subReportColumns(reportid) {
  954. var instance = this;
  955. instance._reportManager.getColumns(reportid).then(function (subresponse) {
  956. var subrpt_data = [];
  957. for (let i = 0; i < subresponse.result.length; i++) {
  958. subrpt_data.push({ id: subresponse.result[i].ReportColumnId, text: subresponse.result[i].AliasName });
  959. }
  960. $('#cmbsbrptCols').select2({
  961. placeholder: 'Select',
  962. data: subrpt_data,
  963. });
  964. });
  965. }
  966. loadInstalledApps() {
  967. return __awaiter(this, void 0, void 0, function* () {
  968. var instance = this;
  969. instance.appName = "";
  970. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  971. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfAutoComplete_InstalledApp", url, function (res) { instance.appName = res.text.trim(); });
  972. });
  973. }
  974. primaryColumns() {
  975. var instance = this;
  976. var mainrpt_Cols = [];
  977. if (instance._reportBuilder.selectedColumns.length != 0) {
  978. mainrpt_Cols.push({ id: 0, text: "Main Report Columns" });
  979. for (let i = 0; i < instance._reportBuilder.selectedColumns.length; i++) {
  980. let sCol = instance._reportBuilder.selectedColumns[i];
  981. mainrpt_Cols.push({ id: sCol.AliasName, text: sCol.AliasName });
  982. }
  983. $('#detailPrimaryKeyColumns').select2({
  984. placeholder: 'Select',
  985. data: mainrpt_Cols,
  986. });
  987. }
  988. }
  989. addSubReportFilter(paramname, paramvalue, operator, isValue) {
  990. var Confightml = "";
  991. let id = paramname.replace(' ', '_').trim() + paramvalue.replace(' ', '_').trim();
  992. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10">
  993. <div class="col-auto mt-2 mr-2">
  994. <input class="" type="checkbox" readonly title="Is value" ${isValue && 'checked'} onclick="return false">
  995. </div>
  996. <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>`;
  997. $(".ul2list_0").append(Confightml);
  998. if ($(".ul2list_0").children().length == 1) {
  999. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("disabled");
  1000. }
  1001. }
  1002. subReportEdit() {
  1003. return __awaiter(this, void 0, void 0, function* () {
  1004. var instance = this;
  1005. yield instance.loadReports();
  1006. instance.mainReportColumns();
  1007. instance.primaryColumns();
  1008. yield instance.loadInstalledApps();
  1009. instance.subReportsExists = false;
  1010. let subReportArray = instance.getSubReportContainerArray();
  1011. if (subReportArray != undefined) {
  1012. var subfil_Index;
  1013. if (subReportArray.length)
  1014. instance.subReportsExists = true;
  1015. if (instance.linkreport_aliasname)
  1016. subfil_Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1017. else {
  1018. subfil_Index = subReportArray.findIndex(s => s.RowClick == true);
  1019. if (subfil_Index == -1) {
  1020. subfil_Index = subReportArray.findIndex(s => !s.AliasName && s.SubReportTypeId == Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail);
  1021. }
  1022. }
  1023. if (subfil_Index > -1) {
  1024. var subrpt_data = subReportArray[subfil_Index];
  1025. if (subrpt_data.SubReportTypeId == Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report) {
  1026. $("#reportRadioBtn").prop("checked", true);
  1027. $(".select_reports").empty().append('<option value = "' + subrpt_data.ChildReportId + '" > ' + subrpt_data.ChildReportName + ' </option>');
  1028. $(".select_reports").val(subrpt_data.ChildReportId);
  1029. instance.subReportId = subrpt_data.SubReportId;
  1030. instance.childReportId = subrpt_data.ChildReportId;
  1031. instance.parentReportId = subrpt_data.ReportId;
  1032. instance.subReportColumns(subrpt_data.ChildReportId);
  1033. var filters = JSON.parse(subrpt_data.Filters);
  1034. for (var f = 0; f < filters.length; f++) {
  1035. let fill = filters[f];
  1036. let id = fill.ParameterName.replaceAll(' ', '_').trim() + fill.ParameterValue.replaceAll(' ', '_').trim();
  1037. Confightml = `<li id="li_filter_ul2list_0${id}" class="fltr-row filteritems-addedrow clear" ><div class="form-row mb-10">
  1038. <div class="col-auto mt-2 mr-2">
  1039. <input class="" type="checkbox" readonly title="Is value" ${fill.Isvalue && 'checked'} onclick="return false">
  1040. </div>
  1041. <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>`;
  1042. $(".ul2list_0").append(Confightml);
  1043. !f && $(".ul2list_0").find(".filter-remove-btn").addClass("disabled");
  1044. instance.filters.push(fill);
  1045. }
  1046. var Confightml = "";
  1047. if (!subrpt_data.Inline)
  1048. $("#outlineRadioBtn").prop("checked", true);
  1049. else
  1050. $("#inlineRadioBtn").prop("checked", true);
  1051. instance.inline = subrpt_data.Inline;
  1052. }
  1053. else {
  1054. instance.isDetail = true;
  1055. instance.subrpt_AliasName = subrpt_data.AliasName;
  1056. instance.installedAppId = subrpt_data.InstalledAppId;
  1057. instance.primaryKeyColumn = subrpt_data.PrimaryKeyColumn;
  1058. $("#detailRadioBtn").prop("checked", true);
  1059. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1060. $('#subrpt_plus').addClass('d-none');
  1061. $("#detailInstalledApps").empty().append('<option value = "' + subrpt_data.InstalledAppId + '" > ' + subrpt_data.AppName + ' </option>');
  1062. $("#detailInstalledApps").val(subrpt_data.InstalledAppId);
  1063. $('#detailPrimaryKeyColumns').val(subrpt_data.PrimaryKeyColumn).trigger('change');
  1064. }
  1065. }
  1066. }
  1067. });
  1068. }
  1069. subReportType_Deatil() {
  1070. var instance = this;
  1071. instance.isDetail = true;
  1072. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1073. if (subfil_Index > -1) {
  1074. var subfill = instance._reportBuilder.subreportdata[subfil_Index];
  1075. var fil = JSON.parse(subfill.Filters);
  1076. for (var i = 0; i < fil.length; i++) {
  1077. let id = fil[i].ParameterName.replace(' ', '_') + fil[i].ParameterValue.replace(' ', '_');
  1078. $("#li_filter_ul2list_0" + id).remove();
  1079. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  1080. }
  1081. }
  1082. $('.select_reports').val(0).trigger('change');
  1083. $('#cmbmainrptCols').val(0).trigger('change');
  1084. $('#cmbsbrptCols').val(0).trigger('change');
  1085. instance.primaryColumns();
  1086. instance.loadInstalledApps();
  1087. }
  1088. subReportType_Report() {
  1089. var instance = this;
  1090. instance.isDetail = false;
  1091. var subfil_Index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1092. if (subfil_Index > -1) {
  1093. $('#detailInstalledApps').val('0').trigger('change');
  1094. $('#detailPrimaryKeyColumns').val('0').trigger('change');
  1095. $("#txt_detailonclick").val("");
  1096. instance._reportBuilder.subreportdata.splice(subfil_Index, 1);
  1097. }
  1098. }
  1099. saveSubReport_Report(subReportArray) {
  1100. var instance = this;
  1101. var rowclick = true;
  1102. if (instance.linkreport_aliasname)
  1103. rowclick = false;
  1104. let reportType = this._reportBuilder.res ? this._reportBuilder.res.ReportTypeId : this._reportBuilder.reportType;
  1105. let isChart = reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table ? false : true;
  1106. var subreportdata = new NestedTableModel();
  1107. subreportdata.ChildReportId = Number($('.select_reports').val());
  1108. subreportdata.ChildReportName = instance.childReportName;
  1109. subreportdata.Filters = JSON.stringify(instance.filters);
  1110. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  1111. subreportdata.Inline = instance.inline;
  1112. subreportdata.RowClick = rowclick;
  1113. subreportdata.AliasName = instance.linkreport_aliasname;
  1114. if (!subreportdata.ChildReportId && !instance.subReportsExists) {
  1115. MessageHelper.Instance().showError("Please select sub report ", "sub_report_error_message");
  1116. return true;
  1117. }
  1118. else if (subreportdata.Filters == '[]' && !instance.subReportsExists && !isChart) {
  1119. MessageHelper.Instance().showError("Please select sub report columns ", "sub_report_error_message");
  1120. return true;
  1121. }
  1122. if (subReportArray.length != 0 && typeof (subReportArray) == 'object') {
  1123. var Index;
  1124. if (instance.linkreport_aliasname)
  1125. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1126. else
  1127. Index = subReportArray.findIndex(s => s.RowClick == true);
  1128. if (Index > -1 && subreportdata.ChildReportId) {
  1129. subReportArray[Index] = subreportdata;
  1130. }
  1131. else if (subreportdata.ChildReportId) {
  1132. subReportArray.push(subreportdata);
  1133. }
  1134. }
  1135. else {
  1136. if (subreportdata.ChildReportId)
  1137. subReportArray.push(subreportdata);
  1138. }
  1139. instance._reportBuilder.subreportdata = subReportArray;
  1140. return false;
  1141. }
  1142. saveSubReport_DetailFields() {
  1143. var instance = this;
  1144. var subreportdata = new NestedTableModel();
  1145. subreportdata.InstalledAppId = Number($("#detailInstalledApps").val());
  1146. subreportdata.PrimaryKeyColumn = $("#detailPrimaryKeyColumns option:selected").text().trim();
  1147. subreportdata.Inline = instance.inline;
  1148. subreportdata.SubReportTypeId = ($("#detailRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail : 0;
  1149. subreportdata.AliasName = instance.linkreport_aliasname;
  1150. subreportdata.AppName = instance.appName;
  1151. if (subreportdata.PrimaryKeyColumn.toLowerCase() == "select column")
  1152. return MessageHelper.Instance().showError("Please select primary key column", "sub_report_error_message");
  1153. else if (!subreportdata.InstalledAppId)
  1154. return MessageHelper.Instance().showError("Please select installed app", "sub_report_error_message");
  1155. let subReportArray = instance.getSubReportContainerArray();
  1156. if (subReportArray.length != 0) {
  1157. var Index;
  1158. if (instance.linkreport_aliasname)
  1159. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1160. else
  1161. Index = subReportArray.findIndex(s => s.RowClick == true);
  1162. if (Index > -1 && subreportdata.AppName != 'Select') {
  1163. subReportArray[Index] = subreportdata;
  1164. }
  1165. else if (subreportdata.AppName != 'Select') {
  1166. subReportArray.push(subreportdata);
  1167. }
  1168. }
  1169. else {
  1170. subReportArray.push(subreportdata);
  1171. }
  1172. }
  1173. removefilters(reportid, mainreportcolumn, subreportcolumn, id) {
  1174. var instance = this;
  1175. if (instance.linkreport_aliasname) {
  1176. if (instance._reportBuilder.subreportdata.length != 0) {
  1177. var index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1178. if (index > -1) {
  1179. instance._reportBuilder.subreportdata.splice(index, 1);
  1180. }
  1181. }
  1182. }
  1183. else {
  1184. if (instance.filters.length == 1) {
  1185. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  1186. return (o.ChildReportId === reportid);
  1187. });
  1188. if (index !== -1)
  1189. instance._reportBuilder.subreportdata.splice(index, 1);
  1190. }
  1191. }
  1192. var fillIndex = instance.filters.findIndex(function (f) { return (f.ParameterName == mainreportcolumn) && (f.ParameterValue === subreportcolumn); });
  1193. if (fillIndex > -1)
  1194. instance.filters.splice(fillIndex, 1);
  1195. if (!instance.filters.length)
  1196. $(event.target).closest(".report-body").find(".select_reports.custom-select").empty();
  1197. $("#" + id + "").empty();
  1198. }
  1199. ;
  1200. load_old(id, containerid, callback) {
  1201. var instance = this;
  1202. $('#cmbmainrptCols_1').empty();
  1203. var data = [];
  1204. var subreportid = 0;
  1205. instance._reportManager.getReports().then(function (response) {
  1206. var Data = response;
  1207. data.push({ id: 0, text: "Select" });
  1208. data.push({ id: 0, text: "Select" });
  1209. for (let i = 0; i < Data.length; i++) {
  1210. data.push({ id: Data[i].ReportId, text: Data[i].ReportName });
  1211. }
  1212. $('.select_reports').select2({
  1213. placeholder: 'Select',
  1214. data: data,
  1215. }).on('select2:select', function (e) {
  1216. var reportid = Number($(".select_reports").val());
  1217. let sub_blk = this.closest(".sub-report-block");
  1218. if (sub_blk)
  1219. $(sub_blk).data("subreportid", reportid.toString());
  1220. $("#cmbsbrptCols_1").find('option').not(':first').remove();
  1221. instance._reportManager.getColumns(reportid).then(function (response) {
  1222. for (let i = 0; i < response.result.length; i++) {
  1223. var columnname = response.result[i].DisplayText;
  1224. var columnvalue = response.result[i].ReportColumnId;
  1225. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbsbrptCols_1');
  1226. }
  1227. });
  1228. });
  1229. if (instance._reportBuilder.subreporttabledata != undefined && instance._reportBuilder.subreporttabledata != null && instance._reportBuilder.subreporttabledata != "") {
  1230. if (instance._reportBuilder.subreporttabledata.length > 0) {
  1231. var subreports_array = [];
  1232. var subarray = [];
  1233. var element = [];
  1234. var currentsubreport = [];
  1235. instance._reportBuilder.subreportdata = [];
  1236. instance._reportBuilder.subreport_count = 1;
  1237. for (let m = 0; m < instance._reportBuilder.subreporttabledata.length; m++) {
  1238. instance._reportManager.getColumns(instance._reportBuilder.subreporttabledata[m].ChildReportId).then(function (response) {
  1239. currentsubreport.push(instance._reportBuilder.subreporttabledata[m]);
  1240. element.push(response.result[0].ReportId);
  1241. subarray.push(response.result);
  1242. if (element.length == instance._reportBuilder.subreporttabledata.length) {
  1243. let k = 1;
  1244. for (let i = 0; i < currentsubreport.length; i++) {
  1245. if (i != 0) {
  1246. instance.subReportId = currentsubreport[i].SubReportId;
  1247. $("#subrpt_plus").trigger("click");
  1248. k = i + 1;
  1249. if (data.length == 0) {
  1250. }
  1251. $("#cmdsub_" + k + "").select2({
  1252. placeholder: 'Select',
  1253. data: data,
  1254. });
  1255. let lastSubEle = $("#linkreport_modal").find(".sub-report-block").last();
  1256. lastSubEle.data("subreportid", currentsubreport[i].ChildReportId);
  1257. lastSubEle.data("subreportcolumnid", currentsubreport[i].SubReportColumnId);
  1258. }
  1259. $("#cmdsub_" + k + "").val(currentsubreport[i].ChildReportId).trigger('change');
  1260. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + k + "");
  1261. var whole_tableData = instance._reportBuilder.selectedColumns;
  1262. for (let j = 0; j < whole_tableData.length; j++) {
  1263. var columnname = whole_tableData[j].DisplayText;
  1264. var columnvalue = whole_tableData[j].ColumnId;
  1265. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + k + "");
  1266. }
  1267. let subcolumns = subarray[i].filter(function (o) { return o.ReportId === currentsubreport[i].ChildReportId; });
  1268. $("#cmbsbrptCols_" + k + "").find('option').not(':first').remove();
  1269. for (let l = 0; l < subcolumns.length; l++) {
  1270. var columnname = subcolumns[l].DisplayText;
  1271. var columnvalue = subcolumns[l].ReportColumnId;
  1272. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + k + "");
  1273. }
  1274. $("#btnAdd_" + instance._reportBuilder.subreport_count + "").unbind().click(function () {
  1275. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1276. instance.addfilter(id[0], 0);
  1277. $("#btnDeleteCouponItem_" + id[0] + "").click(function () {
  1278. instance.removefilters(Number($("#reporthid_" + id[0] + "").val()), Number($("#mainreportcolumnhid_" + id[0] + "").val()), Number($("#subreportcolumnhid_" + id[0] + "").val()), "ul2list_" + id[0] + "");
  1279. });
  1280. });
  1281. $("#cmbmainrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterValue).replace('@', '').trim() + "')").prop('selected', true);
  1282. $("#cmbsbrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterName).trim() + "')").prop('selected', true);
  1283. if (k == 1) {
  1284. subreportid = currentsubreport[i].SubReportId;
  1285. $("#btnConfigAddFilter").click();
  1286. }
  1287. else {
  1288. subreportid = currentsubreport[i].SubReportId;
  1289. $("#btnAdd_" + k + "").click();
  1290. }
  1291. instance.subReportId = 0;
  1292. }
  1293. }
  1294. });
  1295. }
  1296. }
  1297. }
  1298. else {
  1299. $('<option>').val(0).text('Select Column').appendTo('#cmbmainrptCols_1');
  1300. var whole_tableData = instance._reportBuilder.selectedColumns;
  1301. for (let i = 0; i < whole_tableData.length; i++) {
  1302. var columnname = whole_tableData[i].ColumnName;
  1303. var columnvalue = whole_tableData[i].ColumnId;
  1304. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbmainrptCols_1,#detailPrimaryKeyColumns');
  1305. }
  1306. }
  1307. });
  1308. $("#btnLinkReportSave").click(function () {
  1309. if (instance.isDetail) {
  1310. instance.subReportType_Deatil();
  1311. }
  1312. var table = instance._reportBuilder.table;
  1313. var autoNumFormatter = function (cell) {
  1314. var row = cell.getRow();
  1315. var rowIndex = row.getPosition(false);
  1316. return (rowIndex + 1);
  1317. };
  1318. if (table.element.children[1].lastChild.firstChild.firstElementChild.firstChild.className != "fa fa-eye") {
  1319. var hideIcon = function (cell, formatterParams, onRendered) {
  1320. return "<i class='fa fa-eye'></i>";
  1321. };
  1322. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  1323. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  1324. }
  1325. $('#' + containerid).modal('hide');
  1326. $('#' + containerid).remove();
  1327. var data = instance._reportBuilder.subreportdata;
  1328. });
  1329. var Confightml = "";
  1330. $("#btnConfigAddFilter").click(function (e) {
  1331. let text = $("#cmbmainrptCols_1 option:selected").text();
  1332. let text1 = $("#cmbsbrptCols_1 option:selected").text();
  1333. if (text == "Select Column" || text1 == "Sub report column")
  1334. return;
  1335. let exists = instance._reportBuilder.subreportdata.find(x => x.ParameterValue == text && x.ParameterName == text1);
  1336. if (exists)
  1337. return;
  1338. let opertaor = $("#slctdoperater_0 option:selected").text();
  1339. let id = text.replaceAll(' ', '_') + text1.replaceAll(' ', '_');
  1340. 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>`;
  1341. $(".ul2list_0").append(Confightml);
  1342. if ($(".ul2list_0").children().length == 1)
  1343. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("hidden");
  1344. var subreportdata = new NestedTableModel();
  1345. if (instance._reportBuilder.reportid != 0) {
  1346. subreportdata.SubReportId = subreportid;
  1347. }
  1348. subreportdata.ChildReportId = Number($('.select_reports').val());
  1349. subreportdata.Operator = $("#slctdoperater_0 option:selected").text();
  1350. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_1 option:selected").val());
  1351. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_1 option:selected").val());
  1352. subreportdata.ReportColumnName = $("#cmbmainrptCols_1 option:selected").text();
  1353. subreportdata.SubReportColumnName = $("#cmbsbrptCols_1 option:selected").text();
  1354. subreportdata.ParameterValue = $("#cmbmainrptCols_1 option:selected").text();
  1355. subreportdata.ParameterName = $("#cmbsbrptCols_1 option:selected").text();
  1356. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  1357. subreportdata.ReportId = instance._reportBuilder.reportid;
  1358. instance.childReportId = subreportdata.ChildReportId;
  1359. instance.parentReportId = subreportdata.ReportId;
  1360. instance._reportBuilder.subreportdata.push(subreportdata);
  1361. instance._reportBuilder.subreporttabledata = instance._reportBuilder.subreportdata;
  1362. $("#cmbmainrptCols_1").val("0");
  1363. $("#cmbsbrptCols_1").val("0");
  1364. });
  1365. $("#btnLinkReportClose").click(function () {
  1366. $('#' + containerid).modal('hide');
  1367. $('#' + containerid).remove();
  1368. });
  1369. $("#subrpt_plus").click(function () {
  1370. const subreportCnt = $("[id^=btnAdd]").length + 2;
  1371. var template = instance._reportBuilderTemplate.del_loadSubReports_Section();
  1372. var templateScript = Handlebars.compile(template);
  1373. var context = { "subreport_count": subreportCnt };
  1374. var html = templateScript(context);
  1375. $("#linkreport_modal").append(html);
  1376. $("#cmdsub_" + subreportCnt + "").select2({
  1377. placeholder: 'Select',
  1378. data: data,
  1379. });
  1380. var main_reportcolumns = instance._reportBuilder.selectedColumns;
  1381. $("#cmbmainrptCols_" + subreportCnt + "").empty();
  1382. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + subreportCnt + "");
  1383. for (let i = 0; i < main_reportcolumns.length; i++) {
  1384. var columnname = main_reportcolumns[i].ColumnName;
  1385. var columnvalue = main_reportcolumns[i].ColumnId;
  1386. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + subreportCnt + "");
  1387. }
  1388. $("#btnAdd_" + subreportCnt + "").click(function () {
  1389. var colid = $(this).closest(".sub-report-block").find("#div_subColumn").children().first().val();
  1390. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1391. instance.addfilter(id[0], 0);
  1392. let sub_blk = this.closest(".sub-report-block");
  1393. if (sub_blk && colid)
  1394. $(sub_blk).data("subreportcolumnid", colid);
  1395. });
  1396. $("#cmdsub_" + subreportCnt + "").on('select2:select', function (e) {
  1397. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1398. var reportid = Number($("#cmdsub_" + id[0] + "").val());
  1399. let sub_blk = this.closest(".sub-report-block");
  1400. if (sub_blk)
  1401. $(sub_blk).data("subreportid", reportid.toString());
  1402. $("#cmbsbrptCols_" + id[0] + "").find('option').not(':first').remove();
  1403. instance._reportManager.getColumns(reportid).then(function (response) {
  1404. for (let i = 0; i < response.result.length; i++) {
  1405. var columnname = response.result[i].DisplayText;
  1406. var columnvalue = response.result[i].ReportColumnId;
  1407. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + id[0] + "");
  1408. }
  1409. });
  1410. });
  1411. $("#cmbsbrpt_" + subreportCnt).empty();
  1412. $("#cmbsbrpt_" + subreportCnt).append('<option value="0">--Select SubReport--</option>');
  1413. });
  1414. $("#linkreport_modal").click(this.subReportMdown.bind(this));
  1415. const installedAppsUrl = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1416. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfDetailInstalledApps", installedAppsUrl, null);
  1417. $('.subreport-radio-btn').change(function () {
  1418. if ($(this).val() == 'report') {
  1419. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1420. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  1421. $('#subrpt_plus').removeClass('d-none');
  1422. }
  1423. }
  1424. else {
  1425. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1426. $('#subrpt_plus').addClass('d-none');
  1427. }
  1428. });
  1429. $('.opentype-radio-btn').change(function () {
  1430. if ($(this).val() == 'inline') {
  1431. $('#subrpt_plus').removeClass('d-none');
  1432. }
  1433. else {
  1434. $('#subrpt_plus').addClass('d-none');
  1435. }
  1436. });
  1437. }
  1438. removefilters_old(reportid, mainreportcolumn, subreportcolumn, id) {
  1439. var instance = this;
  1440. $("#" + id + "").empty();
  1441. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  1442. return (o.ChildReportId === reportid) && (o.ReportColumnId === mainreportcolumn) && (o.SubReportColumnId === subreportcolumn);
  1443. });
  1444. if (index !== -1)
  1445. instance._reportBuilder.subreportdata.splice(index, 1);
  1446. }
  1447. ;
  1448. addfilter(id, SubReportId) {
  1449. var instance = this;
  1450. let text = $("#cmbmainrptCols_" + id + " option:selected").text();
  1451. let text1 = $("#cmbsbrptCols_" + id + " option:selected").text();
  1452. let opertaor = $("#slctdoperater_" + id + " option:selected").text();
  1453. 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>`;
  1454. $(".ul2list_" + id + "").append(filterhtml);
  1455. var subreportdata = new NestedTableModel();
  1456. subreportdata.SubReportId = instance.subReportId || SubReportId;
  1457. subreportdata.ChildReportId = Number($("#cmdsub_" + id + "").val());
  1458. subreportdata.Operator = $("#slctdoperater_" + id + " option:selected").text();
  1459. subreportdata.ParameterValue = $("#cmbmainrptCols_" + id + " option:selected").text();
  1460. subreportdata.ParameterName = $("#cmbsbrptCols_" + id + " option:selected").text();
  1461. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_" + id + " option:selected").val());
  1462. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_" + id + " option:selected").val());
  1463. subreportdata.ReportColumnName = ($("#cmbmainrptCols_" + id + " option:selected").text());
  1464. subreportdata.SubReportColumnName = $("#cmbsbrptCols_" + id + " option:selected").text();
  1465. instance._reportBuilder.subreportdata.push(subreportdata);
  1466. $("#cmbmainrptCols_" + id).val("0");
  1467. $("#cmbsbrptCols_" + id).val("0");
  1468. }
  1469. ;
  1470. linkreport_old() {
  1471. var instance = this;
  1472. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  1473. }
  1474. ;
  1475. subReportMdown(e) {
  1476. let subrp = e.target.closest(".sub-report-block");
  1477. let childReportId = $(subrp).data("subreportid");
  1478. if (childReportId)
  1479. childReportId = Number(childReportId);
  1480. if (e.target.classList.contains("remove_subrpt") || e.target.closest(".remove_subrpt")) {
  1481. let sRIdx;
  1482. if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length == 1) {
  1483. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  1484. if (sRIdx != -1)
  1485. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1486. }
  1487. else if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length > 1) {
  1488. let childReportColumnId = Number($(subrp).data("subreportcolumnid"));
  1489. if (childReportColumnId) {
  1490. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId && x.SubReportColumnId == childReportColumnId);
  1491. if (sRIdx != -1)
  1492. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1493. }
  1494. }
  1495. subrp.remove();
  1496. }
  1497. else if (e.target.classList.contains("remove_subrpt_columns") || e.target.closest(".remove_subrpt_columns")) {
  1498. let sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  1499. if (sRIdx != -1)
  1500. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1501. $(e.target).closest(".filteritems-addedrow").remove();
  1502. }
  1503. }
  1504. removeSubreport() {
  1505. let idx = -1;
  1506. let subReportArray = this.getSubReportContainerArray();
  1507. if (!this.isDetail) {
  1508. if (this.subReportId)
  1509. idx = subReportArray.findIndex(x => x.SubReportId == this.subReportId);
  1510. else
  1511. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  1512. if (idx > -1) {
  1513. this.linkreport_aliasname = '';
  1514. this.filters = [];
  1515. this.childReportName = '';
  1516. subReportArray.splice(idx, 1);
  1517. }
  1518. $("#subreports-filters-list").empty();
  1519. $("#cmdsub_1").val("0").empty();
  1520. }
  1521. else {
  1522. if (this.installedAppId)
  1523. idx = subReportArray.findIndex(x => x.AliasName == this.subrpt_AliasName && x.InstalledAppId == this.installedAppId);
  1524. else
  1525. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  1526. if (idx > -1) {
  1527. this.installedAppId = 0;
  1528. subReportArray.splice(idx, 1);
  1529. }
  1530. $("#detailPrimaryKeyColumns").val("0").trigger("change");
  1531. $("#detailInstalledApps").val("0").trigger("change");
  1532. }
  1533. }
  1534. getSubReportContainerArray() {
  1535. if (this.isReportDuplicate) {
  1536. return Analytics.Components.DuplicateReport.Instance().subReports;
  1537. }
  1538. else {
  1539. return this._reportBuilder.subreportdata;
  1540. }
  1541. }
  1542. static Instance() {
  1543. if (this.instance === undefined) {
  1544. this.instance = new SubReport();
  1545. }
  1546. return this.instance;
  1547. }
  1548. }
  1549. Reports.SubReport = SubReport;
  1550. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1551. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1552. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1553. })(Unibase || (Unibase = {}));
  1554. var Unibase;
  1555. (function (Unibase) {
  1556. let Platform;
  1557. (function (Platform) {
  1558. let Analytics;
  1559. (function (Analytics) {
  1560. let Reports;
  1561. (function (Reports) {
  1562. class ColumnFormat {
  1563. loadFormats(DataType) {
  1564. var formats = [];
  1565. if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  1566. 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' }];
  1567. }
  1568. else if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.decimal) {
  1569. 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' }];
  1570. }
  1571. return formats;
  1572. }
  1573. static Instance() {
  1574. if (this.instance === undefined) {
  1575. this.instance = new ColumnFormat();
  1576. }
  1577. return this.instance;
  1578. }
  1579. }
  1580. Reports.ColumnFormat = ColumnFormat;
  1581. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1582. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1583. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1584. })(Unibase || (Unibase = {}));
  1585. var Unibase;
  1586. (function (Unibase) {
  1587. let Platform;
  1588. (function (Platform) {
  1589. let Analytics;
  1590. (function (Analytics) {
  1591. let Reports;
  1592. (function (Reports) {
  1593. class ReportRoleSettings extends Platform.Core.BaseComponent {
  1594. constructor() {
  1595. super();
  1596. this.isSingleAppSelected = false;
  1597. this.reportManager = Analytics.Managers.ReportManager.Instance();
  1598. }
  1599. cssFiles() {
  1600. return [];
  1601. }
  1602. jsFiles() {
  1603. var jsFiles = ['platform/analytics/managers/reportmanager.js'];
  1604. return jsFiles;
  1605. }
  1606. html(id, containerid) {
  1607. let html = `<section id="link-report-section" class="modal-content">
  1608. <div class="modal-header pa-10" id="reportrolesetting_header">
  1609. <strong class="modal-title biz-highlight-bg-color">Role Settings</strong>
  1610. </div>
  1611. <div data-simplebar class="simple-scroll-bar">
  1612. <div id="divRoleSetting_ErrorMessage"></div>
  1613. <div class="modal-body bg-charcoal-light-5 sub-report-block" id="reportrolesetting_modal">
  1614. <div class="report-rolesettings-block card" data-select2-id="24">
  1615. <div data-select2-id="23">
  1616. <header class="report-rolesettings-head">
  1617. <h6 class="required">
  1618. Role Settings
  1619. </h6>
  1620. <span>
  1621. <i class="las la-braille dragger"></i>
  1622. </span>
  1623. </button>
  1624. </header>
  1625. <div id="subrpts_div" data-select2-id="subrpts_div" class="">
  1626. <div class="report-body">
  1627. <div class="form-group">
  1628. <div id="divsubrpt_0" data-select2-id="divsubrpt_">
  1629. <div class="form-row">
  1630. <div class="col">
  1631. <div id="div_installedapps">
  1632. <input type="hidden" id="hfrolesettings_installedapps">
  1633. <select id="rolesettings_installedapps" class="form-control text-control required">
  1634. <option value="0" selected="">Apps</option>
  1635. </select>
  1636. </div>
  1637. </div>
  1638. <div class="col">
  1639. <div id="div_rolesettings">
  1640. <select id="rolesettings_ddl" class="form-control custom-select mb-10 required">
  1641. <option value="0" selected="">Role Settings</option>
  1642. </select>
  1643. </div>
  1644. </div>
  1645. <div class="col-auto">
  1646. <a class="btn btn-icon btn-theme" id="btnConfigAddRoleSetting" onclick="" ;="">
  1647. <span class="btn-icon-wrap"><span class="line-icon text-white"><i class="las la-plus"></i></span></span>
  1648. </a>
  1649. </div>
  1650. </div>
  1651. <div class="m-t-sm">
  1652. <div class="form-row">
  1653. <div class="col px-4 py-2">
  1654. <strong> App Name </strong>
  1655. </div>
  1656. <div class="col py-2">
  1657. <strong> RoleSetting </strong>
  1658. </div>
  1659. <div class="col-auto py-2 px-4">
  1660. <a class="invisible"><i class="fa fa-close text-danger"></i></a>
  1661. </div>
  1662. </div>
  1663. </div>
  1664. <div id="RoleSettingExp"></div>
  1665. </div>
  1666. </div>
  1667. </div>
  1668. </div>
  1669. </div>
  1670. </div>
  1671. </div>
  1672. </div>
  1673. </div></div>
  1674. <div class="modal-footer pa-10" id="linkreport_footer">
  1675. <button type="button" class="btn btn-sm btn-light mr-auto" id="btnRoleSettingsClose">Cancel</button>
  1676. <button type="button" class="btn btn-sm btn-primary" id="btnRoleSettingsSave">Save</button>
  1677. </div>
  1678. </section>`;
  1679. return html;
  1680. }
  1681. load(id, containerid, callback) {
  1682. var instance = this;
  1683. let isRoleSettingsExists = false;
  1684. instance._reportbuilder = Reports.ReportBuilder.Instance();
  1685. $("#btnRoleSettingsClose").click(function () {
  1686. $('#' + containerid).modal('hide');
  1687. $('#' + containerid).remove();
  1688. if (instance.isSingleAppSelected) {
  1689. instance._reportbuilder.roleSettings = [];
  1690. instance.isSingleAppSelected = false;
  1691. }
  1692. });
  1693. $('#rolesettings_installedapps').empty();
  1694. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length)
  1695. isRoleSettingsExists = true;
  1696. if (instance._reportbuilder.roleSettings != null) {
  1697. for (let i = 0; i < instance._reportbuilder.roleSettings.length; i++) {
  1698. let item = instance._reportbuilder.roleSettings[i];
  1699. instance.appendRoleSetting(item.AppTitle, item.SettingName);
  1700. }
  1701. }
  1702. $("#btnConfigAddRoleSetting").click(function () {
  1703. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length >= 1) {
  1704. let idx = instance._reportbuilder.selectedColumns.findIndex(x => x.AliasName == 'installedappid');
  1705. if (idx == -1) {
  1706. MessageHelper.Instance().showError("Please add installedappid column in order to select app", "divRoleSetting_ErrorMessage");
  1707. return false;
  1708. }
  1709. }
  1710. var appName = $("#rolesettings_installedapps option:selected").text();
  1711. var installedappid = $("#rolesettings_installedapps option:selected").val();
  1712. var rolesetting = $("#rolesettings_ddl option:selected").text();
  1713. if (appName == "" || rolesetting == "")
  1714. return;
  1715. var lefNavigationInstalledAppId = Number($("#InstalledApp_AutoComplete option:selected").val());
  1716. if (installedappid == lefNavigationInstalledAppId) {
  1717. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length == 1) {
  1718. instance.isSingleAppSelected = true;
  1719. }
  1720. 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');
  1721. }
  1722. var rolset = false;
  1723. if (instance._reportbuilder.roleSettings != null)
  1724. rolset = instance._reportbuilder.roleSettings.find(x => x.AppTitle == appName && x.SettingName == rolesetting) ? true : false;
  1725. if (!rolset) {
  1726. instance.appendRoleSetting(appName, rolesetting);
  1727. instance._reportbuilder.roleSettings.push({
  1728. InstalledAppId: Number($("#rolesettings_installedapps option:selected").val()),
  1729. AppPermissionId: Number($("#rolesettings_ddl option:selected").val()),
  1730. AppTitle: appName,
  1731. SettingName: rolesetting,
  1732. });
  1733. }
  1734. $("#rolesettings_installedapps").html('<option value="0" selected="">Apps</option>').val("0");
  1735. $("#rolesettings_ddl").html('<option value="0" selected="">Role Settings</option>').val("0");
  1736. });
  1737. $("#btnRoleSettingsSave").click(function () {
  1738. if (instance._reportbuilder.roleSettings != null) {
  1739. if (instance._reportbuilder.roleSettings.length == 0 && !isRoleSettingsExists) {
  1740. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  1741. }
  1742. else if (instance._reportbuilder.roleSettings.length < 2) {
  1743. var inst = $("#InstalledApp_AutoComplete").val();
  1744. if (instance._reportbuilder.roleSettings.length == 1) {
  1745. instance.isSingleAppSelected = true;
  1746. }
  1747. if (!inst)
  1748. return MessageHelper.Instance().showError('Use installed app field in left navigation of report builder, if report have only one role setting', 'divRoleSetting_ErrorMessage');
  1749. }
  1750. else if (instance._reportbuilder.roleSettings.length == 2) {
  1751. let installedid = $("#InstalledApp_AutoComplete option:selected").val();
  1752. if (installedid) {
  1753. return MessageHelper.Instance().showError('Remove installedapp from left navigation of report builder to use multiple report role settings', 'divRoleSetting_ErrorMessage');
  1754. }
  1755. }
  1756. if (instance._reportbuilder.roleSettings.length > 1) {
  1757. instance.isSingleAppSelected = false;
  1758. }
  1759. }
  1760. else {
  1761. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  1762. }
  1763. $('#' + containerid).modal('hide');
  1764. $('#' + containerid).remove();
  1765. });
  1766. instance.loadInstalledApps();
  1767. }
  1768. loadInstalledApps() {
  1769. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1770. AutoCompleteHelper.getHelper().Create("#rolesettings_installedapps", "#hfrolesettings_installedapps", url, function (response) {
  1771. var installedappid = $("#hfrolesettings_installedapps").val();
  1772. Unibase.Platform.Apps.Managers.AppManager.Instance().getAppPermissions(installedappid).then(function (response) {
  1773. var drpdata = '';
  1774. $("#rolesettings_ddl").html("");
  1775. var data = response.result;
  1776. let viewPermission = data.find(function (x) { return x.SettingName.toLowerCase() == 'view'; });
  1777. if (viewPermission) {
  1778. $("#rolesettings_ddl").append('<option value="' + viewPermission.AppPermissionId + '" columnvalue="" selected>' + viewPermission.SettingName + '</option>').val(viewPermission.AppPermissionId).trigger("change");
  1779. }
  1780. });
  1781. });
  1782. }
  1783. appendRoleSetting(appName, rolesetting) {
  1784. let ulDiv = 'ulAppName_' + appName.replace(/ /g, "_") + '-' + rolesetting.replace(/ /g, "_");
  1785. var rshtml = '<div class="border border-1 mt-2 ulDatalistFilters_' + appName.replace(" ", "_") + rolesetting.replace(" ", "_") + '" id = "' + ulDiv + '">' +
  1786. '<div class="form-row" id="li_AppName_' + appName + rolesetting + '"> ' +
  1787. '<div class="col py-2 px-4 lblappname"> ' + appName + ' </div> ' +
  1788. '<div class="col py-2 px-4 lblrolesetting"> ' + rolesetting + ' </div>' +
  1789. '<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>' +
  1790. '</div>' +
  1791. '</div>';
  1792. $("#RoleSettingExp").append(rshtml);
  1793. }
  1794. RemoveRoleSettingExp(appname, rolesetting, ul) {
  1795. var instance = this;
  1796. $("#" + ul + "").remove();
  1797. var index = instance._reportbuilder.roleSettings.findIndex(function (r) {
  1798. return (r.AppTitle === appname && r.SettingName === rolesetting);
  1799. });
  1800. if (index !== -1)
  1801. instance._reportbuilder.roleSettings.splice(index, 1);
  1802. }
  1803. static Instance() {
  1804. if (this.instance === undefined) {
  1805. this.instance = new ReportRoleSettings();
  1806. }
  1807. return this.instance;
  1808. }
  1809. }
  1810. Reports.ReportRoleSettings = ReportRoleSettings;
  1811. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1812. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1813. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1814. })(Unibase || (Unibase = {}));