.. _gs3_images_image_collections: Коллекции изображений ================================ .. versionchanged:: 1.23.0-ms15 Добавлена возможность использования SVG-коллекций. :term:`Application Server` предоставляет API для работы с :term:`коллекциями изображений <Коллекция изображений>`. .. seealso:: .. dropdown:: Метаданные Oracle решения **Редакторы** - :ref:`Редактор-выпадающий список изображений (ImageCollection) → Свойство ImageCollectionName ` - :ref:`Редактор-изображение (Icon) → Свойство ImageSource ` - :ref:`Редактор-изображение (Icon) → Свойство ImageListName ` **Фреймы** - :ref:`Закладки (Tab) → Свойство TabImageList ` - :ref:`Закладки (Tab) → Свойство TabSelection.TabImageIndexFieldName ` .. dropdown:: Метаданные Postgres решения **Операции** - :xsd:attr:`Операция выборки (Operation) -> Свойство imageIndex ` - :xsd:attr:`Операция выборки (Operation) -> Свойство imageCollection ` **Редакторы атрибута** - :xsd:attr:`Редактор в строке с произвольными кнопками (ButtonsEdit) -> Кнопка редактора (Button) -> Свойство imageIndex ` - :xsd:attr:`Редактор-изображение (Icon) -> Свойство imageCollectionName ` - :xsd:attr:`Редактор-изображение (Icon) -> Свойство imageCollectionKind ` - :xsd:attr:`Редактор-выпадающий список изображений (ImageCollection) -> Свойство imageCollectionName ` - :xsd:attr:`Редактор-выпадающий список изображений (ImageCollection) -> Свойство imageCollectionKind ` **Фреймы** - :xsd:attr:`Свойство header.imageIndex ` - :xsd:attr:`Свойство header.imageList ` - :xsd:attr:`Диаграмма Гантта (Gantt) -> Свойство imageIndexAttr ` - :xsd:attr:`Диаграмма Гантта (Gantt) -> Свойство imageListName ` - :xsd:attr:`Закладки (Tab) -> Закладки (TabItems) -> Свойство imageIndexAttr ` - :xsd:attr:`Закладки (Tab) -> Закладки (TabItems) -> Свойство imageList ` - :xsd:attr:`Древовидное представление данных выборки (Tree) -> Свойство imageIndexAttr ` - :xsd:attr:`Древовидное представление данных выборки (Tree) -> Свойство imageListName ` - :xsd:attr:`Коллекции изображений (ImageListEditor) ` **Компоновщики** - :xsd:attr:`Закладки (TabComposer) -> Закладки (TabItems) -> Свойство imageList ` - :xsd:attr:`Закладки (TabComposer) -> Закладки (TabItems) -> Свойство selection.imageIndexAttr ` - :xsd:attr:`Закладки (TabComposer) -> Закладки (TabItems) -> Закладка (TabItem) -> Свойство imageIndex ` **Перечисления** - :xsd:attr:`Источник коллекции изображений (ImageCollectionKinds) ` .. dropdown:: GTK Core API **Операции** - :java:type:`Операция выборки (Operation) -> Свойство imageIndex ` - :java:type:`Операция выборки (Operation) -> Свойство imageCollection ` - :java:type:`AnnotatedMetaOper -> Свойство imageCollection ` - :java:type:`AnnotatedMetaOper -> Свойство imageIndex ` - :java:type:`CoreOper -> Свойство imageIndex ` - :java:type:`CoreOper -> Свойство imageCollection ` **Редакторы атрибута** - :java:type:`Редактор в строке с произвольными кнопками (ButtonsEdit) -> Кнопка редактора (Button) -> Свойство imageIndex ` - :java:type:`Редактор-изображение (Icon) -> Свойство imageCollectionName ` - :java:type:`Редактор-изображение (Icon) -> Свойство imageCollectionKind ` - :java:type:`Редактор-выпадающий список изображений (ImageCollection) -> Свойство imageCollectionName ` - :java:type:`Редактор-выпадающий список изображений (ImageCollection) -> Свойство imageCollectionKind ` **Фреймы** - :java:type:`Свойство headerImageIndex ` - :java:type:`Свойство headerImageList ` - :java:type:`Закладки (Tab) -> Закладки (TabItems) -> Свойство imageIndexAttr ` - :java:type:`Закладки (Tab) -> Закладки (TabItems) -> Свойство imageList ` - :java:type:`Древовидное представление данных выборки (Tree) -> Свойство imageIndexAttr ` - :java:type:`Древовидное представление данных выборки (Tree) -> Свойство imageListName ` - :java:type:`ImageListEditor ` **Компоновщики** - :java:type:`Закладки (TabComposer) -> Закладки (TabItems) -> Свойство imageList ` - :java:type:`Закладки (TabComposer) -> Закладки (TabItems) -> Свойство imageIndexAttr ` - :java:type:`Закладки (TabComposer) -> Закладки (TabItems) -> Закладка (TabItem) -> Свойство imageIndex ` **Перечисления** - :java:type:`Источник коллекции изображений (ImageCollectionKinds) ` .. dropdown:: Pascal API - :pas:class:`TbtkScriptOperationObject.ImageIndex` - :pas:class:`TbtkScriptSelectionObject.SetOperationImageIndex` - :pas:class:`TbtkImageList` Назначение ---------- :term:`Коллекция изображений` представляет собой набор однотипных изображений, объединённых в единый :term:`спрайт изображений <Спрайт изображений>`. Используется для быстрого доступа к большому количеству изображений, сокращения числа сетевых запросов и обеспечения единообразного отображения. Виды коллекций -------------- - **Коллекции векторных изображений** - формируются из ``.svg``-файлов. - **Коллекции растровых изображений** - формируются из ``.png``-файлов. - **Совмещённые коллекции изображений** - это коллекции, в которых векторные изображения из подкаталога ``svg`` дополняются растровыми изображениями из корневого каталога коллекции. Растровые файлы (``.png``) при этом автоматически конвертируются в формат ``SVG`` и добавляются в общий спрайт. Такой подход используется, если часть изображений доступна в векторном виде, а часть - только в растровом. Примеры коллекций изображений ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. dropdown:: Коллекция векторных изображений Если коллекция хранится внутри ресурсов сервера: .. code-block:: svg-collection (корневая директория коллекции) ├── 0.svg ├── 1.svg └── 2.svg .. dropdown:: Коллекция растровых изображений Если коллекция хранится внутри ресурсов сервера: .. code-block:: bitmap-collection (корневая директория коллекции) ├── 0.png ├── 1.png └── 2.png Если коллекция хранится внутри БД в таблице ``BTK_COMPONENT``: .. code-block:: id: 742001 blobdatavcl: NULL busage: 1.000000000000000000 clobdataxml: nversion: 581997.000000000000000000 sbaseclassname: TBTKIMAGELIST sclassname: BTK_CommonList_old sname: NULL idclass: NULL bnotactive: NULL dexpirydate: NULL nversion_dz: NULL gidroot_dz: NULL sheadline_dz: NULL sidext_dz: NULL smnemocode_dz: NULL gid: NULL idlockunit_dz: NULL dcreatedate_dz: NULL dmodifydate_dz: NULL screateuser_dz: NULL smodifyuser_dz: NULL jobjattrs_dz: NULL jsign_dz: NULL jsig_dz: NULL jidext_dz: NULL sbopath_dz: NULL jsysdata_dz: NULL jtextlang_dz: NULL .. dropdown:: Совмещённая коллекция изображений Если коллекция хранится внутри ресурсов сервера: .. code-block:: hybrid-collection (корневая директория коллекции) ├── svg/ │ ├── 0.svg │ ├── 1.svg │ └── 2.svg ├── 0.png ├── 1.png └── 2.png Хранение -------- Коллекции изображений могут храниться: - В ресурсах :term:`Application Server`: Путь к коллекциям изображений - ``${G3_HOME}/server/resources/imagecollection/`` - В таблице ``BTK_COMPONENT`` базы данных прикладного проекта. .. warning:: Поддерживаются только **коллекции растровых изображений**. .. _gs3_images_image_collections_allow_collections: Список коллекций изображений ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Все коллекции изображений, которые размещены в таблице ``BTK_COMPONENT`` базы данных прикладного проекта, разрешены к использованию. - Список коллекций изображений, размещённых в ресурсах :term:`Application Server`, которые разрешены к использованию, указан в таблице ниже. .. dropdown:: Список коллекций изображений, размещённых в ресурсах Application Server .. list-table:: :header-rows: 1 * - Наименование - Размер изображений (в пикселях) * - act_doctrans - ``24x24`` * - act_doctransdisabled - ``24x24`` * - bpm_process - ``16x16`` * - bs_departmentimage - ``16x16`` * - btk_appimagelist - ``32x32`` * - btk_commonlist - ``16x16`` * - btk_commonlist24 - ``24x24`` * - btk_compare16 - ``16x16`` * - btk_compare24 - ``24x24`` * - btk_fltimages - ``16x16`` * - btk_infopanel - ``16x16`` * - btk_jexl16 - ``16x16`` * - btk_license16 - ``16x16`` * - btk_license24 - ``24x24`` * - btk_scheduler16 - ``16x16`` * - btk_scheduler24 - ``24x24`` * - btk_statesimage - ``16x16`` * - bts_messenger16 - ``16x16`` * - bts_messenger24 - ``24x24`` * - dct_commonimage16 - ``16x16`` * - dct_commonimage24 - ``24x24`` * - doc_secondarycollection - ``16x16`` * - editbuttons - ``16x16`` * - eqp_collectionimage - ``16x16`` * - maintreeimagelist - ``16x16`` * - maintreeview - ``16x16`` * - mct_application - ``48x48`` * - modernheaderimagelist - ``32x32`` * - not_found - ``24x24`` * - sup_appealstates - ``16x16`` * - toolbarprimary - ``24x24`` * - toolbarprimarydisabled - ``24x24`` * - toolbarprimaryhot - ``24x24`` * - toolbarsecondary - ``16x16`` * - toolbarsecondarydisabled - ``16x16`` * - toolbarsecondaryhot - ``16x16`` * - wf_needcheck - Коллекция пустая Получение коллекции изображений --------------------------------- Доступ к коллекциям изображениям осуществляется при помощи: 1. :ref:`EngineEndpoint.get_image ` 2. :ref:`Сервиса загрузки коллекций изображений ` .. attention:: Если вы внесли изменения в коллекцию (добавление, изменение и удаление изображений), которая уже запрашивалась в рамках работающего сервера, то чтобы изменения вступили в силу, следует перезапустить сервер или воспользоваться :ref:`GTK Core API `. .. note:: Что происходит в :term:`Application Server` при запросе на получение коллекции изображений: .. image:: implementation_of_receiving_collections_from_an_application_project.png Приоритет выбора источника коллекций изображений ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Коллекции изображений могут храниться как в ресурсах :term:`Application Server`, так и в таблице ``BTK_COMPONENT`` базы данных прикладного проекта. Сервер позволяет задать, из какого источника коллекции следует загружать в первую очередь. Приоритет загрузки определяется в :xsd:attr:`конфигурации сервера `: - Значение :xsd:attr:`DataBase ` - приоритет имеют коллекции изображений, находящиеся в таблице ``BTK_COMPONENT`` базы данных прикладного проекта. - Значение :xsd:attr:`Xml ` - приоритет имеют коллекции изображений, находящиеся в ресурсах :term:`Application Server`. .. _gs3_images_image_collections_clear_images: Очистка коллекций изображений из кэша сервера ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Очистка коллекций изображений из кэша сервера осуществляется при помощи: 1. :java:type:`GTK Core API - CoreImageCollectionCache.clear ` 2. :java:type:`GTK Core API - CoreClusterCacheManager.clearImageCache ` Правила -------- - Наименование коллекции изображений должно быть написано в нижнем регистре. Рекомендуется использовать `snake case `_. Данное правило актуально только для тех коллекций, которые хранятся в ресурсах сервера. - Изображения в коллекции изображений необходимо называть по соответствующим им порядковому номеру, последовательно и без пропусков. Например: ``0.png``, ``1.png``, ``2.png``. - Нумерация изображений в коллекции изображений начинается с ``0``, в других номерах лидирующие нули недопустимы (например: ``00``, ``01``, ``004``). - Внутри каждой коллекции изображений должна быть пустая иконка, определяющая тип коллекции, которая имеет наименование ``-1``. Это необходимо для определения вида коллекции изображений. - Изображения внутри одной коллекции изображений должны иметь одинаковые высоту и ширину. - Если для одной коллекции изображений имеются файлы с разным размером изображений, то необходимо разделить коллекцию на отдельные коллекции изображений с указанием соответствующего размера изображений. Пример: ``btk_license16`` и ``btk_license24``, ``btk_scheduler16`` и ``btk_scheduler24``. - Изображения должны быть квадратными. Например, ``16x16`` пикселей. - Поддерживаемые размеры изображений ``16px``, ``24px``, ``32px`` и ``48px``. - Изображения в корневом каталоге коллекции изображений должны иметь одинаковое расширение. Например: только ``.png`` файлы. - Изображения в подкаталоге ``svg`` совмещенной коллекции изображений должны иметь расширение только ``.svg``. - Если в коллекции имеются файлы с разными расширениями, то будет выбрано только одно расширение в соответствии с установленным приоритетом. Файлы с другими расширениями не будут добавлены в спрайт. .. attention:: Приоритет расширений файлов (от наиболее приоритетных к менее приоритетным): - ``.svg`` - ``.png`` Коллекции векторных изображений ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Указание свойств высоты (``height``) и ширины (``width``) в атрибутах изображения для ``.svg`` файла является обязательным, иначе в дальнейшем изображение не будет использоваться. - В файлах ``.svg`` не должно быть: - идентификаторов (``id``), включая элементы с ``clippath id`` и аналогичными атрибутами; - секции определений (````); - секции стилей (``