diff --git a/extensions/agent/package.json b/extensions/agent/package.json index fbbb9541d7..dd2d7effe1 100644 --- a/extensions/agent/package.json +++ b/extensions/agent/package.json @@ -26,12 +26,6 @@ "outputChannels": [ "sqlagent" ], - "commands": [ - { - "command": "agent.openNewStepDialog", - "title": "agent.openNewStepDialog" - } - ], "dashboard.tabs": [ { "id": "data-management-agent", diff --git a/extensions/agent/src/data/jobData.ts b/extensions/agent/src/data/jobData.ts index ca16a07208..9f6f24cc87 100644 --- a/extensions/agent/src/data/jobData.ts +++ b/extensions/agent/src/data/jobData.ts @@ -136,8 +136,13 @@ export class JobData implements IAgentDialogData { } public addJobSchedule(schedule: sqlops.AgentJobScheduleInfo) { - let existingSchedule = this.jobSchedules.find(item => item.name === schedule.name); - if (!existingSchedule) { + if (this.jobSchedules) { + let existingSchedule = this.jobSchedules.find(item => item.name === schedule.name); + if (!existingSchedule) { + this.jobSchedules.push(schedule); + } + } else { + this.jobSchedules = []; this.jobSchedules.push(schedule); } } diff --git a/extensions/agent/src/data/pickScheduleData.ts b/extensions/agent/src/data/pickScheduleData.ts index 0192aa3176..15ad4c0f34 100644 --- a/extensions/agent/src/data/pickScheduleData.ts +++ b/extensions/agent/src/data/pickScheduleData.ts @@ -13,9 +13,11 @@ export class PickScheduleData implements IAgentDialogData { public ownerUri: string; public schedules: sqlops.AgentJobScheduleInfo[]; public selectedSchedule: sqlops.AgentJobScheduleInfo; + private jobName: string; - constructor(ownerUri:string) { + constructor(ownerUri:string, jobName: string) { this.ownerUri = ownerUri; + this.jobName = jobName; } public async initialize() { @@ -27,5 +29,8 @@ export class PickScheduleData implements IAgentDialogData { } public async save() { + let agentService = await AgentUtils.getAgentService(); + this.selectedSchedule.jobName = this.jobName; + let result = await agentService.createJobSchedule(this.ownerUri, this.selectedSchedule); } } diff --git a/extensions/agent/src/dialogs/jobDialog.ts b/extensions/agent/src/dialogs/jobDialog.ts index e77baa2261..bf3523daf1 100644 --- a/extensions/agent/src/dialogs/jobDialog.ts +++ b/extensions/agent/src/dialogs/jobDialog.ts @@ -108,12 +108,14 @@ export class JobDialog extends AgentDialog { // Alert tab controls private alertsTable: sqlops.TableComponent; private newAlertButton: sqlops.ButtonComponent; + private isEdit: boolean = false; constructor(ownerUri: string, jobInfo: sqlops.AgentJobInfo = undefined) { super( ownerUri, new JobData(ownerUri, jobInfo), jobInfo ? JobDialog.EditDialogTitle : JobDialog.CreateDialogTitle); + this.isEdit = jobInfo ? true : false; } protected async initializeDialog() { @@ -373,12 +375,12 @@ export class JobDialog extends AgentDialog { label: this.PickScheduleButtonString, width: 80 }).component(); - this.pickScheduleButton.onDidClick((e)=>{ - let pickScheduleDialog = new PickScheduleDialog(this.model.ownerUri); + let pickScheduleDialog = new PickScheduleDialog(this.model.ownerUri, this.model.name); pickScheduleDialog.onSuccess((dialogModel) => { let selectedSchedule = dialogModel.selectedSchedule; if (selectedSchedule) { + selectedSchedule.jobName = this.model.name; this.model.addJobSchedule(selectedSchedule); this.populateScheduleTable(); } diff --git a/extensions/agent/src/dialogs/pickScheduleDialog.ts b/extensions/agent/src/dialogs/pickScheduleDialog.ts index 5fcd1ac1d1..91c5e23e98 100644 --- a/extensions/agent/src/dialogs/pickScheduleDialog.ts +++ b/extensions/agent/src/dialogs/pickScheduleDialog.ts @@ -33,8 +33,8 @@ export class PickScheduleDialog { private _onSuccess: vscode.EventEmitter = new vscode.EventEmitter(); public readonly onSuccess: vscode.Event = this._onSuccess.event; - constructor(ownerUri: string) { - this.model = new PickScheduleData(ownerUri); + constructor(ownerUri: string, jobName: string) { + this.model = new PickScheduleData(ownerUri, jobName); } public async showDialog() { diff --git a/extensions/agent/src/mainController.ts b/extensions/agent/src/mainController.ts index d7f6b3fde4..af10fa01be 100644 --- a/extensions/agent/src/mainController.ts +++ b/extensions/agent/src/mainController.ts @@ -41,12 +41,12 @@ export class MainController { let dialog = new JobDialog(ownerUri, jobInfo); dialog.openDialog(); }); - vscode.commands.registerCommand('agent.openNewStepDialog', (ownerUri: string, server: string, jobData: JobData) => { - let dialog = new JobStepDialog(ownerUri, server, jobData); + vscode.commands.registerCommand('agent.openNewStepDialog', (ownerUri: string, server: string, jobData: JobData, jobStepInfo: sqlops.AgentJobStepInfo) => { + let dialog = new JobStepDialog(ownerUri, server, jobData, jobStepInfo); dialog.openDialog(); }); - vscode.commands.registerCommand('agent.openPickScheduleDialog', (ownerUri: string) => { - let dialog = new PickScheduleDialog(ownerUri); + vscode.commands.registerCommand('agent.openPickScheduleDialog', (ownerUri: string, jobName: string) => { + let dialog = new PickScheduleDialog(ownerUri, jobName); dialog.showDialog(); }); vscode.commands.registerCommand('agent.openAlertDialog', (ownerUri: string, alertInfo: sqlops.AgentAlertInfo, jobs: string[]) => {