mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-24 11:21:23 +00:00
Compare commits
11 Commits
before_opt
...
defect2276
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c99cc634b | ||
|
|
77d413423d | ||
|
|
cfc578f308 | ||
|
|
4ec6108f41 | ||
|
|
d63f1251dd | ||
|
|
40755e297d | ||
|
|
b84d5b572c | ||
|
|
c711b59f7d | ||
|
|
e945963cf9 | ||
|
|
5a660551c6 | ||
|
|
b2d59f3b3f |
@@ -1,169 +0,0 @@
|
|||||||
import {
|
|
||||||
Dropdown,
|
|
||||||
IDropdownOption,
|
|
||||||
IDropdownStyles,
|
|
||||||
IImageProps,
|
|
||||||
Image,
|
|
||||||
IStackTokens,
|
|
||||||
Stack,
|
|
||||||
TextField,
|
|
||||||
TooltipHost,
|
|
||||||
} from "@fluentui/react";
|
|
||||||
import React, { FunctionComponent } from "react";
|
|
||||||
import DeleteIcon from "../../images/delete.svg";
|
|
||||||
import EditIcon from "../../images/Edit_entity.svg";
|
|
||||||
import { CassandraType, TableType } from "../Explorer/Tables/Constants";
|
|
||||||
import { userContext } from "../UserContext";
|
|
||||||
import { EntityValue } from "./EntityValue";
|
|
||||||
|
|
||||||
const dropdownStyles: Partial<IDropdownStyles> = { dropdown: { width: 100 } };
|
|
||||||
|
|
||||||
export interface TableEntityProps {
|
|
||||||
entityTypeLabel?: string;
|
|
||||||
entityPropertyLabel?: string;
|
|
||||||
entityValueLabel?: string;
|
|
||||||
isDeleteOptionVisible: boolean;
|
|
||||||
entityProperty: string;
|
|
||||||
entityPropertyPlaceHolder: string;
|
|
||||||
selectedKey: string | number;
|
|
||||||
entityValuePlaceholder: string;
|
|
||||||
entityValue: string | Date;
|
|
||||||
isEntityTypeDate: boolean;
|
|
||||||
options: { key: string; text: string }[];
|
|
||||||
isPropertyTypeDisable: boolean;
|
|
||||||
entityTimeValue: string;
|
|
||||||
isEntityValueDisable?: boolean;
|
|
||||||
onDeleteEntity?: () => void;
|
|
||||||
onEditEntity?: () => void;
|
|
||||||
onEntityPropertyChange: (event: React.FormEvent<HTMLElement>, newInput?: string) => void;
|
|
||||||
onEntityTypeChange: (event: React.FormEvent<HTMLElement>, selectedParam: IDropdownOption) => void;
|
|
||||||
onEntityValueChange: (event: React.FormEvent<HTMLElement>, newInput?: string) => void;
|
|
||||||
onSelectDate: (date: Date | null | undefined) => void;
|
|
||||||
onEntityTimeValueChange: (event: React.FormEvent<HTMLElement>, newInput?: string) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const TableEntity: FunctionComponent<TableEntityProps> = ({
|
|
||||||
entityTypeLabel,
|
|
||||||
entityPropertyLabel,
|
|
||||||
isDeleteOptionVisible,
|
|
||||||
entityProperty,
|
|
||||||
selectedKey,
|
|
||||||
entityPropertyPlaceHolder,
|
|
||||||
entityValueLabel,
|
|
||||||
entityValuePlaceholder,
|
|
||||||
entityValue,
|
|
||||||
options,
|
|
||||||
isPropertyTypeDisable,
|
|
||||||
isEntityTypeDate,
|
|
||||||
entityTimeValue,
|
|
||||||
isEntityValueDisable,
|
|
||||||
onEditEntity,
|
|
||||||
onDeleteEntity,
|
|
||||||
onEntityPropertyChange,
|
|
||||||
onEntityTypeChange,
|
|
||||||
onEntityValueChange,
|
|
||||||
onSelectDate,
|
|
||||||
onEntityTimeValueChange,
|
|
||||||
}: TableEntityProps): JSX.Element => {
|
|
||||||
const imageProps: IImageProps = {
|
|
||||||
width: 16,
|
|
||||||
height: 30,
|
|
||||||
className: entityPropertyLabel ? "addRemoveIconLabel" : "addRemoveIcon",
|
|
||||||
};
|
|
||||||
|
|
||||||
const sectionStackTokens: IStackTokens = { childrenGap: 12 };
|
|
||||||
|
|
||||||
const handleKeyPress = (event: React.KeyboardEvent<HTMLElement>) => {
|
|
||||||
if (event.key === "Enter" || event.key === "Space") {
|
|
||||||
onEditEntity();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const handleKeyPressdelete = (event: React.KeyboardEvent<HTMLElement>) => {
|
|
||||||
if (event.key === "Enter" || event.key === "Space") {
|
|
||||||
onDeleteEntity();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const getEntityValueType = (): string => {
|
|
||||||
const { Int, Smallint, Tinyint } = CassandraType;
|
|
||||||
const { Double, Int32, Int64 } = TableType;
|
|
||||||
|
|
||||||
if (
|
|
||||||
selectedKey === Double ||
|
|
||||||
selectedKey === Int32 ||
|
|
||||||
selectedKey === Int64 ||
|
|
||||||
selectedKey === Int ||
|
|
||||||
selectedKey === Smallint ||
|
|
||||||
selectedKey === Tinyint
|
|
||||||
) {
|
|
||||||
return "number";
|
|
||||||
}
|
|
||||||
return "string";
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<Stack horizontal tokens={sectionStackTokens}>
|
|
||||||
<TextField
|
|
||||||
label={entityPropertyLabel && entityPropertyLabel}
|
|
||||||
id="entityPropertyId"
|
|
||||||
autoFocus
|
|
||||||
disabled={isPropertyTypeDisable}
|
|
||||||
placeholder={entityPropertyPlaceHolder}
|
|
||||||
value={entityProperty}
|
|
||||||
onChange={onEntityPropertyChange}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
<Dropdown
|
|
||||||
label={entityTypeLabel && entityTypeLabel}
|
|
||||||
selectedKey={selectedKey}
|
|
||||||
onChange={onEntityTypeChange}
|
|
||||||
options={options}
|
|
||||||
disabled={isPropertyTypeDisable}
|
|
||||||
id="entityTypeId"
|
|
||||||
styles={dropdownStyles}
|
|
||||||
/>
|
|
||||||
<EntityValue
|
|
||||||
entityValueLabel={entityValueLabel}
|
|
||||||
entityValueType={getEntityValueType()}
|
|
||||||
isEntityValueDisable={isEntityValueDisable}
|
|
||||||
entityValuePlaceholder={entityValuePlaceholder}
|
|
||||||
entityValue={entityValue}
|
|
||||||
isEntityTypeDate={isEntityTypeDate}
|
|
||||||
entityTimeValue={entityTimeValue}
|
|
||||||
onEntityValueChange={onEntityValueChange}
|
|
||||||
onSelectDate={onSelectDate}
|
|
||||||
onEntityTimeValueChange={onEntityTimeValueChange}
|
|
||||||
/>
|
|
||||||
{!isEntityValueDisable && (
|
|
||||||
<TooltipHost content="Edit property" id="editTooltip">
|
|
||||||
<div tabIndex={0}>
|
|
||||||
<Image
|
|
||||||
{...imageProps}
|
|
||||||
src={EditIcon}
|
|
||||||
alt="editEntity"
|
|
||||||
id="editEntity"
|
|
||||||
onClick={onEditEntity}
|
|
||||||
tabIndex={0}
|
|
||||||
onKeyPress={handleKeyPress}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</TooltipHost>
|
|
||||||
)}
|
|
||||||
{isDeleteOptionVisible && userContext.apiType !== "Cassandra" && (
|
|
||||||
<TooltipHost content="Delete property" id="deleteTooltip">
|
|
||||||
<Image
|
|
||||||
{...imageProps}
|
|
||||||
src={DeleteIcon}
|
|
||||||
alt="delete entity"
|
|
||||||
id="deleteEntity"
|
|
||||||
onClick={onDeleteEntity}
|
|
||||||
tabIndex={0}
|
|
||||||
onKeyPress={handleKeyPressdelete}
|
|
||||||
/>
|
|
||||||
</TooltipHost>
|
|
||||||
)}
|
|
||||||
</Stack>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@@ -201,20 +201,20 @@ export const ThroughputInput: FunctionComponent<ThroughputInputProps> = ({
|
|||||||
Autoscale
|
Autoscale
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<input
|
<input
|
||||||
id="Manual-input"
|
id="Manual-input"
|
||||||
className="throughputInputRadioBtn"
|
className="throughputInputRadioBtn"
|
||||||
aria-label="Manual database throughput"
|
aria-label="Manual database throughput"
|
||||||
checked={!isAutoscaleSelected}
|
checked={!isAutoscaleSelected}
|
||||||
type="radio"
|
type="radio"
|
||||||
aria-required={true}
|
aria-required={true}
|
||||||
role="radio"
|
role="radio"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
onChange={(e) => handleOnChangeMode(e, "Manual")}
|
onChange={(e) => handleOnChangeMode(e, "Manual")}
|
||||||
/>
|
/>
|
||||||
<label className="throughputInputRadioBtnLabel" htmlFor="Manual-input">
|
<label className="throughputInputRadioBtnLabel" htmlFor="Manual-input">
|
||||||
Manual
|
Manual
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
|
|||||||
@@ -347,12 +347,14 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
ariaLabel="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
ariaLabel="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
||||||
className="panelInfoIcon"
|
className="panelInfoIcon"
|
||||||
iconName="Info"
|
iconName="Info"
|
||||||
|
role="tooltip"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
ariaLabel="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
ariaLabel="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
||||||
className="panelInfoIcon"
|
className="panelInfoIcon"
|
||||||
iconName="Info"
|
iconName="Info"
|
||||||
|
role="tooltip"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
theme={
|
theme={
|
||||||
@@ -633,7 +635,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
aria-label="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
aria-label="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
||||||
className="panelInfoIcon root-57"
|
className="panelInfoIcon root-57"
|
||||||
data-icon-name="Info"
|
data-icon-name="Info"
|
||||||
role="img"
|
role="tooltip"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -1339,12 +1341,14 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
ariaLabel="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
ariaLabel="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
||||||
className="panelInfoIcon"
|
className="panelInfoIcon"
|
||||||
iconName="Info"
|
iconName="Info"
|
||||||
|
role="tooltip"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
ariaLabel="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
ariaLabel="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
||||||
className="panelInfoIcon"
|
className="panelInfoIcon"
|
||||||
iconName="Info"
|
iconName="Info"
|
||||||
|
role="tooltip"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
theme={
|
theme={
|
||||||
@@ -1625,7 +1629,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
aria-label="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
aria-label="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
||||||
className="panelInfoIcon root-57"
|
className="panelInfoIcon root-57"
|
||||||
data-icon-name="Info"
|
data-icon-name="Info"
|
||||||
role="img"
|
role="tooltip"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
IButtonStyles,
|
IButtonStyles,
|
||||||
IconButton,
|
IconButton,
|
||||||
IContextualMenuItemProps,
|
IContextualMenuItemProps,
|
||||||
IContextualMenuProps,
|
IContextualMenuProps
|
||||||
} from "@fluentui/react";
|
} from "@fluentui/react";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import AnimateHeight from "react-animate-height";
|
import AnimateHeight from "react-animate-height";
|
||||||
|
|||||||
@@ -40,30 +40,32 @@ exports[`TreeNodeComponent does not render children by default 1`] = `
|
|||||||
onKeyPress={[Function]}
|
onKeyPress={[Function]}
|
||||||
role="treeitem"
|
role="treeitem"
|
||||||
>
|
>
|
||||||
<div
|
<div>
|
||||||
className="treeNodeHeader "
|
<div
|
||||||
data-test="label"
|
className="treeNodeHeader "
|
||||||
style={
|
data-test="label"
|
||||||
Object {
|
style={
|
||||||
"paddingLeft": 9,
|
Object {
|
||||||
|
"paddingLeft": 9,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
tabIndex={-1}
|
||||||
tabIndex={-1}
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
alt="label branch is collapsed"
|
|
||||||
className="expandCollapseIcon"
|
|
||||||
onKeyPress={[Function]}
|
|
||||||
role="button"
|
|
||||||
src=""
|
|
||||||
tabIndex={0}
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
className="nodeLabel"
|
|
||||||
title="label"
|
|
||||||
>
|
>
|
||||||
label
|
<img
|
||||||
</span>
|
alt="label branch is collapsed"
|
||||||
|
className="expandCollapseIcon"
|
||||||
|
onKeyPress={[Function]}
|
||||||
|
role="button"
|
||||||
|
src=""
|
||||||
|
tabIndex={0}
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
className="nodeLabel"
|
||||||
|
title="label"
|
||||||
|
>
|
||||||
|
label
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className="loadingIconContainer"
|
className="loadingIconContainer"
|
||||||
@@ -143,78 +145,80 @@ exports[`TreeNodeComponent renders a simple node (sorted children, expanded) 1`]
|
|||||||
onKeyPress={[Function]}
|
onKeyPress={[Function]}
|
||||||
role="treeitem"
|
role="treeitem"
|
||||||
>
|
>
|
||||||
<div
|
<div>
|
||||||
className="treeNodeHeader "
|
|
||||||
data-test="label"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"paddingLeft": 23,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tabIndex={-1}
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
alt="label branch is expanded"
|
|
||||||
className="expandCollapseIcon"
|
|
||||||
onKeyPress={[Function]}
|
|
||||||
role="button"
|
|
||||||
src=""
|
|
||||||
tabIndex={0}
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
className="nodeLabel"
|
|
||||||
title="label"
|
|
||||||
>
|
|
||||||
label
|
|
||||||
</span>
|
|
||||||
<div
|
<div
|
||||||
onContextMenu={[Function]}
|
className="treeNodeHeader "
|
||||||
onKeyPress={[Function]}
|
data-test="label"
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"paddingLeft": 23,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tabIndex={-1}
|
||||||
>
|
>
|
||||||
<CustomizedIconButton
|
<img
|
||||||
ariaLabel="More"
|
alt="label branch is expanded"
|
||||||
className="treeMenuEllipsis"
|
className="expandCollapseIcon"
|
||||||
menuIconProps={
|
onKeyPress={[Function]}
|
||||||
Object {
|
role="button"
|
||||||
"iconName": "More",
|
src=""
|
||||||
"styles": Object {
|
tabIndex={0}
|
||||||
"root": Object {
|
|
||||||
"fontSize": "18px",
|
|
||||||
"fontWeight": "bold",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
menuProps={
|
|
||||||
Object {
|
|
||||||
"contextualMenuItemAs": [Function],
|
|
||||||
"coverTarget": true,
|
|
||||||
"directionalHint": 3,
|
|
||||||
"isBeakVisible": false,
|
|
||||||
"items": Array [
|
|
||||||
Object {
|
|
||||||
"className": undefined,
|
|
||||||
"disabled": true,
|
|
||||||
"key": "menuLabel",
|
|
||||||
"onClick": [Function],
|
|
||||||
"onRenderIcon": [Function],
|
|
||||||
"text": "menuLabel",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"onMenuDismissed": [Function],
|
|
||||||
"onMenuOpened": [Function],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
name="More"
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"rootFocused": Object {
|
|
||||||
"outline": "1px dashed undefined",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
title="More"
|
|
||||||
/>
|
/>
|
||||||
|
<span
|
||||||
|
className="nodeLabel"
|
||||||
|
title="label"
|
||||||
|
>
|
||||||
|
label
|
||||||
|
</span>
|
||||||
|
<div
|
||||||
|
onContextMenu={[Function]}
|
||||||
|
onKeyPress={[Function]}
|
||||||
|
>
|
||||||
|
<CustomizedIconButton
|
||||||
|
ariaLabel="More"
|
||||||
|
className="treeMenuEllipsis"
|
||||||
|
menuIconProps={
|
||||||
|
Object {
|
||||||
|
"iconName": "More",
|
||||||
|
"styles": Object {
|
||||||
|
"root": Object {
|
||||||
|
"fontSize": "18px",
|
||||||
|
"fontWeight": "bold",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menuProps={
|
||||||
|
Object {
|
||||||
|
"contextualMenuItemAs": [Function],
|
||||||
|
"coverTarget": true,
|
||||||
|
"directionalHint": 3,
|
||||||
|
"isBeakVisible": false,
|
||||||
|
"items": Array [
|
||||||
|
Object {
|
||||||
|
"className": undefined,
|
||||||
|
"disabled": true,
|
||||||
|
"key": "menuLabel",
|
||||||
|
"onClick": [Function],
|
||||||
|
"onRenderIcon": [Function],
|
||||||
|
"text": "menuLabel",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"onMenuDismissed": [Function],
|
||||||
|
"onMenuOpened": [Function],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
name="More"
|
||||||
|
styles={
|
||||||
|
Object {
|
||||||
|
"rootFocused": Object {
|
||||||
|
"outline": "1px dashed undefined",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
title="More"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -294,30 +298,32 @@ exports[`TreeNodeComponent renders loading icon 1`] = `
|
|||||||
onKeyPress={[Function]}
|
onKeyPress={[Function]}
|
||||||
role="treeitem"
|
role="treeitem"
|
||||||
>
|
>
|
||||||
<div
|
<div>
|
||||||
className="treeNodeHeader "
|
<div
|
||||||
data-test="label"
|
className="treeNodeHeader "
|
||||||
style={
|
data-test="label"
|
||||||
Object {
|
style={
|
||||||
"paddingLeft": 9,
|
Object {
|
||||||
|
"paddingLeft": 9,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
tabIndex={-1}
|
||||||
tabIndex={-1}
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
alt="label branch is expanded"
|
|
||||||
className="expandCollapseIcon"
|
|
||||||
onKeyPress={[Function]}
|
|
||||||
role="button"
|
|
||||||
src=""
|
|
||||||
tabIndex={0}
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
className="nodeLabel"
|
|
||||||
title="label"
|
|
||||||
>
|
>
|
||||||
label
|
<img
|
||||||
</span>
|
alt="label branch is expanded"
|
||||||
|
className="expandCollapseIcon"
|
||||||
|
onKeyPress={[Function]}
|
||||||
|
role="button"
|
||||||
|
src=""
|
||||||
|
tabIndex={0}
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
className="nodeLabel"
|
||||||
|
title="label"
|
||||||
|
>
|
||||||
|
label
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className="loadingIconContainer"
|
className="loadingIconContainer"
|
||||||
@@ -368,69 +374,71 @@ exports[`TreeNodeComponent renders sorted children, expanded, leaves and parents
|
|||||||
onKeyPress={[Function]}
|
onKeyPress={[Function]}
|
||||||
role="treeitem"
|
role="treeitem"
|
||||||
>
|
>
|
||||||
<div
|
<div>
|
||||||
className="treeNodeHeader "
|
|
||||||
data-test="label"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"paddingLeft": 23,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tabIndex={-1}
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
alt="label branch is expanded"
|
|
||||||
className="expandCollapseIcon"
|
|
||||||
onKeyPress={[Function]}
|
|
||||||
role="button"
|
|
||||||
src=""
|
|
||||||
tabIndex={0}
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
className="nodeLabel"
|
|
||||||
title="label"
|
|
||||||
>
|
|
||||||
label
|
|
||||||
</span>
|
|
||||||
<div
|
<div
|
||||||
onContextMenu={[Function]}
|
className="treeNodeHeader "
|
||||||
onKeyPress={[Function]}
|
data-test="label"
|
||||||
|
style={
|
||||||
|
Object {
|
||||||
|
"paddingLeft": 23,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tabIndex={-1}
|
||||||
>
|
>
|
||||||
<CustomizedIconButton
|
<img
|
||||||
ariaLabel="More"
|
alt="label branch is expanded"
|
||||||
className="treeMenuEllipsis"
|
className="expandCollapseIcon"
|
||||||
menuIconProps={
|
onKeyPress={[Function]}
|
||||||
Object {
|
role="button"
|
||||||
"iconName": "More",
|
src=""
|
||||||
"styles": Object {
|
tabIndex={0}
|
||||||
"root": Object {
|
|
||||||
"fontSize": "18px",
|
|
||||||
"fontWeight": "bold",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
menuProps={
|
|
||||||
Object {
|
|
||||||
"contextualMenuItemAs": [Function],
|
|
||||||
"coverTarget": true,
|
|
||||||
"directionalHint": 3,
|
|
||||||
"isBeakVisible": false,
|
|
||||||
"items": Array [],
|
|
||||||
"onMenuDismissed": [Function],
|
|
||||||
"onMenuOpened": [Function],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
name="More"
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"rootFocused": Object {
|
|
||||||
"outline": "1px dashed undefined",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
title="More"
|
|
||||||
/>
|
/>
|
||||||
|
<span
|
||||||
|
className="nodeLabel"
|
||||||
|
title="label"
|
||||||
|
>
|
||||||
|
label
|
||||||
|
</span>
|
||||||
|
<div
|
||||||
|
onContextMenu={[Function]}
|
||||||
|
onKeyPress={[Function]}
|
||||||
|
>
|
||||||
|
<CustomizedIconButton
|
||||||
|
ariaLabel="More"
|
||||||
|
className="treeMenuEllipsis"
|
||||||
|
menuIconProps={
|
||||||
|
Object {
|
||||||
|
"iconName": "More",
|
||||||
|
"styles": Object {
|
||||||
|
"root": Object {
|
||||||
|
"fontSize": "18px",
|
||||||
|
"fontWeight": "bold",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menuProps={
|
||||||
|
Object {
|
||||||
|
"contextualMenuItemAs": [Function],
|
||||||
|
"coverTarget": true,
|
||||||
|
"directionalHint": 3,
|
||||||
|
"isBeakVisible": false,
|
||||||
|
"items": Array [],
|
||||||
|
"onMenuDismissed": [Function],
|
||||||
|
"onMenuOpened": [Function],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
name="More"
|
||||||
|
styles={
|
||||||
|
Object {
|
||||||
|
"rootFocused": Object {
|
||||||
|
"outline": "1px dashed undefined",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
title="More"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -538,30 +546,32 @@ exports[`TreeNodeComponent renders unsorted children by default 1`] = `
|
|||||||
onKeyPress={[Function]}
|
onKeyPress={[Function]}
|
||||||
role="treeitem"
|
role="treeitem"
|
||||||
>
|
>
|
||||||
<div
|
<div>
|
||||||
className="treeNodeHeader "
|
<div
|
||||||
data-test="label"
|
className="treeNodeHeader "
|
||||||
style={
|
data-test="label"
|
||||||
Object {
|
style={
|
||||||
"paddingLeft": 9,
|
Object {
|
||||||
|
"paddingLeft": 9,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
tabIndex={-1}
|
||||||
tabIndex={-1}
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
alt="label branch is expanded"
|
|
||||||
className="expandCollapseIcon"
|
|
||||||
onKeyPress={[Function]}
|
|
||||||
role="button"
|
|
||||||
src=""
|
|
||||||
tabIndex={0}
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
className="nodeLabel"
|
|
||||||
title="label"
|
|
||||||
>
|
>
|
||||||
label
|
<img
|
||||||
</span>
|
alt="label branch is expanded"
|
||||||
|
className="expandCollapseIcon"
|
||||||
|
onKeyPress={[Function]}
|
||||||
|
role="button"
|
||||||
|
src=""
|
||||||
|
tabIndex={0}
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
className="nodeLabel"
|
||||||
|
title="label"
|
||||||
|
>
|
||||||
|
label
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className="loadingIconContainer"
|
className="loadingIconContainer"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
TeachingBubble,
|
TeachingBubble,
|
||||||
Text,
|
Text,
|
||||||
TooltipHost,
|
TooltipHost
|
||||||
} from "@fluentui/react";
|
} from "@fluentui/react";
|
||||||
import * as Constants from "Common/Constants";
|
import * as Constants from "Common/Constants";
|
||||||
import { createCollection } from "Common/dataAccess/createCollection";
|
import { createCollection } from "Common/dataAccess/createCollection";
|
||||||
@@ -100,6 +100,7 @@ export interface AddCollectionPanelState {
|
|||||||
isExecuting: boolean;
|
isExecuting: boolean;
|
||||||
isThroughputCapExceeded: boolean;
|
isThroughputCapExceeded: boolean;
|
||||||
teachingBubbleStep: number;
|
teachingBubbleStep: number;
|
||||||
|
isParentTooltipVisible:boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class AddCollectionPanel extends React.Component<AddCollectionPanelProps, AddCollectionPanelState> {
|
export class AddCollectionPanel extends React.Component<AddCollectionPanelProps, AddCollectionPanelState> {
|
||||||
@@ -108,6 +109,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
|||||||
private collectionThroughput: number;
|
private collectionThroughput: number;
|
||||||
private isCollectionAutoscale: boolean;
|
private isCollectionAutoscale: boolean;
|
||||||
private isCostAcknowledged: boolean;
|
private isCostAcknowledged: boolean;
|
||||||
|
|
||||||
|
|
||||||
constructor(props: AddCollectionPanelProps) {
|
constructor(props: AddCollectionPanelProps) {
|
||||||
super(props);
|
super(props);
|
||||||
@@ -134,13 +136,16 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
|||||||
isExecuting: false,
|
isExecuting: false,
|
||||||
isThroughputCapExceeded: false,
|
isThroughputCapExceeded: false,
|
||||||
teachingBubbleStep: 0,
|
teachingBubbleStep: 0,
|
||||||
|
isParentTooltipVisible: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount(): void {
|
componentDidMount(): void {
|
||||||
if (this.state.teachingBubbleStep === 0 && this.props.isQuickstart) {
|
if (this.state.teachingBubbleStep === 0 && this.props.isQuickstart) {
|
||||||
this.setState({ teachingBubbleStep: 1 });
|
this.setState({ teachingBubbleStep: 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render(): JSX.Element {
|
render(): JSX.Element {
|
||||||
@@ -408,6 +413,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
|||||||
className="panelInfoIcon"
|
className="panelInfoIcon"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
ariaLabel={`Unique identifier for the ${getCollectionName().toLocaleLowerCase()} and used for id-based routing through REST and all SDKs.`}
|
ariaLabel={`Unique identifier for the ${getCollectionName().toLocaleLowerCase()} and used for id-based routing through REST and all SDKs.`}
|
||||||
|
|
||||||
/>
|
/>
|
||||||
</TooltipHost>
|
</TooltipHost>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
TeachingBubble,
|
TeachingBubble,
|
||||||
TeachingBubbleContent,
|
TeachingBubbleContent,
|
||||||
Text,
|
Text
|
||||||
} from "@fluentui/react";
|
} from "@fluentui/react";
|
||||||
import { sendMessage } from "Common/MessageHandler";
|
import { sendMessage } from "Common/MessageHandler";
|
||||||
import { MessageTypes } from "Contracts/ExplorerContracts";
|
import { MessageTypes } from "Contracts/ExplorerContracts";
|
||||||
|
|||||||
Reference in New Issue
Block a user