Дорый день!
Встала задача заполнения детали на основе данных из 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, в конструктор передается конфиг строк. Затем, в цикле заполняется.
Просто не очень понятно, как, что и с чем связано. Скажем, достаточно ли будет разместить на детали кнопку, по нажатии которой будет запускаться БП, делающий расчеты, и который будет возвращать JSON, который, в свою очередь, будет обрабатывать обозначенная Вами функция?
Да, этого будет достаточно, если Вы хотите реализовать заполнение по кнопке.