Как упоминалось выше, элементы типа webtext представляют собой html-текст, формируемый в соответствующей функции (атрибут @proc) в формате JSON. Элементы этого типа служат для произвольного отображения данных на экране. Ниже приведён пример информационной панели (datapanel) c элементом типа webtext.
<?xml version="1.0" encoding="UTF-8"?>
<datapanel>
<tab id="1" name="Сотрудники и оргструктура">
<element id="20"
type="webtext"
proc="deps.webtext.examples.addButtonProc.celesta"/>
</tab>
</datapanel>
Листинг функции addButtonProc:
def addButtonProc(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
u'''Функция возвращает html с кнопкой "Добавить"'''
# Описание кнопки "Добавить"
addButton = {
"button": {
"@onclick": "gwtWebTextFunc('%s', '1');" % elementId,
"span": {
"#text": "Добавить"
}
}
}
# Описание общей разметки элементов
data = {
"table": {
"tr": {
"td": addButton
}
}
}
# Описание настроек
settings = {
"properties": {
"event": {
"@name": "single_click",
"@linkId": "1",
"action": {
"@show_in": "MODAL_WINDOW",
"main_context": "current",
"modalwindow": {
"@caption": "Заголовок окна",
"@height": "800",
"@width": "720"
},
"datapanel": {
"@type": "current",
"@tab": "current",
"element": { "@id": "20" }
}
}
}
}
}
return JythonDTO(XMLJSONConverter(input = data).parse(), XMLJSONConverter(input = settings).parse())
Процедура, отвечающая за отображение webtext, возвращает две переменные типа xml (в JSON-формате):
-
data – html-код, отображаемый на информационной панели;
-
settings – перечень свойств, которыми обладают отображённые элементы.
В приведённом листинге происходит отображение кнопки «Добавить». При щелчке на нее запускается функция gwtWebTextFunc, с помощью которой запускается действие. Функция имеет два параметра:
-
id – идентификатор элемента (в нашем случае это элемент с id равным elementId, т.е текущий элемент), у которого ищется linkId;
-
linkId – идентификатор обрабатываемого события (у нас linkId = 1).
Само же описание linkId, а также описание соответствующих событий и действий, происходит в переменной settings. В нашем случае, при нажатии на кнопку «Добавить», запускается событие с linkId = 1 («event»: { «@name»: «single_click», «@linkId»: «1» … }), которое в отдельном окне («action»: { «@show_in»: «MODAL_WINDOW» … }), имеющем определенный размер и название («modalwindow»: «@caption»: «Добавление подразделения», «@height»: «800», «@width»: «720» }), отображает элемент с id = 20. Т.е. в новом окне мы увидим тот же элемент с кнопкой «Добавить». Следует отметить, что чаще всего в отдельном окне появляются элементы типа xforms (они же - формы для заполнения). О них будет рассказано позднее.

