Merge remote-tracking branch 'origin/devel' into devel

This commit is contained in:
Serge Rider
2020-05-28 15:35:35 +03:00
7 changed files with 52 additions and 3 deletions
+3 -1
View File
@@ -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"
}
}
+3 -1
View File
@@ -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;
}
`;
+15
View File
@@ -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));
},