Skip to content

Commit

Permalink
Add UI polish for running emulator status
Browse files Browse the repository at this point in the history
  • Loading branch information
tjlav5 committed Sep 20, 2024
1 parent b082abe commit c9cba22
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 10 deletions.
12 changes: 5 additions & 7 deletions firebase-vscode/webviews/SidebarApp.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, {useEffect} from "react";
import React, { useEffect } from "react";
import { Spacer } from "./components/ui/Spacer";
import { broker, brokerSignal } from "./globals/html-broker";
import { AccountSection } from "./components/AccountSection";
Expand Down Expand Up @@ -60,9 +60,7 @@ function Welcome() {
}

function EmulatorsPanel() {
if (
emulatorsRunningInfo.value?.status === "starting"
) {
if (emulatorsRunningInfo.value?.status === "starting") {
const runningPanel = (
<>
<label>Emulator starting: see integrated terminal</label>
Expand Down Expand Up @@ -151,9 +149,9 @@ function DataConnect() {

function Content() {
useEffect(() => {
broker.send('getDocsLink');
broker.send("getDocsLink");
}, []);

return (
<>
<PanelSection title="Emulators">
Expand Down Expand Up @@ -202,4 +200,4 @@ export function SidebarApp() {
))}
</App>
);
}
}
13 changes: 13 additions & 0 deletions firebase-vscode/webviews/components/EmulatorPanel.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.list {
list-style: none;
}

.list-item {
align-items: center;
display: flex;
gap: 4px;
}

.running-indicator {
color: var(--vscode-testing-runAction, green);
}
30 changes: 27 additions & 3 deletions firebase-vscode/webviews/components/EmulatorPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import { Spacer } from "./ui/Spacer";
import { PanelSection } from "./ui/PanelSection";
import { EmulatorInfo } from "../../../src/emulator/types";
import { RunningEmulatorInfo } from "../messaging/types";
import { Body, Label } from "./ui/Text";
import styles from "./EmulatorPanel.scss";
import { ExternalLink } from "./ui/ExternalLink";
import { Icon } from "./ui/Icon";

/**
* Emulator info display component for the VSCode extension.
Expand All @@ -15,8 +19,10 @@ export function EmulatorPanel({
}) {
return (
<>
Running Emulators:
<Label>Running</Label>
<Spacer size="medium" />
<FormatEmulatorRunningInfo infos={emulatorInfo.displayInfo} />

{!!emulatorInfo.uiUrl && (
<>
<Spacer size="xxlarge" />
Expand All @@ -25,6 +31,16 @@ export function EmulatorPanel({
</VSCodeLink>
</>
)}

<Spacer size="large" />
<Body>
<ExternalLink
href="https://firebase.google.com/docs/emulator-suite"
prefix={<Icon icon="book" />}
>
See docs
</ExternalLink>
</Body>
</>
);
}
Expand All @@ -33,11 +49,19 @@ export function EmulatorPanel({
// an implementation detail.
function FormatEmulatorRunningInfo({ infos }: { infos: EmulatorInfo[] }) {
return (
<ul>
<ul className={styles.list}>
{infos
.filter((info) => info.name !== "logging")
.map((info, index) => (
<li key={info.pid ?? index}>{info.name}</li>
<li key={info.pid ?? index} className={styles.listItem}>
<Icon icon="circle-filled" className={styles.runningIndicator} />
<Body as="span">
{info.name}
<Label as="span" level={3}>
&nbsp;:{info.port}
</Label>
</Body>
</li>
))}
</ul>
);
Expand Down

0 comments on commit c9cba22

Please sign in to comment.