FolderPermissions.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React, { Component } from 'react';
  2. import { inject, observer } from 'mobx-react';
  3. import { toJS } from 'mobx';
  4. import IContainerProps from 'app/containers/IContainerProps';
  5. import PageHeader from 'app/core/components/PageHeader/PageHeader';
  6. import Permissions from 'app/core/components/Permissions/Permissions';
  7. import Tooltip from 'app/core/components/Tooltip/Tooltip';
  8. import PermissionsInfo from 'app/core/components/Permissions/PermissionsInfo';
  9. import AddPermissions from 'app/core/components/Permissions/AddPermissions';
  10. import SlideDown from 'app/core/components/Animations/SlideDown';
  11. @inject('nav', 'folder', 'view', 'permissions')
  12. @observer
  13. export class FolderPermissions extends Component<IContainerProps, any> {
  14. constructor(props) {
  15. super(props);
  16. this.handleAddPermission = this.handleAddPermission.bind(this);
  17. this.loadStore();
  18. }
  19. componentWillUnmount() {
  20. const { permissions } = this.props;
  21. permissions.hideAddPermissions();
  22. }
  23. loadStore() {
  24. const { nav, folder, view } = this.props;
  25. return folder.load(view.routeParams.get('uid') as string).then(res => {
  26. view.updatePathAndQuery(`${res.url}/permissions`, {}, {});
  27. return nav.initFolderNav(toJS(folder.folder), 'manage-folder-permissions');
  28. });
  29. }
  30. handleAddPermission() {
  31. const { permissions } = this.props;
  32. permissions.toggleAddPermissions();
  33. }
  34. render() {
  35. const { nav, folder, permissions, backendSrv } = this.props;
  36. if (!folder.folder || !nav.main) {
  37. return <h2>Loading</h2>;
  38. }
  39. const dashboardId = folder.folder.id;
  40. return (
  41. <div>
  42. <PageHeader model={nav as any} />
  43. <div className="page-container page-body">
  44. <div className="page-action-bar">
  45. <h2 className="d-inline-block">Folder Permissions</h2>
  46. <Tooltip className="page-sub-heading-icon" placement="auto" content={PermissionsInfo}>
  47. <i className="gicon gicon-question gicon--has-hover" />
  48. </Tooltip>
  49. <div className="page-action-bar__spacer" />
  50. <button
  51. className="btn btn-success pull-right"
  52. onClick={this.handleAddPermission}
  53. disabled={permissions.isAddPermissionsVisible}
  54. >
  55. <i className="fa fa-plus" /> Add Permission
  56. </button>
  57. </div>
  58. <SlideDown in={permissions.isAddPermissionsVisible}>
  59. <AddPermissions permissions={permissions} backendSrv={backendSrv} />
  60. </SlideDown>
  61. <Permissions permissions={permissions} isFolder={true} dashboardId={dashboardId} backendSrv={backendSrv} />
  62. </div>
  63. </div>
  64. );
  65. }
  66. }