diff --git a/frontend/app/components/Dashboard/components/DashboardHeader/DashboardHeader.tsx b/frontend/app/components/Dashboard/components/DashboardHeader/DashboardHeader.tsx
new file mode 100644
index 000000000..89d2ed4d0
--- /dev/null
+++ b/frontend/app/components/Dashboard/components/DashboardHeader/DashboardHeader.tsx
@@ -0,0 +1,123 @@
+import React from 'react';
+import { Tooltip } from 'react-tippy';
+import Breadcrumb from 'Shared/Breadcrumb';
+import { withSiteId } from 'App/routes';
+import { withRouter, RouteComponentProps } from 'react-router-dom';
+import { Button, PageTitle, confirm } from 'UI';
+import SelectDateRange from 'Shared/SelectDateRange';
+import { useStore } from 'App/mstore';
+import { useModal } from 'App/components/Modal';
+import DashboardOptions from '../DashboardOptions';
+import withModal from 'App/components/Modal/withModal';
+import { observer } from 'mobx-react-lite';
+import DashboardEditModal from '../DashboardEditModal';
+
+interface IProps {
+ siteId: string;
+ renderReport?: any;
+}
+
+type Props = IProps & RouteComponentProps;
+
+function DashboardHeader(props: Props) {
+ const { siteId } = props;
+ const { dashboardStore } = useStore();
+ const { showModal } = useModal();
+ const [showTooltip, setShowTooltip] = React.useState(false);
+ const [focusTitle, setFocusedInput] = React.useState(true);
+ const [showEditModal, setShowEditModal] = React.useState(false);
+ const period = dashboardStore.period;
+
+ const dashboard: any = dashboardStore.selectedDashboard;
+
+ const onEdit = (isTitle: boolean) => {
+ dashboardStore.initDashboard(dashboard);
+ setFocusedInput(isTitle);
+ setShowEditModal(true);
+ };
+
+ const onDelete = async () => {
+ if (
+ await confirm({
+ header: 'Confirm',
+ confirmButton: 'Yes, delete',
+ confirmation: `Are you sure you want to permanently delete this Dashboard?`,
+ })
+ ) {
+ dashboardStore.deleteDashboard(dashboard).then(() => {
+ props.history.push(withSiteId(`/dashboard`, siteId));
+ });
+ }
+ };
+ return (
+
+
setShowEditModal(false)}
+ focusTitle={focusTitle}
+ />
+
+
+
+
+ {dashboard?.name}
+
+ }
+ onDoubleClick={() => onEdit(true)}
+ className="mr-3 select-none border-b border-b-borderColor-transparent hover:border-dotted hover:border-gray-medium cursor-pointer"
+ />
+
+
+
+
+
+ dashboardStore.setPeriod(period)}
+ right={true}
+ />
+
+
+
+
+
+
+
+
+ {/* @ts-ignore */}
+
+ onEdit(false)}
+ >
+ {dashboard?.description || 'Describe the purpose of this dashboard'}
+
+
+
+
+ );
+}
+
+export default withRouter(withModal(observer(DashboardHeader)));
diff --git a/frontend/app/components/Dashboard/components/DashboardHeader/index.ts b/frontend/app/components/Dashboard/components/DashboardHeader/index.ts
new file mode 100644
index 000000000..4bd864695
--- /dev/null
+++ b/frontend/app/components/Dashboard/components/DashboardHeader/index.ts
@@ -0,0 +1 @@
+export { default } from './DashboardHeader';
diff --git a/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx b/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx
index 93377efd2..bf02d1f8e 100644
--- a/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx
+++ b/frontend/app/components/Dashboard/components/DashboardView/DashboardView.tsx
@@ -1,23 +1,17 @@
import React, { useEffect } from 'react';
import { observer } from 'mobx-react-lite';
import { useStore } from 'App/mstore';
-import { Button, PageTitle, Loader, Tooltip, Popover } from 'UI';
+import { Loader, Tooltip, Popover } from 'UI';
import { withSiteId } from 'App/routes';
import withModal from 'App/components/Modal/withModal';
import DashboardWidgetGrid from '../DashboardWidgetGrid';
-import { confirm } from 'UI';
import { withRouter, RouteComponentProps } from 'react-router-dom';
import { useModal } from 'App/components/Modal';
import DashboardModal from '../DashboardModal';
-import DashboardEditModal from '../DashboardEditModal';
import AlertFormModal from 'App/components/Alerts/AlertFormModal';
import withPageTitle from 'HOCs/withPageTitle';
import withReport from 'App/components/hocs/withReport';
-import DashboardOptions from '../DashboardOptions';
-import SelectDateRange from 'Shared/SelectDateRange';
-import Breadcrumb from 'Shared/Breadcrumb';
-import AddMetricContainer from '../DashboardWidgetGrid/AddMetricContainer';
-import OutsideClickDetectingDiv from 'Shared/OutsideClickDetectingDiv';
+import DashboardHeader from '../DashboardHeader';
interface IProps {
siteId: string;
@@ -32,14 +26,9 @@ function DashboardView(props: Props) {
const { dashboardStore } = useStore();
const { showModal } = useModal();
- const [showTooltip, setShowTooltip] = React.useState(false);
- const [focusTitle, setFocusedInput] = React.useState(true);
- const [showEditModal, setShowEditModal] = React.useState(false);
-
const showAlertModal = dashboardStore.showAlertModal;
const loading = dashboardStore.fetchingDashboard;
const dashboard: any = dashboardStore.selectedDashboard;
- const period = dashboardStore.period;
const queryParams = new URLSearchParams(props.location.search);
@@ -50,6 +39,7 @@ function DashboardView(props: Props) {
search: queryParams.toString(),
});
};
+
const pushQuery = () => {
if (!queryParams.has('modal')) props.history.push('?modal=addMetric');
};
@@ -81,96 +71,14 @@ function DashboardView(props: Props) {
);
};
- const onEdit = (isTitle: boolean) => {
- dashboardStore.initDashboard(dashboard);
- setFocusedInput(isTitle);
- setShowEditModal(true);
- };
-
- const onDelete = async () => {
- if (
- await confirm({
- header: 'Confirm',
- confirmButton: 'Yes, delete',
- confirmation: `Are you sure you want to permanently delete this Dashboard?`,
- })
- ) {
- dashboardStore.deleteDashboard(dashboard).then(() => {
- props.history.push(withSiteId(`/dashboard`, siteId));
- });
- }
- };
-
if (!dashboard) return null;
return (
-
setShowEditModal(false)}
- focusTitle={focusTitle}
- />
-
-
-
-
- {dashboard?.name}
-
- }
- onDoubleClick={() => onEdit(true)}
- className="mr-3 select-none border-b border-b-borderColor-transparent hover:border-dotted hover:border-gray-medium cursor-pointer"
- />
-
-
-
-
-
- dashboardStore.setPeriod(period)}
- right={true}
- />
-
-
-
-
-
-
-
-
- {/* @ts-ignore */}
-
- onEdit(false)}
- >
- {dashboard?.description || 'Describe the purpose of this dashboard'}
-
-
-
+ {/* @ts-ignore */}
+
+