From 639efbcfad1c427f6cc042c835197925360c7f2c Mon Sep 17 00:00:00 2001 From: Aditya Bist Date: Wed, 19 Jun 2019 12:32:14 -0700 Subject: [PATCH] Agent: Added loading component to schedule list (#5992) * added loading component to schedule list * changed thenable to await * throw error --- extensions/agent/src/data/pickScheduleData.ts | 13 +++++++--- .../agent/src/dialogs/pickScheduleDialog.ts | 26 +++++++++++-------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/extensions/agent/src/data/pickScheduleData.ts b/extensions/agent/src/data/pickScheduleData.ts index cc69316279..3f51b80296 100644 --- a/extensions/agent/src/data/pickScheduleData.ts +++ b/extensions/agent/src/data/pickScheduleData.ts @@ -20,11 +20,16 @@ export class PickScheduleData implements IAgentDialogData { this.jobName = jobName; } - public async initialize() { + public async initialize(): Promise { let agentService = await AgentUtils.getAgentService(); - let result = await agentService.getJobSchedules(this.ownerUri); - if (result && result.success) { - this.schedules = result.schedules; + try { + let result = await agentService.getJobSchedules(this.ownerUri); + if (result && result.success) { + this.schedules = result.schedules; + return this.schedules; + } + } catch (error) { + throw error; } } diff --git a/extensions/agent/src/dialogs/pickScheduleDialog.ts b/extensions/agent/src/dialogs/pickScheduleDialog.ts index 06d029476b..04142b7630 100644 --- a/extensions/agent/src/dialogs/pickScheduleDialog.ts +++ b/extensions/agent/src/dialogs/pickScheduleDialog.ts @@ -27,6 +27,7 @@ export class PickScheduleDialog { // UI Components private dialog: azdata.window.Dialog; private schedulesTable: azdata.TableComponent; + private loadingComponent: azdata.LoadingComponent; private model: PickScheduleData; @@ -38,7 +39,17 @@ export class PickScheduleDialog { } public async showDialog() { - await this.model.initialize(); + this.model.initialize().then((result) => { + this.loadingComponent.loading = false; + if (this.model.schedules) { + let data: any[][] = []; + for (let i = 0; i < this.model.schedules.length; ++i) { + let schedule = this.model.schedules[i]; + data[i] = [schedule.id, schedule.name, schedule.description]; + } + this.schedulesTable.data = data; + } + }); this.dialog = azdata.window.createModelViewDialog(this.DialogTitle); this.initializeContent(); this.dialog.okButton.onClick(async () => await this.execute()); @@ -68,16 +79,9 @@ export class PickScheduleDialog { title: this.SchedulesLabelText }]).withLayout({ width: '100%' }).component(); - await view.initializeModel(formModel); - - if (this.model.schedules) { - let data: any[][] = []; - for (let i = 0; i < this.model.schedules.length; ++i) { - let schedule = this.model.schedules[i]; - data[i] = [schedule.id, schedule.name, schedule.description]; - } - this.schedulesTable.data = data; - } + this.loadingComponent = view.modelBuilder.loadingComponent().withItem(formModel).component(); + this.loadingComponent.loading = true; + await view.initializeModel(this.loadingComponent); }); }