mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Support right clicking the database to start the importer task (#2233)
This commit is contained in:
@@ -11,7 +11,7 @@ import * as vscode from 'vscode';
|
|||||||
export default abstract class ControllerBase implements vscode.Disposable {
|
export default abstract class ControllerBase implements vscode.Disposable {
|
||||||
protected _context: vscode.ExtensionContext;
|
protected _context: vscode.ExtensionContext;
|
||||||
|
|
||||||
public constructor(context: vscode.ExtensionContext) {
|
protected constructor(context: vscode.ExtensionContext) {
|
||||||
this._context = context;
|
this._context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ import { FlatFileProvider } from '../services/contracts';
|
|||||||
*/
|
*/
|
||||||
export default class MainController extends ControllerBase {
|
export default class MainController extends ControllerBase {
|
||||||
|
|
||||||
|
public constructor(context: vscode.ExtensionContext) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public deactivate(): void {
|
public deactivate(): void {
|
||||||
@@ -36,6 +39,6 @@ export default class MainController extends ControllerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private initializeFlatFileProvider(provider: FlatFileProvider) {
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ export interface ImportDataModel {
|
|||||||
proseColumns: ColumnMetadata[];
|
proseColumns: ColumnMetadata[];
|
||||||
proseDataPreview: string[][];
|
proseDataPreview: string[][];
|
||||||
server: sqlops.connection.Connection;
|
server: sqlops.connection.Connection;
|
||||||
|
serverId: string;
|
||||||
database: string;
|
database: string;
|
||||||
table: string;
|
table: string;
|
||||||
schema: string;
|
schema: string;
|
||||||
|
|||||||
@@ -28,8 +28,15 @@ export class FlatFileWizard {
|
|||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async start() {
|
public async start(p: any, ...args: any[]) {
|
||||||
let model = <ImportDataModel>{};
|
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>();
|
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 page4 = sqlops.window.modelviewdialog.createWizardPage(localize('flatFileImport.page4Name', 'Summary'));
|
||||||
|
|
||||||
let fileConfigPage: FileConfigPage;
|
let fileConfigPage: FileConfigPage;
|
||||||
|
|
||||||
page1.registerContent(async (view) => {
|
page1.registerContent(async (view) => {
|
||||||
fileConfigPage = new FileConfigPage(this, page1, model, view, this.provider);
|
fileConfigPage = new FileConfigPage(this, page1, model, view, this.provider);
|
||||||
pages.set(0, fileConfigPage);
|
pages.set(0, fileConfigPage);
|
||||||
|
|||||||
@@ -55,13 +55,14 @@ export class FileConfigPage extends ImportPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async onPageEnter(): Promise<boolean> {
|
async onPageEnter(): Promise<boolean> {
|
||||||
await this.populateServerDropdown();
|
let r1 = await this.populateServerDropdown();
|
||||||
await this.populateDatabaseDropdown();
|
let r2 = await this.populateDatabaseDropdown();
|
||||||
await this.populateSchemaDropdown();
|
let r3 = await this.populateSchemaDropdown();
|
||||||
return true;
|
return r1 && r2 && r3;
|
||||||
}
|
}
|
||||||
|
|
||||||
async onPageLeave(): Promise<boolean> {
|
async onPageLeave(): Promise<boolean> {
|
||||||
|
delete this.model.serverId;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,11 +110,16 @@ export class FileConfigPage extends ImportPage {
|
|||||||
let count = -1;
|
let count = -1;
|
||||||
let idx = -1;
|
let idx = -1;
|
||||||
|
|
||||||
|
|
||||||
let values = cons.map(c => {
|
let values = cons.map(c => {
|
||||||
// Handle the code to remember what the user's choice was from before
|
// Handle the code to remember what the user's choice was from before
|
||||||
count++;
|
count++;
|
||||||
|
if (idx === -1) {
|
||||||
if (this.model.server && c.connectionId === this.model.server.connectionId) {
|
if (this.model.server && c.connectionId === this.model.server.connectionId) {
|
||||||
idx = count;
|
idx = count;
|
||||||
|
} else if (this.model.serverId && c.connectionId === this.model.serverId) {
|
||||||
|
idx = count;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let db = c.options.databaseDisplayName;
|
let db = c.options.databaseDisplayName;
|
||||||
@@ -136,12 +142,13 @@ export class FileConfigPage extends ImportPage {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
if (idx > 0) {
|
if (idx >= 0) {
|
||||||
let tmp = values[0];
|
let tmp = values[0];
|
||||||
values[0] = values[idx];
|
values[0] = values[idx];
|
||||||
values[idx] = tmp;
|
values[idx] = tmp;
|
||||||
} else {
|
} else {
|
||||||
delete this.model.server;
|
delete this.model.server;
|
||||||
|
delete this.model.serverId;
|
||||||
delete this.model.database;
|
delete this.model.database;
|
||||||
delete this.model.schema;
|
delete this.model.schema;
|
||||||
}
|
}
|
||||||
@@ -192,13 +199,14 @@ export class FileConfigPage extends ImportPage {
|
|||||||
if (this.model.database && db === this.model.database) {
|
if (this.model.database && db === this.model.database) {
|
||||||
idx = count;
|
idx = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
displayName: db,
|
displayName: db,
|
||||||
name: db
|
name: db
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
if (idx > 0) {
|
if (idx >= 0) {
|
||||||
let tmp = values[0];
|
let tmp = values[0];
|
||||||
values[0] = values[idx];
|
values[0] = values[idx];
|
||||||
values[idx] = tmp;
|
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;
|
this.schemaLoader.loading = true;
|
||||||
let connectionUri = await sqlops.connection.getUriForConnection(this.model.server.connectionId);
|
let connectionUri = await sqlops.connection.getUriForConnection(this.model.server.connectionId);
|
||||||
let queryProvider = sqlops.dataprotocol.getProvider<sqlops.QueryProvider>(this.model.server.providerName, sqlops.DataProviderType.QueryProvider);
|
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];
|
let tmp = values[0];
|
||||||
values[0] = values[idx];
|
values[0] = values[idx];
|
||||||
values[idx] = tmp;
|
values[idx] = tmp;
|
||||||
|
|||||||
Reference in New Issue
Block a user