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

viewerpermissions.js 22KB

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