Built files from Bizgaze WebServer
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.reportbuilder.js 126KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824
  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 (isChart && subreportdata.Filters == '[]') {
  1123. this._reportBuilder.linkReportId = subreportdata.ChildReportId;
  1124. }
  1125. if (subReportArray.length != 0 && typeof (subReportArray) == 'object') {
  1126. var Index;
  1127. if (instance.linkreport_aliasname)
  1128. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1129. else
  1130. Index = subReportArray.findIndex(s => s.RowClick == true);
  1131. if (Index > -1 && subreportdata.Filters != "[]" && subreportdata.ChildReportId) {
  1132. subReportArray[Index] = subreportdata;
  1133. }
  1134. else if (subreportdata.Filters != "[]" && subreportdata.ChildReportId) {
  1135. subReportArray.push(subreportdata);
  1136. }
  1137. }
  1138. else {
  1139. if (subreportdata.ChildReportId)
  1140. subReportArray.push(subreportdata);
  1141. }
  1142. instance._reportBuilder.subreporttabledata = subReportArray;
  1143. return false;
  1144. }
  1145. saveSubReport_DetailFields() {
  1146. var instance = this;
  1147. var subreportdata = new NestedTableModel();
  1148. subreportdata.InstalledAppId = Number($("#detailInstalledApps").val());
  1149. subreportdata.PrimaryKeyColumn = $("#detailPrimaryKeyColumns option:selected").text().trim();
  1150. subreportdata.Inline = instance.inline;
  1151. subreportdata.SubReportTypeId = ($("#detailRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Detail : 0;
  1152. subreportdata.AliasName = instance.linkreport_aliasname;
  1153. subreportdata.AppName = instance.appName;
  1154. if (subreportdata.PrimaryKeyColumn.toLowerCase() == "select column")
  1155. return MessageHelper.Instance().showError("Please select primary key column", "sub_report_error_message");
  1156. else if (!subreportdata.InstalledAppId)
  1157. return MessageHelper.Instance().showError("Please select installed app", "sub_report_error_message");
  1158. let subReportArray = instance.getSubReportContainerArray();
  1159. if (subReportArray.length != 0) {
  1160. var Index;
  1161. if (instance.linkreport_aliasname)
  1162. Index = subReportArray.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1163. else
  1164. Index = subReportArray.findIndex(s => s.RowClick == true);
  1165. if (Index > -1 && subreportdata.AppName != 'Select') {
  1166. subReportArray[Index] = subreportdata;
  1167. }
  1168. else if (subreportdata.AppName != 'Select') {
  1169. subReportArray.push(subreportdata);
  1170. }
  1171. }
  1172. else {
  1173. subReportArray.push(subreportdata);
  1174. }
  1175. }
  1176. removefilters(reportid, mainreportcolumn, subreportcolumn, id) {
  1177. var instance = this;
  1178. if (instance.linkreport_aliasname) {
  1179. if (instance._reportBuilder.subreportdata.length != 0) {
  1180. var index = instance._reportBuilder.subreportdata.findIndex(s => s.AliasName == instance.linkreport_aliasname);
  1181. if (index > -1) {
  1182. instance._reportBuilder.subreportdata.splice(index, 1);
  1183. }
  1184. }
  1185. }
  1186. else {
  1187. if (instance.filters.length == 1) {
  1188. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  1189. return (o.ChildReportId === reportid);
  1190. });
  1191. if (index !== -1)
  1192. instance._reportBuilder.subreportdata.splice(index, 1);
  1193. }
  1194. }
  1195. var fillIndex = instance.filters.findIndex(function (f) { return (f.ParameterName == mainreportcolumn) && (f.ParameterValue === subreportcolumn); });
  1196. if (fillIndex > -1)
  1197. instance.filters.splice(fillIndex, 1);
  1198. if (!instance.filters.length)
  1199. $(event.target).closest(".report-body").find(".select_reports.custom-select").empty();
  1200. $("#" + id + "").empty();
  1201. }
  1202. ;
  1203. load_old(id, containerid, callback) {
  1204. var instance = this;
  1205. $('#cmbmainrptCols_1').empty();
  1206. var data = [];
  1207. var subreportid = 0;
  1208. instance._reportManager.getReports().then(function (response) {
  1209. var Data = response;
  1210. data.push({ id: 0, text: "Select" });
  1211. data.push({ id: 0, text: "Select" });
  1212. for (let i = 0; i < Data.length; i++) {
  1213. data.push({ id: Data[i].ReportId, text: Data[i].ReportName });
  1214. }
  1215. $('.select_reports').select2({
  1216. placeholder: 'Select',
  1217. data: data,
  1218. }).on('select2:select', function (e) {
  1219. var reportid = Number($(".select_reports").val());
  1220. let sub_blk = this.closest(".sub-report-block");
  1221. if (sub_blk)
  1222. $(sub_blk).data("subreportid", reportid.toString());
  1223. $("#cmbsbrptCols_1").find('option').not(':first').remove();
  1224. instance._reportManager.getColumns(reportid).then(function (response) {
  1225. for (let i = 0; i < response.result.length; i++) {
  1226. var columnname = response.result[i].DisplayText;
  1227. var columnvalue = response.result[i].ReportColumnId;
  1228. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbsbrptCols_1');
  1229. }
  1230. });
  1231. });
  1232. if (instance._reportBuilder.subreporttabledata != undefined && instance._reportBuilder.subreporttabledata != null && instance._reportBuilder.subreporttabledata != "") {
  1233. if (instance._reportBuilder.subreporttabledata.length > 0) {
  1234. var subreports_array = [];
  1235. var subarray = [];
  1236. var element = [];
  1237. var currentsubreport = [];
  1238. instance._reportBuilder.subreportdata = [];
  1239. instance._reportBuilder.subreport_count = 1;
  1240. for (let m = 0; m < instance._reportBuilder.subreporttabledata.length; m++) {
  1241. instance._reportManager.getColumns(instance._reportBuilder.subreporttabledata[m].ChildReportId).then(function (response) {
  1242. currentsubreport.push(instance._reportBuilder.subreporttabledata[m]);
  1243. element.push(response.result[0].ReportId);
  1244. subarray.push(response.result);
  1245. if (element.length == instance._reportBuilder.subreporttabledata.length) {
  1246. let k = 1;
  1247. for (let i = 0; i < currentsubreport.length; i++) {
  1248. if (i != 0) {
  1249. instance.subReportId = currentsubreport[i].SubReportId;
  1250. $("#subrpt_plus").trigger("click");
  1251. k = i + 1;
  1252. if (data.length == 0) {
  1253. }
  1254. $("#cmdsub_" + k + "").select2({
  1255. placeholder: 'Select',
  1256. data: data,
  1257. });
  1258. let lastSubEle = $("#linkreport_modal").find(".sub-report-block").last();
  1259. lastSubEle.data("subreportid", currentsubreport[i].ChildReportId);
  1260. lastSubEle.data("subreportcolumnid", currentsubreport[i].SubReportColumnId);
  1261. }
  1262. $("#cmdsub_" + k + "").val(currentsubreport[i].ChildReportId).trigger('change');
  1263. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + k + "");
  1264. var whole_tableData = instance._reportBuilder.selectedColumns;
  1265. for (let j = 0; j < whole_tableData.length; j++) {
  1266. var columnname = whole_tableData[j].DisplayText;
  1267. var columnvalue = whole_tableData[j].ColumnId;
  1268. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + k + "");
  1269. }
  1270. let subcolumns = subarray[i].filter(function (o) { return o.ReportId === currentsubreport[i].ChildReportId; });
  1271. $("#cmbsbrptCols_" + k + "").find('option').not(':first').remove();
  1272. for (let l = 0; l < subcolumns.length; l++) {
  1273. var columnname = subcolumns[l].DisplayText;
  1274. var columnvalue = subcolumns[l].ReportColumnId;
  1275. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + k + "");
  1276. }
  1277. $("#btnAdd_" + instance._reportBuilder.subreport_count + "").unbind().click(function () {
  1278. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1279. instance.addfilter(id[0], 0);
  1280. $("#btnDeleteCouponItem_" + id[0] + "").click(function () {
  1281. instance.removefilters(Number($("#reporthid_" + id[0] + "").val()), Number($("#mainreportcolumnhid_" + id[0] + "").val()), Number($("#subreportcolumnhid_" + id[0] + "").val()), "ul2list_" + id[0] + "");
  1282. });
  1283. });
  1284. $("#cmbmainrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterValue).replace('@', '').trim() + "')").prop('selected', true);
  1285. $("#cmbsbrptCols_" + k + " option:contains('" + (currentsubreport[i].ParameterName).trim() + "')").prop('selected', true);
  1286. if (k == 1) {
  1287. subreportid = currentsubreport[i].SubReportId;
  1288. $("#btnConfigAddFilter").click();
  1289. }
  1290. else {
  1291. subreportid = currentsubreport[i].SubReportId;
  1292. $("#btnAdd_" + k + "").click();
  1293. }
  1294. instance.subReportId = 0;
  1295. }
  1296. }
  1297. });
  1298. }
  1299. }
  1300. }
  1301. else {
  1302. $('<option>').val(0).text('Select Column').appendTo('#cmbmainrptCols_1');
  1303. var whole_tableData = instance._reportBuilder.selectedColumns;
  1304. for (let i = 0; i < whole_tableData.length; i++) {
  1305. var columnname = whole_tableData[i].ColumnName;
  1306. var columnvalue = whole_tableData[i].ColumnId;
  1307. $('<option>').val(columnvalue).text(columnname).appendTo('#cmbmainrptCols_1,#detailPrimaryKeyColumns');
  1308. }
  1309. }
  1310. });
  1311. $("#btnLinkReportSave").click(function () {
  1312. if (instance.isDetail) {
  1313. instance.subReportType_Deatil();
  1314. }
  1315. var table = instance._reportBuilder.table;
  1316. var autoNumFormatter = function (cell) {
  1317. var row = cell.getRow();
  1318. var rowIndex = row.getPosition(false);
  1319. return (rowIndex + 1);
  1320. };
  1321. if (table.element.children[1].lastChild.firstChild.firstElementChild.firstChild.className != "fa fa-eye") {
  1322. var hideIcon = function (cell, formatterParams, onRendered) {
  1323. return "<i class='fa fa-eye'></i>";
  1324. };
  1325. table.addColumn({ formatter: autoNumFormatter, title: "", headerSort: false, minWidth: 20, }, true);
  1326. table.addColumn({ formatter: hideIcon, title: "", headerSort: false }, true);
  1327. }
  1328. $('#' + containerid).modal('hide');
  1329. $('#' + containerid).remove();
  1330. var data = instance._reportBuilder.subreportdata;
  1331. });
  1332. var Confightml = "";
  1333. $("#btnConfigAddFilter").click(function (e) {
  1334. let text = $("#cmbmainrptCols_1 option:selected").text();
  1335. let text1 = $("#cmbsbrptCols_1 option:selected").text();
  1336. if (text == "Select Column" || text1 == "Sub report column")
  1337. return;
  1338. let exists = instance._reportBuilder.subreportdata.find(x => x.ParameterValue == text && x.ParameterName == text1);
  1339. if (exists)
  1340. return;
  1341. let opertaor = $("#slctdoperater_0 option:selected").text();
  1342. let id = text.replaceAll(' ', '_') + text1.replaceAll(' ', '_');
  1343. 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>`;
  1344. $(".ul2list_0").append(Confightml);
  1345. if ($(".ul2list_0").children().length == 1)
  1346. $(".ul2list_0").children().first().find(".filter-remove-btn").addClass("hidden");
  1347. var subreportdata = new NestedTableModel();
  1348. if (instance._reportBuilder.reportid != 0) {
  1349. subreportdata.SubReportId = subreportid;
  1350. }
  1351. subreportdata.ChildReportId = Number($('.select_reports').val());
  1352. subreportdata.Operator = $("#slctdoperater_0 option:selected").text();
  1353. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_1 option:selected").val());
  1354. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_1 option:selected").val());
  1355. subreportdata.ReportColumnName = $("#cmbmainrptCols_1 option:selected").text();
  1356. subreportdata.SubReportColumnName = $("#cmbsbrptCols_1 option:selected").text();
  1357. subreportdata.ParameterValue = $("#cmbmainrptCols_1 option:selected").text();
  1358. subreportdata.ParameterName = $("#cmbsbrptCols_1 option:selected").text();
  1359. subreportdata.SubReportTypeId = ($("#reportRadioBtn").is(":checked")) ? Unibase.Platform.Analytics.Reports.Enums.SubReportType.Report : 0;
  1360. subreportdata.ReportId = instance._reportBuilder.reportid;
  1361. instance.childReportId = subreportdata.ChildReportId;
  1362. instance.parentReportId = subreportdata.ReportId;
  1363. instance._reportBuilder.subreportdata.push(subreportdata);
  1364. instance._reportBuilder.subreporttabledata = instance._reportBuilder.subreportdata;
  1365. $("#cmbmainrptCols_1").val("0");
  1366. $("#cmbsbrptCols_1").val("0");
  1367. });
  1368. $("#btnLinkReportClose").click(function () {
  1369. $('#' + containerid).modal('hide');
  1370. $('#' + containerid).remove();
  1371. });
  1372. $("#subrpt_plus").click(function () {
  1373. const subreportCnt = $("[id^=btnAdd]").length + 2;
  1374. var template = instance._reportBuilderTemplate.del_loadSubReports_Section();
  1375. var templateScript = Handlebars.compile(template);
  1376. var context = { "subreport_count": subreportCnt };
  1377. var html = templateScript(context);
  1378. $("#linkreport_modal").append(html);
  1379. $("#cmdsub_" + subreportCnt + "").select2({
  1380. placeholder: 'Select',
  1381. data: data,
  1382. });
  1383. var main_reportcolumns = instance._reportBuilder.selectedColumns;
  1384. $("#cmbmainrptCols_" + subreportCnt + "").empty();
  1385. $('<option>').val(0).text('Select Column').appendTo("#cmbmainrptCols_" + subreportCnt + "");
  1386. for (let i = 0; i < main_reportcolumns.length; i++) {
  1387. var columnname = main_reportcolumns[i].ColumnName;
  1388. var columnvalue = main_reportcolumns[i].ColumnId;
  1389. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbmainrptCols_" + subreportCnt + "");
  1390. }
  1391. $("#btnAdd_" + subreportCnt + "").click(function () {
  1392. var colid = $(this).closest(".sub-report-block").find("#div_subColumn").children().first().val();
  1393. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1394. instance.addfilter(id[0], 0);
  1395. let sub_blk = this.closest(".sub-report-block");
  1396. if (sub_blk && colid)
  1397. $(sub_blk).data("subreportcolumnid", colid);
  1398. });
  1399. $("#cmdsub_" + subreportCnt + "").on('select2:select', function (e) {
  1400. var id = $(this).attr('id').match(/\d+/g).map(Number);
  1401. var reportid = Number($("#cmdsub_" + id[0] + "").val());
  1402. let sub_blk = this.closest(".sub-report-block");
  1403. if (sub_blk)
  1404. $(sub_blk).data("subreportid", reportid.toString());
  1405. $("#cmbsbrptCols_" + id[0] + "").find('option').not(':first').remove();
  1406. instance._reportManager.getColumns(reportid).then(function (response) {
  1407. for (let i = 0; i < response.result.length; i++) {
  1408. var columnname = response.result[i].DisplayText;
  1409. var columnvalue = response.result[i].ReportColumnId;
  1410. $('<option>').val(columnvalue).text(columnname).appendTo("#cmbsbrptCols_" + id[0] + "");
  1411. }
  1412. });
  1413. });
  1414. $("#cmbsbrpt_" + subreportCnt).empty();
  1415. $("#cmbsbrpt_" + subreportCnt).append('<option value="0">--Select SubReport--</option>');
  1416. });
  1417. $("#linkreport_modal").click(this.subReportMdown.bind(this));
  1418. const installedAppsUrl = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1419. AutoCompleteHelper.getHelper().Create("#detailInstalledApps", "#hfDetailInstalledApps", installedAppsUrl, null);
  1420. $('.subreport-radio-btn').change(function () {
  1421. if ($(this).val() == 'report') {
  1422. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1423. if ($('.opentype-radio-btn:checked').val() == 'inline') {
  1424. $('#subrpt_plus').removeClass('d-none');
  1425. }
  1426. }
  1427. else {
  1428. $('#linkreport_modal,#detailScreenBody').toggleClass('d-none');
  1429. $('#subrpt_plus').addClass('d-none');
  1430. }
  1431. });
  1432. $('.opentype-radio-btn').change(function () {
  1433. if ($(this).val() == 'inline') {
  1434. $('#subrpt_plus').removeClass('d-none');
  1435. }
  1436. else {
  1437. $('#subrpt_plus').addClass('d-none');
  1438. }
  1439. });
  1440. }
  1441. removefilters_old(reportid, mainreportcolumn, subreportcolumn, id) {
  1442. var instance = this;
  1443. $("#" + id + "").empty();
  1444. var index = instance._reportBuilder.subreportdata.findIndex(function (o) {
  1445. return (o.ChildReportId === reportid) && (o.ReportColumnId === mainreportcolumn) && (o.SubReportColumnId === subreportcolumn);
  1446. });
  1447. if (index !== -1)
  1448. instance._reportBuilder.subreportdata.splice(index, 1);
  1449. }
  1450. ;
  1451. addfilter(id, SubReportId) {
  1452. var instance = this;
  1453. let text = $("#cmbmainrptCols_" + id + " option:selected").text();
  1454. let text1 = $("#cmbsbrptCols_" + id + " option:selected").text();
  1455. let opertaor = $("#slctdoperater_" + id + " option:selected").text();
  1456. 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>`;
  1457. $(".ul2list_" + id + "").append(filterhtml);
  1458. var subreportdata = new NestedTableModel();
  1459. subreportdata.SubReportId = instance.subReportId || SubReportId;
  1460. subreportdata.ChildReportId = Number($("#cmdsub_" + id + "").val());
  1461. subreportdata.Operator = $("#slctdoperater_" + id + " option:selected").text();
  1462. subreportdata.ParameterValue = $("#cmbmainrptCols_" + id + " option:selected").text();
  1463. subreportdata.ParameterName = $("#cmbsbrptCols_" + id + " option:selected").text();
  1464. subreportdata.ReportColumnId = Number($("#cmbmainrptCols_" + id + " option:selected").val());
  1465. subreportdata.SubReportColumnId = Number($("#cmbsbrptCols_" + id + " option:selected").val());
  1466. subreportdata.ReportColumnName = ($("#cmbmainrptCols_" + id + " option:selected").text());
  1467. subreportdata.SubReportColumnName = $("#cmbsbrptCols_" + id + " option:selected").text();
  1468. instance._reportBuilder.subreportdata.push(subreportdata);
  1469. $("#cmbmainrptCols_" + id).val("0");
  1470. $("#cmbsbrptCols_" + id).val("0");
  1471. }
  1472. ;
  1473. linkreport_old() {
  1474. var instance = this;
  1475. instance.navigationHelper.popup(0, '', this, null, Platform.Helpers.Size.Medium);
  1476. }
  1477. ;
  1478. subReportMdown(e) {
  1479. let subrp = e.target.closest(".sub-report-block");
  1480. let childReportId = $(subrp).data("subreportid");
  1481. if (childReportId)
  1482. childReportId = Number(childReportId);
  1483. if (e.target.classList.contains("remove_subrpt") || e.target.closest(".remove_subrpt")) {
  1484. let sRIdx;
  1485. if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length == 1) {
  1486. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  1487. if (sRIdx != -1)
  1488. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1489. }
  1490. else if (this._reportBuilder.subreportdata.filter(x => x.ChildReportId == childReportId).length > 1) {
  1491. let childReportColumnId = Number($(subrp).data("subreportcolumnid"));
  1492. if (childReportColumnId) {
  1493. sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId && x.SubReportColumnId == childReportColumnId);
  1494. if (sRIdx != -1)
  1495. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1496. }
  1497. }
  1498. subrp.remove();
  1499. }
  1500. else if (e.target.classList.contains("remove_subrpt_columns") || e.target.closest(".remove_subrpt_columns")) {
  1501. let sRIdx = this._reportBuilder.subreportdata.findIndex(x => x.ChildReportId == childReportId);
  1502. if (sRIdx != -1)
  1503. this._reportBuilder.subreportdata.splice(sRIdx, 1);
  1504. $(e.target).closest(".filteritems-addedrow").remove();
  1505. }
  1506. }
  1507. removeSubreport() {
  1508. let idx = -1;
  1509. let subReportArray = this.getSubReportContainerArray();
  1510. if (!this.isDetail) {
  1511. if (this.subReportId)
  1512. idx = subReportArray.findIndex(x => x.SubReportId == this.subReportId);
  1513. else
  1514. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  1515. if (idx > -1) {
  1516. this.linkreport_aliasname = '';
  1517. this.filters = [];
  1518. this.childReportName = '';
  1519. subReportArray.splice(idx, 1);
  1520. }
  1521. $("#subreports-filters-list").empty();
  1522. $("#cmdsub_1").val("0").empty();
  1523. }
  1524. else {
  1525. if (this.installedAppId)
  1526. idx = subReportArray.findIndex(x => x.AliasName == this.subrpt_AliasName && x.InstalledAppId == this.installedAppId);
  1527. else
  1528. idx = subReportArray.findIndex(x => x.ReportId == this.parentReportId && x.ChildReportId == this.childReportId);
  1529. if (idx > -1) {
  1530. this.installedAppId = 0;
  1531. subReportArray.splice(idx, 1);
  1532. }
  1533. $("#detailPrimaryKeyColumns").val("0").trigger("change");
  1534. $("#detailInstalledApps").val("0").trigger("change");
  1535. }
  1536. }
  1537. getSubReportContainerArray() {
  1538. if (this.isReportDuplicate) {
  1539. return Analytics.Components.DuplicateReport.Instance().subReports;
  1540. }
  1541. else {
  1542. return this._reportBuilder.subreportdata;
  1543. }
  1544. }
  1545. static Instance() {
  1546. if (this.instance === undefined) {
  1547. this.instance = new SubReport();
  1548. }
  1549. return this.instance;
  1550. }
  1551. }
  1552. Reports.SubReport = SubReport;
  1553. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1554. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1555. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1556. })(Unibase || (Unibase = {}));
  1557. var Unibase;
  1558. (function (Unibase) {
  1559. let Platform;
  1560. (function (Platform) {
  1561. let Analytics;
  1562. (function (Analytics) {
  1563. let Reports;
  1564. (function (Reports) {
  1565. class ColumnFormat {
  1566. loadFormats(DataType) {
  1567. var formats = [];
  1568. if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  1569. 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' }];
  1570. }
  1571. else if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.decimal) {
  1572. 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' }];
  1573. }
  1574. return formats;
  1575. }
  1576. static Instance() {
  1577. if (this.instance === undefined) {
  1578. this.instance = new ColumnFormat();
  1579. }
  1580. return this.instance;
  1581. }
  1582. }
  1583. Reports.ColumnFormat = ColumnFormat;
  1584. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1585. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1586. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1587. })(Unibase || (Unibase = {}));
  1588. var Unibase;
  1589. (function (Unibase) {
  1590. let Platform;
  1591. (function (Platform) {
  1592. let Analytics;
  1593. (function (Analytics) {
  1594. let Reports;
  1595. (function (Reports) {
  1596. class ReportRoleSettings extends Platform.Core.BaseComponent {
  1597. constructor() {
  1598. super();
  1599. this.isSingleAppSelected = false;
  1600. this.reportManager = Analytics.Managers.ReportManager.Instance();
  1601. }
  1602. cssFiles() {
  1603. return [];
  1604. }
  1605. jsFiles() {
  1606. var jsFiles = ['platform/analytics/managers/reportmanager.js'];
  1607. return jsFiles;
  1608. }
  1609. html(id, containerid) {
  1610. let html = `<section id="link-report-section" class="modal-content">
  1611. <div class="modal-header pa-10" id="reportrolesetting_header">
  1612. <strong class="modal-title biz-highlight-bg-color">Role Settings</strong>
  1613. </div>
  1614. <div data-simplebar class="simple-scroll-bar">
  1615. <div id="divRoleSetting_ErrorMessage"></div>
  1616. <div class="modal-body bg-charcoal-light-5 sub-report-block" id="reportrolesetting_modal">
  1617. <div class="report-rolesettings-block card" data-select2-id="24">
  1618. <div data-select2-id="23">
  1619. <header class="report-rolesettings-head">
  1620. <h6 class="required">
  1621. Role Settings
  1622. </h6>
  1623. <span>
  1624. <i class="las la-braille dragger"></i>
  1625. </span>
  1626. </button>
  1627. </header>
  1628. <div id="subrpts_div" data-select2-id="subrpts_div" class="">
  1629. <div class="report-body">
  1630. <div class="form-group">
  1631. <div id="divsubrpt_0" data-select2-id="divsubrpt_">
  1632. <div class="form-row">
  1633. <div class="col">
  1634. <div id="div_installedapps">
  1635. <input type="hidden" id="hfrolesettings_installedapps">
  1636. <select id="rolesettings_installedapps" class="form-control text-control required">
  1637. <option value="0" selected="">Apps</option>
  1638. </select>
  1639. </div>
  1640. </div>
  1641. <div class="col">
  1642. <div id="div_rolesettings">
  1643. <select id="rolesettings_ddl" class="form-control custom-select mb-10 required">
  1644. <option value="0" selected="">Role Settings</option>
  1645. </select>
  1646. </div>
  1647. </div>
  1648. <div class="col-auto">
  1649. <a class="btn btn-icon btn-theme" id="btnConfigAddRoleSetting" onclick="" ;="">
  1650. <span class="btn-icon-wrap"><span class="line-icon text-white"><i class="las la-plus"></i></span></span>
  1651. </a>
  1652. </div>
  1653. </div>
  1654. <div class="m-t-sm">
  1655. <div class="form-row">
  1656. <div class="col px-4 py-2">
  1657. <strong> App Name </strong>
  1658. </div>
  1659. <div class="col py-2">
  1660. <strong> RoleSetting </strong>
  1661. </div>
  1662. <div class="col-auto py-2 px-4">
  1663. <a class="invisible"><i class="fa fa-close text-danger"></i></a>
  1664. </div>
  1665. </div>
  1666. </div>
  1667. <div id="RoleSettingExp"></div>
  1668. </div>
  1669. </div>
  1670. </div>
  1671. </div>
  1672. </div>
  1673. </div>
  1674. </div>
  1675. </div>
  1676. </div></div>
  1677. <div class="modal-footer pa-10" id="linkreport_footer">
  1678. <button type="button" class="btn btn-sm btn-light mr-auto" id="btnRoleSettingsClose">Cancel</button>
  1679. <button type="button" class="btn btn-sm btn-primary" id="btnRoleSettingsSave">Save</button>
  1680. </div>
  1681. </section>`;
  1682. return html;
  1683. }
  1684. load(id, containerid, callback) {
  1685. var instance = this;
  1686. let isRoleSettingsExists = false;
  1687. instance._reportbuilder = Reports.ReportBuilder.Instance();
  1688. $("#btnRoleSettingsClose").click(function () {
  1689. $('#' + containerid).modal('hide');
  1690. $('#' + containerid).remove();
  1691. if (instance.isSingleAppSelected) {
  1692. instance._reportbuilder.roleSettings = [];
  1693. instance.isSingleAppSelected = false;
  1694. }
  1695. });
  1696. $('#rolesettings_installedapps').empty();
  1697. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length)
  1698. isRoleSettingsExists = true;
  1699. if (instance._reportbuilder.roleSettings != null) {
  1700. for (let i = 0; i < instance._reportbuilder.roleSettings.length; i++) {
  1701. let item = instance._reportbuilder.roleSettings[i];
  1702. instance.appendRoleSetting(item.AppTitle, item.SettingName);
  1703. }
  1704. }
  1705. $("#btnConfigAddRoleSetting").click(function () {
  1706. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length >= 1) {
  1707. let idx = instance._reportbuilder.selectedColumns.findIndex(x => x.AliasName == 'installedappid');
  1708. if (idx == -1) {
  1709. MessageHelper.Instance().showError("Please add installedappid column in order to select app", "divRoleSetting_ErrorMessage");
  1710. return false;
  1711. }
  1712. }
  1713. var appName = $("#rolesettings_installedapps option:selected").text();
  1714. var installedappid = $("#rolesettings_installedapps option:selected").val();
  1715. var rolesetting = $("#rolesettings_ddl option:selected").text();
  1716. if (appName == "" || rolesetting == "")
  1717. return;
  1718. var lefNavigationInstalledAppId = Number($("#InstalledApp_AutoComplete option:selected").val());
  1719. if (installedappid == lefNavigationInstalledAppId) {
  1720. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length == 1) {
  1721. instance.isSingleAppSelected = true;
  1722. }
  1723. 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');
  1724. }
  1725. var rolset = false;
  1726. if (instance._reportbuilder.roleSettings != null)
  1727. rolset = instance._reportbuilder.roleSettings.find(x => x.AppTitle == appName && x.SettingName == rolesetting) ? true : false;
  1728. if (!rolset) {
  1729. instance.appendRoleSetting(appName, rolesetting);
  1730. instance._reportbuilder.roleSettings.push({
  1731. InstalledAppId: Number($("#rolesettings_installedapps option:selected").val()),
  1732. AppPermissionId: Number($("#rolesettings_ddl option:selected").val()),
  1733. AppTitle: appName,
  1734. SettingName: rolesetting,
  1735. });
  1736. }
  1737. $("#rolesettings_installedapps").html('<option value="0" selected="">Apps</option>').val("0");
  1738. $("#rolesettings_ddl").html('<option value="0" selected="">Role Settings</option>').val("0");
  1739. });
  1740. $("#btnRoleSettingsSave").click(function () {
  1741. if (instance._reportbuilder.roleSettings != null) {
  1742. if (instance._reportbuilder.roleSettings.length == 0 && !isRoleSettingsExists) {
  1743. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  1744. }
  1745. else if (instance._reportbuilder.roleSettings.length < 2) {
  1746. var inst = $("#InstalledApp_AutoComplete").val();
  1747. if (instance._reportbuilder.roleSettings.length == 1) {
  1748. instance.isSingleAppSelected = true;
  1749. }
  1750. if (!inst)
  1751. return MessageHelper.Instance().showError('Use installed app field in left navigation of report builder, if report have only one role setting', 'divRoleSetting_ErrorMessage');
  1752. }
  1753. else if (instance._reportbuilder.roleSettings.length == 2) {
  1754. let installedid = $("#InstalledApp_AutoComplete option:selected").val();
  1755. if (installedid) {
  1756. return MessageHelper.Instance().showError('Remove installedapp from left navigation of report builder to use multiple report role settings', 'divRoleSetting_ErrorMessage');
  1757. }
  1758. }
  1759. if (instance._reportbuilder.roleSettings.length > 1) {
  1760. instance.isSingleAppSelected = false;
  1761. }
  1762. }
  1763. else {
  1764. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  1765. }
  1766. $('#' + containerid).modal('hide');
  1767. $('#' + containerid).remove();
  1768. });
  1769. instance.loadInstalledApps();
  1770. }
  1771. loadInstalledApps() {
  1772. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1773. AutoCompleteHelper.getHelper().Create("#rolesettings_installedapps", "#hfrolesettings_installedapps", url, function (response) {
  1774. var installedappid = $("#hfrolesettings_installedapps").val();
  1775. Unibase.Platform.Apps.Managers.AppManager.Instance().getAppPermissions(installedappid).then(function (response) {
  1776. var drpdata = '';
  1777. $("#rolesettings_ddl").html("");
  1778. var data = response.result;
  1779. let viewPermission = data.find(function (x) { return x.SettingName.toLowerCase() == 'view'; });
  1780. if (viewPermission) {
  1781. $("#rolesettings_ddl").append('<option value="' + viewPermission.AppPermissionId + '" columnvalue="" selected>' + viewPermission.SettingName + '</option>').val(viewPermission.AppPermissionId).trigger("change");
  1782. }
  1783. });
  1784. });
  1785. }
  1786. appendRoleSetting(appName, rolesetting) {
  1787. let ulDiv = 'ulAppName_' + appName.replace(/ /g, "_") + '-' + rolesetting.replace(/ /g, "_");
  1788. var rshtml = '<div class="border border-1 mt-2 ulDatalistFilters_' + appName.replace(" ", "_") + rolesetting.replace(" ", "_") + '" id = "' + ulDiv + '">' +
  1789. '<div class="form-row" id="li_AppName_' + appName + rolesetting + '"> ' +
  1790. '<div class="col py-2 px-4 lblappname"> ' + appName + ' </div> ' +
  1791. '<div class="col py-2 px-4 lblrolesetting"> ' + rolesetting + ' </div>' +
  1792. '<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>' +
  1793. '</div>' +
  1794. '</div>';
  1795. $("#RoleSettingExp").append(rshtml);
  1796. }
  1797. RemoveRoleSettingExp(appname, rolesetting, ul) {
  1798. var instance = this;
  1799. $("#" + ul + "").remove();
  1800. var index = instance._reportbuilder.roleSettings.findIndex(function (r) {
  1801. return (r.AppTitle === appname && r.SettingName === rolesetting);
  1802. });
  1803. if (index !== -1)
  1804. instance._reportbuilder.roleSettings.splice(index, 1);
  1805. }
  1806. static Instance() {
  1807. if (this.instance === undefined) {
  1808. this.instance = new ReportRoleSettings();
  1809. }
  1810. return this.instance;
  1811. }
  1812. }
  1813. Reports.ReportRoleSettings = ReportRoleSettings;
  1814. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  1815. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  1816. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  1817. })(Unibase || (Unibase = {}));