diff --git a/README.md b/README.md index 06edffb..5380e54 100644 --- a/README.md +++ b/README.md @@ -36,28 +36,28 @@ В фреймворк входят: -- [Библиотека расширения "P8-Panels-ParusOnlineExt.dll"](https://git.citpb.ru/CITKParus/P8-Panels-ParusOnlineExt) для сервера приложений "ПАРУС 8 Онлайн" - обеспечивает низкоуровневое взаимодействие разрабатываемых панелей с Системой -- Хранимые объекты сервера БД Системы, обеспечивающие обмен данными между панелями и учётными регистрами Системы -- API для высокоуровневого взаимодействия с сервером БД Системы -- API для взаимодействия разрабатываемых панелей с WEB-приложением "ПАРУС 8 Онлайн" -- WEB-приложение "Парус 8 - Панели мониторинга", являющееся "точкой входа" для подключения реализуемых панелей, включающее в себя: - - Подключенные и настроенные библиотеки ["React"](https://react.dev/), ["React-Router"](https://reactrouter.com/), ["MUI"](https://mui.com/) - - Настроенный транспайлер ["Babel"](https://babeljs.io/) - - Настроенный сборщик WEB-приложений ["WebPack"](https://webpack.js.org/) - - Настроенный статический анализатор кода ["ESLint"]() - - Настройки среды разработки ["Visual Studio Code"](https://code.visualstudio.com/) - - Готовый контекст React-приложения - - Компоненты для отображения единого бокового меню подключенных панелей, галереи подключенных панелей, интеграции в рабочий стол WEB-приложения "ПАРУС 8 Онлайн" - - Готовые панели мониторинга для ряда прикланых приложений Системы +- [Библиотека расширения "P8-Panels-ParusOnlineExt.dll"](https://git.citpb.ru/CITKParus/P8-Panels-ParusOnlineExt) для сервера приложений "ПАРУС 8 Онлайн" - обеспечивает низкоуровневое взаимодействие разрабатываемых панелей с Системой +- Хранимые объекты сервера БД Системы, обеспечивающие обмен данными между панелями и учётными регистрами Системы +- API для высокоуровневого взаимодействия с сервером БД Системы +- API для взаимодействия разрабатываемых панелей с WEB-приложением "ПАРУС 8 Онлайн" +- WEB-приложение "Парус 8 - Панели мониторинга", являющееся "точкой входа" для подключения реализуемых панелей, включающее в себя: + - Подключенные и настроенные библиотеки ["React"](https://react.dev/), ["React-Router"](https://reactrouter.com/), ["MUI5"](https://v5.mui.com/) + - Настроенный транспайлер ["Babel"](https://babeljs.io/) + - Настроенный сборщик WEB-приложений ["WebPack"](https://webpack.js.org/) + - Настроенный статический анализатор кода ["ESLint"]() + - Настройки среды разработки ["Visual Studio Code"](https://code.visualstudio.com/) + - Готовый контекст React-приложения + - Компоненты для отображения единого бокового меню подключенных панелей, галереи подключенных панелей, интеграции в рабочий стол WEB-приложения "ПАРУС 8 Онлайн" + - Готовые панели мониторинга для ряда прикланых приложений Системы ## III. Требования к разработчику Для успешной разработки собственных панелей с применением описываемого фреймворка, потребуются знания следующих технологий: -- HTML, CSS, JS, JSX -- Разработка SPA WEB-приложений -- Знакомство с основами работы перечисленных выше библиотек и системных средств (в первую очередь "React") -- Знание архитектуры Системы, принципов работы и организации её серверной части +- HTML, CSS, JS, JSX +- Разработка SPA WEB-приложений +- Знакомство с основами работы перечисленных выше библиотек и системных средств (в первую очередь "React") +- Знание архитектуры Системы, принципов работы и организации её серверной части На видеохостинге YouTube можно ознакомиться с уроками и обучающими курсами по большинству из перечисленных технологий. Например, с [этими](https://www.youtube.com/results?search_query=%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9+%D0%BA%D1%83%D1%80%D1%81+react). @@ -68,11 +68,11 @@ > **Внимание:** > -> - **Проверьте версию "ПАРУС 8 Онлайн"** +> - **Проверьте версию "ПАРУС 8 Онлайн"** > > Перед копированием расширения из репозитория убедитесь, что в [релизах расширения](https://git.citpb.ru/CITKParus/P8-Panels-ParusOnlineExt/releases) нет специальной сборки для Вашей версии "ПАРУС 8 Онлайн". **Если таковая есть - необходимо устанавливать именно её, а не актуальную сборку из основной ветки репозитория!** > -> - **Для релиза "ПАРУС 8 Онлайн" от 30.08.2024** +> - **Для релиза "ПАРУС 8 Онлайн" от 30.08.2024** > > Требуется [патч для "ПАРУС 8 Онлайн" до промежуточной сборки 02.09.2024](https://cloud.mail.ru/public/nEZb/y4oQa1N6D). Установка расширения на данный релиз не рекомендуется, по возможности - пропустите его. @@ -89,8 +89,8 @@ Где: -- `rootPath="c:\p8web20\Ext\"` - атрибут, указывающий на корневой каталог хранения расширений для сервера приложений "ПАРУС 8 Онлайн" -- `path="P8-Panels-ParusOnlineExt\bin\P8-Panels-ParusOnlineExt.dll"` - атрибут, указывающий на каталог размещения библиотеки расширения "Панели" относительного коревого `rootPath` +- `rootPath="c:\p8web20\Ext\"` - атрибут, указывающий на корневой каталог хранения расширений для сервера приложений "ПАРУС 8 Онлайн" +- `path="P8-Panels-ParusOnlineExt\bin\P8-Panels-ParusOnlineExt.dll"` - атрибут, указывающий на каталог размещения библиотеки расширения "Панели" относительного коревого `rootPath` 4. Установите в файле конфигурации "PrecompiledApp.config" сервера приложений атрибут `updatable` в `true`: @@ -111,30 +111,25 @@ git clone https://git.citpb.ru/CITKParus/P8-Panels.git При компиляции учитывайте следующее: -- объекты `PKG_P8PANELS`, `PKG_P8PANELS_BASE`, `PKG_P8PANELS_VISUAL` и `P8PNL_SELECTLIST` - обязательны к компиляции. **Это ядро серверной части расширения. Без этих объектов его работа невозможна. Все остальные, перечисленные ниже объекты серверной части - прикладные, не обязательны к компиляции и на функционирование непосредственно фреймворка влияния не оказывают.** -- объекты `PKG_P8PANELS_SAMPLES`, `P8PNL_SMPL_CYCLOGRAM` и `P8PNL_SMPL_GANTT` - обеспечивают работу панели "Samples" ("Примеры для разработчиков"). Это абстрактный набор примеров применения фреймворка, не привязанный жестко к комплектации Системы. Должен откомпилироваться практически в любой комплектации Системы (единственное требование - наличие словаря "Контрагенты"). -- объекты `PKG_P8PANELS_PROJECTS`, `P8PNL_JB_JOBS`, `P8PNL_JB_JOBSPREV`, `P8PNL_JB_PERIODS`, `P8PNL_JB_PRJCTS` и `P8PNL_JB_PRMS` - могут быть откомпилированы в Системе, имеющей в комлектации приложения "Планирование и учёт в проектах" и "Управление закупками, складом и реализацией". Эти объекты отвечают за работу панелей группы "Планирование и учёт в проектах" ("PrjFin" - "Экономика проектов", "PrjJobs" - "Работы проектов", "PrjGraph" - "Графики проектов", "PrjInfo" - "Информация о проектах"). Компилируйте только если комлектация Системы включает указанные приложения. -- объект `PKG_P8PANELS_CLNTTSKBRD` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Управление деловыми процессами". Этот объект отвечает за работу панелей группы "Управление деловыми процессами" ("ClntTaskBoard" - "Доски задач"). Компилируйте только если комлектация Системы включает указанное приложение. -- объект `PKG_P8PANELS_MECHREC` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Планирование и учёт в дискретном производстве". Этот объект отвечает за работу панелей группы "Планирование и учёт в дискретном производстве" ("MechRecCostProdPlans" - "Производственная программа", "MechRecDeptCostProdPlans" - "Производственный план цеха", "MechRecCostJobsManage" - "Выдача сменного задания", "MechRecCostJobsManageMP" - "Выдача сменного задания на участок", "MechRecDeptCostJobs" - "Загрузка цеха", "MechRecAssemblyMon" - "Мониторинг сборки изделий"). Компилируйте только если комлектация Системы включает указанное приложение. -- объект `PKG_P8PANELS_EQUIPSRV` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Управление техническим обслуживанием и ремонтами". Этот объект отвечает за работу панелей группы "Управление техническим обслуживанием и ремонтами" ("EqsPrfrm" - "Выполнение работ по ТОиР"). Компилируйте только если комлектация Системы включает указанное приложение. -- объект `PKG_P8PANELS_RRPCONFED` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Сервис регламентированной и управленческой отчётности". Этот объект отвечает за работу панели "RrpConfEditor" ("Редактор настройки регламентированного отчёта"). Компилируйте только если комлектация Системы включает указанное приложение. +- объекты `PKG_P8PANELS`, `PKG_P8PANELS_BASE`, `PKG_P8PANELS_VISUAL` и `P8PNL_SELECTLIST` - обязательны к компиляции. **Это ядро серверной части расширения. Без этих объектов его работа невозможна. Все остальные, перечисленные ниже объекты серверной части - прикладные, не обязательны к компиляции и на функционирование непосредственно фреймворка влияния не оказывают.** +- объекты `PKG_P8PANELS_SAMPLES`, `P8PNL_SMPL_CYCLOGRAM` и `P8PNL_SMPL_GANTT` - обеспечивают работу панели "Samples" ("Примеры для разработчиков"). Это абстрактный набор примеров применения фреймворка, не привязанный жестко к комплектации Системы. Должен откомпилироваться практически в любой комплектации Системы (единственное требование - наличие словаря "Контрагенты"). +- объекты `PKG_P8PANELS_PROJECTS`, `P8PNL_JB_JOBS`, `P8PNL_JB_JOBSPREV`, `P8PNL_JB_PERIODS`, `P8PNL_JB_PRJCTS` и `P8PNL_JB_PRMS` - могут быть откомпилированы в Системе, имеющей в комлектации приложения "Планирование и учёт в проектах" и "Управление закупками, складом и реализацией". Эти объекты отвечают за работу панелей группы "Планирование и учёт в проектах" ("PrjFin" - "Экономика проектов", "PrjJobs" - "Работы проектов", "PrjGraph" - "Графики проектов", "PrjInfo" - "Информация о проектах"). Компилируйте только если комлектация Системы включает указанные приложения. +- объект `PKG_P8PANELS_CLNTTSKBRD` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Управление деловыми процессами". Этот объект отвечает за работу панелей группы "Управление деловыми процессами" ("ClntTaskBoard" - "Доски задач"). Компилируйте только если комлектация Системы включает указанное приложение. +- объект `PKG_P8PANELS_MECHREC` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Планирование и учёт в дискретном производстве". Этот объект отвечает за работу панелей группы "Планирование и учёт в дискретном производстве" ("MechRecCostProdPlans" - "Производственная программа", "MechRecDeptCostProdPlans" - "Производственный план цеха", "MechRecCostJobsManage" - "Выдача сменного задания", "MechRecCostJobsManageMP" - "Выдача сменного задания на участок", "MechRecDeptCostJobs" - "Загрузка цеха", "MechRecAssemblyMon" - "Мониторинг сборки изделий"). Компилируйте только если комлектация Системы включает указанное приложение. +- объект `PKG_P8PANELS_EQUIPSRV` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Управление техническим обслуживанием и ремонтами". Этот объект отвечает за работу панелей группы "Управление техническим обслуживанием и ремонтами" ("EqsPrfrm" - "Выполнение работ по ТОиР"). Компилируйте только если комлектация Системы включает указанное приложение. +- объект `PKG_P8PANELS_RRPCONFED` - может быть откомпилирован в Системе, имеющей в комлектации приложение "Сервис регламентированной и управленческой отчётности". Этот объект отвечает за работу панели "RrpConfEditor" ("Редактор настройки регламентированного отчёта"). Компилируйте только если комлектация Системы включает указанное приложение. 7. Перезапустите сервер приложений "ПАРУС 8 Онлайн" > **Внимание:** при установке учитывайте следующее: > -> - **Для Linux/Unix** -> -> - Чувствительность к регистру - обращайте внимание на регистр в именах каталогов и файлов операционной системы и регистр в котором упоминаете их в конфигурационных файлах, несовпадение приводит к неработоспособности настроек -> - Права доступа - файлы конфигурации и файлы дистрибутива фреймворка должны быть доступны процессу WEB-сервера -> -> - **Для Windows 7 и прочих устаревших версий Windows** -> -> - Версия IIS, доступная для этих ОС, зачастую не имеет автоматической поддержки шрифтов в формате "WOFF2", применяемых фреймворком. Это может вызывать некорректное отображение панелей, иконок, некоторых элементов пользовательского интерфейса. Добавте в файл "web.config", сервера приложений "ПАРУС 8 Онлайн", строку для определения формата: ``. Путь для добавления данной настройки в файл "web.config": `configuration/system.webServer/staticContent/` -> -> - **Для всех** -> -> - Если после установки фреймворка, при открытии панелей появляется ошибка `Internal server error` (HTTP-статус ответа сервера - 500), и Вы уверены, что перепроверили всё описанное выше в интрукции и не нашли ошибок установки, то: остановите сервер приложений "ПАРУС 8 Онлайн", сделайте резервную копию его каталога "bin" и удалите каталог, затем скачайте "web.zip" из дистрибутива Вашего релиза "ПАРУС 8 Онлайн" и восстановите удалённый каталог "bin", распаковав его из архива. Затем - запустите сервер приложений "ПАРУС 8 Онлайн". +> - **Для Linux/Unix** +> - Чувствительность к регистру - обращайте внимание на регистр в именах каталогов и файлов операционной системы и регистр в котором упоминаете их в конфигурационных файлах, несовпадение приводит к неработоспособности настроек +> - Права доступа - файлы конфигурации и файлы дистрибутива фреймворка должны быть доступны процессу WEB-сервера +> - **Для Windows 7 и прочих устаревших версий Windows** +> - Версия IIS, доступная для этих ОС, зачастую не имеет автоматической поддержки шрифтов в формате "WOFF2", применяемых фреймворком. Это может вызывать некорректное отображение панелей, иконок, некоторых элементов пользовательского интерфейса. Добавте в файл "web.config", сервера приложений "ПАРУС 8 Онлайн", строку для определения формата: ``. Путь для добавления данной настройки в файл "web.config": `configuration/system.webServer/staticContent/` +> - **Для всех** +> - Если после установки фреймворка, при открытии панелей появляется ошибка `Internal server error` (HTTP-статус ответа сервера - 500), и Вы уверены, что перепроверили всё описанное выше в интрукции и не нашли ошибок установки, то: остановите сервер приложений "ПАРУС 8 Онлайн", сделайте резервную копию его каталога "bin" и удалите каталог, затем скачайте "web.zip" из дистрибутива Вашего релиза "ПАРУС 8 Онлайн" и восстановите удалённый каталог "bin", распаковав его из архива. Затем - запустите сервер приложений "ПАРУС 8 Онлайн". ## V. Подключение панелей @@ -180,29 +175,29 @@ git clone https://git.citpb.ru/CITKParus/P8-Panels.git Настройки хранятся в формате XML. Корневым тэгом документа должен быть `CITK.P8Panels`. Дочерними для него могут быть две ветки конфигурации: -- `MenuItems` - настройка пунктов главного меню WEB-приложения "ПАРУС 8 Онлайн" -- `Panels` - общий список панелей, подключаемых к приложению (не все панели обязательно выводить в виде пунктов меню) +- `MenuItems` - настройка пунктов главного меню WEB-приложения "ПАРУС 8 Онлайн" +- `Panels` - общий список панелей, подключаемых к приложению (не все панели обязательно выводить в виде пунктов меню) `MenuItems` состоит из элементов `App`, каждый из которых определяет для какого из приложений Системы описываются пункты меню. `MenuItems` может содержать несколько элементов `App`. Каждый элемент `App` должен иметь обязательный атрибут `name`, определяющий код приложения Системы (см. колонку `APPCODE` в таблице `APPLIST`), в которое будут добавлены пункты меню. Дочерними для элемента `App` являются элементы `MenuItem`, каждый из которых описывает создаваемый расширением пункт меню. `App` может содержать несколько `MenuItem`. Каждый из `MenuItem` может иметь следующие атрибуты: -- `parent` - обязательный, содержит GUID родительского пункта меню, к которому будет добавлен описываемый дочерний пункт (см. `P_MENUS_CREATE_*_MENU`, где `*` - код приложения Системы) -- `separator` - необязательный, принимает значения "true" или "false", если "true" - создаваемый пункт меню будет разделителем, остальные атрибуты, описанные ниже будут проигнорированы -- `name` - необязательный для `separator="true"`, в прочих случаях - обязательный, уникальное имя пункта меню -- `caption` - необязательный для `separator="true"`, в прочих случаях - обязательный, видимый текст пункта меню -- `panelName` - необязательный для `separator="true"` или если указан атрибут `url`, в прочих случаях - обязательный, определяет код панели, открываемой при выборе данного пункта меню конечным пользователем (коды панелей объявляются в секции `Panels` данного файла конфигурации, описана ниже) -- `url` - необязательный для `separator="true"` или если указан атрибут `panelName`, в прочих случаях - обязательный, определяет URL, который будет открыт в отдельной закладке "ПАРУС 8 Онлайн" при выборе данного пункта меню конечным пользователем (в приведённом примере, для пункта меню "ShowPrjPanelsRoot" открывает домашнюю страницу WEB-приложения "Парус 8 - Панели мониторинга", отображающую галерею доступных панелей, см. ниже описание атрибута `urlBase` элемента `Panels`) +- `parent` - обязательный, содержит GUID родительского пункта меню, к которому будет добавлен описываемый дочерний пункт (см. `P_MENUS_CREATE_*_MENU`, где `*` - код приложения Системы) +- `separator` - необязательный, принимает значения "true" или "false", если "true" - создаваемый пункт меню будет разделителем, остальные атрибуты, описанные ниже будут проигнорированы +- `name` - необязательный для `separator="true"`, в прочих случаях - обязательный, уникальное имя пункта меню +- `caption` - необязательный для `separator="true"`, в прочих случаях - обязательный, видимый текст пункта меню +- `panelName` - необязательный для `separator="true"` или если указан атрибут `url`, в прочих случаях - обязательный, определяет код панели, открываемой при выборе данного пункта меню конечным пользователем (коды панелей объявляются в секции `Panels` данного файла конфигурации, описана ниже) +- `url` - необязательный для `separator="true"` или если указан атрибут `panelName`, в прочих случаях - обязательный, определяет URL, который будет открыт в отдельной закладке "ПАРУС 8 Онлайн" при выборе данного пункта меню конечным пользователем (в приведённом примере, для пункта меню "ShowPrjPanelsRoot" открывает домашнюю страницу WEB-приложения "Парус 8 - Панели мониторинга", отображающую галерею доступных панелей, см. ниже описание атрибута `urlBase` элемента `Panels`) `Panels` - содержит список элементов `Panel`, описывающих подключенные панели. Элемент `Panels` имеет атрибут `urlBase`, определяющий корневой URL WEB-приложения "Парус 8 - Панели мониторинга", относительно него формируются URL панелей. Значение `urlBase` определяется физическим расположением WEB-приложения "Парус 8 - Панели мониторинга" на диске сервера приложений (см. пункт 5 в главе "IV. Установка"). В данном примеры, файлы WEB-приложения распологаются в каталоге "Modules/p8-panels" сервера приложений. Каждый из элементов `Panel`, дочерних для `Panels`, описывает одну панель и имеет следующие атрибуты: -- `name` - обязательный, строка, указывается латиницей, определяет уникальное имя панели -- `group` - необязательный, строка, указывается кириллицей, определяет имя группы, в которую входит панель (применяется при формировании галереи панелей, главного меню панелей и ссылок на рабочем столе) -- `caption` - обязательный, строка, видимое наименование панели (применяется в галереи панелей, главном меню панелей, ссылках на рабочем столе, заголовках закладок) -- `desc` - необязательный, строка, -- `url` - обязательный, строка, указывается латиницей, относительй URL панели (по адресу `Panel.urlBase` + `Panel.Panels.url` сервер приложений "ПАРУС 8 Онлайн" будет выдавать HTML-страницу панели), для простоты навигации может повторять значение атрибута `path` -- `path` - обязательный, строка, путь к исходному коду панели в структуре каталогов WEB-приложения "Парус 8 - Панели мониторинга" (панели должны размещаться в "app/panels", в данном атрибуте указыватся только имя каталога, созданного для панели в "app/panels") -- `icon` - обязательный, строка, код иконки панели из символов шрифта [Google Material Icons](https://fonts.google.com/icons?icon.set=Material+Icons) (применяется при формировании галереи панелей, главного меню панелей и ссылок на рабочем столе) -- `showInPanelsList` - обязательный, принимает значения "true" или "false", определяет отображение ссылки на панель в галереи панелей, главном меню панелей, виджете рабочего стола -- `preview` - полный путь и имя файла из каталога "img" WEB-приложения "Парус 8 - Панели мониторинга" (в каталог могут быть добавлены пользовательские изображения), служит в качестве изображения панели в галерее панелей +- `name` - обязательный, строка, указывается латиницей, определяет уникальное имя панели +- `group` - необязательный, строка, указывается кириллицей, определяет имя группы, в которую входит панель (применяется при формировании галереи панелей, главного меню панелей и ссылок на рабочем столе) +- `caption` - обязательный, строка, видимое наименование панели (применяется в галерее панелей, главном меню панелей, ссылках на рабочем столе, заголовках закладок) +- `desc` - необязательный, строка, +- `url` - обязательный, строка, указывается латиницей, относительй URL панели (по адресу `Panel.urlBase` + `Panel.Panels.url` сервер приложений "ПАРУС 8 Онлайн" будет выдавать HTML-страницу панели), для простоты навигации может повторять значение атрибута `path` +- `path` - обязательный, строка, путь к исходному коду панели в структуре каталогов WEB-приложения "Парус 8 - Панели мониторинга" (панели должны размещаться в "app/panels", в данном атрибуте указыватся только имя каталога, созданного для панели в "app/panels") +- `icon` - обязательный, строка, код иконки панели из символов шрифта [Google Material Icons](https://fonts.google.com/icons?icon.set=Material+Icons) (применяется при формировании галереи панелей, главного меню панелей и ссылок на рабочем столе) +- `showInPanelsList` - обязательный, принимает значения "true" или "false", определяет отображение ссылки на панель в галерее панелей, главном меню панелей, виджете рабочего стола +- `preview` - полный путь и имя файла из каталога "img" WEB-приложения "Парус 8 - Панели мониторинга" (в каталог могут быть добавлены пользовательские изображения), служит в качестве изображения панели в галерее панелей На рисунках ниже проиллюстрировано применение атрибутов элемента `Panel`. @@ -229,9 +224,9 @@ WEB-приложение "ПАРУС 8 Онлайн" поддерживает в Где: -- `Modules/p8-panels/#/` - путь к домашней странице WEB-приложения "Парус 8 - Панели мониторинга", указанный в атрибуте `Panels.urlBase` файла конфигурации "p8panels.config" -- `mode=DESKTOP` - параметр вызова домашней страниы WEB-приложения "Парус 8 - Панели мониторинга", обязывающий сформировать меню панелей в специальном формате, для интеграции в рабочий стол -- `group=ИМЯ_ГРУППЫ` - параметр вызова домашней страниы WEB-приложения "Парус 8 - Панели мониторинга", позволяющий ограничить набор формируемых ссылок на панели только одной их группой (см. выше описание атрибута `Panel.group` файла конфигурации "p8panels.config") +- `Modules/p8-panels/#/` - путь к домашней странице WEB-приложения "Парус 8 - Панели мониторинга", указанный в атрибуте `Panels.urlBase` файла конфигурации "p8panels.config" +- `mode=DESKTOP` - параметр вызова домашней страниы WEB-приложения "Парус 8 - Панели мониторинга", обязывающий сформировать меню панелей в специальном формате, для интеграции в рабочий стол +- `group=ИМЯ_ГРУППЫ` - параметр вызова домашней страниы WEB-приложения "Парус 8 - Панели мониторинга", позволяющий ограничить набор формируемых ссылок на панели только одной их группой (см. выше описание атрибута `Panel.group` файла конфигурации "p8panels.config") Место элемента `Frame` в структуре XML-конфигурации рабочего стола зависит от его текущего содержимого. Например, для рабочего стола по-умолчанию приложения "Планирование и учёт в проектах" это `Desktop\ContentContainer\Frame`: @@ -268,9 +263,9 @@ WEB-приложение "ПАРУС 8 Онлайн" поддерживает в Панель может быть вызвана из действия раздела Системы (только для WEB-клиента). Для это необходимо зарегистрировать (здесь и далее - настройка выполняется в приложении "Контрусктор отраслевых расширений" для соответствующих классов Системы) в разделе метод с кодом "P8PANELS_OPEN", при этом метод обязательно должен иметь "Тип метода" - "Встроенный", а "Доступность" - "Клиентский". Для метода необходимо настроить параметры: -- `SPANEL` - строка, обязательный, уникальное имя (`name`) той панели из "p8panels.config", которая должна быть открыта действием -- `SCAPTION` - строка, необязательный, заголовок вкладки WEB-приложения "ПАРУС 8 Онлайн", в которой будет открыта панель, если не задан - будет использовано видимое наименование панели (`caption`) из "p8panels.config" -- `NIDENT` - число, необязательный, но требуется если предполагается, что панель должна работать со списком отмеченных документов, параметр следует привязать к контексту "Идентификатор отмеченных записей" +- `SPANEL` - строка, обязательный, уникальное имя (`name`) той панели из "p8panels.config", которая должна быть открыта действием +- `SCAPTION` - строка, необязательный, заголовок вкладки WEB-приложения "ПАРУС 8 Онлайн", в которой будет открыта панель, если не задан - будет использовано видимое наименование панели (`caption`) из "p8panels.config" +- `NIDENT` - число, необязательный, но требуется если предполагается, что панель должна работать со списком отмеченных документов, параметр следует привязать к контексту "Идентификатор отмеченных записей" Указанные параметры - зарезервированы и могут выполнять только указанную функцию. Тем не менее, метод может иметь произвольный набор прочих параметров, необходимых для работы панели. Все параметры (кроме `SPANEL` и `SCAPTION` - они системные и требуется непосредственно для корректного откытия панели, но не для её работы) будут переданы в панель в виде GET-запроса. Получить их значения в коде панели можно применив специальный API фреймворка, реализованный в `NavigationCtx`: @@ -298,9 +293,9 @@ const MyPanel = () => { В настоящий момент в Системе можно зарегистрировать сколь угодно много методов с кодом "P8PANELS_OPEN", но не более одного в каждом разделе. Если есть необходимость открытия из одного раздела нескольких различных панелей, то рекомендуется: -- Реализовать дополнительную навигацию в открываемой панели -- Реализовать в КОР-действии параметр с выпадающим списком (или иным интерфейсным элементом), позволяющим пользователю выбрать какую именно панель ему необходимо открыть сейчас -- Определять значение параметра `SPANEL` КОР-метода "P8PANELS_OPEN" из контекста (документа, атрибута, каталога и т.п.), таким образом автоматически определяя открываемую панель +- Реализовать дополнительную навигацию в открываемой панели +- Реализовать в КОР-действии параметр с выпадающим списком (или иным интерфейсным элементом), позволяющим пользователю выбрать какую именно панель ему необходимо открыть сейчас +- Определять значение параметра `SPANEL` КОР-метода "P8PANELS_OPEN" из контекста (документа, атрибута, каталога и т.п.), таким образом автоматически определяя открываемую панель #### Настройка КОР-действия для вызова панели "Выдача сменного задания" из раздела "Сменные задания" @@ -312,10 +307,10 @@ const MyPanel = () => { 2. В дереве классов выберите "Сменные задания", а в списке классов - класс с кодом "CostJobs" 3. В спецификации "Методы", выбранного класса, зарегистрируйте новый метод со следующими атрибутами: -- `Мнемокод` - P8PANELS_OPEN -- `Наименование` - P8PANELS_OPEN -- `Тип метода` - Встроенный -- `Доступность` - Клиентский +- `Мнемокод` - P8PANELS_OPEN +- `Наименование` - P8PANELS_OPEN +- `Тип метода` - Встроенный +- `Доступность` - Клиентский 4. Для добавленного метода `P8PANELS_OPEN` в спецификации "Параметры" зарегистрируйте следующий набор параметров: @@ -327,14 +322,14 @@ const MyPanel = () => { 5. В спецификации "Действия", выбранного класса, зарегистрируйте новое действие со следующими атрибутами: -- `Тип` - Нестандартное -- `Код` - FCJOBS_OPEN_JOBS_MANAGE -- `Наименование` - Открытие панели "Выдача сменного задания" -- `Технология производства` - Конструктор -- `Реализующий метод` - P8PANELS_OPEN -- `Обработка записей` - Для одной текущей записи -- `Завершение транзакции` - После каждого вызова действия -- `Обновление выборки` - Не обновлять +- `Тип` - Нестандартное +- `Код` - FCJOBS_OPEN_JOBS_MANAGE +- `Наименование` - Открытие панели "Выдача сменного задания" +- `Технология производства` - Конструктор +- `Реализующий метод` - P8PANELS_OPEN +- `Обработка записей` - Для одной текущей записи +- `Завершение транзакции` - После каждого вызова действия +- `Обновление выборки` - Не обновлять 6. Для добавленного действия `FCJOBS_OPEN_JOBS_MANAGE` в спецификации "Параметры" зарегистрируйте следующий набор параметров: @@ -349,7 +344,7 @@ const MyPanel = () => { В открывшемся редакторе формы перейдите в режим редактирования всплывающего меню заголовка (закладка "Таблицы", таблица "CostJobs", затем кнопка "Редактор источника", установить фокус на форме представления данных щелчком мыши, затем пункт "Всплывающее меню" в "Инспекторе объектов"). Найдите в меню пункт, созданный Системой для действия, зарегистрированного на шаге 5 (как правило имеет метку, совпадающую с наименованием действия). Расположите (перетаскиванием) этот пункт меню сразу после пункта "Отработать исполнение по штрих-кодам". Укажите для этого пункта следующие параметры в "Инспекторе объектов": -- `Заголовок` - Выдать сменное задание… +- `Заголовок` - Выдать сменное задание… Закройте окна редакторов с сохранением изменений. @@ -365,10 +360,10 @@ const MyPanel = () => { 2. В дереве классов выберите "Сменные задания", а в списке классов - класс с кодом "CostJobs" 3. В спецификации "Методы", выбранного класса, зарегистрируйте новый метод со следующими атрибутами: -- `Мнемокод` - P8PANELS_OPEN -- `Наименование` - P8PANELS_OPEN -- `Тип метода` - Встроенный -- `Доступность` - Клиентский +- `Мнемокод` - P8PANELS_OPEN +- `Наименование` - P8PANELS_OPEN +- `Тип метода` - Встроенный +- `Доступность` - Клиентский 4. Для добавленного метода `P8PANELS_OPEN` в спецификации "Параметры" зарегистрируйте следующий набор параметров: @@ -380,14 +375,14 @@ const MyPanel = () => { 5. В спецификации "Действия", выбранного класса, зарегистрируйте новое действие со следующими атрибутами: -- `Тип` - Нестандартное -- `Код` - FCJOBS_OPEN_JOBS_MANAGE_MP -- `Наименование` - Открытие панели "Выдача сменного задания на участок" -- `Технология производства` - Конструктор -- `Реализующий метод` - P8PANELS_OPEN -- `Обработка записей` - Для одной текущей записи -- `Завершение транзакции` - После каждого вызова действия -- `Обновление выборки` - Не обновлять +- `Тип` - Нестандартное +- `Код` - FCJOBS_OPEN_JOBS_MANAGE_MP +- `Наименование` - Открытие панели "Выдача сменного задания на участок" +- `Технология производства` - Конструктор +- `Реализующий метод` - P8PANELS_OPEN +- `Обработка записей` - Для одной текущей записи +- `Завершение транзакции` - После каждого вызова действия +- `Обновление выборки` - Не обновлять 6. Для добавленного действия `FCJOBS_OPEN_JOBS_MANAGE_MP` в спецификации "Параметры" зарегистрируйте следующий набор параметров: @@ -402,7 +397,7 @@ const MyPanel = () => { В открывшемся редакторе формы перейдите в режим редактирования всплывающего меню заголовка (закладка "Таблицы", таблица "CostJobs", затем кнопка "Редактор источника", установить фокус на форме представления данных щелчком мыши, затем пункт "Всплывающее меню" в "Инспекторе объектов"). Найдите в меню пункт, созданный Системой для действия, зарегистрированного на шаге 5 (как правило имеет метку, совпадающую с наименованием действия). Расположите (перетаскиванием) этот пункт меню сразу после пункта "Отработать исполнение по штрих-кодам". Укажите для этого пункта следующие параметры в "Инспекторе объектов": -- `Заголовок` - Выдать сменное задание на участок… +- `Заголовок` - Выдать сменное задание на участок… Закройте окна редакторов с сохранением изменений. @@ -418,10 +413,10 @@ const MyPanel = () => { 2. В дереве классов выберите "Планы и отчеты производства изделий (спецификация)", а в списке классов - класс с кодом "CostProductPlansSpecs" 3. В спецификации "Методы", выбранного класса, зарегистрируйте новый метод со следующими атрибутами: -- `Мнемокод` - P8PANELS_OPEN -- `Наименование` - P8PANELS_OPEN -- `Тип метода` - Встроенный -- `Доступность` - Клиентский +- `Мнемокод` - P8PANELS_OPEN +- `Наименование` - P8PANELS_OPEN +- `Тип метода` - Встроенный +- `Доступность` - Клиентский 4. Для добавленного метода `P8PANELS_OPEN` в спецификации "Параметры" зарегистрируйте следующий набор параметров: @@ -433,14 +428,14 @@ const MyPanel = () => { 5. В спецификации "Действия", выбранного класса, зарегистрируйте новое действие со следующими атрибутами: -- `Тип` - Нестандартное -- `Код` - FCPRODPLANSP_OPEN_COST_PROD_PLANS -- `Наименование` - Открытие панели "Производственная программа" -- `Технология производства` - Конструктор -- `Реализующий метод` - P8PANELS_OPEN -- `Обработка записей` - Для одной текущей записи -- `Завершение транзакции` - После каждого вызова действия -- `Обновление выборки` - Не обновлять +- `Тип` - Нестандартное +- `Код` - FCPRODPLANSP_OPEN_COST_PROD_PLANS +- `Наименование` - Открытие панели "Производственная программа" +- `Технология производства` - Конструктор +- `Реализующий метод` - P8PANELS_OPEN +- `Обработка записей` - Для одной текущей записи +- `Завершение транзакции` - После каждого вызова действия +- `Обновление выборки` - Не обновлять 6. Для добавленного действия `FCPRODPLANSP_OPEN_COST_PROD_PLANS` в спецификации "Параметры" зарегистрируйте следующий набор параметров: @@ -455,8 +450,8 @@ const MyPanel = () => { В открывшемся редакторе формы перейдите в режим редактирования всплывающего меню спецификации (закладка "Таблицы", таблица "CostProductPlansSpecs", затем кнопка "Редактор источника", установить фокус на форме представления данных щелчком мыши, затем пункт "Всплывающее меню" в "Инспекторе объектов"). Найдите в меню пункт, созданный Системой для действия, зарегистрированного на шаге 5 (как правило имеет метку, совпадающую с наименованием действия). Расположите (перетаскиванием) этот пункт меню сразу после пункта "Формирование". Укажите для этого пункта следующие параметры в "Инспекторе объектов": -- `Заголовок` - Открыть диаграмму… -- `Правило доступности` - @nCATEGORY = 1 and @nSTATUS = 2 +- `Заголовок` - Открыть диаграмму… +- `Правило доступности` - @nCATEGORY = 1 and @nSTATUS = 2 Закройте окна редакторов с сохранением изменений. @@ -478,9 +473,9 @@ const MyPanel = () => { С точки зрения клиенсткой части, Панели представляют собой функциональные компоненты React, автоматически (благодаря описанному выше файлу конфигурации) встраиваемые в систему маршрутизации WEB-приложения "Парус 8 - Панели мониторинга" (далее "приложения" или "WEB-приложения", если контекст явно не указывает на иное). Каждая панель состоит из: -- Набора JS-объектов и функций, управляющих состоянием панели -- Функций для обмена данными с сервером БД Системы и выполнения бизнес-процедур в ней -- JSX разметки, отражающей смену состояния панели +- Набора JS-объектов и функций, управляющих состоянием панели +- Функций для обмена данными с сервером БД Системы и выполнения бизнес-процедур в ней +- JSX разметки, отражающей смену состояния панели Такая структура исходного кода панели продиктована архитектурными требованиями к функциональным React-компонентам. Каждая панель (и все необходимые для её функционирования JS-модули и вспомогательный файлы) размещается в отдельном каталоге (см. выше - "app/panels", здесь и далее каталоги указаны относительно корневого каталога размещения приложения, если явно не указано иное) WEB-приложения "Парус 8 - Панели мониторинга". @@ -524,15 +519,15 @@ c:\inetpub\p8web20\WebClient\Modules\P8-Panels>npm run build В состав API входят: -- `SERV_DATA_TYPE_STR` - константа для типа данных "строка", при описании параметров исполняемых хранимых объектов -- `SERV_DATA_TYPE_NUMB` - константа для типа данных "число", при описании параметров исполняемых хранимых объектов -- `SERV_DATA_TYPE_DATE` - константа для типа данных "дата", при описании параметров исполняемых хранимых объектов -- `SERV_DATA_TYPE_CLOB` - константа для типа данных "текст", при описании параметров исполняемых хранимых объектов -- `isRespErr` - функция, проверка результата исполнения серверного объекта на наличие ошибок -- `getRespErrMessage` - функция, получение ошибки исполнения серверного объекта -- `getRespPayload` - функция, получение выходных значений, полученных после успешного исполнения -- `executeStored` - функция, асинхронное исполнение хранимой процедуры/функции БД Системы -- `getConfig` - функция, асинхронное считывание параметров конфигурации, определённых в "p8panels.config" (возвращает их JSON-представление) +- `SERV_DATA_TYPE_STR` - константа для типа данных "строка", при описании параметров исполняемых хранимых объектов +- `SERV_DATA_TYPE_NUMB` - константа для типа данных "число", при описании параметров исполняемых хранимых объектов +- `SERV_DATA_TYPE_DATE` - константа для типа данных "дата", при описании параметров исполняемых хранимых объектов +- `SERV_DATA_TYPE_CLOB` - константа для типа данных "текст", при описании параметров исполняемых хранимых объектов +- `isRespErr` - функция, проверка результата исполнения серверного объекта на наличие ошибок +- `getRespErrMessage` - функция, получение ошибки исполнения серверного объекта +- `getRespPayload` - функция, получение выходных значений, полученных после успешного исполнения +- `executeStored` - функция, асинхронное исполнение хранимой процедуры/функции БД Системы +- `getConfig` - функция, асинхронное считывание параметров конфигурации, определённых в "p8panels.config" (возвращает их JSON-представление) При формировании ответов, функции, получающие данные с сервера, возвращают типовые значения: @@ -552,9 +547,9 @@ c:\inetpub\p8web20\WebClient\Modules\P8-Panels>npm run build Где: -- `SSTATUS` - строка, состояние исполнения (`"OK"` - успех или `"ERR"` - ошибка) -- `XPAYLOAD` - объект, полезная нагрузка, данные полученные от серверного объекта (отсутствует, если `SSTATUS = "ERR"`) -- `SMESSAGE` - строка, текст сообщения об ошибке (отсутствует, если `SSTATUS = "OK"`) +- `SSTATUS` - строка, состояние исполнения (`"OK"` - успех или `"ERR"` - ошибка) +- `XPAYLOAD` - объект, полезная нагрузка, данные полученные от серверного объекта (отсутствует, если `SSTATUS = "ERR"`) +- `SMESSAGE` - строка, текст сообщения об ошибке (отсутствует, если `SSTATUS = "OK"`) #### `boolean isRespErr(Object)` @@ -719,12 +714,12 @@ const MyPanel = () => { В состав API входят: -- `pOnlineShowTab` - функция, отображение типовой закладки "ПАРУС 8 Онлайн" -- `pOnlineShowUnit` - функция, отображение раздела "ПАРУС 8 Онлайн" в модальном режиме или на закладке -- `pOnlineShowDocument` - функция, отображение раздела "ПАРУС 8 Онлайн" в модальном режиме (или на закладке) с позиционированием/отбором по документу -- `pOnlineShowDictionary` - функция, отображение раздела "ПАРУС 8 Онлайн" в режиме словаря -- `pOnlineUserProcedure` - функция, исполнение "Пользовательской процедуры" -- `pOnlineUserReport` - функция, печать "Пользовательского отчёта" +- `pOnlineShowTab` - функция, отображение типовой закладки "ПАРУС 8 Онлайн" +- `pOnlineShowUnit` - функция, отображение раздела "ПАРУС 8 Онлайн" в модальном режиме или на закладке +- `pOnlineShowDocument` - функция, отображение раздела "ПАРУС 8 Онлайн" в модальном режиме (или на закладке) с позиционированием/отбором по документу +- `pOnlineShowDictionary` - функция, отображение раздела "ПАРУС 8 Онлайн" в режиме словаря +- `pOnlineUserProcedure` - функция, исполнение "Пользовательской процедуры" +- `pOnlineUserReport` - функция, печать "Пользовательского отчёта" #### `String pOnlineShowTab(Object)` @@ -944,11 +939,11 @@ const P8Online = ({ title }) => { ##### Компоненты MUI -В состав фреймворка включена библиотека [MUI](https://mui.com/) версии 5. При разработке панелей могут быть использованы интерфейсные компоненты и разметка, поставляемые с ней. +В состав фреймворка включена библиотека [MUI](https://v5.mui.com/) версии 5 (далее - `MUI5`). При разработке панелей могут быть использованы интерфейсные компоненты и разметка, поставляемые с ней. ![Компоненты MUI](docs/img/61.png) -Сочетая компоненты библиотеки [MUI](https://mui.com/) и описанный выше API для взаимодействия с Системой можно реализовать пользовательский интерфейс любой сложности. Для подключения компонента к панели достаточно импортировать его из модуля `"@mui/material"`. +Сочетая компоненты библиотеки [MUI5](https://v5.mui.com/) и описанный выше API для взаимодействия с Системой можно реализовать пользовательский интерфейс любой сложности. Для подключения компонента к панели достаточно импортировать его из модуля `"@mui/material"`. ![Пример использования MUI](docs/img/62.png) @@ -1096,7 +1091,7 @@ const Mui = ({ title }) => { ``` -Более подробно ознакомиться с исходным кодом примера можно в "app/panels/samples/mui.js". Документация по интерфейсным компонентам, включённым в [MUI](https://mui.com/) доступна на официальном сайте библиотеки. +Более подробно ознакомиться с исходным кодом примера можно в "app/panels/samples/mui.js". Документация по интерфейсным компонентам, включённым в [MUI5](https://v5.mui.com/) доступна на официальном сайте библиотеки. > **Обратите внимание:** описываемые далее высокоуровневые компоненты фреймворка "Панели" построены, в том числе, с применением интерфейсных примитивов MUI. Как правило, они имеют префикс `P8P*` в имени: `P8PAppMessage`, `P8PAppInlineMessage`, `P8PAppProgress`, `P8PDataGrid` и т.д. @@ -1346,8 +1341,8 @@ const Loader = ({ title }) => { В отличие от рассмотренных выше, компоненты данного класса предназначены для решения специфических прикладных задач и, как правило: -- состоят из значительного числа интерфейсных примитивов -- имеют специальный API на стороне сервера БД Системы для управления их содержимым +- состоят из значительного числа интерфейсных примитивов +- имеют специальный API на стороне сервера БД Системы для управления их содержимым Необходимо понимать, что с одной стороны, наличие серверного API в БД значительно упрощает взаимодействие с компонентом, с другой стороны - ограничивает возможности его применения только теми прикладными задачами и функциональными возможностями, которые заложены в него. При этом "примитивы" HTML и MUI, хоть и сложнее в применении, но позволяют "собирать" практически любые интерфейсные решения на вкус разработчика. @@ -1355,13 +1350,13 @@ const Loader = ({ title }) => { Предназначена для формирования табличных представлений данных с поддержкой: -- постраничного вывода данных -- сортировки и отбора данных по колонкам на стороне сервера БД -- сложных заголовков с возможностью отображения/сокрытия уровней -- разворачивающихся строк (accordion) -- группировки строк с возможностью отображения/сокрытия содержимого группы -- фиксации заголовка -- фиксацией колонок слева +- постраничного вывода данных +- сортировки и отбора данных по колонкам на стороне сервера БД +- сложных заголовков с возможностью отображения/сокрытия уровней +- разворачивающихся строк (accordion) +- группировки строк с возможностью отображения/сокрытия содержимого группы +- фиксации заголовка +- фиксацией колонок слева ![Пример P8PDataGrid](docs/img/66.png) @@ -2077,14 +2072,14 @@ const Chart = ({ title }) => { Компонент предназначен для отображения данных в виде диаграммы Ганта. Основан на библиотеке [Frappe-Gantt](https://frappe.io/gantt). Поддерживается: -- Редактирование сроков задачи перетаскиванием -- Отображение и редактирование прогресса задачи -- Установка признаков "только для чтения" для всей диаграммы и отдельной задачи (для сроков и прогресса задачи - независимо) -- Форматирование цвета заливки и текста задачи -- Дополнение задачи произвольными учётными атрибутами -- Диалоговый редактор задачи, отображающий её дополнительные атрибуты с возможностью настройки их форматирования -- Отображение связей между задачами -- Отображение произвольного пользовательского диалога в качестве карточки задачи/редактора задачи +- Редактирование сроков задачи перетаскиванием +- Отображение и редактирование прогресса задачи +- Установка признаков "только для чтения" для всей диаграммы и отдельной задачи (для сроков и прогресса задачи - независимо) +- Форматирование цвета заливки и текста задачи +- Дополнение задачи произвольными учётными атрибутами +- Диалоговый редактор задачи, отображающий её дополнительные атрибуты с возможностью настройки их форматирования +- Отображение связей между задачами +- Отображение произвольного пользовательского диалога в качестве карточки задачи/редактора задачи ![Пример P8PGantt](docs/img/68.png) ![Пример P8PGantt (редактор)](docs/img/69.png) @@ -2434,9 +2429,9 @@ const Gantt = ({ title }) => { Компонент предназначен для отображения изображений в формате SVG. Поддерживается: -- Режим галереи с зацикленным переключением между несколькими переданными компоненту изображениями -- Обработка событий `onClick` для изображения в целом и `onItemClick` для отдельных замкнутых контуров и групп, имеющих атрибут `id` -- Управление цветом и прозрачностью заливки отдельных замкнутых контуров и их групп +- Режим галереи с зацикленным переключением между несколькими переданными компоненту изображениями +- Обработка событий `onClick` для изображения в целом и `onItemClick` для отдельных замкнутых контуров и групп, имеющих атрибут `id` +- Управление цветом и прозрачностью заливки отдельных замкнутых контуров и их групп ![Пример P8PSVG](docs/img/71.png) @@ -2577,12 +2572,12 @@ const Svg = ({ title }) => { Компонент предназначен для отображения данных в виде циклограммы. Поддерживается: -- Группировка задач с отображением описания группы при наведении -- Форматирование цвета заливки задачи, текста задачи и цвета при наведении на задачу/группу -- Дополнение задачи произвольными учётными атрибутами -- Диалоговый редактор задачи, отображающий её дополнительные атрибуты с возможностью настройки их форматирования -- Отображение произвольного пользовательского диалога в качестве карточки задачи/редактора задачи -- Масштабирование визуального представления +- Группировка задач с отображением описания группы при наведении +- Форматирование цвета заливки задачи, текста задачи и цвета при наведении на задачу/группу +- Дополнение задачи произвольными учётными атрибутами +- Диалоговый редактор задачи, отображающий её дополнительные атрибуты с возможностью настройки их форматирования +- Отображение произвольного пользовательского диалога в качестве карточки задачи/редактора задачи +- Масштабирование визуального представления ![Пример P8PCyclogram](docs/img/72.png) ![Пример P8PCyclogram](docs/img/73.png) @@ -3081,12 +3076,12 @@ export { Cyclogram }; Компонент предназначен для отображения данных в виде индикатора. Поддерживается: -- Цветовая индикация предопределёнными цветами в зависимости от состояния (не определено, позитивное, негативное, пограничное) -- Цветовая индикация пользовательскими цветами -- Обработка нажатий -- Отображение иконки -- Упрвление внешним видом (парение, рамка) -- Интерактивные подсказки +- Цветовая индикация предопределёнными цветами в зависимости от состояния (не определено, позитивное, негативное, пограничное) +- Цветовая индикация пользовательскими цветами +- Обработка нажатий +- Отображение иконки +- Упрвление внешним видом (парение, рамка) +- Интерактивные подсказки ![Пример P8PIndicator](docs/img/74.png) @@ -3165,9 +3160,9 @@ const MyPanel = () => { Фреймворк позволяет реализовать любые пользовательские интерфейсы, вёрстка которых не противоречит возможностям современного HTML. Тем не менее, при разработке пользовательских интерфейсов панелей важно придерживаться предложенных ниже правил. Это позволит создавать их в едином ключе и упростит работу конечного пользователя при их освоении. -- Избегайте нестандартных реакций элементов пользовательского интерфейса на действия пользователя. Например, выпадающий список, при активации, должен отображать состав своих элементов, а не вызывать бизнес-функцию отработки документа. -- Избегайте прямого применения HTML-тэгов. В библиотеке [MUI](https://mui.com/), включенной в состав фреймворка, есть всё необходимое для сборки интерфейса. -- Старайтесь не применять `
` для всёрстки - для этого в [MUI](https://mui.com/) есть группа компонентов разметки ("Layout"), используйте их (`Grid`, `Box`, `Container`, `Stack`, `Paper` и пр.). -- Старайтесь не использовать, без острой необходимости, атрибуты `sx` и `style` - всё необходимое для стилизации как правило есть в типовых атрибутах компонента [MUI](https://mui.com/), изучите его документацию. Если применение собственного стиля неизбежно - старайтесь выносить стили в единое место в коде, переиспользовать их, и импортировать там, где это необходимо. -- Придерживайтесь единой цветовой гаммы при реализации всех панелей (в идеале) или, если не удаётся, панелей, отнесённых к одному прикладному участку (ПУДП, УЗСР, БУ, ПУП и т.п.). -- Изучите и применяйте `ThemeProvider` из состава инструментов стилизации библиотеки [MUI](https://mui.com/) для придания индивидуальности панелям и их компонентам. +- Избегайте нестандартных реакций элементов пользовательского интерфейса на действия пользователя. Например, выпадающий список, при активации, должен отображать состав своих элементов, а не вызывать бизнес-функцию отработки документа. +- Избегайте прямого применения HTML-тэгов. В библиотеке [MUI5](https://v5.mui.com/), включенной в состав фреймворка, есть всё необходимое для сборки интерфейса. +- Старайтесь не применять `
` для всёрстки - для этого в [MUI5](https://v5.mui.com/) есть группа компонентов разметки ("Layout"), используйте их (`Grid`, `Box`, `Container`, `Stack`, `Paper` и пр.). +- Старайтесь не использовать, без острой необходимости, атрибуты `sx` и `style` - всё необходимое для стилизации как правило есть в типовых атрибутах компонента [MUI5](https://v5.mui.com/), изучите его документацию. Если применение собственного стиля неизбежно - старайтесь выносить стили в единое место в коде, переиспользовать их, и импортировать там, где это необходимо. +- Придерживайтесь единой цветовой гаммы при реализации всех панелей (в идеале) или, если не удаётся, панелей, отнесённых к одному прикладному участку (ПУДП, УЗСР, БУ, ПУП и т.п.). +- Изучите и применяйте `ThemeProvider` из состава инструментов стилизации библиотеки [MUI5](https://v5.mui.com/) для придания индивидуальности панелям и их компонентам.