From b17b4ce880aa10d8f108cce2c18c8d7c9371f90a Mon Sep 17 00:00:00 2001 From: Amir Ali Omidi Date: Tue, 14 Aug 2018 13:18:07 -0700 Subject: [PATCH] Entry Point updates (#2222) * Entry point changes * Navigator validation changes. * Minor modifications to how the validator is called and setup --- extensions/import/src/wizard/api/importPage.ts | 11 ++++++++++- extensions/import/src/wizard/flatFileWizard.ts | 16 +++++++++------- .../import/src/wizard/pages/fileConfigPage.ts | 7 +++---- .../import/src/wizard/pages/modifyColumnsPage.ts | 10 ++++++++-- .../import/src/wizard/pages/prosePreviewPage.ts | 13 ++++--------- .../import/src/wizard/pages/summaryPage.ts | 10 +++++++--- 6 files changed, 41 insertions(+), 26 deletions(-) diff --git a/extensions/import/src/wizard/api/importPage.ts b/extensions/import/src/wizard/api/importPage.ts index 9eacc453b1..b44312c558 100644 --- a/extensions/import/src/wizard/api/importPage.ts +++ b/extensions/import/src/wizard/api/importPage.ts @@ -10,13 +10,16 @@ import { FlatFileProvider } from '../../services/contracts'; import { FlatFileWizard } from '../flatFileWizard'; export abstract class ImportPage { + + protected readonly wizardPage: sqlops.window.modelviewdialog.WizardPage; protected readonly instance: FlatFileWizard; protected readonly model: ImportDataModel; protected readonly view: sqlops.ModelView; protected readonly provider: FlatFileProvider; - protected constructor(instance: FlatFileWizard, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { + protected constructor(instance: FlatFileWizard, wizardPage: sqlops.window.modelviewdialog.WizardPage, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { this.instance = instance; + this.wizardPage = wizardPage; this.model = model; this.view = view; this.provider = provider; @@ -40,6 +43,12 @@ export abstract class ImportPage { */ public async abstract onPageLeave(): Promise; + /** + * Sets up a navigation validator. + * This will be called right before onPageEnter(). + */ + public abstract setupNavigationValidator(); + /** * Override this method to cleanup what you don't need cached in the page. * @returns {Promise} diff --git a/extensions/import/src/wizard/flatFileWizard.ts b/extensions/import/src/wizard/flatFileWizard.ts index 429cf15847..120fbf8096 100644 --- a/extensions/import/src/wizard/flatFileWizard.ts +++ b/extensions/import/src/wizard/flatFileWizard.ts @@ -47,22 +47,24 @@ export class FlatFileWizard { let fileConfigPage: FileConfigPage; page1.registerContent(async (view) => { - fileConfigPage = new FileConfigPage(this, model, view, this.provider); + fileConfigPage = new FileConfigPage(this, page1, model, view, this.provider); pages.set(0, fileConfigPage); - await fileConfigPage.start(); - fileConfigPage.onPageEnter(); + await fileConfigPage.start().then(() => { + fileConfigPage.setupNavigationValidator(); + fileConfigPage.onPageEnter(); + }); }); let prosePreviewPage: ProsePreviewPage; page2.registerContent(async (view) => { - prosePreviewPage = new ProsePreviewPage(this, model, view, this.provider); + prosePreviewPage = new ProsePreviewPage(this, page2, model, view, this.provider); pages.set(1, prosePreviewPage); await prosePreviewPage.start(); }); let modifyColumnsPage: ModifyColumnsPage; page3.registerContent(async (view) => { - modifyColumnsPage = new ModifyColumnsPage(this, model, view, this.provider); + modifyColumnsPage = new ModifyColumnsPage(this, page3, model, view, this.provider); pages.set(2, modifyColumnsPage); await modifyColumnsPage.start(); }); @@ -70,7 +72,7 @@ export class FlatFileWizard { let summaryPage: SummaryPage; page4.registerContent(async (view) => { - summaryPage = new SummaryPage(this, model, view, this.provider); + summaryPage = new SummaryPage(this, page4, model, view, this.provider); pages.set(3, summaryPage); await summaryPage.start(); }); @@ -93,6 +95,7 @@ export class FlatFileWizard { let page = pages.get(idx); if (page) { + page.setupNavigationValidator(); page.onPageEnter(); } }); @@ -122,7 +125,6 @@ export class FlatFileWizard { this.wizard.registerNavigationValidator(validator); } - } diff --git a/extensions/import/src/wizard/pages/fileConfigPage.ts b/extensions/import/src/wizard/pages/fileConfigPage.ts index aa973bfa99..14355f4ddd 100644 --- a/extensions/import/src/wizard/pages/fileConfigPage.ts +++ b/extensions/import/src/wizard/pages/fileConfigPage.ts @@ -29,8 +29,8 @@ export class FileConfigPage extends ImportPage { private tableNames: string[] = []; - public constructor(instance: FlatFileWizard, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { - super(instance, model, view, provider); + public constructor(instance: FlatFileWizard, wizardPage: sqlops.window.modelviewdialog.WizardPage, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { + super(instance, wizardPage, model, view, provider); } async start(): Promise { @@ -39,7 +39,6 @@ export class FileConfigPage extends ImportPage { let fileBrowserComponent = await this.createFileBrowser(); let databaseComponent = await this.createDatabaseDropdown(); let serverComponent = await this.createServerDropdown(); - this.setupNavigationValidator(); this.form = this.view.modelBuilder.formContainer() .withFormItems( @@ -73,7 +72,7 @@ export class FileConfigPage extends ImportPage { return true; } - private setupNavigationValidator() { + public setupNavigationValidator() { this.instance.registerNavigationValidator((info) => { if (this.schemaLoader.loading || this.databaseLoader.loading) { return false; diff --git a/extensions/import/src/wizard/pages/modifyColumnsPage.ts b/extensions/import/src/wizard/pages/modifyColumnsPage.ts index fbb2a33151..00608fc007 100644 --- a/extensions/import/src/wizard/pages/modifyColumnsPage.ts +++ b/extensions/import/src/wizard/pages/modifyColumnsPage.ts @@ -56,10 +56,11 @@ export class ModifyColumnsPage extends ImportPage { private text: sqlops.TextComponent; private form: sqlops.FormContainer; - public constructor(instance: FlatFileWizard, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { - super(instance, model, view, provider); + public constructor(instance: FlatFileWizard, wizardPage: sqlops.window.modelviewdialog.WizardPage, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { + super(instance, wizardPage, model, view, provider); } + private static convertMetadata(column: ColumnMetadata): any[] { return [column.columnName, column.dataType, false, column.nullable]; } @@ -121,6 +122,11 @@ export class ModifyColumnsPage extends ImportPage { return true; } + public setupNavigationValidator() { + this.instance.registerNavigationValidator((info) => { + return !this.loading.loading; + }); + } private async populateTable() { let data: any[][] = []; diff --git a/extensions/import/src/wizard/pages/prosePreviewPage.ts b/extensions/import/src/wizard/pages/prosePreviewPage.ts index 5a344a2bd6..dbedbe1775 100644 --- a/extensions/import/src/wizard/pages/prosePreviewPage.ts +++ b/extensions/import/src/wizard/pages/prosePreviewPage.ts @@ -20,9 +20,8 @@ export class ProsePreviewPage extends ImportPage { private form: sqlops.FormContainer; private refresh: sqlops.ButtonComponent; - - public constructor(instance: FlatFileWizard, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { - super(instance, model, view, provider); + public constructor(instance: FlatFileWizard, wizardPage: sqlops.window.modelviewdialog.WizardPage, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { + super(instance, wizardPage, model, view, provider); } async start(): Promise { @@ -37,7 +36,6 @@ export class ProsePreviewPage extends ImportPage { }); this.loading = this.view.modelBuilder.loadingComponent().component(); - this.setupNavigationValidator(); this.form = this.view.modelBuilder.formContainer().withFormItems([ { @@ -73,12 +71,9 @@ export class ProsePreviewPage extends ImportPage { return true; } - private setupNavigationValidator() { + public setupNavigationValidator() { this.instance.registerNavigationValidator((info) => { - if (this.loading.loading) { - return false; - } - return true; + return !this.loading.loading; }); } diff --git a/extensions/import/src/wizard/pages/summaryPage.ts b/extensions/import/src/wizard/pages/summaryPage.ts index e715dc4171..7b6e740faa 100644 --- a/extensions/import/src/wizard/pages/summaryPage.ts +++ b/extensions/import/src/wizard/pages/summaryPage.ts @@ -22,8 +22,8 @@ export class SummaryPage extends ImportPage { private loading: sqlops.LoadingComponent; private form: sqlops.FormContainer; - public constructor(instance: FlatFileWizard, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { - super(instance, model, view, provider); + public constructor(instance: FlatFileWizard, wizardPage: sqlops.window.modelviewdialog.WizardPage, model: ImportDataModel, view: sqlops.ModelView, provider: FlatFileProvider) { + super(instance, wizardPage, model, view, provider); } async start(): Promise { @@ -63,7 +63,11 @@ export class SummaryPage extends ImportPage { return true; } - + public setupNavigationValidator() { + this.instance.registerNavigationValidator((info) => { + return !this.loading.loading; + }); + } private populateTable() { this.table.updateProperties({ data: [