Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

reportrolesettings.js 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  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 ReportRoleSettings extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.isSingleAppSelected = false;
  13. this.reportManager = Analytics.Managers.ReportManager.Instance();
  14. }
  15. cssFiles() {
  16. return [];
  17. }
  18. jsFiles() {
  19. var jsFiles = ['platform/analytics/managers/reportmanager.js'];
  20. return jsFiles;
  21. }
  22. html(id, containerid) {
  23. let html = `<section id="link-report-section" class="modal-content">
  24. <div class="modal-header pa-10" id="reportrolesetting_header">
  25. <strong class="modal-title biz-highlight-bg-color">Role Settings</strong>
  26. </div>
  27. <div data-simplebar class="simple-scroll-bar">
  28. <div id="divRoleSetting_ErrorMessage"></div>
  29. <div class="modal-body bg-charcoal-light-5 sub-report-block" id="reportrolesetting_modal">
  30. <div class="report-rolesettings-block card" data-select2-id="24">
  31. <div data-select2-id="23">
  32. <header class="report-rolesettings-head">
  33. <h6 class="required">
  34. Role Settings
  35. </h6>
  36. <span>
  37. <i class="las la-braille dragger"></i>
  38. </span>
  39. </button>
  40. </header>
  41. <div id="subrpts_div" data-select2-id="subrpts_div" class="">
  42. <div class="report-body">
  43. <div class="form-group">
  44. <div id="divsubrpt_0" data-select2-id="divsubrpt_">
  45. <div class="form-row">
  46. <div class="col">
  47. <div id="div_installedapps">
  48. <input type="hidden" id="hfrolesettings_installedapps">
  49. <select id="rolesettings_installedapps" class="form-control text-control required">
  50. <option value="0" selected="">Apps</option>
  51. </select>
  52. </div>
  53. </div>
  54. <div class="col">
  55. <div id="div_rolesettings">
  56. <select id="rolesettings_ddl" class="form-control custom-select mb-10 required">
  57. <option value="0" selected="">Role Settings</option>
  58. </select>
  59. </div>
  60. </div>
  61. <div class="col-auto">
  62. <a class="btn btn-icon btn-theme" id="btnConfigAddRoleSetting" onclick="" ;="">
  63. <span class="btn-icon-wrap"><span class="line-icon text-white"><i class="las la-plus"></i></span></span>
  64. </a>
  65. </div>
  66. </div>
  67. <div class="m-t-sm">
  68. <div class="form-row">
  69. <div class="col px-4 py-2">
  70. <strong> App Name </strong>
  71. </div>
  72. <div class="col py-2">
  73. <strong> RoleSetting </strong>
  74. </div>
  75. <div class="col-auto py-2 px-4">
  76. <a class="invisible"><i class="fa fa-close text-danger"></i></a>
  77. </div>
  78. </div>
  79. </div>
  80. <div id="RoleSettingExp"></div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div></div>
  90. <div class="modal-footer pa-10" id="linkreport_footer">
  91. <button type="button" class="btn btn-sm btn-light mr-auto" id="btnRoleSettingsClose">Cancel</button>
  92. <button type="button" class="btn btn-sm btn-primary" id="btnRoleSettingsSave">Save</button>
  93. </div>
  94. </section>`;
  95. return html;
  96. }
  97. load(id, containerid, callback) {
  98. var instance = this;
  99. let isRoleSettingsExists = false;
  100. instance._reportbuilder = Reports.ReportBuilder.Instance();
  101. $("#btnRoleSettingsClose").click(function () {
  102. $('#' + containerid).modal('hide');
  103. $('#' + containerid).remove();
  104. if (instance.isSingleAppSelected) {
  105. instance._reportbuilder.roleSettings = [];
  106. instance.isSingleAppSelected = false;
  107. }
  108. });
  109. $('#rolesettings_installedapps').empty();
  110. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length)
  111. isRoleSettingsExists = true;
  112. if (instance._reportbuilder.roleSettings != null) {
  113. for (let i = 0; i < instance._reportbuilder.roleSettings.length; i++) {
  114. let item = instance._reportbuilder.roleSettings[i];
  115. instance.appendRoleSetting(item.AppTitle, item.SettingName);
  116. }
  117. }
  118. $("#btnConfigAddRoleSetting").click(function () {
  119. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length >= 1) {
  120. let idx = instance._reportbuilder.selectedColumns.findIndex(x => x.AliasName == 'installedappid');
  121. if (idx == -1) {
  122. MessageHelper.Instance().showError("Please add installedappid column in order to select app", "divRoleSetting_ErrorMessage");
  123. return false;
  124. }
  125. }
  126. var appName = $("#rolesettings_installedapps option:selected").text();
  127. var installedappid = $("#rolesettings_installedapps option:selected").val();
  128. var rolesetting = $("#rolesettings_ddl option:selected").text();
  129. if (appName == "" || rolesetting == "")
  130. return;
  131. var lefNavigationInstalledAppId = Number($("#InstalledApp_AutoComplete option:selected").val());
  132. if (installedappid == lefNavigationInstalledAppId) {
  133. if (instance._reportbuilder.roleSettings && instance._reportbuilder.roleSettings.length == 1) {
  134. instance.isSingleAppSelected = true;
  135. }
  136. 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');
  137. }
  138. var rolset = false;
  139. if (instance._reportbuilder.roleSettings != null)
  140. rolset = instance._reportbuilder.roleSettings.find(x => x.AppTitle == appName && x.SettingName == rolesetting) ? true : false;
  141. if (!rolset) {
  142. instance.appendRoleSetting(appName, rolesetting);
  143. instance._reportbuilder.roleSettings.push({
  144. InstalledAppId: Number($("#rolesettings_installedapps option:selected").val()),
  145. AppPermissionId: Number($("#rolesettings_ddl option:selected").val()),
  146. AppTitle: appName,
  147. SettingName: rolesetting,
  148. });
  149. }
  150. $("#rolesettings_installedapps").html('<option value="0" selected="">Apps</option>').val("0");
  151. $("#rolesettings_ddl").html('<option value="0" selected="">Role Settings</option>').val("0");
  152. });
  153. $("#btnRoleSettingsSave").click(function () {
  154. if (instance._reportbuilder.roleSettings != null) {
  155. if (instance._reportbuilder.roleSettings.length == 0 && !isRoleSettingsExists) {
  156. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  157. }
  158. else if (instance._reportbuilder.roleSettings.length < 2) {
  159. var inst = $("#InstalledApp_AutoComplete").val();
  160. if (instance._reportbuilder.roleSettings.length == 1) {
  161. instance.isSingleAppSelected = true;
  162. }
  163. if (!inst)
  164. return MessageHelper.Instance().showError('Use installed app field in left navigation of report builder, if report have only one role setting', 'divRoleSetting_ErrorMessage');
  165. }
  166. else if (instance._reportbuilder.roleSettings.length == 2) {
  167. let installedid = $("#InstalledApp_AutoComplete option:selected").val();
  168. if (installedid) {
  169. return MessageHelper.Instance().showError('Remove installedapp from left navigation of report builder to use multiple report role settings', 'divRoleSetting_ErrorMessage');
  170. }
  171. }
  172. if (instance._reportbuilder.roleSettings.length > 1) {
  173. instance.isSingleAppSelected = false;
  174. }
  175. }
  176. else {
  177. return MessageHelper.Instance().showError('Please Select Role Setting', 'divRoleSetting_ErrorMessage');
  178. }
  179. $('#' + containerid).modal('hide');
  180. $('#' + containerid).remove();
  181. });
  182. instance.loadInstalledApps();
  183. }
  184. loadInstalledApps() {
  185. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  186. AutoCompleteHelper.getHelper().Create("#rolesettings_installedapps", "#hfrolesettings_installedapps", url, function (response) {
  187. var installedappid = $("#hfrolesettings_installedapps").val();
  188. Unibase.Platform.Apps.Managers.AppManager.Instance().getAppPermissions(installedappid).then(function (response) {
  189. var drpdata = '';
  190. $("#rolesettings_ddl").html("");
  191. var data = response.result;
  192. let viewPermission = data.find(function (x) { return x.SettingName.toLowerCase() == 'view'; });
  193. if (viewPermission) {
  194. $("#rolesettings_ddl").append('<option value="' + viewPermission.AppPermissionId + '" columnvalue="" selected>' + viewPermission.SettingName + '</option>').val(viewPermission.AppPermissionId).trigger("change");
  195. }
  196. });
  197. });
  198. }
  199. appendRoleSetting(appName, rolesetting) {
  200. let ulDiv = 'ulAppName_' + appName.replace(/ /g, "_") + '-' + rolesetting.replace(/ /g, "_");
  201. var rshtml = '<div class="border border-1 mt-2 ulDatalistFilters_' + appName.replace(" ", "_") + rolesetting.replace(" ", "_") + '" id = "' + ulDiv + '">' +
  202. '<div class="form-row" id="li_AppName_' + appName + rolesetting + '"> ' +
  203. '<div class="col py-2 px-4 lblappname"> ' + appName + ' </div> ' +
  204. '<div class="col py-2 px-4 lblrolesetting"> ' + rolesetting + ' </div>' +
  205. '<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>' +
  206. '</div>' +
  207. '</div>';
  208. $("#RoleSettingExp").append(rshtml);
  209. }
  210. RemoveRoleSettingExp(appname, rolesetting, ul) {
  211. var instance = this;
  212. $("#" + ul + "").remove();
  213. var index = instance._reportbuilder.roleSettings.findIndex(function (r) {
  214. return (r.AppTitle === appname && r.SettingName === rolesetting);
  215. });
  216. if (index !== -1)
  217. instance._reportbuilder.roleSettings.splice(index, 1);
  218. }
  219. static Instance() {
  220. if (this.instance === undefined) {
  221. this.instance = new ReportRoleSettings();
  222. }
  223. return this.instance;
  224. }
  225. }
  226. Reports.ReportRoleSettings = ReportRoleSettings;
  227. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  228. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  229. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  230. })(Unibase || (Unibase = {}));