Встала задача заполнения детали на основе данных из json-строки. Строку возвращает bpmonline-сервис по нажатию кнопки. В итоге должна получиться деталь похожая на Кредитный калькулятор (BPMonline Lending).
Так вот, КАК можно заполнить нашу детальку? Разобраться в коде стандартного кредитного калькулятора не особо удалось..
Кредитный калькулятор действительно заполняется из json запроса. Это реалировано в генераторе модели представления, схема BankingServiceSearchModuleViewModelGenerator:
function loadPaymentScheduleGridDataFromJson(dataJson, scope){
var data = Ext.JSON.decode(dataJson);
var newCollection = Ext.create("Terrasoft.Collection");
Terrasoft.each(data, function(item, key){
var model = Ext.create("Terrasoft.BaseViewModel", {
rowConfig:{
Id:{
columnPath:"Id",
dataValueType: Terrasoft.DataValueType.GUID},
LoanDate:{
columnPath:"LoanDate",
dataValueType: Terrasoft.DataValueType.DATE},
LoanPeriod:{
columnPath:"LoanPeriod",
dataValueType: Terrasoft.DataValueType.INTEGER},
PercentageAmount:{
columnPath:"PercentageAmount",
dataValueType: Terrasoft.DataValueType.FLOAT},
TotallyPaymentAmount:{
columnPath:"TotallyPaymentAmount",
dataValueType: Terrasoft.DataValueType.FLOAT}},
values:{
Id: Terrasoft.generateGUID(),
LoanDate:new Date(item.LoanDate),
LoanPeriod: item.LoanPeriod,
PercentageAmount: item.PercentageAmount,
TotallyPaymentAmount: item.TotallyPaymentAmount}});
newCollection.add(model.get("Id"), model);}, this);
var paymentScheduleGridData = scope.get("paymentScheduleGridData");
scope.set("gridPaymentEmpty", newCollection.getCount()===0);
paymentScheduleGridData.loadAll(newCollection);
var searchRecordId = scope.get("searchResultActiveRow");
var loanTerm =
scope.get("searchResultGridData").get(searchRecordId).get("LoanTermRange");
loanTerm = loanTerm.split("-");
var minTerm = parseInt(loanTerm[0].trim(), 10);
var maxTerm = parseInt(loanTerm[1].trim(), 10);
var term = scope.get("LoanPeriod");if(Ext.isNumber(term)){
term = term < minTerm ? minTerm : term;
term = term > maxTerm ? maxTerm : term;
var activeRow = getRowByColumnValue(paymentScheduleGridData, "LoanPeriod",
term);if(activeRow){
setActiveRow("payment-schedule-grid", activeRow.get("Id"));}}}
Создается BaseViewModel, в конструктор передается конфиг строк. Затем, в цикле заполняется.
Максим, здравствуйте!
Вы не могли бы описать весь набор схем, которые нужно создать, чтобы добавить такую деталь на страницу? Я так понимаю, в 7.2 все сильно отличается от 7.1...
Спасибо!
Просто не очень понятно, как, что и с чем связано. Скажем, достаточно ли будет разместить на детали кнопку, по нажатии которой будет запускаться БП, делающий расчеты, и который будет возвращать JSON, который, в свою очередь, будет обрабатывать обозначенная Вами функция?