From b6b0e25503f768f831b800a6d2760b2ccbfab727 Mon Sep 17 00:00:00 2001
From: Geireann Lindfield Roberts <60007097+geireann@users.noreply.github.com>
Date: Tue, 20 Sep 2022 19:45:46 -0400
Subject: updated homepage view
---
src/client/views/topbar/TopBar.scss | 33 +++-
src/client/views/topbar/TopBar.tsx | 301 ++++++++++++++++++++++++++++--------
2 files changed, 264 insertions(+), 70 deletions(-)
(limited to 'src/client/views/topbar')
diff --git a/src/client/views/topbar/TopBar.scss b/src/client/views/topbar/TopBar.scss
index d415e9367..a1131b92e 100644
--- a/src/client/views/topbar/TopBar.scss
+++ b/src/client/views/topbar/TopBar.scss
@@ -13,7 +13,12 @@
align-items: center;
height: $topbar-height;
background-color: $dark-gray;
+ border-bottom: $standard-border;
+ padding: 0px 10px;
cursor: default;
+ display: flex;
+ justify-content: center;
+ width: 100%;
.topbar-inner-container {
display: flex;
@@ -21,6 +26,7 @@
position: relative;
display: grid;
grid-auto-columns: 33.3% 33.3% 33.3%;
+ width: 100%;
align-items: center;
// &:first-child {
@@ -70,10 +76,8 @@
align-items: center;
gap: 5px;
- .topbar-dashboards {
- display: flex;
- flex-direction: row;
- gap: 5px;
+ .topbar-dashboard-header {
+ font-weight: 600;
}
}
@@ -96,6 +100,27 @@
width: fit-content;
gap: 5px;
+ .logo-container {
+ font-size: 15;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+
+ .logo {
+ background-color: transparent;
+ width: 25px;
+ height: 25px;
+ margin-right: 5px;
+
+ }
+ }
+
.topBar-icon:hover {
background-color: $close-red;
}
diff --git a/src/client/views/topbar/TopBar.tsx b/src/client/views/topbar/TopBar.tsx
index 096b2561f..bbdb4621e 100644
--- a/src/client/views/topbar/TopBar.tsx
+++ b/src/client/views/topbar/TopBar.tsx
@@ -1,15 +1,14 @@
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { Tooltip } from '@material-ui/core';
-import { MdBugReport } from 'react-icons/md';
-import { action } from 'mobx';
+import { Button, FontSize, IconButton, Size } from 'browndash-components';
+import { action, computed, observable } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
-import { AclAdmin, Doc } from '../../../fields/Doc';
+import { FaBug, FaCamera } from 'react-icons/fa';
+import { AclAdmin, Doc, DocListCast } from '../../../fields/Doc';
import { StrCast } from '../../../fields/Types';
import { GetEffectiveAcl } from '../../../fields/util';
-import { Utils } from '../../../Utils';
import { DocumentManager } from '../../util/DocumentManager';
-import { SelectionManager } from '../../util/SelectionManager';
+import { ReportManager } from '../../util/ReportManager';
import { SettingsManager } from '../../util/SettingsManager';
import { SharingManager } from '../../util/SharingManager';
import { UndoManager } from '../../util/UndoManager';
@@ -19,7 +18,7 @@ import { DashboardView } from '../DashboardView';
import { Borders, Colors } from '../global/globalEnums';
import { MainView } from '../MainView';
import './TopBar.scss';
-import { ReportManager } from '../../util/ReportManager';
+
/**
* ABOUT: This is the topbar in Dash, which included the current Dashboard as well as access to information on the user
@@ -34,36 +33,73 @@ export class TopBar extends React.Component {
});
};
- render() {
- const activeDashboard = Doc.ActiveDashboard;
- return (
- //TODO:glr Add support for light / dark mode
-
-
-
- {activeDashboard ? (
- <>
-
{
- ContextMenu.Instance.addItem({ description: 'Logout', event: () => window.location.assign(Utils.prepend('/logout')), icon: 'edit' });
- ContextMenu.Instance.displayMenu(e.clientX + 5, e.clientY + 10);
- }}>
- {Doc.CurrentUserEmail}
-
-
-
-
- >
- ) : null}
-
-
-
activeDashboard && SelectionManager.SelectView(DocumentManager.Instance.getDocumentView(activeDashboard)!, false)}>
- {activeDashboard ? StrCast(activeDashboard.title) : 'Dash'}
-
-
{
+ @observable textColor: string = Colors.LIGHT_GRAY;
+ @observable backgroundColor: string = Colors.DARK_GRAY;
+
+ /**
+ * Returns the left hand side of the topbar.
+ * This side of the topbar contains the different modes.
+ * The modes include:
+ * - Explore mode
+ * - Tracking mode
+ */
+ @computed get topbarLeft() {
+ return (
+
+ {Doc.ActiveDashboard ?
} isCircle={true} hoverStyle="gray" color={this.textColor} /> :
+
+
+
brown dash
+
+ }
+ {Doc.ActiveDashboard &&
(MainView.Instance._exploreMode = !MainView.Instance._exploreMode))}
+ />}
+
+ );
+ }
+
+ /**
+ * Returns the center of the topbar
+ * This part of the topbar contains everything related to the current dashboard including:
+ * - Selection of dashboards
+ * - Creating a new dashboard
+ * - Taking a snapshot of a dashboard
+ */
+ @computed get topbarCenter() {
+ const myDashboards = DocListCast(Doc.MyDashboards.data);
+ const activeDashboard = Doc.ActiveDashboard;
+ // const dashboardItems = myDashboards.map(board => {
+ // const boardTitle = StrCast(board.title);
+ // console.log(boardTitle);
+ // return {
+ // text: boardTitle,
+ // onClick: () => DashboardView.openDashboard(board),
+ // val: board,
+ // };
+ // });
+ return activeDashboard ? (
+
+ {
const dashView = activeDashboard && DocumentManager.Instance.getDocumentView(activeDashboard);
ContextMenu.Instance.addItem({ description: 'Open Dashboard View', event: this.navigateToHome, icon: 'edit' });
ContextMenu.Instance.addItem({
@@ -76,35 +112,168 @@ export class TopBar extends React.Component {
icon: 'edit',
});
dashView?.showContextMenu(e.clientX + 20, e.clientY + 30);
- }}>
-
-
-
Browsing mode for directly navigating to documents } placement="bottom">
-
(MainView.Instance._exploreMode = !MainView.Instance._exploreMode))}>
-
-
-
-
-
- {Doc.ActiveDashboard ? (
-
{
- SharingManager.Instance.open(undefined, activeDashboard);
- }}>
- {GetEffectiveAcl(Doc.GetProto(Doc.ActiveDashboard)) === AclAdmin ? 'Share' : 'view original'}
-
- ) : null}
-
ReportManager.Instance.open()}>
-
-
-
window.open('https://brown-dash.github.io/Dash-Documentation/', '_blank')}>
-
-
-
SettingsManager.Instance.open()}>
-
-
-
+ }}
+ />
+
{
+ SharingManager.Instance.open(undefined, activeDashboard);
+ }}
+ type="outline"
+ fontSize={FontSize.SECONDARY}
+ size={Size.SMALL}
+ borderRadius={5}
+ hoverStyle="gray"
+ />
+ {!Doc.noviceMode && {
+ const batch = UndoManager.StartBatch('snapshot');
+ await DashboardView.snapshotDashboard();
+ batch.end();
+ }}
+ icon={ }
+ />}
+
+ ) : null;
+ }
+
+ /**
+ * Returns the right hand side of the topbar.
+ * This part of the topbar includes information about the current user,
+ * and allows the user to access their account settings etc.
+ */
+ @computed get topbarRight() {
+
+ return (
+
+ ReportManager.Instance.open()}
+ icon={ }
+ />
+ window.open('https://brown-dash.github.io/Dash-Documentation/', '_blank')}
+ icon={ }
+ />
+ SettingsManager.Instance.open()}
+ icon={ }
+ />
+ {/* window.location.assign(Utils.prepend('/logout'))} /> */}
+
+ );
+ }
+
+ // render() {
+ // const activeDashboard = Doc.ActiveDashboard;
+ // return (
+ // //TODO:glr Add support for light / dark mode
+ //
+ //
+ //
+ // {activeDashboard ? (
+ // <>
+ //
{
+ // ContextMenu.Instance.addItem({ description: 'Logout', event: () => window.location.assign(Utils.prepend('/logout')), icon: 'edit' });
+ // ContextMenu.Instance.displayMenu(e.clientX + 5, e.clientY + 10);
+ // }}>
+ // {Doc.CurrentUserEmail}
+ //
+ //
+ //
+ //
+ // >
+ // ) : null}
+ //
+ //
+ //
activeDashboard && SelectionManager.SelectView(DocumentManager.Instance.getDocumentView(activeDashboard)!, false)}>
+ // {activeDashboard ? StrCast(activeDashboard.title) : 'Dash'}
+ //
+ //
{
+ // const dashView = activeDashboard && DocumentManager.Instance.getDocumentView(activeDashboard);
+ // ContextMenu.Instance.addItem({ description: 'Open Dashboard View', event: this.navigateToHome, icon: 'edit' });
+ // ContextMenu.Instance.addItem({
+ // description: 'Snapshot Dashboard',
+ // event: async () => {
+ // const batch = UndoManager.StartBatch('snapshot');
+ // await DashboardView.snapshotDashboard();
+ // batch.end();
+ // },
+ // icon: 'edit',
+ // });
+ // dashView?.showContextMenu(e.clientX + 20, e.clientY + 30);
+ // }}>
+ //
+ //
+ //
Browsing mode for directly navigating to documents } placement="bottom">
+ //
(MainView.Instance._exploreMode = !MainView.Instance._exploreMode))}>
+ //
+ //
+ //
+ //
+ //
+ // {Doc.ActiveDashboard ? (
+ //
{
+ // SharingManager.Instance.open(undefined, activeDashboard);
+ // }}>
+ // {GetEffectiveAcl(Doc.GetProto(Doc.ActiveDashboard)) === AclAdmin ? 'Share' : 'view original'}
+ //
+ // ) : null}
+ //
ReportManager.Instance.open()}>
+ //
+ //
+ //
window.open('https://brown-dash.github.io/Dash-Documentation/', '_blank')}>
+ //
+ //
+ //
SettingsManager.Instance.open()}>
+ //
+ //
+ //
+ //
+ //
+ // );
+ // }
+ render() {
+ return (
+ //TODO:glr Add support for light / dark mode
+
+
+ {this.topbarLeft}
+ {this.topbarCenter}
+ {this.topbarRight}
);
--
cgit v1.2.3-70-g09d2