mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-07-11 06:25:58 +01:00
Merge branch 'master' into eslint/fixed-TableEntityProcessor-DatabaseSettingsTab
This commit is contained in:
commit
2cfa0b04c9
@ -81,12 +81,8 @@ src/Explorer/Tables/DataTable/DataTableBindingManager.ts
|
|||||||
src/Explorer/Tables/DataTable/DataTableBuilder.ts
|
src/Explorer/Tables/DataTable/DataTableBuilder.ts
|
||||||
src/Explorer/Tables/DataTable/DataTableContextMenu.ts
|
src/Explorer/Tables/DataTable/DataTableContextMenu.ts
|
||||||
src/Explorer/Tables/DataTable/DataTableOperationManager.ts
|
src/Explorer/Tables/DataTable/DataTableOperationManager.ts
|
||||||
src/Explorer/Tables/DataTable/DataTableOperations.ts
|
|
||||||
src/Explorer/Tables/DataTable/DataTableViewModel.ts
|
src/Explorer/Tables/DataTable/DataTableViewModel.ts
|
||||||
src/Explorer/Tables/DataTable/TableCommands.ts
|
|
||||||
src/Explorer/Tables/DataTable/TableEntityCache.ts
|
|
||||||
src/Explorer/Tables/DataTable/TableEntityListViewModel.ts
|
src/Explorer/Tables/DataTable/TableEntityListViewModel.ts
|
||||||
src/Explorer/Tables/Entities.ts
|
|
||||||
src/Explorer/Tables/QueryBuilder/CustomTimestampHelper.ts
|
src/Explorer/Tables/QueryBuilder/CustomTimestampHelper.ts
|
||||||
src/Explorer/Tables/TableDataClient.ts
|
src/Explorer/Tables/TableDataClient.ts
|
||||||
src/Explorer/Tables/Utilities.ts
|
src/Explorer/Tables/Utilities.ts
|
||||||
@ -130,20 +126,13 @@ src/Explorer/Controls/Notebook/NotebookTerminalComponent.tsx
|
|||||||
src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx
|
src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx
|
||||||
src/Explorer/Controls/TreeComponent/TreeComponent.tsx
|
src/Explorer/Controls/TreeComponent/TreeComponent.tsx
|
||||||
src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.test.tsx
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.test.tsx
|
||||||
; src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx
|
|
||||||
src/Explorer/Graph/GraphExplorerComponent/GraphVizComponent.tsx
|
|
||||||
src/Explorer/Graph/GraphExplorerComponent/LeftPaneComponent.tsx
|
|
||||||
src/Explorer/Graph/GraphExplorerComponent/MiddlePaneComponent.tsx
|
|
||||||
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.test.tsx
|
|
||||||
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.tsx
|
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.tsx
|
||||||
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.test.tsx
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.test.tsx
|
||||||
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.tsx
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.tsx
|
||||||
src/Explorer/Menus/CommandBar/CommandBarUtil.tsx
|
src/Explorer/Menus/CommandBar/CommandBarUtil.tsx
|
||||||
src/Explorer/Notebook/NotebookComponent/NotebookComponentAdapter.tsx
|
src/Explorer/Notebook/NotebookComponent/NotebookComponentAdapter.tsx
|
||||||
; src/Explorer/Notebook/NotebookComponent/NotebookComponentBootstrapper.tsx
|
|
||||||
src/Explorer/Notebook/NotebookComponent/VirtualCommandBarComponent.tsx
|
src/Explorer/Notebook/NotebookComponent/VirtualCommandBarComponent.tsx
|
||||||
src/Explorer/Notebook/NotebookComponent/contents/index.tsx
|
src/Explorer/Notebook/NotebookComponent/contents/index.tsx
|
||||||
; src/Explorer/Notebook/NotebookRenderer/NotebookReadOnlyRenderer.tsx
|
|
||||||
src/Explorer/Notebook/NotebookRenderer/NotebookRenderer.tsx
|
src/Explorer/Notebook/NotebookRenderer/NotebookRenderer.tsx
|
||||||
src/Explorer/Notebook/NotebookRenderer/decorators/draggable/index.tsx
|
src/Explorer/Notebook/NotebookRenderer/decorators/draggable/index.tsx
|
||||||
src/Explorer/Notebook/NotebookRenderer/decorators/hijack-scroll/index.tsx
|
src/Explorer/Notebook/NotebookRenderer/decorators/hijack-scroll/index.tsx
|
||||||
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -22,5 +22,6 @@
|
|||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": true,
|
"source.fixAll.eslint": true,
|
||||||
"source.organizeImports": true
|
"source.organizeImports": true
|
||||||
}
|
},
|
||||||
|
"typescript.preferences.importModuleSpecifier": "non-relative"
|
||||||
}
|
}
|
||||||
|
@ -129,6 +129,8 @@ module.exports = {
|
|||||||
// The test environment that will be used for testing
|
// The test environment that will be used for testing
|
||||||
// testEnvironment: "jest-environment-jsdom",
|
// testEnvironment: "jest-environment-jsdom",
|
||||||
|
|
||||||
|
modulePaths: ["node_modules", "<rootDir>/src"],
|
||||||
|
|
||||||
// Options that will be passed to the testEnvironment
|
// Options that will be passed to the testEnvironment
|
||||||
// testEnvironmentOptions: {},
|
// testEnvironmentOptions: {},
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ export class LeftPaneComponent extends React.Component<LeftPaneComponentProps> {
|
|||||||
className={className}
|
className={className}
|
||||||
as="tr"
|
as="tr"
|
||||||
aria-label={node.caption}
|
aria-label={node.caption}
|
||||||
onActivated={(e) => this.props.onRootNodeSelected(node.id)}
|
onActivated={() => this.props.onRootNodeSelected(node.id)}
|
||||||
key={node.id}
|
key={node.id}
|
||||||
>
|
>
|
||||||
<td className="resultItem">
|
<td className="resultItem">
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import React from "react";
|
|
||||||
import { mount, ReactWrapper } from "enzyme";
|
import { mount, ReactWrapper } from "enzyme";
|
||||||
import * as Q from "q";
|
import * as Q from "q";
|
||||||
import { NodePropertiesComponent, NodePropertiesComponentProps, Mode } from "./NodePropertiesComponent";
|
import React from "react";
|
||||||
import { GraphHighlightedNodeData, EditedProperties, EditedEdges, PossibleVertex } from "./GraphExplorer";
|
import { GraphHighlightedNodeData, PossibleVertex } from "./GraphExplorer";
|
||||||
|
import { Mode, NodePropertiesComponent, NodePropertiesComponentProps } from "./NodePropertiesComponent";
|
||||||
|
|
||||||
describe("Property pane", () => {
|
describe("Property pane", () => {
|
||||||
const title = "My Title";
|
const title = "My Title";
|
||||||
@ -37,17 +37,18 @@ describe("Property pane", () => {
|
|||||||
return {
|
return {
|
||||||
expandedTitle: title,
|
expandedTitle: title,
|
||||||
isCollapsed: false,
|
isCollapsed: false,
|
||||||
onCollapsedChanged: (newValue: boolean): void => {},
|
onCollapsedChanged: jest.fn(),
|
||||||
node: highlightedNode,
|
node: highlightedNode,
|
||||||
getPkIdFromNodeData: (v: GraphHighlightedNodeData): string => null,
|
getPkIdFromNodeData: (): string => undefined,
|
||||||
collectionPartitionKeyProperty: null,
|
collectionPartitionKeyProperty: undefined,
|
||||||
updateVertexProperties: (editedProperties: EditedProperties): Q.Promise<void> => Q.resolve(),
|
updateVertexProperties: (): Q.Promise<void> => Q.resolve(),
|
||||||
selectNode: (id: string): void => {},
|
selectNode: jest.fn(),
|
||||||
updatePossibleVertices: (): Q.Promise<PossibleVertex[]> => Q.resolve(null),
|
updatePossibleVertices: (): Q.Promise<PossibleVertex[]> => Q.resolve(undefined),
|
||||||
possibleEdgeLabels: null,
|
possibleEdgeLabels: undefined,
|
||||||
editGraphEdges: (editedEdges: EditedEdges): Q.Promise<any> => Q.resolve(),
|
//eslint-disable-next-line
|
||||||
deleteHighlightedNode: (): void => {},
|
editGraphEdges: (): Q.Promise<any> => Q.resolve(),
|
||||||
onModeChanged: (newMode: Mode): void => {},
|
deleteHighlightedNode: jest.fn(),
|
||||||
|
onModeChanged: jest.fn(),
|
||||||
viewMode: Mode.READONLY_PROP,
|
viewMode: Mode.READONLY_PROP,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -72,7 +72,7 @@ export class NodePropertiesComponent extends React.Component<
|
|||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
editedProperties: {
|
editedProperties: {
|
||||||
pkId: null,
|
pkId: undefined,
|
||||||
readOnlyProperties: [],
|
readOnlyProperties: [],
|
||||||
existingProperties: [],
|
existingProperties: [],
|
||||||
addedProperties: [],
|
addedProperties: [],
|
||||||
@ -98,15 +98,12 @@ export class NodePropertiesComponent extends React.Component<
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getDerivedStateFromProps(
|
public static getDerivedStateFromProps(props: NodePropertiesComponentProps): Partial<NodePropertiesComponentState> {
|
||||||
props: NodePropertiesComponentProps,
|
|
||||||
state: NodePropertiesComponentState
|
|
||||||
): Partial<NodePropertiesComponentState> {
|
|
||||||
if (props.viewMode !== Mode.READONLY_PROP) {
|
if (props.viewMode !== Mode.READONLY_PROP) {
|
||||||
return { isDeleteConfirm: false };
|
return { isDeleteConfirm: false };
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
public render(): JSX.Element {
|
public render(): JSX.Element {
|
||||||
@ -138,10 +135,10 @@ export class NodePropertiesComponent extends React.Component<
|
|||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
private static getTypeOption(value: any): ViewModels.InputPropertyValueTypeString {
|
private static getTypeOption(value: any): ViewModels.InputPropertyValueTypeString {
|
||||||
if (value == null) {
|
if (value === undefined) {
|
||||||
return "null";
|
return "null";
|
||||||
}
|
}
|
||||||
let type = typeof value;
|
const type = typeof value;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "number":
|
case "number":
|
||||||
case "boolean":
|
case "boolean":
|
||||||
@ -172,10 +169,9 @@ export class NodePropertiesComponent extends React.Component<
|
|||||||
];
|
];
|
||||||
|
|
||||||
const existingProps: ViewModels.InputProperty[] = [];
|
const existingProps: ViewModels.InputProperty[] = [];
|
||||||
|
|
||||||
if (this.props.node.hasOwnProperty("properties")) {
|
if (this.props.node.hasOwnProperty("properties")) {
|
||||||
const hProps = this.props.node["properties"];
|
const hProps = this.props.node["properties"];
|
||||||
for (let p in hProps) {
|
for (const p in hProps) {
|
||||||
const propValues = hProps[p];
|
const propValues = hProps[p];
|
||||||
(p === partitionKeyProperty ? readOnlyProps : existingProps).push({
|
(p === partitionKeyProperty ? readOnlyProps : existingProps).push({
|
||||||
key: p,
|
key: p,
|
||||||
@ -437,7 +433,7 @@ export class NodePropertiesComponent extends React.Component<
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ import * as React from "react";
|
|||||||
import { useFullScreenURLs } from "../hooks/useFullScreenURLs";
|
import { useFullScreenURLs } from "../hooks/useFullScreenURLs";
|
||||||
|
|
||||||
export const OpenFullScreen: React.FunctionComponent = () => {
|
export const OpenFullScreen: React.FunctionComponent = () => {
|
||||||
|
const [isReadUrlCopy, setIsReadUrlCopy] = React.useState<boolean>(false);
|
||||||
|
const [isReadWriteUrlCopy, setIsReadWriteUrlCopy] = React.useState<boolean>(false);
|
||||||
const result = useFullScreenURLs();
|
const result = useFullScreenURLs();
|
||||||
if (!result) {
|
if (!result) {
|
||||||
return <Spinner label="Generating URLs..." ariaLive="assertive" labelPosition="right" />;
|
return <Spinner label="Generating URLs..." ariaLive="assertive" labelPosition="right" />;
|
||||||
@ -25,8 +27,9 @@ export const OpenFullScreen: React.FunctionComponent = () => {
|
|||||||
<DefaultButton
|
<DefaultButton
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
copyToClipboard(readWriteUrl);
|
copyToClipboard(readWriteUrl);
|
||||||
|
setIsReadWriteUrlCopy(true);
|
||||||
}}
|
}}
|
||||||
text="Copy"
|
text={isReadWriteUrlCopy ? "Copied" : "Copy"}
|
||||||
iconProps={{ iconName: "Copy" }}
|
iconProps={{ iconName: "Copy" }}
|
||||||
/>
|
/>
|
||||||
<PrimaryButton
|
<PrimaryButton
|
||||||
@ -41,9 +44,10 @@ export const OpenFullScreen: React.FunctionComponent = () => {
|
|||||||
<Stack horizontal tokens={{ childrenGap: 10 }}>
|
<Stack horizontal tokens={{ childrenGap: 10 }}>
|
||||||
<DefaultButton
|
<DefaultButton
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
setIsReadUrlCopy(true);
|
||||||
copyToClipboard(readUrl);
|
copyToClipboard(readUrl);
|
||||||
}}
|
}}
|
||||||
text="Copy"
|
text={isReadUrlCopy ? "Copied" : "Copy"}
|
||||||
iconProps={{ iconName: "Copy" }}
|
iconProps={{ iconName: "Copy" }}
|
||||||
/>
|
/>
|
||||||
<PrimaryButton
|
<PrimaryButton
|
||||||
|
@ -13,21 +13,21 @@ import {
|
|||||||
Text,
|
Text,
|
||||||
TooltipHost,
|
TooltipHost,
|
||||||
} from "@fluentui/react";
|
} from "@fluentui/react";
|
||||||
|
import * as Constants from "Common/Constants";
|
||||||
|
import { createCollection } from "Common/dataAccess/createCollection";
|
||||||
|
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||||
|
import { configContext, Platform } from "ConfigContext";
|
||||||
|
import * as DataModels from "Contracts/DataModels";
|
||||||
|
import { SubscriptionType } from "Contracts/SubscriptionType";
|
||||||
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import * as Constants from "../../Common/Constants";
|
import { CollectionCreation } from "Shared/Constants";
|
||||||
import { createCollection } from "../../Common/dataAccess/createCollection";
|
import { Action } from "Shared/Telemetry/TelemetryConstants";
|
||||||
import { getErrorMessage, getErrorStack } from "../../Common/ErrorHandlingUtils";
|
import * as TelemetryProcessor from "Shared/Telemetry/TelemetryProcessor";
|
||||||
import { configContext, Platform } from "../../ConfigContext";
|
import { userContext } from "UserContext";
|
||||||
import * as DataModels from "../../Contracts/DataModels";
|
import { getCollectionName } from "Utils/APITypeUtils";
|
||||||
import { SubscriptionType } from "../../Contracts/SubscriptionType";
|
import { isCapabilityEnabled, isServerlessAccount } from "Utils/CapabilityUtils";
|
||||||
import { useSidePanel } from "../../hooks/useSidePanel";
|
import { getUpsellMessage } from "Utils/PricingUtils";
|
||||||
import { CollectionCreation } from "../../Shared/Constants";
|
|
||||||
import { Action } from "../../Shared/Telemetry/TelemetryConstants";
|
|
||||||
import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor";
|
|
||||||
import { userContext } from "../../UserContext";
|
|
||||||
import { getCollectionName } from "../../Utils/APITypeUtils";
|
|
||||||
import { isCapabilityEnabled, isServerlessAccount } from "../../Utils/CapabilityUtils";
|
|
||||||
import { getUpsellMessage } from "../../Utils/PricingUtils";
|
|
||||||
import { CollapsibleSectionComponent } from "../Controls/CollapsiblePanel/CollapsibleSectionComponent";
|
import { CollapsibleSectionComponent } from "../Controls/CollapsiblePanel/CollapsibleSectionComponent";
|
||||||
import { ThroughputInput } from "../Controls/ThroughputInput/ThroughputInput";
|
import { ThroughputInput } from "../Controls/ThroughputInput/ThroughputInput";
|
||||||
import Explorer from "../Explorer";
|
import Explorer from "../Explorer";
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { Checkbox, Dropdown, IDropdownOption, Link, Stack, Text, TextField } from "@fluentui/react";
|
import { Checkbox, Dropdown, IDropdownOption, Link, Stack, Text, TextField } from "@fluentui/react";
|
||||||
|
import * as Constants from "Common/Constants";
|
||||||
|
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||||
|
import { InfoTooltip } from "Common/Tooltip/InfoTooltip";
|
||||||
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
import React, { FunctionComponent, useState } from "react";
|
import React, { FunctionComponent, useState } from "react";
|
||||||
import * as Constants from "../../../Common/Constants";
|
import * as SharedConstants from "Shared/Constants";
|
||||||
import { getErrorMessage, getErrorStack } from "../../../Common/ErrorHandlingUtils";
|
import { Action } from "Shared/Telemetry/TelemetryConstants";
|
||||||
import { InfoTooltip } from "../../../Common/Tooltip/InfoTooltip";
|
import * as TelemetryProcessor from "Shared/Telemetry/TelemetryProcessor";
|
||||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
import { userContext } from "UserContext";
|
||||||
import * as SharedConstants from "../../../Shared/Constants";
|
import { isServerlessAccount } from "Utils/CapabilityUtils";
|
||||||
import { Action } from "../../../Shared/Telemetry/TelemetryConstants";
|
|
||||||
import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor";
|
|
||||||
import { userContext } from "../../../UserContext";
|
|
||||||
import { isServerlessAccount } from "../../../Utils/CapabilityUtils";
|
|
||||||
import { ThroughputInput } from "../../Controls/ThroughputInput/ThroughputInput";
|
import { ThroughputInput } from "../../Controls/ThroughputInput/ThroughputInput";
|
||||||
import Explorer from "../../Explorer";
|
import Explorer from "../../Explorer";
|
||||||
import { CassandraAPIDataClient } from "../../Tables/TableDataClient";
|
import { CassandraAPIDataClient } from "../../Tables/TableDataClient";
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
import { Text, TextField } from "@fluentui/react";
|
import { Text, TextField } from "@fluentui/react";
|
||||||
|
import { Areas } from "Common/Constants";
|
||||||
|
import { deleteCollection } from "Common/dataAccess/deleteCollection";
|
||||||
|
import DeleteFeedback from "Common/DeleteFeedback";
|
||||||
|
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||||
|
import { Collection } from "Contracts/ViewModels";
|
||||||
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
|
import { useTabs } from "hooks/useTabs";
|
||||||
import React, { FunctionComponent, useState } from "react";
|
import React, { FunctionComponent, useState } from "react";
|
||||||
import { Areas } from "../../../Common/Constants";
|
import { DefaultExperienceUtility } from "Shared/DefaultExperienceUtility";
|
||||||
import { deleteCollection } from "../../../Common/dataAccess/deleteCollection";
|
import { Action, ActionModifiers } from "Shared/Telemetry/TelemetryConstants";
|
||||||
import DeleteFeedback from "../../../Common/DeleteFeedback";
|
import * as TelemetryProcessor from "Shared/Telemetry/TelemetryProcessor";
|
||||||
import { getErrorMessage, getErrorStack } from "../../../Common/ErrorHandlingUtils";
|
import { userContext } from "UserContext";
|
||||||
import { Collection } from "../../../Contracts/ViewModels";
|
import { getCollectionName } from "Utils/APITypeUtils";
|
||||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
import * as NotificationConsoleUtils from "Utils/NotificationConsoleUtils";
|
||||||
import { useTabs } from "../../../hooks/useTabs";
|
|
||||||
import { DefaultExperienceUtility } from "../../../Shared/DefaultExperienceUtility";
|
|
||||||
import { Action, ActionModifiers } from "../../../Shared/Telemetry/TelemetryConstants";
|
|
||||||
import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor";
|
|
||||||
import { userContext } from "../../../UserContext";
|
|
||||||
import { getCollectionName } from "../../../Utils/APITypeUtils";
|
|
||||||
import * as NotificationConsoleUtils from "../../../Utils/NotificationConsoleUtils";
|
|
||||||
import { useDatabases } from "../../useDatabases";
|
import { useDatabases } from "../../useDatabases";
|
||||||
import { useSelectedNode } from "../../useSelectedNode";
|
import { useSelectedNode } from "../../useSelectedNode";
|
||||||
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
import { Text, TextField } from "@fluentui/react";
|
import { Text, TextField } from "@fluentui/react";
|
||||||
import { useBoolean } from "@fluentui/react-hooks";
|
import { useBoolean } from "@fluentui/react-hooks";
|
||||||
|
import { Areas } from "Common/Constants";
|
||||||
|
import { deleteDatabase } from "Common/dataAccess/deleteDatabase";
|
||||||
|
import DeleteFeedback from "Common/DeleteFeedback";
|
||||||
|
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||||
|
import { Collection, Database } from "Contracts/ViewModels";
|
||||||
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
|
import { useTabs } from "hooks/useTabs";
|
||||||
import React, { FunctionComponent, useState } from "react";
|
import React, { FunctionComponent, useState } from "react";
|
||||||
import { Areas } from "../../Common/Constants";
|
import { DefaultExperienceUtility } from "Shared/DefaultExperienceUtility";
|
||||||
import { deleteDatabase } from "../../Common/dataAccess/deleteDatabase";
|
import { Action, ActionModifiers } from "Shared/Telemetry/TelemetryConstants";
|
||||||
import DeleteFeedback from "../../Common/DeleteFeedback";
|
import * as TelemetryProcessor from "Shared/Telemetry/TelemetryProcessor";
|
||||||
import { getErrorMessage, getErrorStack } from "../../Common/ErrorHandlingUtils";
|
import { userContext } from "UserContext";
|
||||||
import { Collection, Database } from "../../Contracts/ViewModels";
|
import { logConsoleError } from "Utils/NotificationConsoleUtils";
|
||||||
import { useSidePanel } from "../../hooks/useSidePanel";
|
|
||||||
import { useTabs } from "../../hooks/useTabs";
|
|
||||||
import { DefaultExperienceUtility } from "../../Shared/DefaultExperienceUtility";
|
|
||||||
import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants";
|
|
||||||
import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor";
|
|
||||||
import { userContext } from "../../UserContext";
|
|
||||||
import { logConsoleError } from "../../Utils/NotificationConsoleUtils";
|
|
||||||
import { useDatabases } from "../useDatabases";
|
import { useDatabases } from "../useDatabases";
|
||||||
import { useSelectedNode } from "../useSelectedNode";
|
import { useSelectedNode } from "../useSelectedNode";
|
||||||
import { PanelInfoErrorComponent, PanelInfoErrorProps } from "./PanelInfoErrorComponent";
|
import { PanelInfoErrorComponent, PanelInfoErrorProps } from "./PanelInfoErrorComponent";
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import { Checkbox, ChoiceGroup, IChoiceGroupOption, SpinButton } from "@fluentui/react";
|
import { Checkbox, ChoiceGroup, IChoiceGroupOption, SpinButton } from "@fluentui/react";
|
||||||
|
import * as Constants from "Common/Constants";
|
||||||
|
import { InfoTooltip } from "Common/Tooltip/InfoTooltip";
|
||||||
|
import { configContext } from "ConfigContext";
|
||||||
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
import React, { FunctionComponent, MouseEvent, useState } from "react";
|
import React, { FunctionComponent, MouseEvent, useState } from "react";
|
||||||
import * as Constants from "../../../Common/Constants";
|
import { LocalStorageUtility, StorageKey } from "Shared/StorageUtility";
|
||||||
import { InfoTooltip } from "../../../Common/Tooltip/InfoTooltip";
|
import * as StringUtility from "Shared/StringUtility";
|
||||||
import { configContext } from "../../../ConfigContext";
|
import { userContext } from "UserContext";
|
||||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
import { logConsoleInfo } from "Utils/NotificationConsoleUtils";
|
||||||
import { LocalStorageUtility, StorageKey } from "../../../Shared/StorageUtility";
|
|
||||||
import * as StringUtility from "../../../Shared/StringUtility";
|
|
||||||
import { userContext } from "../../../UserContext";
|
|
||||||
import { logConsoleInfo } from "../../../Utils/NotificationConsoleUtils";
|
|
||||||
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
||||||
|
|
||||||
export const SettingsPane: FunctionComponent = () => {
|
export const SettingsPane: FunctionComponent = () => {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { TextField } from "@fluentui/react";
|
import { TextField } from "@fluentui/react";
|
||||||
|
import * as ViewModels from "Contracts/ViewModels";
|
||||||
|
import { useTabs } from "hooks/useTabs";
|
||||||
import React, { FormEvent, FunctionComponent, useState } from "react";
|
import React, { FormEvent, FunctionComponent, useState } from "react";
|
||||||
import * as ViewModels from "../../../Contracts/ViewModels";
|
import { logConsoleError, logConsoleInfo, logConsoleProgress } from "Utils/NotificationConsoleUtils";
|
||||||
import { useTabs } from "../../../hooks/useTabs";
|
|
||||||
import { logConsoleError, logConsoleInfo, logConsoleProgress } from "../../../Utils/NotificationConsoleUtils";
|
|
||||||
import * as FileSystemUtil from "../../Notebook/FileSystemUtil";
|
import * as FileSystemUtil from "../../Notebook/FileSystemUtil";
|
||||||
import { NotebookContentItem } from "../../Notebook/NotebookContentItem";
|
import { NotebookContentItem } from "../../Notebook/NotebookContentItem";
|
||||||
import NotebookV2Tab from "../../Tabs/NotebookV2Tab";
|
import NotebookV2Tab from "../../Tabs/NotebookV2Tab";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
import { Upload } from "Common/Upload/Upload";
|
||||||
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
import React, { ChangeEvent, FunctionComponent, useState } from "react";
|
import React, { ChangeEvent, FunctionComponent, useState } from "react";
|
||||||
import { Upload } from "../../../Common/Upload/Upload";
|
import { logConsoleError, logConsoleInfo, logConsoleProgress } from "Utils/NotificationConsoleUtils";
|
||||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
|
||||||
import { logConsoleError, logConsoleInfo, logConsoleProgress } from "../../../Utils/NotificationConsoleUtils";
|
|
||||||
import { NotebookContentItem } from "../../Notebook/NotebookContentItem";
|
import { NotebookContentItem } from "../../Notebook/NotebookContentItem";
|
||||||
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { DetailsList, DetailsListLayoutMode, IColumn, SelectionMode } from "@fluentui/react";
|
import { DetailsList, DetailsListLayoutMode, IColumn, SelectionMode } from "@fluentui/react";
|
||||||
|
import { Upload } from "Common/Upload/Upload";
|
||||||
|
import { UploadDetailsRecord } from "Contracts/ViewModels";
|
||||||
import React, { ChangeEvent, FunctionComponent, useState } from "react";
|
import React, { ChangeEvent, FunctionComponent, useState } from "react";
|
||||||
import { Upload } from "../../../Common/Upload/Upload";
|
import { logConsoleError } from "Utils/NotificationConsoleUtils";
|
||||||
import { UploadDetailsRecord } from "../../../Contracts/ViewModels";
|
|
||||||
import { logConsoleError } from "../../../Utils/NotificationConsoleUtils";
|
|
||||||
import { getErrorMessage } from "../../Tables/Utilities";
|
import { getErrorMessage } from "../../Tables/Utilities";
|
||||||
import { useSelectedNode } from "../../useSelectedNode";
|
import { useSelectedNode } from "../../useSelectedNode";
|
||||||
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import _ from "underscore";
|
|
||||||
import Q from "q";
|
import Q from "q";
|
||||||
|
import _ from "underscore";
|
||||||
import * as Entities from "../Entities";
|
|
||||||
import * as QueryBuilderConstants from "../Constants";
|
import * as QueryBuilderConstants from "../Constants";
|
||||||
|
import * as Entities from "../Entities";
|
||||||
import * as Utilities from "../Utilities";
|
import * as Utilities from "../Utilities";
|
||||||
|
|
||||||
export function getRowSelector(selectorSchema: Entities.IProperty[]): string {
|
export function getRowSelector(selectorSchema: Entities.IProperty[]): string {
|
||||||
var selector: string = "";
|
let selector = "";
|
||||||
selectorSchema &&
|
selectorSchema &&
|
||||||
selectorSchema.forEach((p: Entities.IProperty) => {
|
selectorSchema.forEach((p: Entities.IProperty) => {
|
||||||
selector += "[" + p.key + '="' + Utilities.jQuerySelectorEscape(p.value) + '"]';
|
selector += "[" + p.key + '="' + Utilities.jQuerySelectorEscape(p.value) + '"]';
|
||||||
@ -15,10 +14,10 @@ export function getRowSelector(selectorSchema: Entities.IProperty[]): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function isRowVisible(dataTableScrollBodyQuery: JQuery, element: HTMLElement): boolean {
|
export function isRowVisible(dataTableScrollBodyQuery: JQuery, element: HTMLElement): boolean {
|
||||||
var isVisible = false;
|
let isVisible = false;
|
||||||
|
|
||||||
if (dataTableScrollBodyQuery.length && element) {
|
if (dataTableScrollBodyQuery.length && element) {
|
||||||
var elementRect: ClientRect = element.getBoundingClientRect(),
|
const elementRect: ClientRect = element.getBoundingClientRect(),
|
||||||
dataTableScrollBodyRect: ClientRect = dataTableScrollBodyQuery.get(0).getBoundingClientRect();
|
dataTableScrollBodyRect: ClientRect = dataTableScrollBodyQuery.get(0).getBoundingClientRect();
|
||||||
|
|
||||||
isVisible = elementRect.bottom <= dataTableScrollBodyRect.bottom && dataTableScrollBodyRect.top <= elementRect.top;
|
isVisible = elementRect.bottom <= dataTableScrollBodyRect.bottom && dataTableScrollBodyRect.top <= elementRect.top;
|
||||||
@ -29,17 +28,17 @@ export function isRowVisible(dataTableScrollBodyQuery: JQuery, element: HTMLElem
|
|||||||
|
|
||||||
export function scrollToRowIfNeeded(dataTableRows: JQuery, currentIndex: number, isScrollUp: boolean): void {
|
export function scrollToRowIfNeeded(dataTableRows: JQuery, currentIndex: number, isScrollUp: boolean): void {
|
||||||
if (dataTableRows.length) {
|
if (dataTableRows.length) {
|
||||||
var dataTableScrollBodyQuery: JQuery = $(QueryBuilderConstants.htmlSelectors.dataTableScrollBodySelector),
|
const dataTableScrollBodyQuery: JQuery = $(QueryBuilderConstants.htmlSelectors.dataTableScrollBodySelector),
|
||||||
selectedRowElement: HTMLElement = dataTableRows.get(currentIndex);
|
selectedRowElement: HTMLElement = dataTableRows.get(currentIndex);
|
||||||
|
|
||||||
if (dataTableScrollBodyQuery.length && selectedRowElement) {
|
if (dataTableScrollBodyQuery.length && selectedRowElement) {
|
||||||
var isVisible: boolean = isRowVisible(dataTableScrollBodyQuery, selectedRowElement);
|
const isVisible: boolean = isRowVisible(dataTableScrollBodyQuery, selectedRowElement);
|
||||||
|
|
||||||
if (!isVisible) {
|
if (!isVisible) {
|
||||||
var selectedRowQuery: JQuery = $(selectedRowElement),
|
const selectedRowQuery: JQuery = $(selectedRowElement),
|
||||||
scrollPosition: number = dataTableScrollBodyQuery.scrollTop(),
|
scrollPosition: number = dataTableScrollBodyQuery.scrollTop(),
|
||||||
selectedElementPosition: number = selectedRowQuery.position().top,
|
selectedElementPosition: number = selectedRowQuery.position().top;
|
||||||
newScrollPosition: number = 0;
|
let newScrollPosition = 0;
|
||||||
|
|
||||||
if (isScrollUp) {
|
if (isScrollUp) {
|
||||||
newScrollPosition = scrollPosition + selectedElementPosition;
|
newScrollPosition = scrollPosition + selectedElementPosition;
|
||||||
@ -55,7 +54,7 @@ export function scrollToRowIfNeeded(dataTableRows: JQuery, currentIndex: number,
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function scrollToTopIfNeeded(): void {
|
export function scrollToTopIfNeeded(): void {
|
||||||
var $dataTableRows: JQuery = $(QueryBuilderConstants.htmlSelectors.dataTableAllRowsSelector),
|
const $dataTableRows: JQuery = $(QueryBuilderConstants.htmlSelectors.dataTableAllRowsSelector),
|
||||||
$dataTableScrollBody: JQuery = $(QueryBuilderConstants.htmlSelectors.dataTableScrollBodySelector);
|
$dataTableScrollBody: JQuery = $(QueryBuilderConstants.htmlSelectors.dataTableScrollBodySelector);
|
||||||
|
|
||||||
if ($dataTableRows.length && $dataTableScrollBody.length) {
|
if ($dataTableRows.length && $dataTableScrollBody.length) {
|
||||||
@ -88,13 +87,14 @@ export function reorderColumns(
|
|||||||
table: DataTables.DataTable,
|
table: DataTables.DataTable,
|
||||||
targetOrder: number[],
|
targetOrder: number[],
|
||||||
currentOrder?: number[]
|
currentOrder?: number[]
|
||||||
|
//eslint-disable-next-line
|
||||||
): Q.Promise<any> {
|
): Q.Promise<any> {
|
||||||
var columnsCount: number = targetOrder.length;
|
const columnsCount: number = targetOrder.length;
|
||||||
var isCurrentOrderPassedIn: boolean = !!currentOrder;
|
const isCurrentOrderPassedIn = !!currentOrder;
|
||||||
if (!isCurrentOrderPassedIn) {
|
if (!isCurrentOrderPassedIn) {
|
||||||
currentOrder = getInitialOrder(columnsCount);
|
currentOrder = getInitialOrder(columnsCount);
|
||||||
}
|
}
|
||||||
var isSameOrder: boolean = Utilities.isEqual(currentOrder, targetOrder);
|
const isSameOrder: boolean = Utilities.isEqual(currentOrder, targetOrder);
|
||||||
|
|
||||||
// if the targetOrder is the same as current order, do nothing.
|
// if the targetOrder is the same as current order, do nothing.
|
||||||
if (!isSameOrder) {
|
if (!isSameOrder) {
|
||||||
@ -104,7 +104,7 @@ export function reorderColumns(
|
|||||||
// Then the transformation order will be the same as target order.
|
// Then the transformation order will be the same as target order.
|
||||||
// If current order is specified, then a transformation order is calculated.
|
// If current order is specified, then a transformation order is calculated.
|
||||||
// Refer to calculateTransformationOrder for details about transformation order.
|
// Refer to calculateTransformationOrder for details about transformation order.
|
||||||
var transformationOrder: number[] = isCurrentOrderPassedIn
|
const transformationOrder: number[] = isCurrentOrderPassedIn
|
||||||
? calculateTransformationOrder(currentOrder, targetOrder)
|
? calculateTransformationOrder(currentOrder, targetOrder)
|
||||||
: targetOrder;
|
: targetOrder;
|
||||||
try {
|
try {
|
||||||
@ -143,7 +143,7 @@ export function getCurrentOrder(table: DataTables.DataTable): number[] {
|
|||||||
* Result: [0, 1, 2, 5, 6, 7, 3, 4, 8]
|
* Result: [0, 1, 2, 5, 6, 7, 3, 4, 8]
|
||||||
*/
|
*/
|
||||||
export function invertIndexValues(inputArray: number[]): number[] {
|
export function invertIndexValues(inputArray: number[]): number[] {
|
||||||
var invertedArray: number[] = [];
|
const invertedArray: number[] = [];
|
||||||
if (inputArray) {
|
if (inputArray) {
|
||||||
inputArray.forEach((value: number, index: number) => {
|
inputArray.forEach((value: number, index: number) => {
|
||||||
invertedArray[inputArray[index]] = index;
|
invertedArray[inputArray[index]] = index;
|
||||||
@ -170,20 +170,21 @@ export function invertIndexValues(inputArray: number[]): number[] {
|
|||||||
* transformation order: Trans = [0, 1, 2, 7, 3, 4, 8, 5, 6]
|
* transformation order: Trans = [0, 1, 2, 7, 3, 4, 8, 5, 6]
|
||||||
*/
|
*/
|
||||||
export function calculateTransformationOrder(currentOrder: number[], targetOrder: number[]): number[] {
|
export function calculateTransformationOrder(currentOrder: number[], targetOrder: number[]): number[] {
|
||||||
var transformationOrder: number[] = [];
|
let transformationOrder: number[] = [];
|
||||||
if (currentOrder && targetOrder && currentOrder.length === targetOrder.length) {
|
if (currentOrder && targetOrder && currentOrder.length === targetOrder.length) {
|
||||||
var invertedCurrentOrder: number[] = invertIndexValues(currentOrder);
|
const invertedCurrentOrder: number[] = invertIndexValues(currentOrder);
|
||||||
transformationOrder = targetOrder.map((value: number) => invertedCurrentOrder[value]);
|
transformationOrder = targetOrder.map((value: number) => invertedCurrentOrder[value]);
|
||||||
}
|
}
|
||||||
return transformationOrder;
|
return transformationOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDataTableHeaders(table: DataTables.DataTable): string[] {
|
export function getDataTableHeaders(table: DataTables.DataTable): string[] {
|
||||||
var columns: DataTables.ColumnsMethods = table.columns();
|
const columns: DataTables.ColumnsMethods = table.columns();
|
||||||
var headers: string[] = [];
|
let headers: string[] = [];
|
||||||
if (columns) {
|
if (columns) {
|
||||||
// table.columns() return ColumnsMethods which is an array of arrays
|
// table.columns() return ColumnsMethods which is an array of arrays
|
||||||
var columnIndexes: number[] = (<any>columns)[0];
|
//eslint-disable-next-line
|
||||||
|
const columnIndexes: number[] = (<any>columns)[0];
|
||||||
if (columnIndexes) {
|
if (columnIndexes) {
|
||||||
headers = columnIndexes.map((value: number) => $(table.columns(value).header()).html());
|
headers = columnIndexes.map((value: number) => $(table.columns(value).header()).html());
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,11 @@ import TableEntityListViewModel from "./TableEntityListViewModel";
|
|||||||
|
|
||||||
export default class TableCommands {
|
export default class TableCommands {
|
||||||
// Command Ids
|
// Command Ids
|
||||||
public static editEntityCommand: string = "edit";
|
public static editEntityCommand = "edit";
|
||||||
public static deleteEntitiesCommand: string = "delete";
|
public static deleteEntitiesCommand = "delete";
|
||||||
public static reorderColumnsCommand: string = "reorder";
|
public static reorderColumnsCommand = "reorder";
|
||||||
public static resetColumnsCommand: string = "reset";
|
public static resetColumnsCommand = "reset";
|
||||||
public static customizeColumnsCommand: string = "customizeColumns";
|
public static customizeColumnsCommand = "customizeColumns";
|
||||||
|
|
||||||
private _container: Explorer;
|
private _container: Explorer;
|
||||||
|
|
||||||
@ -21,8 +21,8 @@ export default class TableCommands {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public isEnabled(commandName: string, selectedEntites: Entities.ITableEntity[]): boolean {
|
public isEnabled(commandName: string, selectedEntites: Entities.ITableEntity[]): boolean {
|
||||||
var singleItemSelected: boolean = DataTableUtilities.containSingleItem(selectedEntites);
|
const singleItemSelected = DataTableUtilities.containSingleItem(selectedEntites);
|
||||||
var atLeastOneItemSelected: boolean = DataTableUtilities.containItems(selectedEntites);
|
const atLeastOneItemSelected = DataTableUtilities.containItems(selectedEntites);
|
||||||
switch (commandName) {
|
switch (commandName) {
|
||||||
case TableCommands.editEntityCommand:
|
case TableCommands.editEntityCommand:
|
||||||
return singleItemSelected;
|
return singleItemSelected;
|
||||||
@ -47,6 +47,7 @@ export default class TableCommands {
|
|||||||
/**
|
/**
|
||||||
* Edit entity
|
* Edit entity
|
||||||
*/
|
*/
|
||||||
|
//eslint-disable-next-line
|
||||||
public editEntityCommand(viewModel: TableEntityListViewModel): Q.Promise<any> {
|
public editEntityCommand(viewModel: TableEntityListViewModel): Q.Promise<any> {
|
||||||
if (!viewModel) {
|
if (!viewModel) {
|
||||||
return null; // Error
|
return null; // Error
|
||||||
@ -56,12 +57,9 @@ export default class TableCommands {
|
|||||||
return null; // Erorr
|
return null; // Erorr
|
||||||
}
|
}
|
||||||
|
|
||||||
var entityToUpdate: Entities.ITableEntity = viewModel.selected()[0];
|
|
||||||
var originalNumberOfProperties = entityToUpdate ? 0 : Object.keys(entityToUpdate).length - 1; // .metadata is always a property for etag
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
//eslint-disable-next-line
|
||||||
public deleteEntitiesCommand(viewModel: TableEntityListViewModel): Q.Promise<any> {
|
public deleteEntitiesCommand(viewModel: TableEntityListViewModel): Q.Promise<any> {
|
||||||
if (!viewModel) {
|
if (!viewModel) {
|
||||||
return null; // Error
|
return null; // Error
|
||||||
@ -69,7 +67,7 @@ export default class TableCommands {
|
|||||||
if (!DataTableUtilities.containItems(viewModel.selected())) {
|
if (!DataTableUtilities.containItems(viewModel.selected())) {
|
||||||
return null; // Error
|
return null; // Error
|
||||||
}
|
}
|
||||||
var entitiesToDelete: Entities.ITableEntity[] = viewModel.selected();
|
const entitiesToDelete: Entities.ITableEntity[] = viewModel.selected();
|
||||||
const deleteMessage: string =
|
const deleteMessage: string =
|
||||||
userContext.apiType === "Cassandra"
|
userContext.apiType === "Cassandra"
|
||||||
? "Are you sure you want to delete the selected rows?"
|
? "Are you sure you want to delete the selected rows?"
|
||||||
@ -82,7 +80,7 @@ export default class TableCommands {
|
|||||||
() => {
|
() => {
|
||||||
viewModel.queryTablesTab.container.tableDataClient
|
viewModel.queryTablesTab.container.tableDataClient
|
||||||
.deleteDocuments(viewModel.queryTablesTab.collection, entitiesToDelete)
|
.deleteDocuments(viewModel.queryTablesTab.collection, entitiesToDelete)
|
||||||
.then((results: any) => {
|
.then(() => {
|
||||||
return viewModel.removeEntitiesFromCache(entitiesToDelete).then(() => {
|
return viewModel.removeEntitiesFromCache(entitiesToDelete).then(() => {
|
||||||
viewModel.redrawTableThrottled();
|
viewModel.redrawTableThrottled();
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as Utilities from "../Utilities";
|
|
||||||
import * as Entities from "../Entities";
|
import * as Entities from "../Entities";
|
||||||
|
import * as Utilities from "../Utilities";
|
||||||
import CacheBase from "./CacheBase";
|
import CacheBase from "./CacheBase";
|
||||||
|
|
||||||
export default class TableEntityCache extends CacheBase<Entities.ITableEntity> {
|
export default class TableEntityCache extends CacheBase<Entities.ITableEntity> {
|
||||||
@ -21,7 +21,7 @@ export default class TableEntityCache extends CacheBase<Entities.ITableEntity> {
|
|||||||
this._tableQuery = Utilities.copyTableQuery(tableQuery);
|
this._tableQuery = Utilities.copyTableQuery(tableQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
public preClear() {
|
public preClear(): void {
|
||||||
this.tableQuery = null;
|
this.tableQuery = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { QueryIterator, ItemDefinition, Resource } from "@azure/cosmos";
|
import { ItemDefinition, QueryIterator, Resource } from "@azure/cosmos";
|
||||||
|
|
||||||
export interface ITableEntity {
|
export interface ITableEntity {
|
||||||
[property: string]: ITableEntityAttribute;
|
[property: string]: ITableEntityAttribute;
|
||||||
@ -17,6 +17,7 @@ export interface ITableEntityAttribute {
|
|||||||
|
|
||||||
export interface IListTableEntitiesResult {
|
export interface IListTableEntitiesResult {
|
||||||
Results: ITableEntity[];
|
Results: ITableEntity[];
|
||||||
|
//eslint-disable-next-line
|
||||||
ContinuationToken: any;
|
ContinuationToken: any;
|
||||||
iterator?: QueryIterator<ItemDefinition & Resource>;
|
iterator?: QueryIterator<ItemDefinition & Resource>;
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ export default class NotebookTabV2 extends NotebookTabBase {
|
|||||||
const saveButtonChildren = [];
|
const saveButtonChildren = [];
|
||||||
if (this.container.notebookManager?.gitHubOAuthService.isLoggedIn()) {
|
if (this.container.notebookManager?.gitHubOAuthService.isLoggedIn()) {
|
||||||
saveButtonChildren.push({
|
saveButtonChildren.push({
|
||||||
iconName: "Copy",
|
iconName: copyToLabel,
|
||||||
onCommandClick: () => this.copyNotebook(),
|
onCommandClick: () => this.copyNotebook(),
|
||||||
commandButtonLabel: copyToLabel,
|
commandButtonLabel: copyToLabel,
|
||||||
hasPopup: false,
|
hasPopup: false,
|
||||||
|
@ -15,18 +15,13 @@
|
|||||||
"target": "es2017",
|
"target": "es2017",
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"lib": [
|
"lib": ["es5", "es6", "dom"],
|
||||||
"es5",
|
|
||||||
"es6",
|
|
||||||
"dom"
|
|
||||||
],
|
|
||||||
"jsx": "react",
|
"jsx": "react",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"types": [
|
"types": ["jest"],
|
||||||
"jest"
|
"baseUrl": "src"
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"typedocOptions": {
|
"typedocOptions": {
|
||||||
"entryPoints": [
|
"entryPoints": [
|
||||||
@ -42,11 +37,6 @@
|
|||||||
"includes": "./src/SelfServe/Documentation",
|
"includes": "./src/SelfServe/Documentation",
|
||||||
"disableSources": true
|
"disableSources": true
|
||||||
},
|
},
|
||||||
"include": [
|
"include": ["src", "./src/**/*", "./utils/**/*"],
|
||||||
"./src/**/*",
|
"exclude": ["./src/**/__mocks__/**/*"]
|
||||||
"./utils/**/*"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"./src/**/__mocks__/**/*"
|
|
||||||
]
|
|
||||||
}
|
}
|
@ -227,6 +227,7 @@ module.exports = function (_env = {}, argv = {}) {
|
|||||||
rules,
|
rules,
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
|
modules: [path.resolve(__dirname, "src"), "node_modules"],
|
||||||
alias: {
|
alias: {
|
||||||
process: "process/browser",
|
process: "process/browser",
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user