DateTime в inputBox

Коллеги, нужна помощь.

В 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)

 

Кто сталкивался или кто знает как решить этот вопрос?

Нравится

7 комментариев

потестил, он пытается взять 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)

Есть идеи ?

само по себе справочное поле выводится без проблем, но связать его с какой либо схемой у меня не получилось. 

Показать все комментарии