mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-22 10:21:37 +00:00
Migrate SidePanel state to Zustand (#799)
Co-authored-by: hardiknai-techm <HN00734461@TechMahindra.com>
This commit is contained in:
@@ -1,23 +1,20 @@
|
||||
import { mount } from "enzyme";
|
||||
import * as ko from "knockout";
|
||||
import React from "react";
|
||||
import Explorer from "../../Explorer";
|
||||
import TableListViewModal from "../../Tables/DataTable/TableEntityListViewModel";
|
||||
import * as Entities from "../../Tables/Entities";
|
||||
import { CassandraAPIDataClient } from "../../Tables/TableDataClient";
|
||||
import { CassandraAPIDataClient, TablesAPIDataClient } from "../../Tables/TableDataClient";
|
||||
import QueryTablesTab from "../../Tabs/QueryTablesTab";
|
||||
import { AddTableEntityPanel } from "./AddTableEntityPanel";
|
||||
|
||||
describe("Excute Add Table Entity Pane", () => {
|
||||
const fakeExplorer = {} as Explorer;
|
||||
const fakeQueryTablesTab = {} as QueryTablesTab;
|
||||
const fakeTableEntityListViewModel = {} as TableListViewModal;
|
||||
const fakeCassandraApiClient = {} as CassandraAPIDataClient;
|
||||
fakeTableEntityListViewModel.items = ko.observableArray<Entities.ITableEntity>();
|
||||
fakeTableEntityListViewModel.headers = [];
|
||||
const props = {
|
||||
explorer: fakeExplorer,
|
||||
closePanel: (): void => undefined,
|
||||
tableDataClient: new TablesAPIDataClient(),
|
||||
queryTablesTab: fakeQueryTablesTab,
|
||||
tableEntityListViewModel: fakeTableEntityListViewModel,
|
||||
cassandraApiClient: fakeCassandraApiClient,
|
||||
|
||||
@@ -5,13 +5,13 @@ import * as _ from "underscore";
|
||||
import AddPropertyIcon from "../../../../images/Add-property.svg";
|
||||
import RevertBackIcon from "../../../../images/RevertBack.svg";
|
||||
import { TableEntity } from "../../../Common/TableEntity";
|
||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
||||
import { userContext } from "../../../UserContext";
|
||||
import Explorer from "../../Explorer";
|
||||
import * as TableConstants from "../../Tables/Constants";
|
||||
import * as DataTableUtilities from "../../Tables/DataTable/DataTableUtilities";
|
||||
import TableEntityListViewModel from "../../Tables/DataTable/TableEntityListViewModel";
|
||||
import * as Entities from "../../Tables/Entities";
|
||||
import { CassandraAPIDataClient, CassandraTableKey } from "../../Tables/TableDataClient";
|
||||
import { CassandraAPIDataClient, CassandraTableKey, TableDataClient } from "../../Tables/TableDataClient";
|
||||
import * as TableEntityProcessor from "../../Tables/TableEntityProcessor";
|
||||
import * as Utilities from "../../Tables/Utilities";
|
||||
import QueryTablesTab from "../../Tabs/QueryTablesTab";
|
||||
@@ -37,8 +37,7 @@ import {
|
||||
} from "./Validators/EntityTableHelper";
|
||||
|
||||
interface AddTableEntityPanelProps {
|
||||
explorer: Explorer;
|
||||
closePanel: () => void;
|
||||
tableDataClient: TableDataClient;
|
||||
queryTablesTab: QueryTablesTab;
|
||||
tableEntityListViewModel: TableEntityListViewModel;
|
||||
cassandraApiClient: CassandraAPIDataClient;
|
||||
@@ -57,12 +56,12 @@ interface EntityRowType {
|
||||
}
|
||||
|
||||
export const AddTableEntityPanel: FunctionComponent<AddTableEntityPanelProps> = ({
|
||||
explorer,
|
||||
closePanel,
|
||||
tableDataClient,
|
||||
queryTablesTab,
|
||||
tableEntityListViewModel,
|
||||
cassandraApiClient,
|
||||
}: AddTableEntityPanelProps): JSX.Element => {
|
||||
const closeSidePanel = useSidePanel((state) => state.closeSidePanel);
|
||||
const [entities, setEntities] = useState<EntityRowType[]>([]);
|
||||
const [selectedRow, setSelectedRow] = useState<number>(0);
|
||||
const [entityAttributeValue, setEntityAttributeValue] = useState<string>("");
|
||||
@@ -106,15 +105,12 @@ export const AddTableEntityPanel: FunctionComponent<AddTableEntityPanelProps> =
|
||||
event.preventDefault();
|
||||
|
||||
const entity: Entities.ITableEntity = entityFromAttributes(entities);
|
||||
const newEntity: Entities.ITableEntity = await explorer.tableDataClient.createDocument(
|
||||
queryTablesTab.collection,
|
||||
entity
|
||||
);
|
||||
const newEntity: Entities.ITableEntity = await tableDataClient.createDocument(queryTablesTab.collection, entity);
|
||||
await tableEntityListViewModel.addEntityToCache(newEntity);
|
||||
if (!tryInsertNewHeaders(tableEntityListViewModel, newEntity)) {
|
||||
tableEntityListViewModel.redrawTableThrottled();
|
||||
}
|
||||
closePanel();
|
||||
closeSidePanel();
|
||||
};
|
||||
|
||||
const tryInsertNewHeaders = (viewModel: TableEntityListViewModel, newEntity: Entities.ITableEntity): boolean => {
|
||||
@@ -296,7 +292,6 @@ export const AddTableEntityPanel: FunctionComponent<AddTableEntityPanelProps> =
|
||||
}}
|
||||
/>
|
||||
}
|
||||
closePanel={() => closePanel()}
|
||||
isConsoleExpanded={false}
|
||||
/>
|
||||
);
|
||||
@@ -308,7 +303,6 @@ export const AddTableEntityPanel: FunctionComponent<AddTableEntityPanelProps> =
|
||||
panelWidth="700px"
|
||||
isOpen={true}
|
||||
panelContent={renderPanelContent()}
|
||||
closePanel={() => closePanel()}
|
||||
isConsoleExpanded={false}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
import { mount } from "enzyme";
|
||||
import * as ko from "knockout";
|
||||
import React from "react";
|
||||
import Explorer from "../../Explorer";
|
||||
import TableListViewModal from "../../Tables/DataTable/TableEntityListViewModel";
|
||||
import * as Entities from "../../Tables/Entities";
|
||||
import { CassandraAPIDataClient } from "../../Tables/TableDataClient";
|
||||
import { CassandraAPIDataClient, TablesAPIDataClient } from "../../Tables/TableDataClient";
|
||||
import QueryTablesTab from "../../Tabs/QueryTablesTab";
|
||||
import { EditTableEntityPanel } from "./EditTableEntityPanel";
|
||||
|
||||
describe("Excute Edit Table Entity Pane", () => {
|
||||
const fakeExplorer = {} as Explorer;
|
||||
const fakeQueryTablesTab = {} as QueryTablesTab;
|
||||
const fakeTableEntityListViewModel = {} as TableListViewModal;
|
||||
fakeTableEntityListViewModel.items = ko.observableArray<Entities.ITableEntity>();
|
||||
@@ -18,8 +16,7 @@ describe("Excute Edit Table Entity Pane", () => {
|
||||
fakeTableEntityListViewModel.selected = ko.observableArray<Entities.ITableEntity>([{}]);
|
||||
|
||||
const props = {
|
||||
explorer: fakeExplorer,
|
||||
closePanel: (): void => undefined,
|
||||
tableDataClient: new TablesAPIDataClient(),
|
||||
queryTablesTab: fakeQueryTablesTab,
|
||||
tableEntityListViewModel: fakeTableEntityListViewModel,
|
||||
cassandraApiClient: fakeCassandraApiClient,
|
||||
|
||||
@@ -5,13 +5,13 @@ import * as _ from "underscore";
|
||||
import AddPropertyIcon from "../../../../images/Add-property.svg";
|
||||
import RevertBackIcon from "../../../../images/RevertBack.svg";
|
||||
import { TableEntity } from "../../../Common/TableEntity";
|
||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
||||
import { userContext } from "../../../UserContext";
|
||||
import Explorer from "../../Explorer";
|
||||
import * as TableConstants from "../../Tables/Constants";
|
||||
import * as DataTableUtilities from "../../Tables/DataTable/DataTableUtilities";
|
||||
import TableEntityListViewModel from "../../Tables/DataTable/TableEntityListViewModel";
|
||||
import * as Entities from "../../Tables/Entities";
|
||||
import { CassandraAPIDataClient } from "../../Tables/TableDataClient";
|
||||
import { CassandraAPIDataClient, TableDataClient } from "../../Tables/TableDataClient";
|
||||
import * as TableEntityProcessor from "../../Tables/TableEntityProcessor";
|
||||
import QueryTablesTab from "../../Tabs/QueryTablesTab";
|
||||
import { PanelContainerComponent } from "../PanelContainerComponent";
|
||||
@@ -34,8 +34,7 @@ import {
|
||||
} from "./Validators/EntityTableHelper";
|
||||
|
||||
interface EditTableEntityPanelProps {
|
||||
explorer: Explorer;
|
||||
closePanel: () => void;
|
||||
tableDataClient: TableDataClient;
|
||||
queryTablesTab: QueryTablesTab;
|
||||
tableEntityListViewModel: TableEntityListViewModel;
|
||||
cassandraApiClient: CassandraAPIDataClient;
|
||||
@@ -55,12 +54,12 @@ interface EntityRowType {
|
||||
}
|
||||
|
||||
export const EditTableEntityPanel: FunctionComponent<EditTableEntityPanelProps> = ({
|
||||
explorer,
|
||||
closePanel,
|
||||
tableDataClient,
|
||||
queryTablesTab,
|
||||
tableEntityListViewModel,
|
||||
cassandraApiClient,
|
||||
}: EditTableEntityPanelProps): JSX.Element => {
|
||||
const closeSidePanel = useSidePanel((state) => state.closeSidePanel);
|
||||
const [entities, setEntities] = useState<EntityRowType[]>([]);
|
||||
const [selectedRow, setSelectedRow] = useState<number>(0);
|
||||
const [entityAttributeValue, setEntityAttributeValue] = useState<string>("");
|
||||
@@ -197,9 +196,9 @@ export const EditTableEntityPanel: FunctionComponent<EditTableEntityPanelProps>
|
||||
}
|
||||
event.preventDefault();
|
||||
const entity: Entities.ITableEntity = entityFromAttributes(entities);
|
||||
const tableDataClient = userContext.apiType === "Cassandra" ? cassandraApiClient : explorer.tableDataClient;
|
||||
const newTableDataClient = userContext.apiType === "Cassandra" ? cassandraApiClient : tableDataClient;
|
||||
const originalDocumentData = userContext.apiType === "Cassandra" ? originalDocument[0] : originalDocument;
|
||||
const newEntity: Entities.ITableEntity = await tableDataClient.updateDocument(
|
||||
const newEntity: Entities.ITableEntity = await newTableDataClient.updateDocument(
|
||||
queryTablesTab.collection,
|
||||
originalDocumentData,
|
||||
entity
|
||||
@@ -210,7 +209,7 @@ export const EditTableEntityPanel: FunctionComponent<EditTableEntityPanelProps>
|
||||
}
|
||||
tableEntityListViewModel.selected.removeAll();
|
||||
tableEntityListViewModel.selected.push(newEntity);
|
||||
closePanel();
|
||||
closeSidePanel();
|
||||
};
|
||||
|
||||
const tryInsertNewHeaders = (viewModel: TableEntityListViewModel, newEntity: Entities.ITableEntity): boolean => {
|
||||
@@ -391,7 +390,6 @@ export const EditTableEntityPanel: FunctionComponent<EditTableEntityPanelProps>
|
||||
}}
|
||||
/>
|
||||
}
|
||||
closePanel={() => closePanel()}
|
||||
isConsoleExpanded={false}
|
||||
/>
|
||||
);
|
||||
@@ -403,7 +401,6 @@ export const EditTableEntityPanel: FunctionComponent<EditTableEntityPanelProps>
|
||||
panelWidth="700px"
|
||||
isOpen={true}
|
||||
panelContent={renderPanelContent()}
|
||||
closePanel={() => closePanel()}
|
||||
isConsoleExpanded={false}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
import { Checkbox, Text } from "@fluentui/react";
|
||||
import React, { FunctionComponent, useEffect, useState } from "react";
|
||||
import { useSidePanel } from "../../../../hooks/useSidePanel";
|
||||
import { userContext } from "../../../../UserContext";
|
||||
import Explorer from "../../../Explorer";
|
||||
import * as Constants from "../../../Tables/Constants";
|
||||
import QueryViewModel from "../../../Tables/QueryBuilder/QueryViewModel";
|
||||
import { RightPaneForm, RightPaneFormProps } from "../../RightPaneForm/RightPaneForm";
|
||||
|
||||
interface TableQuerySelectPanelProps {
|
||||
explorer: Explorer;
|
||||
closePanel: () => void;
|
||||
queryViewModel: QueryViewModel;
|
||||
}
|
||||
|
||||
@@ -19,10 +17,10 @@ interface ISelectColumn {
|
||||
}
|
||||
|
||||
export const TableQuerySelectPanel: FunctionComponent<TableQuerySelectPanelProps> = ({
|
||||
explorer,
|
||||
closePanel,
|
||||
queryViewModel,
|
||||
}: TableQuerySelectPanelProps): JSX.Element => {
|
||||
const closeSidePanel = useSidePanel((state) => state.closeSidePanel);
|
||||
|
||||
const [columnOptions, setColumnOptions] = useState<ISelectColumn[]>([
|
||||
{ columnName: "", selected: true, editable: false },
|
||||
]);
|
||||
@@ -31,7 +29,7 @@ export const TableQuerySelectPanel: FunctionComponent<TableQuerySelectPanelProps
|
||||
const onSubmit = (): void => {
|
||||
queryViewModel.selectText(getParameters());
|
||||
queryViewModel.getSelectMessage();
|
||||
closePanel();
|
||||
closeSidePanel();
|
||||
};
|
||||
|
||||
const props: RightPaneFormProps = {
|
||||
@@ -39,7 +37,6 @@ export const TableQuerySelectPanel: FunctionComponent<TableQuerySelectPanelProps
|
||||
isExecuting: false,
|
||||
submitButtonText: "OK",
|
||||
onSubmit,
|
||||
expandConsole: () => explorer.expandConsole(),
|
||||
};
|
||||
|
||||
const handleClick = (isChecked: boolean, selectedColumn: string): void => {
|
||||
|
||||
@@ -11,7 +11,6 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
||||
}
|
||||
>
|
||||
<RightPaneForm
|
||||
expandConsole={[Function]}
|
||||
formError=""
|
||||
isExecuting={false}
|
||||
onSubmit={[Function]}
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
||||
<AddTableEntityPanel
|
||||
cassandraApiClient={Object {}}
|
||||
closePanel={[Function]}
|
||||
explorer={Object {}}
|
||||
queryTablesTab={Object {}}
|
||||
tableDataClient={TablesAPIDataClient {}}
|
||||
tableEntityListViewModel={
|
||||
Object {
|
||||
"headers": Array [],
|
||||
@@ -14,7 +13,6 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
||||
}
|
||||
>
|
||||
<PanelContainerComponent
|
||||
closePanel={[Function]}
|
||||
headerText="Add Table Row"
|
||||
isConsoleExpanded={false}
|
||||
isOpen={true}
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
||||
<EditTableEntityPanel
|
||||
cassandraApiClient={Object {}}
|
||||
closePanel={[Function]}
|
||||
explorer={Object {}}
|
||||
queryTablesTab={Object {}}
|
||||
tableDataClient={TablesAPIDataClient {}}
|
||||
tableEntityListViewModel={
|
||||
Object {
|
||||
"headers": Array [],
|
||||
@@ -15,7 +14,6 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
||||
}
|
||||
>
|
||||
<PanelContainerComponent
|
||||
closePanel={[Function]}
|
||||
headerText="Edit Table Entity"
|
||||
isConsoleExpanded={false}
|
||||
isOpen={true}
|
||||
|
||||
Reference in New Issue
Block a user