mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-03-30 14:39:56 +01:00
* Rev up prettier * Reformat * Remove deprecated tslint * Remove call to tslint and update package-lock.json
76 lines
3.1 KiB
TypeScript
76 lines
3.1 KiB
TypeScript
import { Spinner, SpinnerSize, Stack, Text } from "@fluentui/react";
|
|
import { PoolIdType } from "Common/Constants";
|
|
import { NotebookWorkspaceConnectionInfo } from "Contracts/DataModels";
|
|
import { MessageTypes } from "Contracts/ExplorerContracts";
|
|
import { NotebookTerminalComponent } from "Explorer/Controls/Notebook/NotebookTerminalComponent";
|
|
import Explorer from "Explorer/Explorer";
|
|
import { useNotebook } from "Explorer/Notebook/useNotebook";
|
|
import { QuickstartFirewallNotification } from "Explorer/Quickstart/QuickstartFirewallNotification";
|
|
import { QuickstartGuide } from "Explorer/Quickstart/QuickstartGuide";
|
|
import { checkFirewallRules } from "Explorer/Tabs/Shared/CheckFirewallRules";
|
|
import { userContext } from "UserContext";
|
|
import React, { useEffect, useState } from "react";
|
|
import FirewallRuleScreenshot from "../../../images/firewallRule.png";
|
|
|
|
interface QuickstartTabProps {
|
|
explorer: Explorer;
|
|
}
|
|
|
|
export const QuickstartTab: React.FC<QuickstartTabProps> = ({ explorer }: QuickstartTabProps): JSX.Element => {
|
|
const notebookServerInfo = useNotebook((state) => state.notebookServerInfo);
|
|
const [isAllPublicIPAddressEnabled, setIsAllPublicIPAddressEnabled] = useState<boolean>(true);
|
|
|
|
const getNotebookServerInfo = (): NotebookWorkspaceConnectionInfo => ({
|
|
authToken: notebookServerInfo.authToken,
|
|
notebookServerEndpoint: `${notebookServerInfo.notebookServerEndpoint?.replace(/\/+$/, "")}/postgresql`,
|
|
forwardingId: notebookServerInfo.forwardingId,
|
|
});
|
|
|
|
useEffect(() => {
|
|
checkFirewallRules(
|
|
"2022-11-08",
|
|
(rule) => rule.properties.startIpAddress === "0.0.0.0" && rule.properties.endIpAddress === "255.255.255.255",
|
|
setIsAllPublicIPAddressEnabled,
|
|
);
|
|
});
|
|
|
|
useEffect(() => {
|
|
explorer.allocateContainer(PoolIdType.DefaultPoolId);
|
|
}, []);
|
|
|
|
return (
|
|
<Stack style={{ width: "100%" }} horizontal>
|
|
<Stack style={{ width: "50%" }}>
|
|
<QuickstartGuide />
|
|
</Stack>
|
|
<Stack style={{ width: "50%", borderLeft: "black solid 1px" }}>
|
|
{!isAllPublicIPAddressEnabled && (
|
|
<QuickstartFirewallNotification
|
|
messageType={MessageTypes.OpenPostgresNetworkingBlade}
|
|
screenshot={FirewallRuleScreenshot}
|
|
shellName="PostgreSQL"
|
|
/>
|
|
)}
|
|
{isAllPublicIPAddressEnabled && notebookServerInfo?.notebookServerEndpoint && (
|
|
<NotebookTerminalComponent
|
|
notebookServerInfo={getNotebookServerInfo()}
|
|
databaseAccount={userContext.databaseAccount}
|
|
tabId="QuickstartPSQLShell"
|
|
/>
|
|
)}
|
|
{isAllPublicIPAddressEnabled && !notebookServerInfo?.notebookServerEndpoint && (
|
|
<Stack style={{ margin: "auto 0" }}>
|
|
<Text block style={{ margin: "auto" }}>
|
|
Connecting to the PostgreSQL shell.
|
|
</Text>
|
|
<Text block style={{ margin: "auto" }}>
|
|
If the cluster was just created, this could take up to a minute.
|
|
</Text>
|
|
<Spinner styles={{ root: { marginTop: 16 } }} size={SpinnerSize.large}></Spinner>
|
|
</Stack>
|
|
)}
|
|
</Stack>
|
|
</Stack>
|
|
);
|
|
};
|