Технологически, представляет из себя библиотеку Python (pip install uiweb) которая умеет читать конфигурации SimpleUI (ui-файлы) и создавать веб приложения, которые могут быть развернуты в локальной сети или у любого хостинг-провайдера, который поддерживает Python, flask и вот это вот все. При этом веб приложения написаны с использованием web-сокетов для обеспечения высокой производительности и отзывчивости интерфейса и реализации более глубокого асинхрона и разнообразного взаимодействия через сокеты. В процессе работы библиотека генерит чистый html+CSS+JS, JQuery код и вставляет его динамически, т.е. элементы инерфейса, обработчики событий – все это создается на лету, адресно. Все с открытым кодом под GPLv3.
Деплой сделан максимально просто насколько это возможно. Разработку также как и в симпле можно вести через онлайн обработчики (например в 1С), но лучше через Python или совмещать и то, и то. Т.е. это может быть чисто тонкий клиент от 1С, например, но лучше часть первичной логики вынести в пайтон, чтобы это выполнялось локально
С отладкой Python-скриптов в отличие от мобильной версии можно не заморачиваться – она есть сразу. Также с подключением библиотек – все полноценно. Отсюда следует вывод что если надо будет на уровне сервера (этот как бы уровень «оффлайн» в терминологии мобильного клиента) организовать СУБД то в качестве ORM можно использовать SQL Alсhemi а не Pony, а в качестве самой СУБД, например, PostgreSQL, а не SQLite – что радует.
Сие изделие предназначено для разработки именно веб-приложений или облачных приложений, а не сайтов, например. Потому что сокеты, потому что нет оптимизации под все браузеры и все экраны, на мобильных браузерах тоже не стоит запускать пока (для мобильных есть SimpleUI), – это чисто под дексктоп на Chrome, все на HTML5 и т.д. Т.е. это может быть:
- Какой то фронт для, к примеру, 1С – B2B кабинет, корзина, оформление документов. То, что может жить себе самостоятельно и хоститься на обычном хостинге, без необходимости выставлять 1С наружу. Не обязательно со стороны 1С делать даже сервис – обмен может быть односторонний
- Просто самостоятельное приложение – например облачная WMS, тем более теперь для этого все есть – и мобильная платформа, и десктопная и даже заготовка на PostgreSQL есть
Так как стек разработки не меняется, нет смысла писать отдельную документацию – и принципы, и частности, все то же самое.
Имеет смысл перечислить отличия в приемах разработки от мобильной версии и привести список доступных команд:
- В Web все открывается в новых отдельных вкладках, можно открыть один и тот же процесс в нескольких вкладках и, естественно, из него также открыть другие вкладки, поэтому хоть ShowScreen и поддерживается, в большинстве случаев лучше открывать вкладку через OpenScreen, вместо FinishProcess – CloseTab – закрытие текущей вкладки.
- Все свойства элементов полностью поддерживаются и аналогичны мобильной версии (включая свойства контейнеров), но в веб дополнительно к элементам можно применить стиль CSS (например сделать тень, закруглить углы и т.д.)
- В веб версии есть закладки, в мобильной пока не планируется
- Асинхронный обработчик, запущенный из вкладки, передаст данные в него, даже если вкладка не активна, вообще переменные и обработчики связаны с текущей открытой вкладкой, на другой вкладке будут соответственно уже другие переменные
На текущий момент в релизе 0.5.0 поддерживается:
- Все свойства визуальных элементов и контейнеров + CSS
- Надписи в html в элементах, диалогах и т.д.
- Свойства процессов «не отображать в меню», «логин»
- Отдельный, настраиваемый вид меню
- Визуальные элементы:
o Контейнеры
o Группы закладок и закладки
o Надпись
o Кнопка
o Галочка
o Поле ввода строка
o Поле ввода число
o Поле ввода пароль
o Поле ввода с генерацией событий
o Многострочное поле ввода
o Дата
o Список значений
o Флажок
o Картинка
o Таблицы, включая редактирование в строках, встроенную сортировку, поиск и т.д.+ все что было в мобильной
o Список карточек с активными элементами (CustomCards)
Команды-переменные на текущий момент:
- SetValues,SetValuesTable,SetValuesCards, SetValuesPulse – установка значений на лету, в т.ч. из асинхрона
- CloseTab – аналог FinishProcess для текущей вкладки
- LoginCommit – загрузка меню процессов после логина
- OpenScreen – открыть экран в новой вкладке
- SetTitle - установить заголовок вкладки
- ShowScreen – открыть экран в текущей вкладке
- toast - быстрое сообщение
- basic_notification – уведомление
- ShowDialog и ShowDialogStyle – открытие диалога
- beep – звуковой сигнал
Опубликованную в облаке демку можно посмотреть тут (просьба не менять конфу на другую - это лучше сделать в своем сервере): http://45.147.176.237:1555/
Для установки у себя или на своем хостинге нужно (тут написан упрощенный вариант):
1) Скачать с GitHub эту папку со стартовым скриптом app.py: https://github.com/dvdocumentation/simpleweb
2) Установить зависимости:
pip install -r requirements.txt
и желательно еще потом обновлять саму библиотеку uiweb (которая и есть Simple), так как обновления выходят часто:
pip install uiweb --upgrade
3) Запустить приложение app.py:
python3 app.py
4) Приложение доступно по адресу http://localhost:1555/ после чего можно зайти в админку (http://localhost:1555/admin) и поставить конфигурацию (ui-файл), при необходимости файл с питоновскими обработчиками и путь к веб-сервису если есть. На этом настройка закончена, можно пользоваться.
Для разработки желательно использовать последнюю версию конструктора(12.12.22): https://disk.yandex.ru/d/I93xaQHvcXYSEw
Также подписывайтесь на мой телеграмм канал, чтобы быть в курсе событий по обоим проектам https://t.me/devsimpleui
Также есть видео о особенностях работы именно в веб версии: https://youtu.be/Ukxjhh5eCiA