Информационная панель с использованием Celesta

Материал из Course Orchestra
Перейти к: навигация, поиск
Внимание! Вы просматриваете документацию к Celesta 6.x. Документация по Celesta 7.x доступна на courseorchestra.github.io/celesta.

1. Справочник Celesta

1.1 Введение и основные понятия
1.2 Запуск и авто-обновление
1.3 Базовая настройка
1.4 Системные таблицы
1.5 CelestaSQL
1.6 CelestaDoc
1.7 Контексты сессии и вызова
1.8 Курсоры
1.9 BLOB-поля
1.10 Option-поля
1.11 Защита от потерянных обновлений
1.12 Метаданные Celesta
1.13 CelestaUnit

2. Celesta и базы данных

2.1 Особенности работы Celesta с поддерживаемыми типами СУБД
2.2 Проектирование базы данных Celesta в DBSchema

3. Создание решений с использованием Celesta для ShowCase

3.1 Программа обучения Celesta
3.2 Подготовка рабочего места для работы с Celesta
3.2.1 Для разработчиков платформы
3.2.2 Для разработчиков решений
3.3 Системные гранулы Celesta
3.3.1 common
3.3.1.1 Экспорт/импорт данных
3.3.1.2 Навигатор
3.3.1.3 Серии номеров
3.3.1.4 Иерархия Дьюи
3.3.1.5 Системные функции
3.3.1.6 Реестр настроек
3.3.1.7 Mailsender
3.3.1.8 Common.filter
3.3.2 common.api
3.3.4 security
3.3.3 lyra
3.4 Стандартные гранулы Celesta
3.4.1 dirusing
3.4.2 workflow
3.4.3 File repository
3.5 Отрисовка элементов Showcase при помощи Celesta
3.5.1 Конвертер XML-JSON
3.5.2 Навигатор (Navigator)
3.5.3 Информационная панель (Datapanel)
3.5.4 Серверное действие (Server activity)
3.5.5 Вебтекст (WebText)
3.5.6 Грид (Grid)
3.5.6.1 Панель инструментов (ToolBar)
3.5.7 XForms
3.5.7.1 Селекторы
3.5.7.2 Submission
3.5.7.3 Загрузка/Выгрузка файлов (Upload/Download)

5. Решение проблем

5.1 Проблемы с кодировкой jython-файлов

Celesta поддерживает различные источники данных. Помимо обычного использования datapanel в виде xml-файла есть возможность задавать информационную панель с помощью Сelesta-скрипта.

Datapanel в виде xml-файла

Файл с информационной панелью должен находиться как и обычно в папке userdata\datapanelstorage. В навигаторе в этом случае прописывается json следующего вида:

def navFirstGroup(context, session):
    myNavigator = {
        "group":{
            "@id": "testGroup",
             "@name": "Hello",
             "level1":{
                 "@id": "testLevel",
                 "@name": "World",
                 "action":
                 {"main_context": "current",
                     "datapanel":
                      {"@type": "myDatapanel.xml", 
                       "@tab": "firstOrCurrent"}
                      }
                 }
            
        }                
    }
   return myNavigator

Datapanel в виде Celesta-скрипта

В соответствии с общими правилами написания кода скриптов с использованием Celesta в рабочей грануле следует создать отдельный пакет(папку) "datapanel", где будут храниться все модули(файлы) информационных панелей, написанные в виде Сelesta-скриптов. Для удобства работы следует каждую отдельную информационную панель создавать в отдельном модуле. В общем виде функция информационной панели принимает на вход три параметра: context, main, session. На выходе она должна возвращать xml строку с информационной панелью. Для упрощения поддержки решений и по согласованию решено не использовать в явном виде xml в скриптах. Поэтому при описании информационной панели в скрипте необходимо пользоваться конвертером json-xml и использовать json. Простая информационная панель может задаваться в скрипте (например "datapanelmodule.py") следующим образом:

from ru.curs.celesta.showcase.utils import XMLJSONConverter

def datapanelFunction(context, main=None, session=None):
    data = {"datapanel":{"tab":{"@id":1,
                                "@name":u"Вкладка",
                                "element":[{"@id":"myElementId",
                                            "@type":"webtext",
                                            "@proc":"myGrain.webtext.webtextmodule.webtextFunction.celesta"
                                            }]
                                }
                         }
            }
    return XMLJSONConverter.jsonToXml(json.dumps(data))

В навигаторе при этом должен указываться путь к этому скрипту, начиная от гранулы. Например, если путь к файлу информационная панель следующий: myGrain\datapanel\datapanelmodule, то в навигаторе должна указываться следующая строка: myGrain.datapanel.datapanelmodule.datapanelFunction.celesta