apim-developer-portal2
Version:
API management developer portal
41 lines (33 loc) • 1.72 kB
text/typescript
import { ViewModelBinder } from "@paperbits/common/widgets";
import { EventManager } from "@paperbits/common/events";
import { OperationDetailsViewModel } from "./operationDetailsViewModel";
import { OperationDetailsModel } from "../operationDetailsModel";
import { Bag } from "@paperbits/common";
export class OperationDetailsViewModelBinder implements ViewModelBinder<OperationDetailsModel, OperationDetailsViewModel> {
constructor(private readonly eventManager: EventManager) { }
public async modelToViewModel(model: OperationDetailsModel, viewModel?: OperationDetailsViewModel, bindingContext?: Bag<any>): Promise<OperationDetailsViewModel> {
if (!viewModel) {
viewModel = new OperationDetailsViewModel();
viewModel["widgetBinding"] = {
displayName: "Operation: details",
model: model,
editor: "operation-details-editor",
applyChanges: async (updatedModel: OperationDetailsModel) => {
await this.modelToViewModel(updatedModel, viewModel, bindingContext);
this.eventManager.dispatchEvent("onContentUpdate");
}
};
}
const runtimeConfig = {
enableConsole: model.enableConsole,
enableScrollTo: model.enableScrollTo,
authorizationServers: model.authorizationServers,
defaultSchemaView: model.defaultSchemaView
};
viewModel.config(JSON.stringify(runtimeConfig));
return viewModel;
}
public canHandleModel(model: OperationDetailsModel): boolean {
return model instanceof OperationDetailsModel;
}
}