diff --git a/webapp/packages/core-blocks/src/Tree/TreeNode/ITreeNodeState.ts b/webapp/packages/core-blocks/src/Tree/TreeNode/ITreeNodeState.ts index 0fc859df39..712f03f81d 100644 --- a/webapp/packages/core-blocks/src/Tree/TreeNode/ITreeNodeState.ts +++ b/webapp/packages/core-blocks/src/Tree/TreeNode/ITreeNodeState.ts @@ -11,6 +11,7 @@ export interface ITreeNodeState { disabled?: boolean; loading?: boolean; selected?: boolean; + /** It is true when the node is neither selected nor unselected, used to indicate a mixed or partial selection in a group of sub-options */ indeterminateSelected?: boolean; externalExpanded?: boolean; expanded?: boolean; diff --git a/webapp/packages/plugin-data-viewer-result-set-grouping/src/DVResultSetGroupingPresentation.tsx b/webapp/packages/plugin-data-viewer-result-set-grouping/src/DVResultSetGroupingPresentation.tsx index 9ab3d72630..62d9456b3d 100755 --- a/webapp/packages/plugin-data-viewer-result-set-grouping/src/DVResultSetGroupingPresentation.tsx +++ b/webapp/packages/plugin-data-viewer-result-set-grouping/src/DVResultSetGroupingPresentation.tsx @@ -15,11 +15,11 @@ import { CaptureViewContext, useDataContext } from '@cloudbeaver/core-view'; import { DataPresentationComponent, IDatabaseResultSet, TableViewerLoader } from '@cloudbeaver/plugin-data-viewer'; import { DATA_CONTEXT_DV_DDM_RS_GROUPING } from './DataContext/DATA_CONTEXT_DV_DDM_RS_GROUPING'; +import { DEFAULT_GROUPING_QUERY_OPERATION } from './DEFAULT_GROUPING_QUERY_OPERATION'; import type { IGroupingQueryState } from './IGroupingQueryState'; import { useGroupingData } from './useGroupingData'; import { useGroupingDataModel } from './useGroupingDataModel'; import { useGroupingDnDColumns } from './useGroupingDnDColumns'; -import { DEFAULT_GROUPING_QUERY_OPERATION } from './DEFAULT_GROUPING_QUERY_OPERATION'; const styles = css` drop-area { diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts index 44be18e79c..84ce052e64 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts @@ -16,12 +16,15 @@ export interface IRequestEventData; } +/** Represents an interface for interacting with a database. It is used for managing and requesting data. */ export interface IDatabaseDataModel { readonly id: string; readonly name: string | null; readonly source: IDatabaseDataSource; + /** Holds metadata about a data request. */ readonly requestInfo: IRequestInfo; readonly supportedDataFormats: ResultDataFormat[]; + /** Represents the value by which the number of loaded rows will be increased when loading the next data portion */ readonly countGain: number; readonly onOptionsChange: IExecutor; diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataOptions.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataOptions.ts index 50f56e43e0..95a970d28d 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataOptions.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataOptions.ts @@ -12,7 +12,9 @@ export interface IDatabaseDataOptions { connectionKey: IConnectionInfoParams; schema?: string; catalog?: string; + /** A raw string representation of the query filter conditions ("id=4") */ whereFilter: string; + /** A complex object that can represent filters and sorting options of the result set */ constraints: SqlDataFilterConstraint[]; readLogs?: boolean; } diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataSource.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataSource.ts index 00d33aa2a8..8a081b7f7c 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataSource.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataSource.ts @@ -17,6 +17,7 @@ export interface IRequestInfo { readonly originalQuery: string; readonly requestDuration: number; readonly requestMessage: string; + /** A string representation of the filters constraints applied to the data request. Also returns as it is in case of whereFilter */ readonly requestFilter: string; readonly source: string | null; } @@ -30,11 +31,13 @@ export interface IDatabaseDataSource; readonly results: TResult[]; readonly offset: number; readonly count: number; + /** Options of the previous request */ readonly prevOptions: Readonly | null; readonly options: TOptions | null; readonly requestInfo: IRequestInfo; @@ -80,6 +83,8 @@ export interface IDatabaseDataSource this; retry: () => Promise; + /** Allows to perform an asynchronous action on the data source, this action will wait previous action to finish and save or load requests. + * The data source will have a loading and disabled state while performing an action */ runTask: (task: () => Promise) => Promise; requestData: () => Promise | void; refreshData: () => Promise | void; diff --git a/webapp/packages/plugin-data-viewer/src/TableViewer/TableViewer.tsx b/webapp/packages/plugin-data-viewer/src/TableViewer/TableViewer.tsx index d16c21b5fd..066b65ce0f 100644 --- a/webapp/packages/plugin-data-viewer/src/TableViewer/TableViewer.tsx +++ b/webapp/packages/plugin-data-viewer/src/TableViewer/TableViewer.tsx @@ -99,6 +99,7 @@ interface Props { resultIndex: number | undefined; presentationId: string | undefined; valuePresentationId: string | null | undefined; + /** Display data in simple mode, some features will be hidden or disabled */ simple?: boolean; context?: IDataContext; className?: string; diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx index ce6db591ae..efa8684aa5 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx @@ -43,9 +43,12 @@ import { IElementsTreeOptions, useElementsTree } from './useElementsTree'; import { useElementsTreeFolderExplorer } from './useElementsTreeFolderExplorer'; export interface ElementsTreeProps extends IElementsTreeOptions, React.PropsWithChildren { + /** Specifies the root path for the tree. ROOT_NODE_PATH will be used if not defined */ root?: string; selectionTree?: boolean; + /** Specifies a custom control component for navigation tree */ control?: NavTreeControlComponent; + /** A placeholder component to be displayed when the elements tree is empty */ emptyPlaceholder?: React.FC; className?: string; settingsElements?: PlaceholderElement[]; diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts index ab8d236078..18e63c8e9f 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts @@ -71,6 +71,7 @@ export interface IElementsTreeOptions { renderers?: IElementsTreeCustomRenderer[]; nodeInfoTransformers?: IElementsTreeCustomNodeInfo[]; expandStateGetters?: IElementsTreeNodeExpandInfoGetter[]; + /** Allows to pass external state. It can be used to manipulate a tree state from the outside or to store it in an external state */ localState?: MetadataMap; getChildren: (id: string) => string[] | undefined; loadChildren: (id: string, manual: boolean) => Promise;