apim-developer-portal4
Version:
API management developer portal
39 lines (33 loc) • 1.53 kB
text/typescript
import { widgetName, defaultPageSize, defaultCustomFilterStartTime, defaultCustomFilterEndTime } from "./constants";
import { IModelBinder } from "@paperbits/common/editing";
import { ReportsByApiModel } from "./reportsByApiModel";
import { Contract } from "@paperbits/common";
import { ReportsByApiContract } from "./reportsByApiContract";
/**
* This is a class that helps to prepare the model using data described
* in the contract.
*/
export class ReportsByApiModelBinder implements IModelBinder<ReportsByApiModel> {
public canHandleContract(contract: Contract): boolean {
return contract.type === widgetName;
}
public canHandleModel(model: any): boolean {
return model instanceof ReportsByApiModel;
}
public async contractToModel(contract: ReportsByApiContract): Promise<ReportsByApiModel> {
const model = new ReportsByApiModel();
model.pageSize = contract.pageSize || defaultPageSize;
model.customFilterStartTime = contract.customFilterStartTime || defaultCustomFilterStartTime;
model.customFilterEndTime = contract.customFilterEndTime || defaultCustomFilterEndTime;
return model;
}
public modelToContract(model: ReportsByApiModel): Contract {
const contract: ReportsByApiContract = {
type: widgetName,
pageSize: model.pageSize,
customFilterStartTime: model.customFilterStartTime,
customFilterEndTime: model.customFilterEndTime,
};
return contract;
}
}