DataSourceDashboards.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React, { PureComponent } from 'react';
  2. import { hot } from 'react-hot-loader';
  3. import { connect } from 'react-redux';
  4. import PageHeader from 'app/core/components/PageHeader/PageHeader';
  5. import DashboardTable from './DashboardsTable';
  6. import { NavModel, PluginDashboard } from 'app/types';
  7. import { getNavModel } from 'app/core/selectors/navModel';
  8. import { getRouteParamsId } from 'app/core/selectors/location';
  9. import { loadDataSource } from './state/actions';
  10. import { loadPluginDashboards } from '../plugins/state/actions';
  11. export interface Props {
  12. navModel: NavModel;
  13. dashboards: PluginDashboard[];
  14. pageId: number;
  15. loadDataSource: typeof loadDataSource;
  16. loadPluginDashboards: typeof loadPluginDashboards;
  17. }
  18. export class DataSourceDashboards extends PureComponent<Props> {
  19. async componentDidMount() {
  20. const { loadDataSource, pageId } = this.props;
  21. await loadDataSource(pageId);
  22. this.props.loadPluginDashboards();
  23. }
  24. onImport = (dashboard, state) => {};
  25. onRemove = dashboard => {};
  26. render() {
  27. const { dashboards, navModel } = this.props;
  28. return (
  29. <div>
  30. <PageHeader model={navModel} />
  31. <div className="page-container page-body">
  32. <DashboardTable
  33. dashboards={dashboards}
  34. onImport={(dashboard, overwrite) => this.onImport(dashboard, overwrite)}
  35. onRemove={dashboard => this.onRemove(dashboard)}
  36. />
  37. </div>
  38. </div>
  39. );
  40. }
  41. }
  42. function mapStateToProps(state) {
  43. const pageId = getRouteParamsId(state.location);
  44. return {
  45. navModel: getNavModel(state.navIndex, `datasource-dashboards-${pageId}`),
  46. pageId: pageId,
  47. dashboards: state.plugins.dashboards,
  48. };
  49. }
  50. const mapDispatchToProps = {
  51. loadDataSource,
  52. loadPluginDashboards,
  53. };
  54. export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(DataSourceDashboards));