Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


О Notes

Главная   Библиотека   О Notes

Отображение данных на WEB странице. Часть 2. Панель с закладками

Долгоаршинных Нурислям Нуруллович
Санкт-Петербург

Данный материал является продолжением темы начатой в первой части >>>. Прежде, чем двигаться далее, целесообразно выполнить некоторый рефакторинг примеров первой части, в соответствии с замечаниями, высказанные в комментариях к статье:

  • @DbLookup, начиная с версии 6, поддерживает дополнительный параметр, который может принимать значение: [FAILSILENT] - returns "" (null string) instead of an error if the key cannot be found. Благодаря чему, уже отпадает необходимость в проверке с @IsError.
  • В приведенных примерах в представления, использованных для отбора документов задействовано много колонок и относительно сложных формул. Все это приводит к тому, что индексатору требуется большее время проиндексировать представление, да и @DbLookup начинает возвращать меньше данных, «благодаря» своему ограничению. Поэтому ограничимся одной колонкой в представлении, в которой выводится только UNID документа. Соответственно в поле с типом Computed by display будет список UNID отобранных документов, по которому в <Computed Text> и будут формироваться требуемые HTML-коды.

Таким образом, например, для формирования маркированного списка ссылок на форме имеем:
<h2>1. Маркированный список</h2>

<ul><Computed Value> </ul>
где интересующие нас объекты вычисляются по следующим формулам:
Объект
Формула
поле Data4ViewHost :="";
Base:="";
View :="data4View";
Column := 2;
Key:="К";
List:=@DbLookup( "":"NoCache"; Host:Base ; View; Key; Column;[FAILSILENT]);
@Subset(List;5)
Колонка 2
представления «data4View»
@Text(@DocumentUniqueID)
<Computed Value> Temp:="";
@For(n :=1; n<=@Elements(Data4View); n:= n + 1;
Temp :=Temp+ "<li><a href="+Data4View[n]+"?OpenDocument> "+@GetDocField(Data4View[n];"Name")+"</a></li>");
Temp
Кроме того, необходимо отметить, что целью данной статьи не является рассказ об HTML, Javascript, CSS, jQuery и прочих вещах, которые используются при разработке WEB-приложений на любых платформах. Предполагается, что разработчики с такими смежными технологиями и спецификациями знакомы. В конце статьи приведены ресурсы, которые могут быть полезны при разработке и чтении данного материала. Предназначением данной публикации является показ примеров использования HTML, Javascript, CSS, jQuery и т.п. при разработке WEB-приложений применительно к Lotus Domino/Notes, знание которого тоже предполагается по умолчанию.

Формирование панели с закладками

Для реализации панели с закладками воспользуемся плагином ui.tabs.js, который доступен на сайте jQuery.com. Плагин ui.tabs.js, ядро виджетов ui.core.js и соответствующая CSS должны быть подключены на форме вместе с библиотекой jQuery любым из доступных способов.
Принцип действия данного плагина в простейшем варианте заключается в преобразовании следующего исходного HTML-кода:
<div id="tabs">
<ul>
<li><a href="#tabs-1">Первая закладка</a></li>
<li><a href="#tabs-2">Вторая закладка</a></li>
<li><a href="#tabs-3">Третья закладка</a></li>
</ul>
<div id="tabs-1">
<p>Содержимое первой закладки </p>
</div>
<div id="tabs-2">
<p>Содержимое второй закладки </p>
</div>
<div id="tabs-3">
<p>содержимое третьей закладки</p>
</div>
</div>
А затем, по завершению загрузки страницы, остается только выполнить
$(“#tabs”).tabs(); И все!
Причем необходимо отметить, что подобная панель с закладками может использоваться не только для визуализации данных, но и для целей навигации по сайту, т.к. плагин обладает широкими интерфейсными возможностями. Например, закладка может открываться при наведении на нее курсора мыши, имеются возможности применения анимационных эффектов и проч.
Практическая реализация панели с закладками может быть осуществлена путем создания HTML кода по приведенному выше шаблону или на основании данных из базы Lotus Notes подобно примерам, рассмотренным в предыдущей статье.
В данном примере потребуется два вычисляемых объекта <Computed Text>, значение которых будет, как HTML код, подставлено в тело формы:
<div id="tabs">
<ul><Computed Value1></ul>
<Computed Value2>
</div>
где вычисляемые тексты формируются соответствующими формулами:
Формула
<Computed Value1>Temp:="";
@For(n :=1; n<=@Elements(Data4Tabs); n:= n + 1;
Temp :=Temp+ "<li><a href=\"#"+Data4Tabs[n]+"\">"+@GetDocField(Data4Tabs[n];"Name")+"</a></li>");
Temp
<Computed Value2>Temp:="";
@For(n :=1; n<=@Elements(Data4Tabs); n:= n + 1;
Temp :=Temp+ "<div id=\""+Data4Tabs[n]+"\">"+@GetDocField(Data4Tabs[n];"Name")+" Индекс"+@GetDocField(Data4Tabs[n];"INDEX")+"</div>");
Temp
Результат:

Получили в браузере диалоговый элемент, в котором наименование закладок, их количество и некоторое содержание сформировано из разных документов базы данных Lotus Notes.
В приведенном примере содержимое закладки формировалось согласно формулы колонки 3. Кроме всего прочего, библиотека jQuery позволяет загружать данные из заданных источников следующим образом:
$(“селектор”).load(“адрес загрузки”);
В качестве адреса загрузки может выступать как селектор на данной странице, так и URL адрес.
Для реализации механизма загрузки добавим
<div id="tabs">
<ul><Computed Value1></ul>
<Computed Value2>
</div>
<script type="text/javascript">
<Computed Value3>
</script>

Где <Computed Value3> вычисляется по формуле:
Формула
<Computed Value3>Temp:="";
@For(n :=1; n<=@Elements(Data4Tabs); n:= n + 1;
Temp :=Temp+ "$(\"#"+Data4Tabs[n]+"\").load(\"/"  + @WebDbName + "/view4Tab/"+Data4Tabs[n]+"\" );");
Temp

    В результате получим загрузку документа с данными и элементами дизайна.

    Загрузка контента, внешнего вида и ряда интерфейсных возможностей также может быть прописана в виде имеющихся свойств и методов плагина.
    Наверно, в данном месте или еще раньше, должен возникнуть вопрос: а почему не создать в Designer таблицу с соответствующими настройками:

    Ответ: да можно и в большинстве случаев этого варианта достаточно. Задавая соответствующие значения на закладках панели свойств объекта «Table» можно получить требуемую панель с закладками, которая будет одинаково хорошо смотреться и в клиенте Lotus Notes и в WEB браузере. Но панель, в определенной мере, будет статичной и независящей от информации в БД. В таком варианте невозможно менять количество и место расположения закладок, тексты заголовков. Также статичной будет информация на закладках. Применение библиотеки jQuery позволит расширить возможности стандартной таблицы Lotus Notes и даже без каких либо плагинов, в том числе и вышеуказанного.
    Рассмотрим пример реализации. Для начала создадим в Lotus Designer простейшую таблицу вида:

    Сервер Lotus Domino «сгенерил на лету» следующий код (показано в упрощенном виде):
    <style type="text/css">
    .dominoTopTab { border-left:solid thin #e0…. }
    .dominoSelTopTab { border-left:solid thin #e0 … }
    .dominoBottomTab { border-left:solid thin #e0e0e0; …. }
    .dominoSelBottomTab { border-left:solid …. }
    </style>

    <table cellspacing="2" cellpadding="2">
    <tr>
    <td class="dominoSelTopTab"><b>Заголовок 1</b></td>
    <td class="dominoTopTab"><a name="1."  href="/data4View.nsf/dd4163…..fd2?OpenDocument&amp; TableRow=1.1#1." target="_self">Заголовок 2</a></td>
    <td class="dominoTopTab"><a name="1." href="/data4View.nsf/dd416380….01cefd2?OpenDocument&amp;TableRow=1.2#1." target="_self">Заголовок 3</a></td>
    </tr>
    </table>

    <table width="100%" border="1">
    <tr valign="top"><td width="100%">Text 1</td></tr>
    </table>

    В коде явно выделяются три блока: CSS для заголовков, таблица с заголовками и таблица текущей панели. С приведенными тегами и атрибутами можно манипулировать в соответствии с методами и свойствами объектов jQuery.
    Так цвета закладок можно поменять следующим образом:
    $(".dominoSelTopTab" ).css("background-color","yellow");
    $(".dominoTopTab" ).css("background-color","Lavender");
    А так можно вставить или заменить текст на закладке:
    $("table:first td:first").text("Поиск") ;
    Или текст на панели:
    $("#IDCell").text("Текст вставленный с помощью JQuery");
    А при необходимости, открыть форму, представление или документ с данными и соответствующим дизайном:
    $("#IDCell").load("/"+webDBName+"/$$Search?Openform");

    Результат:

    На соответствующей закладке панели свойств объекта Table целесообразно дополнительно прописывать необходимые теги и атрибуты, которые сервер Lotus Domino включит в HTML код.

    Ввиду некоторых особенностей, сгенерированного сервером Lotus Domino HTML-кода, данный метод менее функциональный, чем вариант на основе плагина, но вполне достаточен для многих приложений. Использованный плагин обладает широким набором методов и свойств для построения сложных и многофункциональных WEB приложений.

    Продолжение следует.

    Благодарности

    Николаю Норкину - за обработку текста перед публикацией.
    Александру Еремину - за полезные замечания к первой части.

    Призыв

    WEB-программисты, шире используйте возможности jQuery в разработках приложений на платформе Lotus Domino/Notes!

    Ресурсы:

    Сайт библиотеки jQuery- http://jquery.com
    Бер Бибо, Иегуда Кац. jQuery Подробное руководство по продвинутому JavaScript. Санкт-Петербург- Москва. Символ. 2009
    Блог LinkExchanger Blog -http://www.linkexchanger.su
    Интерактивный справочник по jQuery - http://visualjquery.com
     
      Опубликовано — 06/03/2009 |    

    lmike, 13.06.2009 14:05:27:
    небольшое пояснение... я речь виду именно о выводе инфы при отображении из элементов дизайна
    тобишь "управление" перенести на клиента (чтобы рулить отображением), а не оставлять в дизайнере

    lmike, 11.06.2009 21:21:26:
    обезличить - значит не точить "выход" под jQuery (например)
    и не править доминошный хтмл код
    а дальше пишем "клиентскую" часть и она м.б. разной


    DNN, 10.06.2009 11:23:56:
    А что значит "обезличить" код? И что понимается под "доводкой"?
    Получить от Lotus Domino данные в виде XML это не проблема, а что дальше?

    lmike, 08.06.2009 14:58:01:
    мои чисто теоретические соображения...
    замечательная метода (ИМХО).
    Есть одна деталь - мы генерим ХТМЛ, уже подогнанный под библиотеку на клиенте, либо "правим" доминошную генерацию
    однако есть желание "обезличить" код и переложить его доводку на клиента
    один из способов - получать из домины ХМЛ



    Добавить комментарий
    Имя * :
    e-mail
    Комментарий * :
    Код подтверждения * :


    Мероприятия
    Пресс-релизы
    Биржа труда
    Последнее на форуме
     
    А так же:
    Как удалить профиль?
    16.04.2016 00:08:51
    Скопировать в буфер поле документа
    24.05.2015 08:55:52
    Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
    16.04.2015 16:49:58
     
    © LOGOSPHERE.RU