diff --git a/pages/teams/dashboard.tsx b/pages/teams/dashboard.tsx index a74aeb9..8d12cbf 100644 --- a/pages/teams/dashboard.tsx +++ b/pages/teams/dashboard.tsx @@ -1,13 +1,82 @@ +import Image from 'next/image'; +import React, { useState } from 'react'; +import { FaMicrophoneAlt, + FaHeadphonesAlt, + FaTh, + FaAngleDown, + FaPlusSquare, + FaBroom, + FaBell, + FaFilePdf, + FaCopy, + FaClock, + FaPlay, + FaPlus, + FaCheck, + FaCode, + FaLink, + FaExternalLinkAlt, + FaArchive, + FaAtlassian, + FaSearch + +} from "react-icons/fa"; +import { IoPulseOutline, IoRemoveOutline, IoTimer } from "react-icons/io5"; +import { BsThreeDots } from "react-icons/bs"; + +import { UserStatus, User } from '../../models/user' +import { KeyCode } from '../../globals/keycode' import { useRouter } from 'next/router' import { useEffect } from 'react' import { useAuth } from '../../contexts/authContext' +let testFriends = [ + { + name: "Liam", + role: "engineer", + systemAvatar: "29", + status: UserStatus.online + }, + { + name: "Emily", + role: "engineer", + systemAvatar: "02", + status: UserStatus.online + }, + { + name: "Paul", + role: "architect", + systemAvatar: "43", + status: UserStatus.online + }, + { + name: "Mark", + role: "engineer", + systemAvatar: "04", + status: UserStatus.busy + }, + { + name: "Adriana", + role: "design", + systemAvatar: "06", + status: UserStatus.busy + }, + { + name: "Josh", + role: "design", + systemAvatar: "05", + status: UserStatus.offline + } +] + export default function Dashboard() { const { currUser, logOut } = useAuth() const router = useRouter() + const [selectedChannel, setSelectedChannel] = useState(null) + console.log("in dashboard " + currUser) useEffect(() => { @@ -30,10 +99,749 @@ export default function Dashboard() { } } + function statusBubble(status: UserStatus) { + console.log(status) + + switch(status) { + case UserStatus.online: + return + case UserStatus.busy: + return + case UserStatus.offline: + return + default: + return + } +} + + function renderPulse(status: UserStatus) { + switch(status) { + case UserStatus.online: + return + case UserStatus.busy: + return + case UserStatus.offline: + return + default: + return + } + } + + function handleKeyboardShortcut (event) { + console.log(event.keyCode) + + switch(event.keyCode) { + case KeyCode.Escape: + setSelectedChannel(null) + break + case KeyCode.Zero: + setSelectedChannel(0) + break + case KeyCode.One: + setSelectedChannel(1) + break + case KeyCode.Two: + setSelectedChannel(2) + break + case KeyCode.Three: + setSelectedChannel(3) + break + case KeyCode.Four: + setSelectedChannel(4) + break + case KeyCode.Five: + setSelectedChannel(5) + break + default: + return + } + } + return ( -
-

This is the dashboard

- -
- ) + <> +
+ {/* header content */} +
+ {/* welcome message */} + + πŸ‘‹Hey Arjun, Good Afternoon! + + {/* Date and time */} + + Tues, Jan 11th + 1:34am + + + + {/* header control section */} + + + {/* search bar */} +
+ + + + + +
+ + + + + + + {/* avatar */} + + + + profile + +
+
+ +
+ {/* personal line */} +
+ + + TEAM + + + + + + + {/* list of team members */} + { + testFriends.map((friend, i) => { + return ( + + + + + {statusBubble(friend.status)} + + profile + + + + + {friend.name} + { + selectedChannel == i ? + <> + + + + : + + } + + + + {friend.role} + + + {renderPulse(friend.status)} + + ) + }) + } +
+ +
+ {/* pinned */} +
+ + + ANNOUNCEMENTS + + + updates, pep talks, blockers, reminders + + + {/* tab pane */} + + Active + + Resolved + + + + TODAY + + + + + + +
+ {/* adriana's announcement */} + + + + + {statusBubble(UserStatus.busy)} + + profile + + + + Adriana + 5 minutes ago + + blockers + + + + + {/* arjun's announcement */} + + + + + {statusBubble(UserStatus.busy)} + + profile + + + + Arjun + 30 minutes ago + + engineering + + + + + +
+
+ + {/* rooms */} +
+ + ROOMS + + + + {/* tab pane */} + + All + + Live + + Scheduled + + Recurring + + + + Week + + + + + + + + {/* all rooms */} + + {/* spontaneous bugs room */} + + {/* header */} + + {/* meeting details */} + + bug fixing + were just fixing that jsx bug thats a paiiinnnn + + {/* badges and tags */} + + + blockers + + + + engineering + + + + + {/* room status */} + + + + live + + + {/* room attachments */} + + + + + + + + + + {/* footer */} + + + + + profile + + + + profile + + + + Arjun and Liam + + + + + + + {/* live room - design meeting */} + + {/* header */} + + {/* meeting details */} + + Shopping Cart Experience + lets finish the mockups @josh, @mark, and @arjun please step in for feedback + + {/* badges and tags */} + + + design + + + + + {/* room status */} + + + + live + + on and off all day + + {/* room attachments */} + + + + + + + + + {/* footer */} + + + + + profile + + + + Adriana + + + + + + + + {/* scheduled room - one on one */} + + {/* header */} + + {/* meeting details */} + + Arjun and Paul - One on one + performance review + + {/* badges and tags */} + + + private + + + + + {/* room status */} + + + + scheduled + + + 3ish? Ill ping you Arjun + + + + {/* footer */} + + + + + + + {/* recurring room - dsu */} + + {/* header */} + + {/* meeting details */} + + + Daily Standup + + + + {/* badges and tags */} + + + scrum + + + + engineering + + + + + {/* room status */} + + + + recurring + + + 10am daily + + + + {/* footer */} + + + + + + + + + + {/* recurring room - demo */} + + {/* header */} + + {/* meeting details */} + + + Sprint Demo + + all hands on deck...lets have fun :) + + {/* badges and tags */} + + + scrum + + + + + {/* room status */} + + + + recurring + + + biweekly fridays! + + + + {/* footer */} + + + + + + + + + + {/* recurring room - wine wednesdays */} + + {/* header */} + + {/* meeting details */} + + + Wine Wednesdays + + @JOSH YOU BETTER COME + + {/* badges and tags */} + + + party πŸŽ‰ + + + + + {/* room status */} + + + + recurring + + + wednesdays 7-9pm + + + + {/* footer */} + + + + + + + + + + +
+
+
+ + {/* attachments */} +
+ {/* header row */} + + + Attachments + + + + code, links (jira tickets, drive folders, powerpoints), screenshots + + + {/* tab pane */} + + Team + + Personal + + Favorites + + + + TODAY + + + + + + + + + + {/* row of attachments */} +
+ {/* pdf example */} + + {/* attmnt header */} + + + + + report.pdf + + + blockers + + + + {/* attachment actions */} + + + + + + + {/* attmnt footer */} + + + + + profile + + + + + Adriana + 5 minutes ago + + + + + + + {/* jira example */} + + {/* attmnt header */} + + + + + RAM-22 + technical doc - stripe + + + engineering + + + + {/* attachment actions */} + + + + + + + {/* attmnt footer */} + + + + + profile + + + + + Paul + 2 hours ago + + + + + +
+
+
+ +
+ {/* dynamic footer based on selection */} +
+ + + + + {statusBubble(UserStatus.online)} + + profile + + + + {selectedChannel == null ? "" : testFriends[selectedChannel].name} + + {selectedChannel == null ? "" : testFriends[selectedChannel].role} + + + + {/* shortcuts */} + + + R + + + SPACE + + +
+
+ + ) } \ No newline at end of file diff --git a/pages/teams/demo.tsx b/pages/teams/demo.tsx index 1b2b4f7..5d69113 100644 --- a/pages/teams/demo.tsx +++ b/pages/teams/demo.tsx @@ -28,9 +28,6 @@ import { BsThreeDots } from "react-icons/bs"; import { UserStatus, User } from '../../models/user' import { KeyCode } from '../../globals/keycode' -import { Tabs } from 'antd'; -const { TabPane } = Tabs; - let testFriends = [ { name: "Liam",