From 67c99c3c80796b17a35535e34a90e1b0d19f4bae Mon Sep 17 00:00:00 2001 From: Predrag Klepic Date: Tue, 11 Jul 2023 14:38:37 +0200 Subject: [PATCH] Styling and Items in SampleContainer openable --- src/Contracts/ViewModels.ts | 2 +- src/Explorer/QueryCopilot/CopilotCarousel.tsx | 2 +- src/Explorer/Tree/Collection.ts | 10 ++--- src/Explorer/Tree/ResourceTokenCollection.ts | 11 +++-- src/Explorer/Tree/SampleDataTree.tsx | 40 +++++++++++++------ 5 files changed, 41 insertions(+), 24 deletions(-) diff --git a/src/Contracts/ViewModels.ts b/src/Contracts/ViewModels.ts index c9bb351bc..4b09939e3 100644 --- a/src/Contracts/ViewModels.ts +++ b/src/Contracts/ViewModels.ts @@ -115,7 +115,7 @@ export interface CollectionBase extends TreeNode { isCollectionExpanded: ko.Observable; isSampleCollection?: boolean; - onDocumentDBDocumentsClick(): void; + onDocumentDBDocumentsClick(isQueryCopilotCollection?: boolean, sampleCollection?: CollectionBase): void; onNewQueryClick(source: any, event?: MouseEvent, queryText?: string): void; expandCollection(): void; collapseCollection(): void; diff --git a/src/Explorer/QueryCopilot/CopilotCarousel.tsx b/src/Explorer/QueryCopilot/CopilotCarousel.tsx index 990f79c36..95f88fa74 100644 --- a/src/Explorer/QueryCopilot/CopilotCarousel.tsx +++ b/src/Explorer/QueryCopilot/CopilotCarousel.tsx @@ -95,7 +95,7 @@ export const QueryCopilotCarousel: React.FC = ({ offerThroughput: undefined, indexingPolicy: AllPropertiesIndexed, partitionKey: { - paths: ["/categoryId"], + paths: ["/objectId"], kind: "Hash", version: 2, }, diff --git a/src/Explorer/Tree/Collection.ts b/src/Explorer/Tree/Collection.ts index d09ca57f5..6ca13e3c3 100644 --- a/src/Explorer/Tree/Collection.ts +++ b/src/Explorer/Tree/Collection.ts @@ -3,6 +3,9 @@ import { useNotebook } from "Explorer/Notebook/useNotebook"; import * as ko from "knockout"; import * as _ from "underscore"; import * as Constants from "../../Common/Constants"; +import { getErrorMessage, getErrorStack } from "../../Common/ErrorHandlingUtils"; +import * as Logger from "../../Common/Logger"; +import { fetchPortalNotifications } from "../../Common/PortalNotifications"; import { bulkCreateDocument } from "../../Common/dataAccess/bulkCreateDocument"; import { createDocument } from "../../Common/dataAccess/createDocument"; import { getCollectionUsageSizeInKB } from "../../Common/dataAccess/getCollectionDataUsageSize"; @@ -10,19 +13,16 @@ import { readCollectionOffer } from "../../Common/dataAccess/readCollectionOffer import { readStoredProcedures } from "../../Common/dataAccess/readStoredProcedures"; import { readTriggers } from "../../Common/dataAccess/readTriggers"; import { readUserDefinedFunctions } from "../../Common/dataAccess/readUserDefinedFunctions"; -import { getErrorMessage, getErrorStack } from "../../Common/ErrorHandlingUtils"; -import * as Logger from "../../Common/Logger"; -import { fetchPortalNotifications } from "../../Common/PortalNotifications"; import * as DataModels from "../../Contracts/DataModels"; import * as ViewModels from "../../Contracts/ViewModels"; import { UploadDetailsRecord } from "../../Contracts/ViewModels"; -import { useTabs } from "../../hooks/useTabs"; import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants"; import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor"; import { userContext } from "../../UserContext"; -import { SqlTriggerResource } from "../../Utils/arm/generatedClients/cosmos/types"; import { isServerlessAccount } from "../../Utils/CapabilityUtils"; import { logConsoleInfo } from "../../Utils/NotificationConsoleUtils"; +import { SqlTriggerResource } from "../../Utils/arm/generatedClients/cosmos/types"; +import { useTabs } from "../../hooks/useTabs"; import Explorer from "../Explorer"; import { useCommandBar } from "../Menus/CommandBar/CommandBarComponentAdapter"; import { CassandraAPIDataClient, CassandraTableKey, CassandraTableKeys } from "../Tables/TableDataClient"; diff --git a/src/Explorer/Tree/ResourceTokenCollection.ts b/src/Explorer/Tree/ResourceTokenCollection.ts index a09a7c214..a57fda2fd 100644 --- a/src/Explorer/Tree/ResourceTokenCollection.ts +++ b/src/Explorer/Tree/ResourceTokenCollection.ts @@ -2,10 +2,10 @@ import * as ko from "knockout"; import * as Constants from "../../Common/Constants"; import * as DataModels from "../../Contracts/DataModels"; import * as ViewModels from "../../Contracts/ViewModels"; -import { useTabs } from "../../hooks/useTabs"; import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants"; import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor"; import { userContext } from "../../UserContext"; +import { useTabs } from "../../hooks/useTabs"; import Explorer from "../Explorer"; import DocumentsTab from "../Tabs/DocumentsTab"; import { NewQueryTab } from "../Tabs/QueryTab/QueryTab"; @@ -105,7 +105,9 @@ export default class ResourceTokenCollection implements ViewModels.CollectionBas ); } - public onDocumentDBDocumentsClick() { + public onDocumentDBDocumentsClick(isQueryCopilotCollection?: boolean, sampleCollection?: ViewModels.CollectionBase) { + const queryCopilotPartitionKey: DataModels.PartitionKey = sampleCollection?.partitionKey; + useSelectedNode.getState().setSelectedNode(this); this.selectedSubnodeKind(ViewModels.CollectionTabKind.Documents); TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, { @@ -138,8 +140,9 @@ export default class ResourceTokenCollection implements ViewModels.CollectionBas }); documentsTab = new DocumentsTab({ - partitionKey: this.partitionKey, - resourceTokenPartitionKey: userContext.parsedResourceToken.partitionKey, + partitionKey: isQueryCopilotCollection ? queryCopilotPartitionKey : this.partitionKey, + resourceTokenPartitionKey: isQueryCopilotCollection ? queryCopilotPartitionKey.paths[0] : + userContext.parsedResourceToken.partitionKey, documentIds: ko.observableArray([]), tabKind: ViewModels.CollectionTabKind.Documents, title: "Items", diff --git a/src/Explorer/Tree/SampleDataTree.tsx b/src/Explorer/Tree/SampleDataTree.tsx index f343184fb..0bbd1cbb4 100644 --- a/src/Explorer/Tree/SampleDataTree.tsx +++ b/src/Explorer/Tree/SampleDataTree.tsx @@ -1,8 +1,7 @@ -import { useCommandBar } from "Explorer/Menus/CommandBar/CommandBarComponentAdapter"; -import TabsBase from "Explorer/Tabs/TabsBase"; +import { mostRecentActivity } from "Explorer/MostRecentActivity/MostRecentActivity"; import { useSelectedNode } from "Explorer/useSelectedNode"; +import { userContext } from "UserContext"; import { getItemName } from "Utils/APITypeUtils"; -import { useTabs } from "hooks/useTabs"; import React, { useEffect, useState } from "react"; import CosmosDBIcon from "../../../images/Azure-Cosmos-DB.svg"; import CollectionIcon from "../../../images/tree-collection.svg"; @@ -31,16 +30,16 @@ export const SampleDataTree = ({ isExpanded: false, className: "sampleCollectionHeader", contextMenu: ResourceTreeContextMenuButtonFactory.createSampleCollectionContextMenuButton(), - onClick: () => { - // Rewritten version of expandCollapseCollection - useSelectedNode.getState().setSelectedNode(sampleDataResourceTokenCollection); - useCommandBar.getState().setContextButtons([]); - useTabs().refreshActiveTab( - (tab: TabsBase) => - tab.collection?.id() === sampleDataResourceTokenCollection.id() && - tab.collection.databaseId === sampleDataResourceTokenCollection.databaseId - ); - }, + // onClick: () => { + // // Rewritten version of expandCollapseCollection + // useSelectedNode.getState().setSelectedNode(sampleDataResourceTokenCollection); + // useCommandBar.getState().setContextButtons([]); + // useTabs().refreshActiveTab( + // (tab: TabsBase) => + // tab.collection?.id() === sampleDataResourceTokenCollection.id() && + // tab.collection.databaseId === sampleDataResourceTokenCollection.databaseId + // ); + // }, isSelected: () => useSelectedNode .getState() @@ -54,6 +53,21 @@ export const SampleDataTree = ({ label: getItemName(), id: sampleDataResourceTokenCollection.isSampleCollection ? "sampleItems" : "", contextMenu: ResourceTreeContextMenuButtonFactory.createSampleCollectionContextMenuButton(), + onClick: () => { + sampleDataResourceTokenCollection.onDocumentDBDocumentsClick(true, sampleDataResourceTokenCollection); + mostRecentActivity.collectionWasOpened( + userContext.databaseAccount?.id, + sampleDataResourceTokenCollection + ); + }, + isSelected: () => + useSelectedNode + .getState() + .isDataNodeSelected( + sampleDataResourceTokenCollection.databaseId, + sampleDataResourceTokenCollection.id(), + [ViewModels.CollectionTabKind.Documents] + ), }, ], },