Built files from Bizgaze WebServer
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

reportpermissions.js 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Analytics;
  6. (function (Analytics) {
  7. let Components;
  8. (function (Components) {
  9. class ReportPermissions extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this._ReportPermission_ViewRoles = [];
  13. this._ReportPermission_ChangeRoles = [];
  14. this.Reportspermission_ReportRoles = [];
  15. this.reportManager = Analytics.Managers.ReportManager.Instance();
  16. }
  17. cssFiles() {
  18. return [];
  19. }
  20. jsFiles() {
  21. var jsFiles = [];
  22. return jsFiles;
  23. }
  24. html(id, containerid) {
  25. let html = "";
  26. html += `<div class="header bg-white">
  27. <strong> Report Permissions<span class="reportname"></span></strong>
  28. <a class="btn btn-sm ml-auto"><i class="ti-help-alt" title="help" href="javascript:;" target="_blank"></i></a>
  29. </div>
  30. <div class="scrollable bg-light" id="div_reportpermissions">
  31. <div class="wrapper">
  32. <div id="Bizgaze_ValidationSummary" class="clear m-b-sm">
  33. </div>
  34. <div class="card">
  35. <div class="card-body">
  36. <div class="row">
  37. <div class="col-sm-12">
  38. <strong class="Report">Everyone can view this report?</strong>
  39. <label class="switch pull-right">
  40. <input id="chkIsViewable" data-group="Viewable" checked onchange="javascript:Unibase.Platform.Analytics.Components.ReportPermissions.Instance().setViewable()" type="checkbox">
  41. <span></span>
  42. </label>
  43. </div>
  44. </div>
  45. <div class="row" id="divViewRoles" style="display:none">
  46. <div class="col-sm-12 m-b">
  47. <label> Included roles that can view this report</label>
  48. <input type="hidden" id="hfViewRoles" />
  49. <select id="txtIncludeViewRoles" style="width:100%" class="b-a" value="" multiple="multiple"></select>
  50. </div>
  51. </div>
  52. <div class="row">
  53. <div class="col-sm-12 mb-0">
  54. <label>Excluded roles that can view this report</label>
  55. <input type="hidden" id="hfViewRoles" />
  56. <select id="txtExcludeViewRoles" style="width:100%" class="b-a" value="" placeholder="select role" multiple="multiple"></select>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <footer class="bg-white footer" style="position:absolute; bottom:0px;width:100%;">
  64. <a href="javascript:;" class="btn btn-light btn-sm mr-auto" id="btn_Close">Close</a>
  65. </footer>`;
  66. return html;
  67. }
  68. load(reportid, containerid, callback) {
  69. var instance = this;
  70. var _fileCacheHelper = this.fileCacheHelper;
  71. $("#div_reportpermissions").height($(window).outerHeight() - 115);
  72. _fileCacheHelper.loadJsFile('/platform/analytics/managers/reportmanager.js', function () {
  73. Unibase.Platform.Analytics.Components.ReportPermissions.Instance().Reportspermission_reportid = reportid;
  74. instance.Reportspermission_ReportRoles = [];
  75. instance.reportManager.getReportRoles(reportid).then(function (response) {
  76. if (response.result != null) {
  77. var selectedRoles = response.result;
  78. for (var i = 0; i < selectedRoles.length; i++) {
  79. instance.Reportspermission_ReportRoles.push({ ReportRoleId: selectedRoles[i].ReportRoleId, RoleId: selectedRoles[i].RoleId, ViewReport: selectedRoles[i].ViewReport, ChangeReport: selectedRoles[i].ChangeReport });
  80. }
  81. instance.getRoleList(reportid, selectedRoles);
  82. }
  83. else {
  84. MessageHelper.Instance().showError(response.message, "Bizgaze_ValidationSummary");
  85. }
  86. });
  87. });
  88. $("#btn_Close").click(function () {
  89. $('#' + containerid).modal('hide');
  90. $('#' + containerid).remove();
  91. });
  92. }
  93. getRoleList(reportid, widgetroles) {
  94. var instance = this;
  95. Unibase.Platform.Permissions.Managers.PermissionManager.Instance().getRoles("").then(function (response) {
  96. var widgetpermissions_AllRoles = response.result;
  97. instance.loadAssignedRoles(reportid, widgetroles, widgetpermissions_AllRoles);
  98. });
  99. }
  100. loadAssignedRoles(reportid, widgetroles, widgetpermissions_AllRoles) {
  101. var instance = this;
  102. var ExcludeViewRoles = [];
  103. var _Permissions_ViewRoles = [];
  104. for (var i = 0; i < widgetpermissions_AllRoles.length; i++) {
  105. var data = widgetpermissions_AllRoles[i];
  106. var assignedRoles = widgetroles;
  107. for (var j = 0; j < assignedRoles.length; j++) {
  108. var assignedRole = assignedRoles[j];
  109. if (assignedRole.RoleId == data.RoleId) {
  110. if (assignedRole.ViewReport == true) {
  111. _Permissions_ViewRoles.push({ id: data.RoleId, text: data.RoleName });
  112. }
  113. else if (assignedRole.ExcludeViewReport == true) {
  114. ExcludeViewRoles.push({ id: data.RoleId, text: data.RoleName });
  115. }
  116. }
  117. }
  118. }
  119. instance.loadReportDetails(reportid, _Permissions_ViewRoles, ExcludeViewRoles);
  120. }
  121. loadReportDetails(ReportId, _Permissions_ViewRoles, ExcludeViewRoles) {
  122. var instance = this;
  123. instance.reportManager.getReportById(ReportId).then(function (response) {
  124. var data = response.result;
  125. if (data.ViewAll == true) {
  126. $("#chkIsViewable").prop('checked', true);
  127. instance.loadViewRoles(ReportId, response.result.ChangeAll, _Permissions_ViewRoles, ExcludeViewRoles);
  128. $('#divViewRoles').hide();
  129. }
  130. else {
  131. $("#chkIsViewable").prop('checked', false);
  132. instance.loadViewRoles(ReportId, response.result.ChangeAll, _Permissions_ViewRoles, ExcludeViewRoles);
  133. $('#divViewRoles').show();
  134. }
  135. });
  136. }
  137. loadViewRoles(reportid, IsMandatory, _Permissions_ViewRoles, ExcludeViewRoles) {
  138. var Ids = [];
  139. for (var i = 0; i < _Permissions_ViewRoles.length; i++) {
  140. Ids.push(_Permissions_ViewRoles[i].id);
  141. }
  142. let ExludedIds = [];
  143. for (var i = 0; i < ExcludeViewRoles.length; i++) {
  144. ExludedIds.push(ExcludeViewRoles[i].id);
  145. }
  146. var ViewRoleElementId = "txtIncludeViewRoles";
  147. var ExcludeRoleElementId = "txtExcludeViewRoles";
  148. var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  149. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/roles/getroles';
  150. url = url + "/term/";
  151. url = url.replace('#', '');
  152. $("#" + ViewRoleElementId).select2({
  153. multiple: true,
  154. allowClear: false,
  155. data: _Permissions_ViewRoles,
  156. placeholder: 'Select Role',
  157. ajax: {
  158. url: function (request) {
  159. var reqUrl = url;
  160. var term = request.term;
  161. if (term == undefined || term == "")
  162. reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
  163. else
  164. reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
  165. return reqUrl;
  166. },
  167. beforeSend: function (xhr) {
  168. if (userinfo !== undefined && userinfo !== null) {
  169. xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
  170. xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
  171. }
  172. },
  173. delay: 250,
  174. dataType: 'json',
  175. processResults: function (data) {
  176. var selectData = [];
  177. var Data = JSON.parse(data.result);
  178. for (var i = 0; i < Data.length; i++) {
  179. selectData.push({
  180. id: Data[i].Value,
  181. text: Data[i].SelectText
  182. });
  183. }
  184. ;
  185. return { results: selectData };
  186. }
  187. },
  188. templateResult: function (item) { return item.text; },
  189. templateSelection: function (item) { return item.text; },
  190. });
  191. $("#" + ViewRoleElementId).val(Ids).trigger('change');
  192. $('#txtIncludeViewRoles').on('select2:select', function (e) {
  193. let result = e.params.data;
  194. if (Number(result.id) != 0) {
  195. var roleId = result.id;
  196. ReportPermissions.Instance().addViewRole(reportid, roleId, true, false);
  197. Ids.push(roleId);
  198. $(ExludedIds).each(function (i, value) {
  199. if (value == roleId) {
  200. var index = ExludedIds.indexOf(value);
  201. if (index > -1) {
  202. ExludedIds.splice(index, 1);
  203. }
  204. ExludedIds.splice(value, 1);
  205. jQuery("#txtExcludeViewRoles").val(ExludedIds).trigger('change');
  206. return false;
  207. }
  208. });
  209. }
  210. });
  211. $('#txtIncludeViewRoles').on('select2:unselect', function (e) {
  212. let result = e.params.data;
  213. if (Number(result.id) != 0) {
  214. var roleId = result.id;
  215. ReportPermissions.Instance().removeViewRole(reportid, roleId, true, false);
  216. }
  217. });
  218. $("#" + ExcludeRoleElementId).select2({
  219. multiple: true,
  220. allowClear: false,
  221. data: ExcludeViewRoles,
  222. placeholder: 'Select Role',
  223. ajax: {
  224. url: function (request) {
  225. var reqUrl = url;
  226. var term = request.term;
  227. if (term == undefined || term == "")
  228. reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
  229. else
  230. reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
  231. return reqUrl;
  232. },
  233. beforeSend: function (xhr) {
  234. if (userinfo !== undefined && userinfo !== null) {
  235. xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
  236. xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
  237. }
  238. },
  239. delay: 250,
  240. dataType: 'json',
  241. processResults: function (data) {
  242. var selectData = [];
  243. var Data = JSON.parse(data.result);
  244. for (var i = 0; i < Data.length; i++) {
  245. selectData.push({
  246. id: Data[i].Value,
  247. text: Data[i].SelectText
  248. });
  249. }
  250. ;
  251. return { results: selectData };
  252. }
  253. },
  254. templateResult: function (item) { return item.text; },
  255. templateSelection: function (item) { return item.text; },
  256. });
  257. jQuery("#" + ExcludeRoleElementId).val(ExludedIds).trigger('change');
  258. $('.select2-search__field').css("width", "100%");
  259. $('#txtExcludeViewRoles').on('select2:select', function (e) {
  260. let result = e.params.data;
  261. if (Number(result.id) != 0) {
  262. var roleId = result.id;
  263. ReportPermissions.Instance().addViewRole(reportid, roleId, false, true);
  264. ExludedIds.push(roleId);
  265. $(Ids).each(function (i, value) {
  266. if (value == roleId) {
  267. var index = Ids.indexOf(value);
  268. if (index > -1) {
  269. Ids.splice(index, 1);
  270. }
  271. jQuery("#txtIncludeViewRoles").val(Ids).trigger('change');
  272. return false;
  273. }
  274. });
  275. }
  276. });
  277. $('#txtExcludeViewRoles').on('select2:unselect', function (e) {
  278. let result = e.params.data;
  279. if (Number(result.id) != 0) {
  280. var roleId = result.id;
  281. ReportPermissions.Instance().removeViewRole(reportid, roleId, false, true);
  282. }
  283. });
  284. }
  285. addViewRole(reportId, roleId, IsView, IsExclude) {
  286. var instance = this;
  287. var _fileCacheHelper = this.fileCacheHelper;
  288. let reqObj = new Unibase.Platform.Analytics.Requests.ReportRole();
  289. reqObj.ReportId = reportId;
  290. reqObj.RoleId = Number(roleId);
  291. reqObj.ViewReport = IsView;
  292. reqObj.ExcludeViewReport = IsExclude;
  293. instance.reportManager.addReportRole(reqObj).then(function (response) {
  294. MessageHelper.Instance().showSuccess(response.message, 'Bizgaze_ValidationSummary');
  295. });
  296. }
  297. removeViewRole(ReportId, roleId, IsView, IsExclude) {
  298. var instance = this;
  299. let reqObj = new Unibase.Platform.Analytics.Requests.ReportRole();
  300. reqObj.ReportId = ReportId;
  301. reqObj.RoleId = Number(roleId);
  302. reqObj.ViewReport = IsView;
  303. reqObj.ExcludeViewReport = IsExclude;
  304. instance.reportManager.removeReportRole(reqObj).then(function (response) {
  305. MessageHelper.Instance().showSuccess(response.message, 'Bizgaze_ValidationSummary');
  306. });
  307. }
  308. setViewable() {
  309. var instance = this;
  310. var viewable = $("#chkIsViewable").prop('checked');
  311. if (viewable)
  312. $('#divViewRoles').hide();
  313. else
  314. $('#divViewRoles').show();
  315. instance.reportManager.setViewable(instance.Reportspermission_reportid, viewable).then(function (response) {
  316. MessageHelper.Instance().showSuccess(response.message, 'Bizgaze_ValidationSummary');
  317. });
  318. }
  319. static Instance() {
  320. if (this.rp_instance === undefined) {
  321. this.rp_instance = new ReportPermissions();
  322. }
  323. return this.rp_instance;
  324. }
  325. }
  326. Components.ReportPermissions = ReportPermissions;
  327. })(Components = Analytics.Components || (Analytics.Components = {}));
  328. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  329. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  330. })(Unibase || (Unibase = {}));