Remove Explorer.databaseAccount (#717)

Co-authored-by: Steve Faulkner <southpolesteve@gmail.com>
This commit is contained in:
Hardikkumar Nai
2021-05-06 03:24:50 +05:30
committed by GitHub
parent fdd12b41c4
commit 8c05ac740c
67 changed files with 1077 additions and 1046 deletions

View File

@@ -350,11 +350,11 @@ exports[`test render renders with filters 1`] = `
}
>
<div
className="ms-ScrollablePane root-40"
className="ms-ScrollablePane root-72"
data-is-scrollable="true"
>
<div
className="stickyAbove-42"
className="stickyAbove-74"
style={
Object {
"height": 0,
@@ -365,7 +365,7 @@ exports[`test render renders with filters 1`] = `
}
/>
<div
className="ms-ScrollablePane--contentContainer contentContainer-41"
className="ms-ScrollablePane--contentContainer contentContainer-73"
data-is-scrollable={true}
>
<Sticky
@@ -691,18 +691,18 @@ exports[`test render renders with filters 1`] = `
validateOnLoad={true}
>
<div
className="ms-TextField directoryListFilterTextBox root-46"
className="ms-TextField directoryListFilterTextBox root-78"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-47"
className="ms-TextField-fieldGroup fieldGroup-79"
>
<input
aria-invalid={false}
aria-label="Directory filter text box"
className="ms-TextField-field field-48"
className="ms-TextField-field field-80"
id="TextField0"
onBlur={[Function]}
onChange={[Function]}
@@ -1900,7 +1900,7 @@ exports[`test render renders with filters 1`] = `
>
<button
aria-disabled={true}
className="ms-Button ms-Button--default is-disabled directoryListButton root-57"
className="ms-Button ms-Button--default is-disabled directoryListButton root-89"
data-is-focusable={false}
disabled={true}
onClick={[Function]}
@@ -1912,7 +1912,7 @@ exports[`test render renders with filters 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-58"
className="ms-Button-flexContainer flexContainer-90"
data-automationid="splitbuttonprimary"
>
<div
@@ -1943,7 +1943,7 @@ exports[`test render renders with filters 1`] = `
</List>
</div>
<div
className="stickyBelow-43"
className="stickyBelow-75"
style={
Object {
"bottom": "0px",
@@ -1954,7 +1954,7 @@ exports[`test render renders with filters 1`] = `
}
>
<div
className="stickyBelowItems-44"
className="stickyBelowItems-76"
/>
</div>
</div>

View File

@@ -9,7 +9,7 @@ describe("CodeOfConductComponent", () => {
let codeOfConductProps: CodeOfConductComponentProps;
beforeEach(() => {
const junoClient = new JunoClient(undefined);
const junoClient = new JunoClient();
junoClient.acceptCodeOfConduct = jest.fn().mockReturnValue({
status: HttpStatusCodes.OK,
data: true,

View File

@@ -154,19 +154,20 @@ describe("SettingsComponent", () => {
expect(settingsComponentInstance.hasConflictResolution()).toEqual(undefined);
const newContainer = new Explorer();
newContainer.databaseAccount = ko.observable({
id: undefined,
name: undefined,
location: undefined,
type: undefined,
kind: undefined,
tags: undefined,
properties: {
documentEndpoint: undefined,
tableEndpoint: undefined,
gremlinEndpoint: undefined,
cassandraEndpoint: undefined,
enableMultipleWriteLocations: true,
updateUserContext({
databaseAccount: {
id: undefined,
name: undefined,
location: undefined,
type: undefined,
kind: undefined,
properties: {
documentEndpoint: undefined,
tableEndpoint: undefined,
gremlinEndpoint: undefined,
cassandraEndpoint: undefined,
enableMultipleWriteLocations: true,
},
},
});
const newCollection = { ...collection };

View File

@@ -233,11 +233,7 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
}
public loadMongoIndexes = async (): Promise<void> => {
if (
userContext.apiType === "Mongo" &&
this.container.isEnableMongoCapabilityPresent() &&
this.container.databaseAccount()
) {
if (userContext.apiType === "Mongo" && userContext?.databaseAccount) {
this.mongoDBCollectionResource = await readMongoDBCollectionThroughRP(
this.collection.databaseId,
this.collection.id()
@@ -300,8 +296,7 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
this.container && userContext.apiType === "Cassandra" && hasDatabaseSharedThroughput(this.collection);
public hasConflictResolution = (): boolean =>
this.container?.databaseAccount &&
this.container.databaseAccount()?.properties?.enableMultipleWriteLocations &&
userContext?.databaseAccount?.properties?.enableMultipleWriteLocations &&
this.collection.conflictResolutionPolicy &&
!!this.collection.conflictResolutionPolicy();
@@ -876,7 +871,7 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
mongoIndexingPolicyComponentProps: MongoIndexingPolicyComponentProps
): JSX.Element => {
if (userContext.authType === AuthType.AAD) {
if (this.container.isEnableMongoCapabilityPresent()) {
if (userContext.apiType === "Mongo") {
return <MongoIndexingPolicyComponent {...mongoIndexingPolicyComponentProps} />;
}
return undefined;

View File

@@ -4,6 +4,7 @@ import React from "react";
import * as Constants from "../../../../Common/Constants";
import * as DataModels from "../../../../Contracts/DataModels";
import * as SharedConstants from "../../../../Shared/Constants";
import { updateUserContext } from "../../../../UserContext";
import Explorer from "../../../Explorer";
import { throughputUnit } from "../SettingsRenderUtils";
import { collection, container } from "../TestUtils";
@@ -80,24 +81,25 @@ describe("ScaleComponent", () => {
it("autoScale enabled", () => {
const newContainer = new Explorer();
newContainer.databaseAccount({
id: undefined,
name: undefined,
location: undefined,
type: undefined,
kind: "documentdb",
properties: {
documentEndpoint: undefined,
tableEndpoint: undefined,
gremlinEndpoint: undefined,
cassandraEndpoint: undefined,
capabilities: [
{
name: Constants.CapabilityNames.EnableAutoScale.toLowerCase(),
description: undefined,
},
],
updateUserContext({
databaseAccount: {
id: undefined,
name: undefined,
location: undefined,
type: undefined,
kind: "documentdb",
properties: {
documentEndpoint: undefined,
tableEndpoint: undefined,
gremlinEndpoint: undefined,
cassandraEndpoint: undefined,
capabilities: [
{
name: Constants.CapabilityNames.EnableAutoScale.toLowerCase(),
description: undefined,
},
],
},
},
});
const props = { ...baseProps, container: newContainer };

View File

@@ -54,8 +54,7 @@ export class ScaleComponent extends React.Component<ScaleComponentProps> {
}
public isAutoScaleEnabled = (): boolean => {
const accountCapabilities: DataModels.Capability[] = this.props.container?.databaseAccount()?.properties
?.capabilities;
const accountCapabilities: DataModels.Capability[] = userContext?.databaseAccount?.properties?.capabilities;
const enableAutoScaleCapability =
accountCapabilities &&
accountCapabilities.find((capability: DataModels.Capability) => {
@@ -170,7 +169,7 @@ export class ScaleComponent extends React.Component<ScaleComponentProps> {
private getThroughputInputComponent = (): JSX.Element => (
<ThroughputInputAutoPilotV3Component
databaseAccount={this.props.container.databaseAccount()}
databaseAccount={userContext?.databaseAccount}
databaseName={this.databaseId}
collectionName={this.collectionId}
throughput={this.props.throughput}
@@ -199,8 +198,7 @@ export class ScaleComponent extends React.Component<ScaleComponentProps> {
);
private isFreeTierAccount(): boolean {
const databaseAccount = this.props.container?.databaseAccount();
return databaseAccount?.properties?.enableFreeTier;
return userContext?.databaseAccount?.properties?.enableFreeTier;
}
private getFreeTierInfoMessage(): JSX.Element {

View File

@@ -422,7 +422,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -1216,7 +1215,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@@ -1234,7 +1232,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@@ -1707,7 +1704,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -2501,7 +2497,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@@ -2519,7 +2514,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@@ -3005,7 +2999,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -3799,7 +3792,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@@ -3817,7 +3809,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@@ -4290,7 +4281,6 @@ exports[`SettingsComponent renders 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -5084,7 +5074,6 @@ exports[`SettingsComponent renders 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@@ -5102,7 +5091,6 @@ exports[`SettingsComponent renders 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],

View File

@@ -216,7 +216,7 @@ export class ThroughputInput extends React.Component<ThroughputInputProps, Throu
}
private getCostAcknowledgeText(): string {
const databaseAccount = userContext.databaseAccount;
const { databaseAccount } = userContext;
if (!databaseAccount || !databaseAccount.properties) {
return "";
}
@@ -259,8 +259,8 @@ interface CostEstimateTextProps {
const CostEstimateText: React.FunctionComponent<CostEstimateTextProps> = (props: CostEstimateTextProps) => {
const { requestUnits, isAutoscale } = props;
const databaseAccount = userContext.databaseAccount;
if (!databaseAccount || !databaseAccount.properties) {
const { databaseAccount } = userContext;
if (!databaseAccount?.properties) {
return <></>;
}

View File

@@ -80,7 +80,7 @@ export class ContainerSampleGenerator {
if (!queries || queries.length < 1) {
return;
}
const account = userContext.databaseAccount;
const { databaseAccount: account } = userContext;
const databaseId = collection.databaseId;
const gremlinClient = new GremlinClient();
gremlinClient.initialize({

View File

@@ -31,7 +31,7 @@ import { ExplorerSettings } from "../Shared/ExplorerSettings";
import { Action, ActionModifiers } from "../Shared/Telemetry/TelemetryConstants";
import * as TelemetryProcessor from "../Shared/Telemetry/TelemetryProcessor";
import { ArcadiaResourceManager } from "../SparkClusterManager/ArcadiaResourceManager";
import { userContext } from "../UserContext";
import { updateUserContext, userContext } from "../UserContext";
import { getCollectionName } from "../Utils/APITypeUtils";
import { decryptJWTToken, getAuthorizationHeader } from "../Utils/AuthorizationUtils";
import { stringToBlob } from "../Utils/BlobUtils";
@@ -109,18 +109,8 @@ export default class Explorer {
public refreshTreeTitle: ko.Observable<string>;
public collapsedResourceTreeWidth: number = ExplorerMetrics.CollapsedResourceTreeWidth;
/**
* @deprecated
* Use userContext.databaseAccount instead
* */
public databaseAccount: ko.Observable<DataModels.DatabaseAccount>;
public collectionCreationDefaults: ViewModels.CollectionCreationDefaults = SharedConstants.CollectionCreationDefaults;
public isFixedCollectionWithSharedThroughputSupported: ko.Computed<boolean>;
/**
* @deprecated
* Compare a string with userContext.apiType instead: userContext.apiType === "Mongo"
* */
public isEnableMongoCapabilityPresent: ko.Computed<boolean>;
public isServerlessEnabled: ko.Computed<boolean>;
public isAccountReady: ko.Observable<boolean>;
public canSaveQueries: ko.Computed<boolean>;
@@ -231,7 +221,6 @@ export default class Explorer {
this.deleteDatabaseText = ko.observable<string>("Delete Database");
this.refreshTreeTitle = ko.observable<string>("Refresh collections");
this.databaseAccount = ko.observable<DataModels.DatabaseAccount>();
this.isAccountReady = ko.observable<boolean>(false);
this._isInitializingNotebooks = false;
this.arcadiaToken = ko.observable<string>();
@@ -266,7 +255,7 @@ export default class Explorer {
async () => {
this.isNotebookEnabled(
userContext.authType !== AuthType.ResourceToken &&
((await this._containsDefaultNotebookWorkspace(this.databaseAccount())) ||
((await this._containsDefaultNotebookWorkspace(userContext.databaseAccount)) ||
userContext.features.enableNotebooks)
);
TelemetryProcessor.trace(Action.NotebookEnabled, ActionModifiers.Mark, {
@@ -275,7 +264,7 @@ export default class Explorer {
});
if (this.isNotebookEnabled()) {
await this.initNotebooks(this.databaseAccount());
await this.initNotebooks(userContext.databaseAccount);
const workspaces = await this._getArcadiaWorkspaces();
this.arcadiaWorkspaces(workspaces);
} else if (this.notebookToImport) {
@@ -377,36 +366,20 @@ export default class Explorer {
return true;
}
if (this.databaseAccount && !this.databaseAccount()) {
if (!userContext.databaseAccount) {
return false;
}
return this.isEnableMongoCapabilityPresent();
return userContext.apiType === "Mongo";
});
this.isServerlessEnabled = ko.computed(
() =>
this.databaseAccount &&
this.databaseAccount()?.properties?.capabilities?.find(
userContext.databaseAccount?.properties?.capabilities?.find(
(item) => item.name === Constants.CapabilityNames.EnableServerless
) !== undefined
);
this.isEnableMongoCapabilityPresent = ko.computed(() => {
const capabilities = this.databaseAccount && this.databaseAccount()?.properties?.capabilities;
if (!capabilities) {
return false;
}
for (let i = 0; i < capabilities.length; i++) {
if (typeof capabilities[i] === "object" && capabilities[i].name === Constants.CapabilityNames.EnableMongo) {
return true;
}
}
return false;
});
this.isHostedDataExplorerEnabled = ko.computed<boolean>(
() =>
configContext.platform === Platform.Portal &&
@@ -672,11 +645,11 @@ export default class Explorer {
this.isSynapseLinkUpdating(true);
this._closeSynapseLinkModalDialog();
const resourceProviderClient = new ResourceProviderClientFactory().getOrCreate(this.databaseAccount().id);
const resourceProviderClient = new ResourceProviderClientFactory().getOrCreate(userContext.databaseAccount.id);
try {
const databaseAccount: DataModels.DatabaseAccount = await resourceProviderClient.patchAsync(
this.databaseAccount().id,
userContext.databaseAccount.id,
"2019-12-12",
{
properties: {
@@ -687,7 +660,7 @@ export default class Explorer {
clearInProgressMessage();
logConsoleInfo("Enabled Azure Synapse Link for this account");
TelemetryProcessor.traceSuccess(Action.EnableAzureSynapseLink, {}, startTime);
this.databaseAccount(databaseAccount);
updateUserContext({ databaseAccount });
} catch (error) {
clearInProgressMessage();
logConsoleError(`Enabling Azure Synapse Link for this account failed. ${getErrorMessage(error)}`);
@@ -1010,14 +983,14 @@ export default class Explorer {
}
private async ensureNotebookWorkspaceRunning() {
if (!this.databaseAccount()) {
if (!userContext.databaseAccount) {
return;
}
let clearMessage;
try {
const notebookWorkspace = await this.notebookWorkspaceManager.getNotebookWorkspaceAsync(
this.databaseAccount().id,
userContext.databaseAccount.id,
"default"
);
if (
@@ -1027,7 +1000,7 @@ export default class Explorer {
notebookWorkspace.properties.status.toLowerCase() === "stopped"
) {
clearMessage = NotificationConsoleUtils.logConsoleProgress("Initializing notebook workspace");
await this.notebookWorkspaceManager.startNotebookWorkspaceAsync(this.databaseAccount().id, "default");
await this.notebookWorkspaceManager.startNotebookWorkspaceAsync(userContext.databaseAccount.id, "default");
}
} catch (error) {
handleError(error, "Explorer/ensureNotebookWorkspaceRunning", "Failed to initialize notebook workspace");
@@ -1112,21 +1085,10 @@ export default class Explorer {
if (process.env.NODE_ENV === "development") {
sessionStorage.setItem("portalDataExplorerInitMessage", JSON.stringify(inputs));
}
const databaseAccount = inputs.databaseAccount || null;
if (inputs.defaultCollectionThroughput) {
this.collectionCreationDefaults = inputs.defaultCollectionThroughput;
}
this.databaseAccount(databaseAccount);
this.setFeatureFlagsFromFlights(inputs.flights);
TelemetryProcessor.traceSuccess(
Action.LoadDatabaseAccount,
{
dataExplorerArea: Constants.Areas.ResourceTree,
},
inputs.loadDatabaseAccountTimestamp
);
this.isAccountReady(true);
}
}
@@ -1616,7 +1578,7 @@ export default class Explorer {
}
private async _refreshNotebooksEnabledStateForAccount(): Promise<void> {
const authType = userContext.authType;
const { databaseAccount, authType } = userContext;
if (
authType === AuthType.EncryptedToken ||
authType === AuthType.ResourceToken ||
@@ -1626,7 +1588,6 @@ export default class Explorer {
return;
}
const databaseAccount = this.databaseAccount();
const firstWriteLocation =
databaseAccount?.properties?.writeLocations &&
databaseAccount?.properties?.writeLocations[0]?.locationName.toLowerCase();
@@ -1665,9 +1626,8 @@ export default class Explorer {
}
public _refreshSparkEnabledStateForAccount = async (): Promise<void> => {
const subscriptionId = userContext.subscriptionId;
const { subscriptionId, authType } = userContext;
const armEndpoint = configContext.ARM_ENDPOINT;
const authType = userContext.authType;
if (!subscriptionId || !armEndpoint || authType === AuthType.EncryptedToken) {
// explorer is not aware of the database account yet
this.isSparkEnabledForAccount(false);
@@ -1694,9 +1654,8 @@ export default class Explorer {
};
public _isAfecFeatureRegistered = async (featureName: string): Promise<boolean> => {
const subscriptionId = userContext.subscriptionId;
const { subscriptionId, authType } = userContext;
const armEndpoint = configContext.ARM_ENDPOINT;
const authType = userContext.authType;
if (!featureName || !subscriptionId || !armEndpoint || authType === AuthType.EncryptedToken) {
// explorer is not aware of the database account yet
return false;
@@ -2008,7 +1967,7 @@ export default class Explorer {
}
public async handleOpenFileAction(path: string): Promise<void> {
if (this.isAccountReady() && !(await this._containsDefaultNotebookWorkspace(this.databaseAccount()))) {
if (this.isAccountReady() && !(await this._containsDefaultNotebookWorkspace(userContext.databaseAccount))) {
this.closeAllPanes();
this._openSetupNotebooksPaneForQuickstart();
}

View File

@@ -9,6 +9,7 @@ import * as React from "react";
import { ReactAdapter } from "../../../Bindings/ReactBindingHandler";
import { StyleConstants } from "../../../Common/Constants";
import * as ViewModels from "../../../Contracts/ViewModels";
import { userContext } from "../../../UserContext";
import { CommandButtonComponentProps } from "../../Controls/CommandButton/CommandButtonComponent";
import Explorer from "../../Explorer";
import * as CommandBarComponentButtonFactory from "./CommandBarComponentButtonFactory";
@@ -39,7 +40,7 @@ export class CommandBarComponentAdapter implements ReactAdapter {
container.isResourceTokenCollectionNodeSelected,
container.isHostedDataExplorerEnabled,
container.isSynapseLinkUpdating,
container.databaseAccount,
userContext?.databaseAccount,
this.isNotebookTabActive,
container.isServerlessEnabled,
];

View File

@@ -239,21 +239,11 @@ function createOpenSynapseLinkDialogButton(container: Explorer): CommandButtonCo
return undefined;
}
if (
container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.enableAnalyticalStorage
) {
if (userContext?.databaseAccount?.properties?.enableAnalyticalStorage) {
return undefined;
}
const capabilities =
(container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.capabilities) ||
[];
const capabilities = userContext?.databaseAccount?.properties?.capabilities || [];
if (capabilities.some((capability) => capability.name === Constants.CapabilityNames.EnableStorageAnalytics)) {
return undefined;
}

View File

@@ -5,6 +5,7 @@ import * as Constants from "../../Common/Constants";
import { getErrorMessage } from "../../Common/ErrorHandlingUtils";
import * as Logger from "../../Common/Logger";
import * as DataModels from "../../Contracts/DataModels";
import { userContext } from "../../UserContext";
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
export class NotebookContainerClient {
@@ -130,14 +131,15 @@ export class NotebookContainerClient {
private async recreateNotebookWorkspaceAsync(): Promise<void> {
const explorer = window.dataExplorer;
if (!explorer || !explorer.databaseAccount() || !explorer.databaseAccount().id) {
const { databaseAccount } = userContext;
if (!databaseAccount?.id) {
throw new Error("DataExplorer not initialized");
}
const notebookWorkspaceManager = explorer.notebookWorkspaceManager;
try {
await notebookWorkspaceManager.deleteNotebookWorkspaceAsync(explorer.databaseAccount().id, "default");
await notebookWorkspaceManager.createNotebookWorkspaceAsync(explorer.databaseAccount().id, "default");
await notebookWorkspaceManager.deleteNotebookWorkspaceAsync(databaseAccount?.id, "default");
await notebookWorkspaceManager.createNotebookWorkspaceAsync(databaseAccount?.id, "default");
} catch (error) {
Logger.logError(getErrorMessage(error), "NotebookContainerClient/recreateNotebookWorkspaceAsync");
return Promise.reject(error);

View File

@@ -17,6 +17,7 @@ import { GitHubOAuthService } from "../../GitHub/GitHubOAuthService";
import { JunoClient } from "../../Juno/JunoClient";
import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants";
import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor";
import { userContext } from "../../UserContext";
import { getFullName } from "../../Utils/UserUtils";
import Explorer from "../Explorer";
import { ContextualPaneBase } from "../Panes/ContextualPaneBase";
@@ -56,7 +57,7 @@ export default class NotebookManager {
public initialize(params: NotebookManagerOptions): void {
this.params = params;
this.junoClient = new JunoClient(this.params.container.databaseAccount);
this.junoClient = new JunoClient();
this.gitHubOAuthService = new GitHubOAuthService(this.junoClient);
this.gitHubClient = new GitHubClient(this.onGitHubClientError);
@@ -73,7 +74,7 @@ export default class NotebookManager {
this.notebookClient = new NotebookContainerClient(
this.params.container.notebookServerInfo,
() => this.params.container.initNotebooks(this.params.container.databaseAccount()),
() => this.params.container.initNotebooks(userContext?.databaseAccount),
(update: MemoryUsageInfo) => this.params.container.memoryUsageInfo(update)
);

View File

@@ -4,43 +4,38 @@ import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer";
import AddCollectionPane from "./AddCollectionPane";
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: false,
},
type: undefined,
};
const mockFreeTierDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: true,
},
type: undefined,
};
describe("Add Collection Pane", () => {
describe("isValid()", () => {
let explorer: Explorer;
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: false,
},
type: undefined,
};
const mockFreeTierDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: true,
},
type: undefined,
};
beforeEach(() => {
explorer = new Explorer();
});
it("should be true if graph API and partition key is not /id nor /label", () => {
updateUserContext({
databaseAccount: {
@@ -49,6 +44,7 @@ describe("Add Collection Pane", () => {
},
} as DatabaseAccount,
});
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/blah");
expect(addCollectionPane.isValid()).toBe(true);
@@ -62,6 +58,7 @@ describe("Add Collection Pane", () => {
},
} as DatabaseAccount,
});
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/id");
expect(addCollectionPane.isValid()).toBe(false);
@@ -78,6 +75,7 @@ describe("Add Collection Pane", () => {
},
} as DatabaseAccount,
});
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
addCollectionPane.partitionKey("/id");
@@ -88,7 +86,8 @@ describe("Add Collection Pane", () => {
});
it("should display free tier text in upsell messaging", () => {
explorer.databaseAccount(mockFreeTierDatabaseAccount);
updateUserContext({ databaseAccount: mockFreeTierDatabaseAccount });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
expect(addCollectionPane.isFreeTierAccount()).toBe(true);
expect(addCollectionPane.upsellMessage()).toContain("With free tier");
@@ -97,7 +96,8 @@ describe("Add Collection Pane", () => {
});
it("should display standard texr in upsell messaging", () => {
explorer.databaseAccount(mockDatabaseAccount);
updateUserContext({ databaseAccount: mockDatabaseAccount });
const explorer = new Explorer();
const addCollectionPane = explorer.addCollectionPane as AddCollectionPane;
expect(addCollectionPane.isFreeTierAccount()).toBe(false);
expect(addCollectionPane.upsellMessage()).toContain("Start at");

View File

@@ -108,6 +108,8 @@ export default class AddCollectionPane extends ContextualPaneBase {
this.collectionWithThroughputInShared = ko.observable<boolean>(false);
this.databaseIds = ko.observableArray<string>();
this.uniqueKeys = ko.observableArray<DynamicListItem>();
this.isSharedAutoPilotSelected = ko.observable<boolean>();
this.isAutoPilotSelected = ko.observable<boolean>();
if (this.container) {
this.container.databases.subscribe((newDatabases: ViewModels.Database[]) => {
@@ -177,7 +179,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
return "";
}
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
@@ -235,7 +237,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
return "";
}
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
@@ -523,10 +525,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
});
this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount();
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
return userContext?.databaseAccount?.properties?.enableFreeTier;
});
this.showUpsellMessage = ko.pureComputed(() => {
@@ -596,9 +595,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
});
this._isSynapseLinkEnabled = ko.computed(() => {
const databaseAccount =
(this.container && this.container.databaseAccount && this.container.databaseAccount()) ||
({} as DataModels.DatabaseAccount);
const databaseAccount = userContext?.databaseAccount || ({} as DataModels.DatabaseAccount);
const properties = databaseAccount.properties || ({} as DataModels.DatabaseAccountExtendedProperties);
// TODO: remove check for capability once all accounts have been migrated
@@ -641,7 +638,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
}
public getSharedThroughputDefault(): boolean {
const subscriptionType = userContext.subscriptionType;
const { subscriptionType } = userContext;
if (subscriptionType === SubscriptionType.EA || this.container.isServerlessEnabled()) {
return false;
}
@@ -809,7 +806,7 @@ export default class AddCollectionPane extends ContextualPaneBase {
let indexingPolicy: DataModels.IndexingPolicy;
let createMongoWildcardIndex: boolean;
// todo - remove mongo indexing policy ticket # 616274
if (userContext.apiType === "Mongo" && this.container.isEnableMongoCapabilityPresent()) {
if (userContext.apiType === "Mongo") {
createMongoWildcardIndex = this.shouldCreateMongoWildcardIndex();
} else if (this.showIndexingOptionsForSharedThroughput()) {
if (this.useIndexingForSharedThroughput()) {

View File

@@ -525,7 +525,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
}}
>
<Stack className="panelGroupSpacing" id="collapsibleSectionContent">
{this.props.explorer.isEnableMongoCapabilityPresent() && (
{userContext.databaseAccount.properties.capabilities.find((c) => c.name === "EnableMongo") && (
<Stack className="panelGroupSpacing">
<Stack horizontal>
<span className="mandatoryStar">*&nbsp;</span>
@@ -841,7 +841,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
}
private isSynapseLinkEnabled(): boolean {
const properties = userContext.databaseAccount?.properties;
const { properties } = userContext.databaseAccount;
if (!properties) {
return false;

View File

@@ -5,47 +5,43 @@ import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer";
import AddDatabasePane from "./AddDatabasePane";
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: false,
},
type: undefined,
};
const mockFreeTierDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: true,
},
type: undefined,
};
describe("Add Database Pane", () => {
describe("getSharedThroughputDefault()", () => {
let explorer: Explorer;
const mockDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: false,
},
type: undefined,
};
const mockFreeTierDatabaseAccount: DatabaseAccount = {
id: "mock",
kind: "DocumentDB",
location: "",
name: "mock",
properties: {
documentEndpoint: "",
cassandraEndpoint: "",
gremlinEndpoint: "",
tableEndpoint: "",
enableFreeTier: true,
},
type: undefined,
};
beforeEach(() => {
explorer = new Explorer();
});
it("should be true if subscription type is Benefits", () => {
updateUserContext({
subscriptionType: SubscriptionType.Benefits,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
@@ -54,6 +50,7 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.EA,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(false);
});
@@ -62,6 +59,7 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.Free,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
@@ -70,6 +68,7 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.Internal,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
@@ -78,12 +77,14 @@ describe("Add Database Pane", () => {
updateUserContext({
subscriptionType: SubscriptionType.PAYG,
});
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.getSharedThroughputDefault()).toBe(true);
});
it("should display free tier text in upsell messaging", () => {
explorer.databaseAccount(mockFreeTierDatabaseAccount);
updateUserContext({ databaseAccount: mockFreeTierDatabaseAccount });
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.isFreeTierAccount()).toBe(true);
expect(addDatabasePane.upsellMessage()).toContain("With free tier");
@@ -92,7 +93,8 @@ describe("Add Database Pane", () => {
});
it("should display standard texr in upsell messaging", () => {
explorer.databaseAccount(mockDatabaseAccount);
updateUserContext({ databaseAccount: mockDatabaseAccount });
const explorer = new Explorer();
const addDatabasePane = explorer.addDatabasePane as AddDatabasePane;
expect(addDatabasePane.isFreeTierAccount()).toBe(false);
expect(addDatabasePane.upsellMessage()).toContain("Start at");

View File

@@ -112,18 +112,13 @@ export default class AddDatabasePane extends ContextualPaneBase {
return "";
}
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
const regions =
(account &&
account.properties &&
account.properties.readLocations &&
account.properties.readLocations.length) ||
1;
const multimaster = (account && account.properties && account.properties.enableMultipleWriteLocations) || false;
const regions = account?.properties?.readLocations?.length || 1;
const multimaster = account?.properties?.enableMultipleWriteLocations || false;
let estimatedSpendAcknowledge: string;
let estimatedSpend: string;
@@ -175,10 +170,7 @@ export default class AddDatabasePane extends ContextualPaneBase {
});
this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount();
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
return userContext?.databaseAccount?.properties?.enableFreeTier;
});
this.showUpsellMessage = ko.pureComputed(() => {
@@ -336,7 +328,7 @@ export default class AddDatabasePane extends ContextualPaneBase {
}
public getSharedThroughputDefault(): boolean {
const subscriptionType = userContext.subscriptionType;
const { subscriptionType } = userContext;
if (subscriptionType === SubscriptionType.EA || this.container.isServerlessEnabled()) {
return false;

View File

@@ -78,10 +78,7 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
this.canExceedMaximumValue = ko.pureComputed(() => this.container.canExceedMaximumValue());
this.isFreeTierAccount = ko.computed<boolean>(() => {
const databaseAccount = this.container && this.container.databaseAccount && this.container.databaseAccount();
const isFreeTierAccount =
databaseAccount && databaseAccount.properties && databaseAccount.properties.enableFreeTier;
return isFreeTierAccount;
return userContext?.databaseAccount?.properties?.enableFreeTier;
});
this.tableId = ko.observable<string>("");
@@ -116,7 +113,7 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
this.resetData();
this.requestUnitsUsageCostDedicated = ko.computed(() => {
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
@@ -165,18 +162,13 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
});
this.requestUnitsUsageCostShared = ko.computed(() => {
const account = this.container.databaseAccount();
const { databaseAccount: account } = userContext;
if (!account) {
return "";
}
const regions =
(account &&
account.properties &&
account.properties.readLocations &&
account.properties.readLocations.length) ||
1;
const multimaster = (account && account.properties && account.properties.enableMultipleWriteLocations) || false;
const regions = account?.properties?.readLocations?.length || 1;
const multimaster = account?.properties?.enableMultipleWriteLocations || false;
let estimatedSpend: string;
let estimatedSharedSpendAcknowledge: string;
if (!this.isSharedAutoPilotSelected()) {
@@ -365,18 +357,19 @@ export default class CassandraAddCollectionPane extends ContextualPaneBase {
createTableQuery: createTableQuery,
};
const startKey: number = TelemetryProcessor.traceStart(Action.CreateCollection, addCollectionPaneStartMessage);
const { databaseAccount } = userContext;
if (toCreateKeyspace) {
createTableAndKeyspacePromise = (<CassandraAPIDataClient>this.container.tableDataClient).createTableAndKeyspace(
this.container.databaseAccount().properties.cassandraEndpoint,
this.container.databaseAccount().id,
databaseAccount?.properties.cassandraEndpoint,
databaseAccount?.id,
this.container,
createTableQuery,
createKeyspaceQuery
);
} else {
createTableAndKeyspacePromise = (<CassandraAPIDataClient>this.container.tableDataClient).createTableAndKeyspace(
this.container.databaseAccount().properties.cassandraEndpoint,
this.container.databaseAccount().id,
databaseAccount?.properties.cassandraEndpoint,
databaseAccount?.id,
this.container,
createTableQuery
);

View File

@@ -1071,7 +1071,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
>
<button
aria-label="Close pane"
className="ms-Button ms-Button--icon closePaneBtn root-140"
className="ms-Button ms-Button--icon closePaneBtn root-172"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@@ -1084,16 +1084,16 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-141"
className="ms-Button-flexContainer flexContainer-173"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-143"
className="ms-Button-icon icon-175"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-148 ms-Button-icon icon-143"
className="ms-Icon root-37 css-180 ms-Button-icon icon-175"
data-icon-name="Cancel"
role="presentation"
style={
@@ -1163,7 +1163,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
variant="small"
>
<span
className="css-149"
className="css-181"
>
Confirm by typing the
container
@@ -1468,18 +1468,18 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
value=""
>
<div
className="ms-TextField root-151"
className="ms-TextField root-183"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-152"
className="ms-TextField-fieldGroup fieldGroup-184"
>
<input
aria-invalid={false}
autoFocus={true}
className="ms-TextField-field field-153"
className="ms-TextField-field field-185"
id="confirmCollectionId"
onBlur={[Function]}
onChange={[Function]}
@@ -1502,7 +1502,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
variant="small"
>
<span
className="css-162"
className="css-194"
>
Help us improve Azure Cosmos DB!
</span>
@@ -1512,7 +1512,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
variant="small"
>
<span
className="css-162"
className="css-194"
>
What is the reason why you are deleting this
container
@@ -1819,17 +1819,17 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
value=""
>
<div
className="ms-TextField ms-TextField--multiline root-151"
className="ms-TextField ms-TextField--multiline root-183"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-163"
className="ms-TextField-fieldGroup fieldGroup-195"
>
<textarea
aria-invalid={false}
className="ms-TextField-field field-164"
className="ms-TextField-field field-196"
id="deleteCollectionFeedbackInput"
onBlur={[Function]}
onChange={[Function]}
@@ -3563,7 +3563,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
>
<button
aria-label="Submit"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-166"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-198"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@@ -3581,14 +3581,14 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-141"
className="ms-Button-flexContainer flexContainer-173"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-142"
className="ms-Button-textContainer textContainer-174"
>
<span
className="ms-Button-label label-167"
className="ms-Button-label label-199"
id="id__9"
key="id__9"
>

View File

@@ -1062,7 +1062,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<button
aria-label="Close pane"
className="ms-Button ms-Button--icon closePaneBtn root-40"
className="ms-Button ms-Button--icon closePaneBtn root-72"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@@ -1075,16 +1075,16 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-43"
className="ms-Button-icon icon-75"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-48 ms-Button-icon icon-43"
className="ms-Icon root-37 css-80 ms-Button-icon icon-75"
data-icon-name="Cancel"
role="presentation"
style={
@@ -1429,7 +1429,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
>
Partition key value
</label>
@@ -1439,7 +1439,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
horizontal={true}
>
<div
className="ms-Stack css-50"
className="ms-Stack css-82"
>
<StyledWithResponsiveMode
key=".0:$.0"
@@ -2336,7 +2336,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label ms-Dropdown-label root-67"
className="ms-Label ms-Dropdown-label root-99"
id="Dropdown3-label"
>
Key
@@ -2348,7 +2348,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-expanded="false"
aria-haspopup="listbox"
aria-labelledby="Dropdown3-label Dropdown3-option"
className="ms-Dropdown dropdown-51"
className="ms-Dropdown dropdown-83"
data-is-focusable={true}
id="Dropdown3"
onBlur={[Function]}
@@ -2368,23 +2368,23 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-posinset={1}
aria-selected={true}
aria-setsize={2}
className="ms-Dropdown-title title-52"
className="ms-Dropdown-title title-84"
id="Dropdown3-option"
role="option"
>
String
</span>
<span
className="ms-Dropdown-caretDownWrapper caretDownWrapper-53"
className="ms-Dropdown-caretDownWrapper caretDownWrapper-85"
>
<StyledIconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
>
<IconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
styles={[Function]}
theme={
@@ -2663,7 +2663,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-68"
className="ms-Dropdown-caretDown caretDown-100"
data-icon-name="ChevronDown"
>
@@ -2969,7 +2969,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
validateOnLoad={true}
>
<div
className="ms-TextField root-70"
className="ms-TextField root-102"
>
<div
className="ms-TextField-wrapper"
@@ -3258,7 +3258,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
htmlFor="confirmCollectionId"
id="TextFieldLabel6"
>
@@ -3267,13 +3267,13 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
</LabelBase>
</StyledLabelBase>
<div
className="ms-TextField-fieldGroup fieldGroup-71"
className="ms-TextField-fieldGroup fieldGroup-103"
>
<input
aria-invalid={false}
aria-labelledby="TextFieldLabel6"
autoFocus={true}
className="ms-TextField-field field-72"
className="ms-TextField-field field-104"
id="confirmCollectionId"
onBlur={[Function]}
onChange={[Function]}
@@ -3581,7 +3581,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
>
Enter input parameters (if any)
</label>
@@ -3591,7 +3591,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
horizontal={true}
>
<div
className="ms-Stack css-50"
className="ms-Stack css-82"
>
<StyledWithResponsiveMode
key=".0:$.0"
@@ -4488,7 +4488,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label ms-Dropdown-label root-67"
className="ms-Label ms-Dropdown-label root-99"
id="Dropdown7-label"
>
Key
@@ -4500,7 +4500,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-expanded="false"
aria-haspopup="listbox"
aria-labelledby="Dropdown7-label Dropdown7-option"
className="ms-Dropdown dropdown-51"
className="ms-Dropdown dropdown-83"
data-is-focusable={true}
id="Dropdown7"
onBlur={[Function]}
@@ -4520,23 +4520,23 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
aria-posinset={1}
aria-selected={true}
aria-setsize={2}
className="ms-Dropdown-title title-52"
className="ms-Dropdown-title title-84"
id="Dropdown7-option"
role="option"
>
String
</span>
<span
className="ms-Dropdown-caretDownWrapper caretDownWrapper-53"
className="ms-Dropdown-caretDownWrapper caretDownWrapper-85"
>
<StyledIconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
>
<IconBase
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-54"
className="ms-Dropdown-caretDown caretDown-86"
iconName="ChevronDown"
styles={[Function]}
theme={
@@ -4815,7 +4815,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Dropdown-caretDown caretDown-68"
className="ms-Dropdown-caretDown caretDown-100"
data-icon-name="ChevronDown"
>
@@ -5123,7 +5123,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
value=""
>
<div
className="ms-TextField root-70"
className="ms-TextField root-102"
>
<div
className="ms-TextField-wrapper"
@@ -5412,7 +5412,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
}
>
<label
className="ms-Label root-49"
className="ms-Label root-81"
htmlFor="confirmCollectionId"
id="TextFieldLabel10"
>
@@ -5421,13 +5421,13 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
</LabelBase>
</StyledLabelBase>
<div
className="ms-TextField-fieldGroup fieldGroup-71"
className="ms-TextField-fieldGroup fieldGroup-103"
>
<input
aria-invalid={false}
aria-labelledby="TextFieldLabel10"
autoFocus={true}
className="ms-TextField-field field-72"
className="ms-TextField-field field-104"
id="confirmCollectionId"
onBlur={[Function]}
onChange={[Function]}
@@ -5735,7 +5735,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
width={20}
>
<div
className="ms-Image addRemoveIconLabel root-81"
className="ms-Image addRemoveIconLabel root-113"
style={
Object {
"height": 30,
@@ -5745,7 +5745,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<img
alt="Delete param"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-82"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-114"
id="deleteparam"
key="fabricImage"
onClick={[Function]}
@@ -6050,7 +6050,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
width={20}
>
<div
className="ms-Image addRemoveIconLabel root-81"
className="ms-Image addRemoveIconLabel root-113"
style={
Object {
"height": 30,
@@ -6060,7 +6060,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<img
alt="Add param"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-82"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-114"
id="addparam"
key="fabricImage"
onClick={[Function]}
@@ -6079,7 +6079,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
onClick={[Function]}
>
<div
className="ms-Stack css-50"
className="ms-Stack css-82"
onClick={[Function]}
>
<StyledImageBase
@@ -6371,7 +6371,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
width={20}
>
<div
className="ms-Image root-81"
className="ms-Image root-113"
style={
Object {
"height": 30,
@@ -6381,7 +6381,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<img
alt="Add param"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-82"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-114"
key="fabricImage"
onError={[Function]}
onLoad={[Function]}
@@ -6395,7 +6395,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
key=".0:$.1"
>
<span
className="addNewParamStyle css-83"
className="addNewParamStyle css-115"
>
Add New Param
</span>
@@ -8121,7 +8121,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
>
<button
aria-label="Submit"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-84"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-116"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@@ -8139,14 +8139,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-42"
className="ms-Button-textContainer textContainer-74"
>
<span
className="ms-Button-label label-85"
className="ms-Button-label label-117"
id="id__11"
key="id__11"
>

View File

@@ -411,7 +411,6 @@ exports[`GitHub Repos Panel should render Default properly 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -1205,7 +1204,6 @@ exports[`GitHub Repos Panel should render Default properly 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@@ -1223,7 +1221,6 @@ exports[`GitHub Repos Panel should render Default properly 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],

View File

@@ -1704,7 +1704,7 @@ exports[`Setup Notebooks Panel should render Default properly 1`] = `
>
<button
aria-label="Complete setup"
className="ms-Button ms-Button--primary btncreatecoll1 btnSetupQueries root-40"
className="ms-Button ms-Button--primary btncreatecoll1 btnSetupQueries root-72"
data-is-focusable={true}
id="completeSetupBtn"
onClick={[Function]}
@@ -1716,14 +1716,14 @@ exports[`Setup Notebooks Panel should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-42"
className="ms-Button-textContainer textContainer-74"
>
<span
className="ms-Button-label label-44"
className="ms-Button-label label-76"
id="id__0"
key="id__0"
>

View File

@@ -401,7 +401,6 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -1195,7 +1194,6 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLeftPaneExpanded": [Function],
@@ -1213,7 +1211,6 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],

View File

@@ -1066,7 +1066,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<button
aria-label="Close pane"
className="ms-Button ms-Button--icon closePaneBtn root-40"
className="ms-Button ms-Button--icon closePaneBtn root-72"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@@ -1079,16 +1079,16 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-43"
className="ms-Button-icon icon-75"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-48 ms-Button-icon icon-43"
className="ms-Icon root-37 css-80 ms-Button-icon icon-75"
data-icon-name="Cancel"
role="presentation"
style={
@@ -1148,7 +1148,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<Text>
<span
className="css-49"
className="css-81"
>
Select the columns that you want to query.
</span>
@@ -1444,14 +1444,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
}
>
<div
className="ms-Checkbox is-checked is-enabled root-50"
className="ms-Checkbox is-checked is-enabled root-82"
>
<Component />
<input
aria-checked="true"
aria-label="Available Columns"
checked={true}
className="input-51"
className="input-83"
id="availableCheckbox"
onBlur={[Function]}
onChange={[Function]}
@@ -1459,18 +1459,18 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="checkbox"
/>
<label
className="ms-Checkbox-label label-52"
className="ms-Checkbox-label label-84"
htmlFor="availableCheckbox"
>
<div
className="ms-Checkbox-checkbox checkbox-53"
className="ms-Checkbox-checkbox checkbox-85"
>
<StyledIconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
>
<IconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
styles={[Function]}
theme={
@@ -1749,7 +1749,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Checkbox-checkmark checkmark-56"
className="ms-Checkbox-checkmark checkmark-88"
data-icon-name="CheckMark"
>
@@ -1759,7 +1759,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
</div>
<span
aria-hidden="true"
className="ms-Checkbox-text text-55"
className="ms-Checkbox-text text-87"
>
Available Columns
</span>
@@ -2056,7 +2056,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
}
>
<div
className="ms-Checkbox is-checked is-enabled root-50"
className="ms-Checkbox is-checked is-enabled root-82"
>
<Component />
<input
@@ -2064,7 +2064,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
aria-disabled={false}
aria-label=""
checked={true}
className="input-51"
className="input-83"
disabled={false}
id="checkbox-3"
onBlur={[Function]}
@@ -2073,18 +2073,18 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="checkbox"
/>
<label
className="ms-Checkbox-label label-52"
className="ms-Checkbox-label label-84"
htmlFor="checkbox-3"
>
<div
className="ms-Checkbox-checkbox checkbox-53"
className="ms-Checkbox-checkbox checkbox-85"
>
<StyledIconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
>
<IconBase
className="ms-Checkbox-checkmark checkmark-54"
className="ms-Checkbox-checkmark checkmark-86"
iconName="CheckMark"
styles={[Function]}
theme={
@@ -2363,7 +2363,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<i
aria-hidden={true}
className="ms-Checkbox-checkmark checkmark-56"
className="ms-Checkbox-checkmark checkmark-88"
data-icon-name="CheckMark"
>
@@ -4095,7 +4095,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
>
<button
aria-label="Submit"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-63"
className="ms-Button ms-Button--primary genericPaneSubmitBtn root-95"
data-is-focusable={true}
onClick={[Function]}
onKeyDown={[Function]}
@@ -4113,14 +4113,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-41"
className="ms-Button-flexContainer flexContainer-73"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-42"
className="ms-Button-textContainer textContainer-74"
>
<span
className="ms-Button-label label-64"
className="ms-Button-label label-96"
id="id__4"
key="id__4"
>

View File

@@ -955,11 +955,11 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
<Portal
containerInfo={
<div
class="ms-Layer ms-Layer--fixed root-54"
class="ms-Layer ms-Layer--fixed root-86"
data-portal-element="true"
>
<div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@@ -970,14 +970,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@@ -987,18 +987,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@@ -1007,19 +1007,19 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@@ -1031,14 +1031,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@@ -1050,20 +1050,20 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>
@@ -1101,7 +1101,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<StyledFabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@@ -1135,7 +1135,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
onTouchStart={[Function]}
>
<FabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@@ -1443,7 +1443,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Fabric ms-Layer-content content-56"
className="ms-Fabric ms-Layer-content content-88"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@@ -1498,7 +1498,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden={false}
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style={
Object {
"height": "736px",
@@ -1507,13 +1507,13 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<StyledOverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
>
<OverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
styles={[Function]}
@@ -1792,13 +1792,13 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Overlay overlay-58"
className="ms-Overlay overlay-90"
onClick={[Function]}
/>
</OverlayBase>
</StyledOverlayBase>
<FocusTrapZone
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
isClickableOutsideFocusTrap={true}
style={
Object {
@@ -1807,7 +1807,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
onBlur={[Function]}
onFocus={[Function]}
onFocusCapture={[Function]}
@@ -1830,18 +1830,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
tabIndex={0}
/>
<div
className="ms-Panel-commands commands-45"
className="ms-Panel-commands commands-77"
data-is-visible={true}
>
<div
className="ms-Panel-navigation navigation-46"
className="ms-Panel-navigation navigation-78"
>
<div
className="ms-Panel-header header-48"
className="ms-Panel-header header-80"
>
<div
aria-level={1}
className="ms-Panel-headerText panelHeader headerText-49"
className="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@@ -2903,7 +2903,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<button
aria-label="Close"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable={true}
data-is-visible={true}
onClick={[Function]}
@@ -2916,16 +2916,16 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-60"
className="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-62"
className="ms-Button-icon icon-94"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-67 ms-Button-icon icon-62"
className="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style={
@@ -2946,14 +2946,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
className="ms-Panel-contentInner contentInner-47"
className="ms-Panel-contentInner contentInner-79"
>
<div
className="ms-Panel-scrollableContent scrollableContent-50"
className="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable={true}
>
<div
className="ms-Panel-content content-51"
className="ms-Panel-content content-83"
>
<form
className="panelFormWrapper"
@@ -2970,7 +2970,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
onClick={[Function]}
>
<div
className="ms-Stack addButtonEntiy css-68"
className="ms-Stack addButtonEntiy css-100"
onClick={[Function]}
>
<StyledImageBase
@@ -3262,7 +3262,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
width={16}
>
<div
className="ms-Image root-69"
className="ms-Image root-101"
style={
Object {
"height": 30,
@@ -3272,7 +3272,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<img
alt="Add Entity"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
key="fabricImage"
onError={[Function]}
onLoad={[Function]}
@@ -3286,7 +3286,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
key=".0:$.1"
>
<span
className="addNewParamStyle css-71"
className="addNewParamStyle css-103"
>
Add Property
</span>
@@ -3335,7 +3335,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
rootRef={
Object {
"current": <div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@@ -3346,14 +3346,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@@ -3363,18 +3363,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@@ -3383,19 +3383,19 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@@ -3407,14 +3407,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@@ -3426,20 +3426,20 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>

View File

@@ -956,11 +956,11 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
<Portal
containerInfo={
<div
class="ms-Layer ms-Layer--fixed root-54"
class="ms-Layer ms-Layer--fixed root-86"
data-portal-element="true"
>
<div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@@ -971,14 +971,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@@ -988,18 +988,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@@ -1008,19 +1008,19 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@@ -1032,14 +1032,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@@ -1051,20 +1051,20 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>
@@ -1102,7 +1102,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<StyledFabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@@ -1136,7 +1136,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
onTouchStart={[Function]}
>
<FabricBase
className="ms-Layer-content content-55"
className="ms-Layer-content content-87"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@@ -1444,7 +1444,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Fabric ms-Layer-content content-56"
className="ms-Fabric ms-Layer-content content-88"
onBlur={[Function]}
onChange={[Function]}
onClick={[Function]}
@@ -1499,7 +1499,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden={false}
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
className="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style={
Object {
"height": "736px",
@@ -1508,13 +1508,13 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<StyledOverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
>
<OverlayBase
allowTouchBodyScroll={false}
className="overlay-43"
className="overlay-75"
isDarkThemed={false}
onClick={[Function]}
styles={[Function]}
@@ -1793,13 +1793,13 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Overlay overlay-58"
className="ms-Overlay overlay-90"
onClick={[Function]}
/>
</OverlayBase>
</StyledOverlayBase>
<FocusTrapZone
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
isClickableOutsideFocusTrap={true}
style={
Object {
@@ -1808,7 +1808,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
}
>
<div
className="ms-Panel-main main-44"
className="ms-Panel-main main-76"
onBlur={[Function]}
onFocus={[Function]}
onFocusCapture={[Function]}
@@ -1831,18 +1831,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
tabIndex={0}
/>
<div
className="ms-Panel-commands commands-45"
className="ms-Panel-commands commands-77"
data-is-visible={true}
>
<div
className="ms-Panel-navigation navigation-46"
className="ms-Panel-navigation navigation-78"
>
<div
className="ms-Panel-header header-48"
className="ms-Panel-header header-80"
>
<div
aria-level={1}
className="ms-Panel-headerText panelHeader headerText-49"
className="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@@ -2904,7 +2904,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<button
aria-label="Close"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
className="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable={true}
data-is-visible={true}
onClick={[Function]}
@@ -2917,16 +2917,16 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
type="button"
>
<span
className="ms-Button-flexContainer flexContainer-60"
className="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<Component
className="ms-Button-icon icon-62"
className="ms-Button-icon icon-94"
iconName="Cancel"
>
<i
aria-hidden={true}
className="ms-Icon root-37 css-67 ms-Button-icon icon-62"
className="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style={
@@ -2947,14 +2947,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
className="ms-Panel-contentInner contentInner-47"
className="ms-Panel-contentInner contentInner-79"
>
<div
className="ms-Panel-scrollableContent scrollableContent-50"
className="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable={true}
>
<div
className="ms-Panel-content content-51"
className="ms-Panel-content content-83"
>
<form
className="panelFormWrapper"
@@ -2971,7 +2971,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
onClick={[Function]}
>
<div
className="ms-Stack addButtonEntiy css-68"
className="ms-Stack addButtonEntiy css-100"
onClick={[Function]}
>
<StyledImageBase
@@ -3263,7 +3263,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
width={16}
>
<div
className="ms-Image root-69"
className="ms-Image root-101"
style={
Object {
"height": 30,
@@ -3273,7 +3273,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<img
alt="Add Entity"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
key="fabricImage"
onError={[Function]}
onLoad={[Function]}
@@ -3287,7 +3287,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
key=".0:$.1"
>
<span
className="addNewParamStyle css-71"
className="addNewParamStyle css-103"
>
Add Property
</span>
@@ -3336,7 +3336,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
rootRef={
Object {
"current": <div
class="ms-Fabric ms-Layer-content content-56"
class="ms-Fabric ms-Layer-content content-88"
>
<div
aria-labelledby="Panel0-headerText"
@@ -3347,14 +3347,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
>
<div
aria-hidden="false"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-42"
class="ms-Panel is-open ms-Panel--hasCloseButton ms-Panel--custom root-74"
style="height: 736px;"
>
<div
class="ms-Overlay overlay-58"
class="ms-Overlay overlay-90"
/>
<div
class="ms-Panel-main main-44"
class="ms-Panel-main main-76"
style="width: 700px;"
>
<div
@@ -3364,18 +3364,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
tabindex="0"
/>
<div
class="ms-Panel-commands commands-45"
class="ms-Panel-commands commands-77"
data-is-visible="true"
>
<div
class="ms-Panel-navigation navigation-46"
class="ms-Panel-navigation navigation-78"
>
<div
class="ms-Panel-header header-48"
class="ms-Panel-header header-80"
>
<div
aria-level="1"
class="ms-Panel-headerText panelHeader headerText-49"
class="ms-Panel-headerText panelHeader headerText-81"
id="Panel0-headerText"
role="heading"
>
@@ -3384,19 +3384,19 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
<button
aria-label="Close"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-59"
class="ms-Button ms-Panel-closeButton ms-PanelAction-close ms-Button--icon root-91"
data-is-focusable="true"
data-is-visible="true"
title="Close"
type="button"
>
<span
class="ms-Button-flexContainer flexContainer-60"
class="ms-Button-flexContainer flexContainer-92"
data-automationid="splitbuttonprimary"
>
<i
aria-hidden="true"
class="ms-Icon root-37 css-67 ms-Button-icon icon-62"
class="ms-Icon root-37 css-99 ms-Button-icon icon-94"
data-icon-name="Cancel"
role="presentation"
style="font-family: \\"FabricMDL2Icons\\";"
@@ -3408,14 +3408,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
</div>
</div>
<div
class="ms-Panel-contentInner contentInner-47"
class="ms-Panel-contentInner contentInner-79"
>
<div
class="ms-Panel-scrollableContent scrollableContent-50"
class="ms-Panel-scrollableContent scrollableContent-82"
data-is-scrollable="true"
>
<div
class="ms-Panel-content content-51"
class="ms-Panel-content content-83"
>
<form
class="panelFormWrapper"
@@ -3427,20 +3427,20 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
class="panelMainContent"
>
<div
class="ms-Stack addButtonEntiy css-68"
class="ms-Stack addButtonEntiy css-100"
>
<div
class="ms-Image root-69"
class="ms-Image root-101"
style="width: 16px; height: 30px;"
>
<img
alt="Add Entity"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-70"
class="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-102"
src=""
/>
</div>
<span
class="addNewParamStyle css-71"
class="addNewParamStyle css-103"
>
Add Property
</span>

View File

@@ -399,7 +399,6 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
"parameters": [Function],
"tabsButtons": Array [],
},
"databaseAccount": [Function],
"databases": [Function],
"deleteCollectionText": [Function],
"deleteDatabaseText": [Function],
@@ -1193,7 +1192,6 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
"hasStorageAnalyticsAfecFeature": [Function],
"isAccountReady": [Function],
"isAutoscaleDefaultEnabled": [Function],
"isEnableMongoCapabilityPresent": [Function],
"isFixedCollectionWithSharedThroughputSupported": [Function],
"isHostedDataExplorerEnabled": [Function],
"isLastCollection": [Function],
@@ -1214,7 +1212,6 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
"isTabsContentExpanded": [Function],
"junoClient": JunoClient {
"cachedPinnedRepos": [Function],
"databaseAccount": undefined,
},
"memoryUsageInfo": [Function],
"notebookBasePath": [Function],
@@ -1298,7 +1295,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
verticalAlign="center"
>
<div
className="ms-Stack panelInfoErrorContainer css-140"
className="ms-Stack panelInfoErrorContainer css-172"
>
<StyledIconBase
className="panelWarningIcon"
@@ -1585,7 +1582,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
>
<i
aria-hidden={true}
className="panelWarningIcon root-142"
className="panelWarningIcon root-174"
data-icon-name="WarningSolid"
>
@@ -1601,7 +1598,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="panelWarningErrorMessage css-143"
className="panelWarningErrorMessage css-175"
>
Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources.
@@ -1626,7 +1623,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="css-143"
className="css-175"
>
Confirm by typing the database id
</span>
@@ -1927,18 +1924,18 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
validateOnLoad={true}
>
<div
className="ms-TextField root-145"
className="ms-TextField root-177"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-146"
className="ms-TextField-fieldGroup fieldGroup-178"
>
<input
aria-invalid={false}
autoFocus={true}
className="ms-TextField-field field-147"
className="ms-TextField-field field-179"
id="confirmDatabaseId"
onBlur={[Function]}
onChange={[Function]}
@@ -1961,7 +1958,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="css-164"
className="css-196"
>
Help us improve Azure Cosmos DB!
</span>
@@ -1971,7 +1968,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variant="small"
>
<span
className="css-164"
className="css-196"
>
What is the reason why you are deleting this database?
</span>
@@ -2274,17 +2271,17 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
validateOnLoad={true}
>
<div
className="ms-TextField ms-TextField--multiline root-145"
className="ms-TextField ms-TextField--multiline root-177"
>
<div
className="ms-TextField-wrapper"
>
<div
className="ms-TextField-fieldGroup fieldGroup-165"
className="ms-TextField-fieldGroup fieldGroup-197"
>
<textarea
aria-invalid={false}
className="ms-TextField-field field-166"
className="ms-TextField-field field-198"
id="deleteDatabaseFeedbackInput"
onBlur={[Function]}
onChange={[Function]}
@@ -3976,7 +3973,7 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
variantClassName="ms-Button--primary"
>
<button
className="ms-Button ms-Button--primary root-156"
className="ms-Button ms-Button--primary root-188"
data-is-focusable={true}
id="sidePanelOkButton"
onClick={[Function]}
@@ -3988,14 +3985,14 @@ exports[`Delete Database Confirmation Pane submit() Should call delete database
type="submit"
>
<span
className="ms-Button-flexContainer flexContainer-157"
className="ms-Button-flexContainer flexContainer-189"
data-automationid="splitbuttonprimary"
>
<span
className="ms-Button-textContainer textContainer-158"
className="ms-Button-textContainer textContainer-190"
>
<span
className="ms-Button-label label-160"
className="ms-Button-label label-192"
id="id__3"
key="id__3"
>

View File

@@ -255,7 +255,7 @@ export class CassandraAPIDataClient extends TableDataClient {
const clearMessage =
shouldNotify && NotificationConsoleUtils.logConsoleProgress(`Querying rows for table ${collection.id()}`);
try {
const authType = userContext.authType;
const { authType, databaseAccount } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestQueryApi
@@ -263,12 +263,9 @@ export class CassandraAPIDataClient extends TableDataClient {
const data: any = await $.ajax(`${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`, {
type: "POST",
data: {
accountName:
collection && collection.container.databaseAccount && collection.container.databaseAccount().name,
cassandraEndpoint: this.trimCassandraEndpoint(
collection.container.databaseAccount().properties.cassandraEndpoint
),
resourceId: collection.container.databaseAccount().id,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(databaseAccount?.properties.cassandraEndpoint),
resourceId: databaseAccount?.id,
keyspaceId: collection.databaseId,
tableId: collection.id(),
query,
@@ -399,21 +396,20 @@ export class CassandraAPIDataClient extends TableDataClient {
return Q.resolve(collection.cassandraKeys);
}
const clearInProgressMessage = logConsoleProgress(`Fetching keys for table ${collection.id()}`);
const authType = userContext.authType;
const { authType, databaseAccount } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestKeysApi
: Constants.CassandraBackend.keysApi;
let endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`;
const deferred = Q.defer<CassandraTableKeys>();
$.ajax(endpoint, {
type: "POST",
data: {
accountName: collection && collection.container.databaseAccount && collection.container.databaseAccount().name,
cassandraEndpoint: this.trimCassandraEndpoint(
collection.container.databaseAccount().properties.cassandraEndpoint
),
resourceId: collection.container.databaseAccount().id,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(databaseAccount?.properties.cassandraEndpoint),
resourceId: databaseAccount?.id,
keyspaceId: collection.databaseId,
tableId: collection.id(),
},
@@ -440,21 +436,20 @@ export class CassandraAPIDataClient extends TableDataClient {
return Q.resolve(collection.cassandraSchema);
}
const clearInProgressMessage = logConsoleProgress(`Fetching schema for table ${collection.id()}`);
const authType = userContext.authType;
const { databaseAccount, authType } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestSchemaApi
: Constants.CassandraBackend.schemaApi;
let endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`;
const deferred = Q.defer<CassandraTableKey[]>();
$.ajax(endpoint, {
type: "POST",
data: {
accountName: collection && collection.container.databaseAccount && collection.container.databaseAccount().name,
cassandraEndpoint: this.trimCassandraEndpoint(
collection.container.databaseAccount().properties.cassandraEndpoint
),
resourceId: collection.container.databaseAccount().id,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(databaseAccount?.properties.cassandraEndpoint),
resourceId: databaseAccount?.id,
keyspaceId: collection.databaseId,
tableId: collection.id(),
},
@@ -478,7 +473,7 @@ export class CassandraAPIDataClient extends TableDataClient {
private createOrDeleteQuery(cassandraEndpoint: string, resourceId: string, query: string): Q.Promise<any> {
const deferred = Q.defer();
const authType = userContext.authType;
const { authType, databaseAccount } = userContext;
const apiEndpoint: string =
authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestCreateOrDeleteApi
@@ -486,7 +481,7 @@ export class CassandraAPIDataClient extends TableDataClient {
$.ajax(`${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`, {
type: "POST",
data: {
accountName: userContext.databaseAccount?.name,
accountName: databaseAccount?.name,
cassandraEndpoint: this.trimCassandraEndpoint(cassandraEndpoint),
resourceId: resourceId,
query: query,

View File

@@ -23,10 +23,10 @@ export default class MongoShellTab extends TabsBase {
this._logTraces = new Map();
this._container = options.collection.container;
this.url = ko.computed<string>(() => {
const account = userContext.databaseAccount;
const resourceId = account && account.id;
const accountName = account && account.name;
const mongoEndpoint = account && (account.properties.mongoEndpoint || account.properties.documentEndpoint);
const { databaseAccount: account } = userContext;
const resourceId = account?.id;
const accountName = account?.name;
const mongoEndpoint = account?.properties?.mongoEndpoint || account?.properties?.documentEndpoint;
this._runtimeEndpoint = configContext.platform === Platform.Hosted ? configContext.BACKEND_ENDPOINT : "";
const extensionEndpoint: string = configContext.BACKEND_ENDPOINT || this._runtimeEndpoint || "";
@@ -86,13 +86,12 @@ export default class MongoShellTab extends TabsBase {
if (!isReadyMessage(event)) {
return;
}
const { databaseAccount } = userContext;
const authorization: string = userContext.authorizationToken || "";
const resourceId = this._container.databaseAccount().id;
const accountName = this._container.databaseAccount().name;
const documentEndpoint =
this._container.databaseAccount().properties.mongoEndpoint ||
this._container.databaseAccount().properties.documentEndpoint;
const resourceId = databaseAccount?.id;
const accountName = databaseAccount?.name;
const documentEndpoint = databaseAccount?.properties.mongoEndpoint || databaseAccount?.properties.documentEndpoint;
const mongoEndpoint =
documentEndpoint.substr(
Constants.MongoDBAccounts.protocol.length + 3,

View File

@@ -29,7 +29,7 @@ export default class NotebookTabBase extends TabsBase {
if (!NotebookTabBase.clientManager) {
NotebookTabBase.clientManager = new NotebookClientV2({
connectionInfo: this.container.notebookServerInfo(),
databaseAccountName: this.container.databaseAccount().name,
databaseAccountName: userContext?.databaseAccount?.name,
defaultExperience: userContext.apiType,
contentProvider: this.container.notebookManager?.notebookContentProvider,
});

View File

@@ -1,6 +1,6 @@
import * as ko from "knockout";
import * as DataModels from "../../Contracts/DataModels";
import * as ViewModels from "../../Contracts/ViewModels";
import { updateUserContext } from "../../UserContext";
import Explorer from "../Explorer";
import DocumentId from "../Tree/DocumentId";
import DocumentsTab from "./DocumentsTab";
@@ -17,13 +17,15 @@ describe("Tabs manager tests", () => {
beforeAll(() => {
explorer = new Explorer();
explorer.databaseAccount = ko.observable<DataModels.DatabaseAccount>({
id: "test",
name: "test",
location: "",
type: "",
kind: "",
properties: undefined,
updateUserContext({
databaseAccount: {
id: "test",
name: "test",
location: "",
type: "",
kind: "",
properties: undefined,
},
});
database = {

View File

@@ -3,6 +3,7 @@ import * as React from "react";
import { ReactAdapter } from "../../Bindings/ReactBindingHandler";
import * as DataModels from "../../Contracts/DataModels";
import * as ViewModels from "../../Contracts/ViewModels";
import { userContext } from "../../UserContext";
import { CommandButtonComponentProps } from "../Controls/CommandButton/CommandButtonComponent";
import { NotebookTerminalComponent } from "../Controls/Notebook/NotebookTerminalComponent";
import Explorer from "../Explorer";
@@ -47,7 +48,7 @@ export default class TerminalTab extends TabsBase {
this.container = options.container;
this.notebookTerminalComponentAdapter = new NotebookTerminalComponentAdapter(
() => this.getNotebookServerInfo(options),
() => this.getContainer().databaseAccount()
() => userContext?.databaseAccount
);
this.notebookTerminalComponentAdapter.parameters = ko.computed<boolean>(() => {
if (this.isTemplateReady() && this.container.isNotebookEnabled()) {

View File

@@ -195,13 +195,7 @@ export default class Collection implements ViewModels.Collection {
this.showUserDefinedFunctions = ko.observable<boolean>(showScriptsMenus);
this.showConflicts = ko.observable<boolean>(
container &&
container.databaseAccount &&
container.databaseAccount() &&
container.databaseAccount().properties &&
container.databaseAccount().properties.enableMultipleWriteLocations &&
data &&
!!data.conflictResolutionPolicy
userContext?.databaseAccount?.properties.enableMultipleWriteLocations && data && !!data.conflictResolutionPolicy
);
this.isStoredProceduresExpanded = ko.observable<boolean>(false);
@@ -1008,7 +1002,7 @@ export default class Collection implements ViewModels.Collection {
Logger.logError(
JSON.stringify({
error: getErrorMessage(error),
accountName: this.container && this.container.databaseAccount(),
accountName: userContext?.databaseAccount,
databaseName: this.databaseId,
collectionName: this.id(),
}),

View File

@@ -248,7 +248,7 @@ export default class Database implements ViewModels.Database {
Logger.logError(
JSON.stringify({
error: getErrorMessage(error),
accountName: this.container && this.container.databaseAccount(),
accountName: userContext?.databaseAccount,
databaseName: this.id(),
collectionName: this.id(),
}),

View File

@@ -306,10 +306,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
// This is a rewrite of showConflicts
const showConflicts =
this.container.databaseAccount &&
this.container.databaseAccount() &&
this.container.databaseAccount().properties &&
this.container.databaseAccount().properties.enableMultipleWriteLocations &&
userContext?.databaseAccount?.properties.enableMultipleWriteLocations &&
collection.rawDataModel &&
!!collection.rawDataModel.conflictResolutionPolicy;