mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Still load other projects even if one doesn't exist (#14585)
* still load other projects if one doesn't exist * show all errors at the end * update error message * remove project(s)
This commit is contained in:
@@ -20,6 +20,7 @@ export const EnterWorkspaceConfirmation = localize('dataworkspace.enterWorkspace
|
|||||||
export const WorkspaceContainsNotAddedProjects = localize('dataworkspace.workspaceContainsNotAddedProjects', "The current workspace contains one or more projects that have not been added to the workspace. Use the 'Open existing' dialog to add projects to the projects pane.");
|
export const WorkspaceContainsNotAddedProjects = localize('dataworkspace.workspaceContainsNotAddedProjects', "The current workspace contains one or more projects that have not been added to the workspace. Use the 'Open existing' dialog to add projects to the projects pane.");
|
||||||
export const LaunchOpenExisitingDialog = localize('dataworkspace.launchOpenExistingDialog', "Launch Open existing dialog");
|
export const LaunchOpenExisitingDialog = localize('dataworkspace.launchOpenExistingDialog', "Launch Open existing dialog");
|
||||||
export const DoNotShowAgain = localize('dataworkspace.doNotShowAgain', "Do not show again");
|
export const DoNotShowAgain = localize('dataworkspace.doNotShowAgain', "Do not show again");
|
||||||
|
export const ProjectsFailedToLoad = localize('dataworkspace.projectsFailedToLoad', "Some projects failed to load. Please open console for more information");
|
||||||
|
|
||||||
// config settings
|
// config settings
|
||||||
export const projectsConfigurationKey = 'projects';
|
export const projectsConfigurationKey = 'projects';
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { IWorkspaceService } from './interfaces';
|
import { IWorkspaceService } from './interfaces';
|
||||||
import { UnknownProjectsError } from './constants';
|
import { ProjectsFailedToLoad, UnknownProjectsError } from './constants';
|
||||||
import { WorkspaceTreeItem } from 'dataworkspace';
|
import { WorkspaceTreeItem } from 'dataworkspace';
|
||||||
import { TelemetryReporter } from './telemetry';
|
import { TelemetryReporter } from './telemetry';
|
||||||
|
|
||||||
@@ -45,28 +45,38 @@ export class WorkspaceTreeDataProvider implements vscode.TreeDataProvider<Worksp
|
|||||||
|
|
||||||
const typeMetric: Record<string, number> = {};
|
const typeMetric: Record<string, number> = {};
|
||||||
|
|
||||||
|
let errorCount = 0;
|
||||||
for (const project of projects) {
|
for (const project of projects) {
|
||||||
const projectProvider = await this._workspaceService.getProjectProvider(project);
|
try {
|
||||||
|
const projectProvider = await this._workspaceService.getProjectProvider(project);
|
||||||
|
|
||||||
this.incrementProjectTypeMetric(typeMetric, project);
|
this.incrementProjectTypeMetric(typeMetric, project);
|
||||||
|
|
||||||
if (projectProvider === undefined) {
|
if (projectProvider === undefined) {
|
||||||
unknownProjects.push(project.path);
|
unknownProjects.push(project.path);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const treeDataProvider = await projectProvider.getProjectTreeDataProvider(project);
|
const treeDataProvider = await projectProvider.getProjectTreeDataProvider(project);
|
||||||
if (treeDataProvider.onDidChangeTreeData) {
|
if (treeDataProvider.onDidChangeTreeData) {
|
||||||
treeDataProvider.onDidChangeTreeData((e: any) => {
|
treeDataProvider.onDidChangeTreeData((e: any) => {
|
||||||
this._onDidChangeTreeData?.fire(e);
|
this._onDidChangeTreeData?.fire(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const children = await treeDataProvider.getChildren(element);
|
||||||
|
children?.forEach(child => {
|
||||||
|
treeItems.push({
|
||||||
|
treeDataProvider: treeDataProvider,
|
||||||
|
element: child
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
} catch (e) {
|
||||||
|
errorCount++;
|
||||||
|
console.error(e.message);
|
||||||
}
|
}
|
||||||
const children = await treeDataProvider.getChildren(element);
|
}
|
||||||
children?.forEach(child => {
|
|
||||||
treeItems.push({
|
if (errorCount > 0) {
|
||||||
treeDataProvider: treeDataProvider,
|
vscode.window.showErrorMessage(ProjectsFailedToLoad);
|
||||||
element: child
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TelemetryReporter.sendMetricsEvent(typeMetric, 'OpenWorkspaceProjectTypes');
|
TelemetryReporter.sendMetricsEvent(typeMetric, 'OpenWorkspaceProjectTypes');
|
||||||
|
|||||||
Reference in New Issue
Block a user