import { action, observable } from "mobx"; import { extname } from 'path'; import { observer } from "mobx-react"; import * as React from 'react'; import { Doc, DocListCast } from "../../fields/Doc"; import { Id } from "../../fields/FieldSymbols"; import { Cast, ImageCast, StrCast } from "../../fields/Types"; import { CurrentUserUtils } from "../util/CurrentUserUtils"; import { UndoManager } from "../util/UndoManager"; import "./DashboardView.scss" enum DashboardGroup { MyDashboards, SharedDashboards } @observer export class DashboardView extends React.Component { //TODO: delete dashboard, share dashboard, etc. @observable private selectedDashboardGroup = DashboardGroup.MyDashboards; @action selectDashboardGroup = (group: DashboardGroup) => { this.selectedDashboardGroup = group } newDashboard = async () => { const batch = UndoManager.StartBatch("new dash"); await CurrentUserUtils.createNewDashboard(Doc.UserDoc()); batch.end(); } clickDashboard = async (e: React.MouseEvent, dashboard: Doc) => { if (e.detail === 2) { Doc.UserDoc().activeDashboard = dashboard; Doc.UserDoc().activePage = "dashboard"; } } getDashboards = () => { const allDashboards = DocListCast(CurrentUserUtils.MyDashboards.data); if (this.selectedDashboardGroup === DashboardGroup.MyDashboards) { return allDashboards.filter((dashboard) => Doc.GetProto(dashboard).author === Doc.CurrentUserEmail) } else { return allDashboards.filter((dashboard) => Doc.GetProto(dashboard).author !== Doc.CurrentUserEmail) } } render() { return