Files
azuredatastudio/extensions/machine-learning-services/src/views/models/manageModels/editModelDialog.ts
Leila Lali 1e8a9c47cb ML - Added model management dialog to edit and delete models (#10125)
* ML - Added model management dialog to edit and delete models
2020-04-24 08:33:35 -07:00

76 lines
2.4 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { ModelViewBase, UpdateModelEventName } from '../modelViewBase';
import * as constants from '../../../common/constants';
import { ApiWrapper } from '../../../common/apiWrapper';
import { DialogView } from '../../dialogView';
import { ModelDetailsEditPage } from './modelDetailsEditPage';
import { ImportedModel } from '../../../modelManagement/interfaces';
/**
* Dialog to render registered model views
*/
export class EditModelDialog extends ModelViewBase {
constructor(
apiWrapper: ApiWrapper,
root: string,
private _parentView: ModelViewBase | undefined,
private _model: ImportedModel) {
super(apiWrapper, root);
this.dialogView = new DialogView(this._apiWrapper);
}
public dialogView: DialogView;
public editModelPage: ModelDetailsEditPage | undefined;
/**
* Opens a dialog to edit models.
*/
public open(): void {
this.editModelPage = new ModelDetailsEditPage(this._apiWrapper, this, this._model);
let registerModelButton = this._apiWrapper.createButton(constants.extLangSaveButtonText);
registerModelButton.onClick(async () => {
if (this.editModelPage) {
const valid = await this.editModelPage.validate();
if (valid) {
try {
await this.sendDataRequest(UpdateModelEventName, this.editModelPage?.data);
this.showInfoMessage(constants.modelUpdatedSuccessfully);
if (this._parentView) {
await this._parentView.refresh();
}
} catch (error) {
this.showInfoMessage(`${constants.modelUpdateFailedError} ${constants.getErrorMessage(error)}`);
}
}
}
});
let dialog = this.dialogView.createDialog(constants.editModelTitle, [this.editModelPage]);
dialog.customButtons = [registerModelButton];
this.mainViewPanel = dialog;
dialog.okButton.hidden = true;
dialog.cancelButton.label = constants.extLangDoneButtonText;
dialog.registerCloseValidator(() => {
return false; // Blocks Enter key from closing dialog.
});
this._apiWrapper.openDialog(dialog);
}
/**
* Resets the tabs for given provider Id
*/
public async refresh(): Promise<void> {
if (this.dialogView) {
this.dialogView.refresh();
}
}
}