mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
Merge remote-tracking branch 'origin/devel' into devel
This commit is contained in:
@@ -53,6 +53,8 @@
|
||||
"app_shared_settingsMenu_config": "Configuration",
|
||||
"app_shared_settingsMenu_theme": "Theme",
|
||||
"app_shared_settingsMenu_lang": "Language",
|
||||
"app_navigationTree_openNodeTab": "Open",
|
||||
"app_navigationTree_refreshNode": "Refresh",
|
||||
"core_eventsLog_dbeaverErrorDetails": "Error details",
|
||||
"app_shared_inlineEditor_dialog_title": "Edit mode",
|
||||
"app_shared_inlineEditor_dialog_apply": "Apply",
|
||||
@@ -62,4 +64,4 @@
|
||||
"app_log_view_entry_timestamp": "Timestamp",
|
||||
"app_log_view_entry_message": "Message",
|
||||
"app_log_view_entry_details": "Details"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
"app_shared_settingsMenu_config": "Настройки",
|
||||
"app_shared_settingsMenu_theme": "Тема",
|
||||
"app_shared_settingsMenu_lang": "Язык",
|
||||
"app_navigationTree_openNodeTab": "Открыть",
|
||||
"app_navigationTree_refreshNode": "Обновить",
|
||||
"core_eventsLog_dbeaverErrorDetails": "Детали ошибки",
|
||||
"app_shared_inlineEditor_dialog_title": "Редактирование",
|
||||
"app_shared_inlineEditor_dialog_apply": "Применить",
|
||||
@@ -62,4 +64,4 @@
|
||||
"app_log_view_entry_timestamp": "Время",
|
||||
"app_log_view_entry_message": "Сообщение",
|
||||
"app_log_view_entry_details": "Детали"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,12 +44,26 @@ export class NavigationTreeContextMenuService {
|
||||
return context.contextType === NavigationTreeContextMenuService.nodeContextType;
|
||||
},
|
||||
order: 1,
|
||||
title: 'Open',
|
||||
title: 'app_navigationTree_openNodeTab',
|
||||
onClick: (context: IMenuContext<NodeWithParent>) => {
|
||||
const node = context.data;
|
||||
this.nodesManagerService.navToNode(node.id);
|
||||
},
|
||||
};
|
||||
this.contextMenuService.addMenuItem<NodeWithParent>(this.contextMenuService.getRootMenuToken(), openNodeTab);
|
||||
|
||||
const refreshNode: IContextMenuItem<NodeWithParent> = {
|
||||
id: 'refreshNode',
|
||||
isPresent(context) {
|
||||
return context.contextType === NavigationTreeContextMenuService.nodeContextType;
|
||||
},
|
||||
order: Number.MAX_SAFE_INTEGER,
|
||||
title: 'app_navigationTree_refreshNode',
|
||||
onClick: (context: IMenuContext<NodeWithParent>) => {
|
||||
const node = context.data;
|
||||
this.nodesManagerService.refreshNode(node.id);
|
||||
},
|
||||
};
|
||||
this.contextMenuService.addMenuItem<NodeWithParent>(this.contextMenuService.getRootMenuToken(), refreshNode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +80,12 @@ export class NodesManagerService {
|
||||
});
|
||||
}
|
||||
|
||||
async refreshNode(nodeId: string) {
|
||||
await this.purgeServerCache(nodeId);
|
||||
this.nodesStore.removeNode(nodeId);
|
||||
await this.updateNodeInfo(nodeId);
|
||||
}
|
||||
|
||||
getDatabaseObjectInfo(nodeId: string): DatabaseObjectInfoWithId | undefined {
|
||||
return this.nodesStore.getDatabaseObjectInfo(nodeId);
|
||||
}
|
||||
@@ -123,6 +129,12 @@ export class NodesManagerService {
|
||||
return info;
|
||||
}
|
||||
|
||||
async purgeServerCache(nodeId: string) {
|
||||
await this.graphQLService.gql.navRefreshNode({
|
||||
nodePath: nodeId,
|
||||
});
|
||||
}
|
||||
|
||||
async updateChildren(parentId: string) {
|
||||
const { navNodeChildren } = await this.graphQLService.gql.navNodeChildren({
|
||||
parentPath: parentId,
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
query navRefreshNode($nodePath: ID!) {
|
||||
navRefreshNode(nodePath: $nodePath)
|
||||
}
|
||||
@@ -29,5 +29,6 @@ export const dialogStyles = css`
|
||||
max-height: calc(100vh);
|
||||
transform: translate(-50%, -50%);
|
||||
z-index: 999;
|
||||
outline: none;
|
||||
}
|
||||
`;
|
||||
|
||||
@@ -771,6 +771,13 @@ export type NavNodeInfoQuery = { navNodeInfo: (
|
||||
& { object?: Maybe<Pick<DatabaseObjectInfo, 'features'>> }
|
||||
); };
|
||||
|
||||
export type NavRefreshNodeQueryVariables = {
|
||||
nodePath: Scalars['ID'];
|
||||
};
|
||||
|
||||
|
||||
export type NavRefreshNodeQuery = Pick<Query, 'navRefreshNode'>;
|
||||
|
||||
export type QueryChildrenDatabaseObjectInfoQueryVariables = {
|
||||
nodePath: Scalars['ID'];
|
||||
filter?: Maybe<ObjectPropertyFilter>;
|
||||
@@ -1272,6 +1279,11 @@ export const NavNodeInfoDocument = `
|
||||
}
|
||||
}
|
||||
`;
|
||||
export const NavRefreshNodeDocument = `
|
||||
query navRefreshNode($nodePath: ID!) {
|
||||
navRefreshNode(nodePath: $nodePath)
|
||||
}
|
||||
`;
|
||||
export const QueryChildrenDatabaseObjectInfoDocument = `
|
||||
query queryChildrenDatabaseObjectInfo($nodePath: ID!, $filter: ObjectPropertyFilter) {
|
||||
childrenDatabaseObjectInfo: navNodeChildren(parentPath: $nodePath) {
|
||||
@@ -1808,6 +1820,9 @@ export function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper =
|
||||
navNodeInfo(variables: NavNodeInfoQueryVariables): Promise<NavNodeInfoQuery> {
|
||||
return withWrapper(() => client.request<NavNodeInfoQuery>(NavNodeInfoDocument, variables));
|
||||
},
|
||||
navRefreshNode(variables: NavRefreshNodeQueryVariables): Promise<NavRefreshNodeQuery> {
|
||||
return withWrapper(() => client.request<NavRefreshNodeQuery>(NavRefreshNodeDocument, variables));
|
||||
},
|
||||
queryChildrenDatabaseObjectInfo(variables: QueryChildrenDatabaseObjectInfoQueryVariables): Promise<QueryChildrenDatabaseObjectInfoQuery> {
|
||||
return withWrapper(() => client.request<QueryChildrenDatabaseObjectInfoQuery>(QueryChildrenDatabaseObjectInfoDocument, variables));
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user