Selector/Multiselector/Treeselector с использованием 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, необходимо создать функциии вида:

1. функция для подсчета количества данных в селекторе:

# coding: utf-8

from java.util import ArrayList

from nsi._nsi_orm import subjectTypeCursor


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

try:
    from ru.curs.showcase.core.selector import ResultSelectorData
    from ru.beta2.extra.gwt.ui.selector.api import DataRecord
except:
    pass
    
    
def subjectTypeCount(context, main=None, add=None, filterinfo=None, session=None, params=None, curvalue=None, startswith=None):
    u'''Функция count типов субъектов'''
    # курсор таблицы subjectType
    subjectType = subjectTypeCursor(context)
    # фильтрация записей по данным, введенным пользователем в селекторе
    subjectType.setFilter('subjectTypeName', "@%s'%s'%%" % ("%"*(not startswith), curvalue))

    return ResultSelectorData(None, subjectType.count())

2. функция загрузки списка данных для селектора

# coding: utf-8

from java.util import ArrayList

from nsi._nsi_orm import subjectTypeCursor


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

try:
    from ru.curs.showcase.core.selector import ResultSelectorData
    from ru.beta2.extra.gwt.ui.selector.api import DataRecord
except:
    pass
    
    
def subjectTypeList(context, main=None, add=None, filterinfo=None, session=None, params=None,
                curvalue=None, startswith=None, firstrecord=None, recordcount=None):
    u'''Функция list типов субъектов'''
        # курсор таблицы subjectType
    subjectType = subjectTypeCursor(context)
    # фильтрация записей по данным, введенным пользователем в селекторе
    subjectType.setFilter('subjectTypeName', "@%s'%s'%%" % ("%"*(not startswith), curvalue))

    # сортировка
    subjectType.orderBy('subjectTypeName')
    # ограничение на единовременный вывод данных
    subjectType.limit(firstrecord,
                      recordcount)

    recordList = ArrayList()
    for subjectType in subjectType.iterate():
        rec = DataRecord()
        rec.setId(subjectType.subjectTypeId)
        rec.setName(subjectType.subjectTypeName)
        rec.addParameter("sort", subjectType.sort)
        recordList.add(rec)

    return ResultSelectorData(recordList, 0)