Вопрос

Свой генератор для стандартного поля

Всем доброго времени суток.

Версия 7.10.

Вопрос такой - к примеру, есть стандартная колонка даты, которая выводится на страницу примерно так:

{
						"operation": "insert",
						"parentName": "GeneralInformationBlock",
						"propertyName": "items",
						"name": "Date",
						"values": {
							"bindTo": "Date",
							"layout": {"column": 12, "row": 0, "colSpan": 12},
							"dataValueType": Terrasoft.DataValueType.DATE
						}
					},

В соседней теме https://community.terrasoft.ru/questions/mozno-li-zamestit-kontrol#comm…, что стандартный конфиг для контрола даты генерится в схеме ViewGeneratorV2, в методе generateDateEdit, где вызывается контрол DateEdit.

У меня есть свой контрол UsrDateEdit, который имеет некоторые отличия от стандартного DateEdit (нужно для задачи). Как его правильно подключить, чтобы он работал только для конкретных полей (замещение всего ViewGeneratorV2 в этом случае не подходит - оно даёт изменения для всех полей дат). Насколько я понимаю, для этого нужно добавить "UsrDateEdit" в define и что-то в diff. Вопрос - что именно?

Также было бы интересно заодно узнать, как сделать аналогичную замену для случая, когда подключается сразу два блока с датами, связанных в периоде StartDate - DuteDate, как например в мини-карточке при создании Активности ActivityMiniPage. 

Спасибо.

Нравится

4 комментария

Добрый день, ответ на ваш вопрос есть в самом первом комментарии темы на которую вы ссылаетесь:

{
   "operation": "merge",
   "name": "Schedule",
   "values": {
      "className": "Terrasoft.UsrReg",
   }
},

Где Terrasoft.UsrReg - и есть альтернативное имя вашего контрола.

Мотков Илья,

Илья, спасибо, действительно проглядел этот момент.

И всё-таки хотел бы уточнить вторую часть вопроса: если я хочу заменить генерацию дат в блоке диапазона внутри MiniPageDatePeriodGenerator, где там следует вызывать изменённый генератор дат?

Внутри этого блока?

this.generateDateTimeEdit({
							bindTo: itemName,
							name: itemName,
							visible: visible,
							controlConfig: timeEditConfig
						})

 

Заместил MiniPageDatePeriodGenerator, в замещении скопипастил код оригинала, + добавил в объект при вызове generateDateTimeEdit параметр isUseMyControl: true.

Далее в генераторе ViewGeneratorV2 в методе generateDateEdit проверяю isUseMyControl и в зависимости от значения использую UsrDateEdit или оригинальный DateEdit.

Так работает, но возникла другая проблема - похоже, отвалились какие-то стили (классы) - см. скрин

Вопрос - что именно могло отвалиться? Сам файл MiniPageDatePeriodGenerator остался почти без изменений, кроме добавления одного параметра.

UPD: нашёл ошибку, просто надо было изначально создать свой генератор, а не замещать существующий.

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