Общие сведения

Как упоминалось выше, элементы типа 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 (они же - формы для заполнения). О них будет рассказано позднее.