Toolbar.tsx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import React from 'react'
  2. import { Button, Tooltip, Col, Popconfirm } from 'antd'
  3. import { ButtonProps } from 'antd/lib/button/button'
  4. import { IProject } from 'containers/Projects/types'
  5. import { IDashboard } from '../types'
  6. import ModulePermission from 'containers/Account/components/checkModulePermission'
  7. import ShareDownloadPermission from 'containers/Account/components/checkShareDownloadPermission'
  8. const utilStyles = require('assets/less/util.less')
  9. interface IToolbarProps {
  10. currentProject: IProject
  11. currentDashboard: IDashboard
  12. showAddDashboardItem: () => void
  13. onOpenSharePanel: () => void
  14. onOpenLinkageConfig: () => void
  15. onOpenGlobalControlConfig: () => void
  16. onDownloadDashboard: () => void
  17. }
  18. export class Toolbar extends React.PureComponent<IToolbarProps> {
  19. public render () {
  20. const { currentDashboard } = this.props
  21. if (!currentDashboard) { return null }
  22. const {
  23. currentProject,
  24. showAddDashboardItem,
  25. onOpenSharePanel,
  26. onOpenLinkageConfig,
  27. onOpenGlobalControlConfig,
  28. onDownloadDashboard
  29. } = this.props
  30. const AddButton = ModulePermission<ButtonProps>(currentProject, 'viz', true)(Button)
  31. const ShareButton = ShareDownloadPermission<ButtonProps>(currentProject, 'share')(Button)
  32. const DownloadButton = ShareDownloadPermission<ButtonProps>(currentProject, 'download')(Button)
  33. const LinkageButton = ModulePermission<ButtonProps>(currentProject, 'viz', false)(Button)
  34. const GlobalFilterButton = ModulePermission<ButtonProps>(currentProject, 'viz', false)(Button)
  35. let addButton
  36. let shareButton
  37. let downloadButton
  38. let linkageButton
  39. let globalFilterButton
  40. addButton = (
  41. <Tooltip placement="bottom" title="新增">
  42. <AddButton
  43. type="primary"
  44. icon="plus"
  45. style={{marginLeft: '8px'}}
  46. onClick={showAddDashboardItem}
  47. />
  48. </Tooltip>
  49. )
  50. shareButton = (
  51. <Tooltip placement="bottom" title="分享">
  52. <ShareButton
  53. type="primary"
  54. icon="share-alt"
  55. style={{marginLeft: '8px'}}
  56. onClick={onOpenSharePanel}
  57. />
  58. </Tooltip>
  59. )
  60. downloadButton = (
  61. <Tooltip placement="bottom" title="下载">
  62. <Popconfirm
  63. title="点击开始下载"
  64. placement="bottom"
  65. onConfirm={onDownloadDashboard}
  66. >
  67. <DownloadButton
  68. type="primary"
  69. icon="download"
  70. style={{marginLeft: '8px'}}
  71. />
  72. </Popconfirm>
  73. </Tooltip>
  74. )
  75. linkageButton = (
  76. <Tooltip placement="bottom" title="联动关系配置">
  77. <LinkageButton
  78. type="primary"
  79. icon="link"
  80. style={{marginLeft: '8px'}}
  81. onClick={onOpenLinkageConfig}
  82. />
  83. </Tooltip>
  84. )
  85. globalFilterButton = (
  86. <Tooltip placement="bottomRight" title="全局控制器配置">
  87. <GlobalFilterButton
  88. type="primary"
  89. icon="filter"
  90. style={{marginLeft: '8px'}}
  91. onClick={onOpenGlobalControlConfig}
  92. />
  93. </Tooltip>
  94. )
  95. return (
  96. <Col sm={12} className={utilStyles.textAlignRight}>
  97. {addButton}
  98. {shareButton}
  99. {downloadButton}
  100. {linkageButton}
  101. {globalFilterButton}
  102. </Col>
  103. )
  104. }
  105. }
  106. export default Toolbar