Support right clicking the database to start the importer task (#2233)

This commit is contained in:
Amir Ali Omidi
2018-08-15 14:11:54 -07:00
committed by GitHub
parent 44e9a97f09
commit 2c8e93cc96
5 changed files with 33 additions and 13 deletions

View File

@@ -11,7 +11,7 @@ import * as vscode from 'vscode';
export default abstract class ControllerBase implements vscode.Disposable {
protected _context: vscode.ExtensionContext;
public constructor(context: vscode.ExtensionContext) {
protected constructor(context: vscode.ExtensionContext) {
this._context = context;
}

View File

@@ -19,6 +19,9 @@ import { FlatFileProvider } from '../services/contracts';
*/
export default class MainController extends ControllerBase {
public constructor(context: vscode.ExtensionContext) {
super(context);
}
/**
*/
public deactivate(): void {
@@ -36,6 +39,6 @@ export default class MainController extends ControllerBase {
}
private initializeFlatFileProvider(provider: FlatFileProvider) {
sqlops.tasks.registerTask('flatFileImport.start', () => new FlatFileWizard(provider).start());
sqlops.tasks.registerTask('flatFileImport.start', (profile: sqlops.IConnectionProfile, ...args: any[]) => new FlatFileWizard(provider).start(profile, args));
}
}

View File

@@ -14,6 +14,7 @@ export interface ImportDataModel {
proseColumns: ColumnMetadata[];
proseDataPreview: string[][];
server: sqlops.connection.Connection;
serverId: string;
database: string;
table: string;
schema: string;

View File

@@ -28,8 +28,15 @@ export class FlatFileWizard {
this.provider = provider;
}
public async start() {
public async start(p: any, ...args: any[]) {
let model = <ImportDataModel>{};
let profile = <sqlops.IConnectionProfile>p.connectionProfile;
if (profile) {
model.serverId = profile.id;
model.database = profile.databaseName;
}
let pages: Map<number, ImportPage> = new Map<number, ImportPage>();
@@ -46,6 +53,7 @@ export class FlatFileWizard {
let page4 = sqlops.window.modelviewdialog.createWizardPage(localize('flatFileImport.page4Name', 'Summary'));
let fileConfigPage: FileConfigPage;
page1.registerContent(async (view) => {
fileConfigPage = new FileConfigPage(this, page1, model, view, this.provider);
pages.set(0, fileConfigPage);

View File

@@ -55,13 +55,14 @@ export class FileConfigPage extends ImportPage {
}
async onPageEnter(): Promise<boolean> {
await this.populateServerDropdown();
await this.populateDatabaseDropdown();
await this.populateSchemaDropdown();
return true;
let r1 = await this.populateServerDropdown();
let r2 = await this.populateDatabaseDropdown();
let r3 = await this.populateSchemaDropdown();
return r1 && r2 && r3;
}
async onPageLeave(): Promise<boolean> {
delete this.model.serverId;
return true;
}
@@ -109,11 +110,16 @@ export class FileConfigPage extends ImportPage {
let count = -1;
let idx = -1;
let values = cons.map(c => {
// Handle the code to remember what the user's choice was from before
count++;
if (idx === -1) {
if (this.model.server && c.connectionId === this.model.server.connectionId) {
idx = count;
} else if (this.model.serverId && c.connectionId === this.model.serverId) {
idx = count;
}
}
let db = c.options.databaseDisplayName;
@@ -136,12 +142,13 @@ export class FileConfigPage extends ImportPage {
};
});
if (idx > 0) {
if (idx >= 0) {
let tmp = values[0];
values[0] = values[idx];
values[idx] = tmp;
} else {
delete this.model.server;
delete this.model.serverId;
delete this.model.database;
delete this.model.schema;
}
@@ -192,13 +199,14 @@ export class FileConfigPage extends ImportPage {
if (this.model.database && db === this.model.database) {
idx = count;
}
return {
displayName: db,
name: db
};
});
if (idx > 0) {
if (idx >= 0) {
let tmp = values[0];
values[0] = values[idx];
values[idx] = tmp;
@@ -316,7 +324,7 @@ export class FileConfigPage extends ImportPage {
}
private async populateSchemaDropdown(): Promise<Boolean> {
private async populateSchemaDropdown(): Promise<boolean> {
this.schemaLoader.loading = true;
let connectionUri = await sqlops.connection.getUriForConnection(this.model.server.connectionId);
let queryProvider = sqlops.dataprotocol.getProvider<sqlops.QueryProvider>(this.model.server.providerName, sqlops.DataProviderType.QueryProvider);
@@ -342,7 +350,7 @@ export class FileConfigPage extends ImportPage {
};
});
if (idx > 0) {
if (idx >= 0) {
let tmp = values[0];
values[0] = values[idx];
values[idx] = tmp;