Коллеги, нужна помощь.
В inputBox пытаюсь вывести колонку DateTime.
Сам вывод получился как то вот так:
Terrasoft.utils.inputBox("Make task value", function(result, arg) { if (result === Terrasoft.MessageBoxButtons.YES.returnCode) { alert(result); } }, [{ className: "Terrasoft.Button", caption: "Next", returnCode: "yes" }, "Cancel"], this, { name: { dataValueType: Terrasoft.DataValueType.TEXT, caption: "Caption", customConfig: { className: "Terrasoft.MemoEdit", height: "77px" }, isRequired: true }, startDate: { dataValueType: Terrasoft.DataValueType.DATE_TIME, caption: "Start date", customConfig: { className: "Terrasoft.Container", value: {"bindTo" : "startDate"}, items: [ { className: "Terrasoft.DateEdit", id: "newStartDateEdit", width: "50%" }, { className: "Terrasoft.TimeEdit", id: "newStartTimeEdit", width: "50%" } ] } } }
Выглядит это дело вот так:
При клике на кнопку Next закрывается форма и консоль в red-style с содержимым:
Uncaught TypeError: b[c].control.getValue is not a function
at i.updateCustomControl (all-combined.js:formatted:79169)
at i.onStateChanged (all-combined.js:formatted:78983)
at i.fire (all-combined.js:formatted:6223)
at i.continueFireEvent (all-combined.js:formatted:7144)
at i.fireEventArgs (all-combined.js:formatted:7129)
at i.fireEvent (all-combined.js:formatted:7120)
at i. (all-combined.js:formatted:79078)
at i.fire (all-combined.js:formatted:6223)
at i.continueFireEvent (all-combined.js:formatted:7144)
at i.fireEventArgs (all-combined.js:formatted:7129)
Кто сталкивался или кто знает как решить этот вопрос?
Нравится
потестил, он пытается взять value контейнера (этого сделать конечно же нельзя). А по другому никак, ибо Date_Time - это по сути контейнер из 2х других контролов. Можно попробовать раздробить
startDate: { caption: "Start date", dataValueType: Terrasoft.DataValueType.DATE_TIME, value: {"bindTo" : "startDate"}, customConfig: { className: "Terrasoft.DateEdit" } }, startTime: { caption: "Strat time", dataValueType: Terrasoft.DataValueType.DATE_TIME, value: {"bindTo" : "startDate"}, customConfig: { className: "Terrasoft.TimeEdit" } }
Пробовали, className: "Terrasoft.TimeEdit" напрочь отказывается показывать. В консоли сообщение о том что присутствует недопустимое значение.
В любом случае логика контролов с типами DATE_TIME и TIME фейлятся в inputBox, похоже это деффект платформы:
DATE_TIME
TIME
Господа, не знаю, что у вас там не работает... У меня завелось вот так:
Terrasoft.utils.inputBox("Make task value", function(result, args) { if (result === Terrasoft.MessageBoxButtons.YES.returnCode) { //alert(result); debugger; console.log(args); } }, [{ className: "Terrasoft.Button", caption: "Next", returnCode: "yes" }, "Cancel"], this, { kappa: { dataValueType: Terrasoft.DataValueType.TEXT, caption: "Caption", customConfig: { className: "Terrasoft.MemoEdit", height: "80px" }, value: "", isRequired: true }, startDate: { caption: "Start date", dataValueType: Terrasoft.DataValueType.DATE, value: new Date(), customConfig: { className: "Terrasoft.DateEdit" } }, endDate: { caption: "Start time", dataValueType: Terrasoft.DataValueType.TIME, value: new Date(), customConfig: { className: "Terrasoft.TimeEdit" } } });
Правды выглядит это всё сомнительно
И значения придётся вытаскивать из args, которые приходят из модуля в коллбеке.
ps. 12 часов ночи, чем я, блин, занимаюсь...
Так. всё. я вконец упоролся, но таки сделал.
Хочется передать привет товарищу из террасофта, который лепит затычки в Terrasoft.utils.controls.getControlConfigByDataValueType. Там в свитчере:
switch (a) { case Terrasoft.DataValueType.TEXT: b = { className: "Terrasoft.TextEdit" }; //тут куча других типов //.... //А для 3х оставшихся сделать поленились case Terrasoft.DataValueType.GUID: case Terrasoft.DataValueType.DATE_TIME: case Terrasoft.DataValueType.BLOB: b = null }
Ну и то, что в итоге получилось у меня:
Terrasoft.utils.inputBox("Make task value", function(result, args) { if (result === Terrasoft.MessageBoxButtons.YES.returnCode) { //alert(result); debugger; console.log(args); } }, [{ className: "Terrasoft.Button", caption: "Next", returnCode: "yes" }, "Cancel"], this, { kappa: { dataValueType: Terrasoft.DataValueType.TEXT, caption: "Caption", customConfig: { className: "Terrasoft.MemoEdit", height: "80px" }, value: "", isRequired: true }, DateTimer: { dataValueType: Terrasoft.DataValueType.DATE_TIME, caption: "Start date", value: new Date(), customConfig: { className: "Terrasoft.Container", getValue: function() { //debugger; var dateValue = this.items.items[0].value; var timeValue = this.items.items[1].value; dateValue.setHours(timeValue.getHours()); dateValue.setMinutes(timeValue.getMinutes()); return dateValue; }, items: [ { className: "Terrasoft.DateEdit", id: "newStartDateEdit", value: new Date(), width: "50%" }, { className: "Terrasoft.TimeEdit", id: "newStartTimeEdit", value: new Date(), width: "50%" } ] } } });
Варфоломеев Данила, отдельное вам спасибо!)
Кстати, как насчет вывода в InputBox справочных полей (Terrasoft.DataValueType.LOOKUP)
Есть идеи ?
само по себе справочное поле выводится без проблем, но связать его с какой либо схемой у меня не получилось.