Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/rails ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/Alterator/rails за 2008-03-18 14:39:09..

Form based interface

Разделение сущностей


Как показал опыт эксплуатации alterator, главная проблема с которой сталкивается пользователь этой системы – создание динамического интерфейса. Бакенд пишется мгновенно, а как только требуется изобразить что-то на экране – возникает полное непонимание того как:


Проект FBI (сокращение от Form Based Interface) призван решить эту проблему. Типичный модуль конфигуратора делится на следующие составляющие:

Дизайн

Eдиный стиль и оформление рисует дизайнер, очень редко требуется сделать незначительные поправки для конкретного модуля. В репозитории пакетов, можно найти несколько готовых дизайнов под разные дистрибутивы.

Workflow

Большинство диалогов имеют одну и ту же логику заполнения шаблона, часть особенных случаев решается заданием дополнительных параметров. Вместе с FBI поставляется набор самых распространённых workflow, таких как: form (форма) и card-index (картотека).

Визуальные эффекты

Эффекты также повторяются от формы к форме. На лицо сильное повторное использование компонент. Большую часть работы (за исключением написания бакенда) для автора модуля уже сделали другие разработчики. Вместе с FBI поставляется набор самых распространённых визуальных эффектов. Например возможно добавить возможности AJAX при работе с card-index и тем самым сильно приблизить поведение web-приложения к традиционному GUI.

Первый модуль


Сделаем простейший модуль, который будет считывать и записывать два параметра в некоторый конфигурационный файл.

Рабочий каталог

Все модули alterator имеют единую внутреннюю структуру. В принципе никто не запрещает вольностей, но при использовании стандартной раскладки, можно воспользоваться удобными функциями отладки модуля и готовыми правилами для make.
В нашем примере используются следующие каталоги:

Бакенд


Пользуясь любимым языком программирования системных администраторов shell, пишем бакенд, который занимается важным делом, управлением конфигурационным файлом от приложения foo.



Находясь в рабочем каталоге убеждаемся что бакенд работает:

Шаблон


Теперь давайте нарисуем шаблон формы.
Внешне она выглядит так:



А html-код продемонстрирован ниже:


Как видите, самая обычная форма, но ... с одной маленькой хитростью. Имена полей совпадают с именами параметров объекта в представлении бакенда.
В данном примере сделаны некоторые попытки украсить внешний вид, но, в принципе, можете оставить эту работу дизайнеру.


Шаг 3. Фронтенд.


Данный пример замечательно подходит под модель «форма», то есть пользователь проводит изменения, нажимает на кпопку submit и в системе модифицируются сетевые настройки.


Связывание backend и frontend происходит с помощью вспомогательного бакенда, который отвечает на запрос template сдедующее:



Этим сказано, что бакенд /net-general желает иметь интерфес с логикой работы типа “form” (или говоря правильными терминами frontend по имени form) и предлагает использовать html-файл, размещённый по указанному адресу в качестве «затравки» ( не исключаю что возможны frontend с элементами искуственного интеллекта, которым можно передать текстовый файл с перечилением идей).


Замечание: вспомогательный бакенд существует отдельно по одной единственной причине, чтобы отделить логику представления от логики работы. Если вам лень городить дополнительные файлы, то можно сделать символическую ссылку template-<backend> на <backend> и научить свой бакенд отвечать на вопрос template.


Шаг 4. Браузер.


Ну вот собственно и всё. Запускаем fbi, запускаем браузер, идём по адресу http://hostname/fbi-bin/alterator-template.scm/net-general и наблюдаем результат:



Вот и собственно и всё ... форма заполнилась данными, подключились constraints (требуемое поле выделенно звёздочкой, ненужные поля погашены). Можно переходить к написанию следующих конфигураторов.


 
Файлов нет. [Показать файлы/форму]
Один комментарий. [Показать комментарии/форму]