Entry Point updates (#2222)

* Entry point changes

* Navigator validation changes.

* Minor modifications to how the validator is called and setup
This commit is contained in:
Amir Ali Omidi
2018-08-14 13:18:07 -07:00
committed by GitHub
parent 2304c32453
commit b17b4ce880
6 changed files with 41 additions and 26 deletions

View File

@@ -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<boolean>;
/**
* 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<boolean>}

View File

@@ -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);
}
}

View File

@@ -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<boolean> {
@@ -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;

View File

@@ -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[][] = [];

View File

@@ -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<boolean> {
@@ -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;
});
}

View File

@@ -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<boolean> {
@@ -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: [