Изменение основной формы для голосования




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

1. Заголовок оформляется в виде простого текста Карточка участника голосования. Отметим, что часть заголовка формы является статической, а часть – вычисляемой. Для вычисляемой части используется поле типа Computed for display, которое будет определяться по значению полей Фамилия, Имя, Отчество участника голосования.

Возможно также использование вычисляемого текста Computed Text. Это поле со свойствами текста и формулой, по которой этот текст вычисляется. Вставить данный тип текста можно с помощью команд Created /Computed Text. В окне формул вводится формула для формирования текста:

FirstName + " " + @If(@Trim(MiddleName)!="";MiddleName + " ";"") + LastName

Она выбирает значение из поля FirstName (Имя), добавляет после него пробел. Потом, если в поле MiddleName (Отчество) не пустая строка, то добавляет его значение после пробела и опять добавляет в конце пробел. В заключение, добавляется значение поля LastName (Фамилия) (рис.??):

 

Рис.

 

2. После создания заголовка выполняется вставка таблицы с закладками, в которой каждая закладка – это строка таблицы. Выполнить вставку таблицы с двумя строками и одним столбцом с помощью команд верхнего меню Create / Table (рис.??).

 

Рис.

 

На экране появится окно свойств таблицы. На предпоследней вкладке свойств вводится имя вкладки создаваемой таблицы. Первая закладка имеет имя Основная информация, вторая – Дополнительная информация. Кроме того, для первой закладки таблицы необходимо указать свойство Fitto Window (ширина по размеру окна).

3. Перенести созданную ранее подформу на вторую закладку таблицы. Для сохранения стиля рекомендуется скопировать таблицу из подформы и вставить ее на вторую закладку создаваемой формы. При вставке таблицы будут заданы два вопроса. Первый вопрос, касается самого процесса вставки, на него необходимо ответить ДА. Второй вопрос касается параметров вставки (представить ли строки вставляемой таблицы в виде вкладок новой таблицы или нет). На данный вопрос необходимо ответить НЕТ. В этом случае таблица из подформы будет вставлена в ячейку существующей. При этом необходимо изменить нулевой отступ в таблице с закладками от левого края экрана и отрегулировать параметры отступа (рис.??):

 

Рис.

 

4. Создать поля на вкладке Основная информация:

– поле Имя – FirstName, тип – Text, вид – Editable;

– поле Отчество – MiddleName, тип – Text, вид – Editable;

– поле Фамилия – LastName, тип – Text, вид – Editable.

5. Для созданных полей в свойствах объектов (левое нижнее окно) выбрать событие Input Translation (Преобразование данных) и ввести формулу для его определения @trim(FirstName), @trim(Lastname) либо @trim(MiddleName) в зависимости от того, для какого поля это свойство определяется. Данная формула убирает с начала и конца пробелы у введенных пользователем имени, отчества и фамилии.

Здесь же для определения события Input Validation (Проверка введенных данных) вводится формула (рис.??):

@If(FirstName=" ";@Failure("Имя участника должно быть указано!");@Success)

 

Рис.

 

Событие Validation – это проверка значения поля на корректность. Формула построена с использованием оператора @if (условие; действие, которое выполняется при выполнении условия; действие, которое выполняется при не выполнении условия). Все параметры и вызов формулы от вызова отделяются точкой с запятой. Формула предназначена для проверки пустое поле или нет. Если поле не заполнено, то вызывается формула @Failure, которая выдает сообщение "Имя участника должно быть указано!" и возвращает не успешное выполнение команды. А если значение поля не пусто, то выполнится команда @Success, которая даст знать системе, что Validation прошла успешно.

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

6. Четвертое поле (Системное имя) – NotesName, тип – DialogList, вид – Editable. Для этого поля необходимо выбрать вторую вкладку свойств и установить выбор значений Use Address dialog for choices из адресной книги (книга, в которой регистрируются пользователи, сервера, группы пользователей). В результате в поле пропишется username выбранного пользователя, сервера или группы (рис.??).

 

Рис.

 

Затем необходимо включить на данной закладке опцию Display entry helper button.

7. Создать поле Вес в голосовании. Это поле с именем – Weight, типом – Number, видом – Editable, которое содержит информацию о весе голоса участника голосования. Определяется в процентах, поэтому на второй закладке свойств поля указывается тип отображения – Percent (рис.??):

 

Рис.

 

8. Создать поле Текущий статус участника. Это поле с именем Status, типом – Radio button, видом – Computed (рис. ??):

 

Рис.

 

В качестве значений поля во второй вкладке вводятся варианты выбора Черновик, Активный, Неактивный. Значение поля по умолчанию должно быть Черновик. Так как поле является вычисляемым и его значения вычисляются от самого поля, то в окне свойств объекта в качестве формулы для вычисления значения по умолчанию задается следующая последовательность (рис.??):

@if(status="";"Черновик";status)

Рис.

9. Для переключения текущего статуса, необходимо создать управляющую кнопку в верхней панели формы. Для этого необходимо выбрать команды верхнего меню Create / Action / Action (действие с вложенным действием), добавив новую кнопку. В списке кнопок, которые уже добавлены как системные, появится новая Untitled и вложенная в нее новая кнопка. Необходимо открыть окно свойств главной кнопки.

В строке Name вводится имя кнопки Изменить статус… (рис.??).

 

Рис.

 

10. Выбирается возможность включения графического значка в качестве оформления кнопки. При этом значок выбирается не из стандартной библиотеки Notes, а из библиотеки картинок дизайна стандартного почтового ящика. Для этого в дизайнере создается новая база данных на основе шаблона Mail с помощью команд File / Database / Create. Имя задается любое, в качестве шаблона выбирается Mail. Далее в левом окне объектов данной базы почтового ящика необходимо открыть ее библиотеку иконок (Resources / Images), в правом окне найти, например, иконку с именем act_participantactions.GIF. Кликнуть на ней правой кнопкой и выбрать команду Copy. Далее в окне объектов создаваемой системы голосования открыть Resources / Images. В правом окне кликнуть правой кнопкой в свободном пространстве и выбрать команду Paste. После этого иконка будет доступна для создаваемой формы. Для того чтобы вставить иконку необходимо в окне свойств кнопки Изменить статус… на первой вкладке в опции Graphic нажать на значок папки в строке Image, а затем выбрать имя вставленного файла в окне Insert Image Resource (рис.??):

 

Рис.

 

11. Выполнить настройку свойств вложенной кнопки. На первой вкладке указывается ее имя Активный, на второй вкладке указываются параметры скрытия кнопки. Сначала необходимо понять, в каких ситуациях данная кнопка необходима. В режиме чтения она не нужна, значит, нужно скрыть кнопку при открытии документа на чтение и в режиме просмотра. Если документ находится в состоянии Активный, то кнопка перехода в это состояние не нужна. Следовательно, необходимо внести формулу, при выполнении которой кнопка будет скрыта, то есть, если в поле Текущий статус участника стоит значение Активный, кнопка скроется (рис.??).

status="Активный"

Рис.

 

12. Теперь необходимо назначить кнопке действие. Его указывают в правом нижнем окне. Нажатие этой кнопки меняет значение поля Текущий статус участника, добавляет новую запись в историю документа и обновляет документ на экране пользователя. Формула, которая выполняет эти операции, должна быть следующей:

FIELD status:="Активный";

tmp:=history;

tmp1:=@Text(@Now)+" "+@Name([CN];@UserName) + " изменил(а) состояние карточки на Активный";

FIELD history:=tmp:tmp1;

@Command([RefreshHideFormulas])

В первой строке полю status присваивается новое значение, присвоение значения делается оператором «:= ». Все операторы отделяются точкой с запятой. В переменную tmp сохраняется текущее содержимое поля history. В переменной tmp1 формируется строка для новой записи в поле history. Строка состоит из сконвертированной в строку текущей даты/времени, имени текущего пользователя @Username и поясняющей информации. Далее в поле history (оно было определено как многозначное, то есть содержащее списки) необходимо внести список, состоящий из предыдущего значения этого поля и новой сформированной записи об изменении статуса. После этого достаточно обновить документ, чтобы все изменения отобразились на экране.

13. Просмотрите результат работы кнопки в Lotus Notes. Обратите внимание на поле Текущий статус участника, поле История изменений и на видимость самой кнопки, которая должна стать не доступной при статусе Активный (рис.??).

 

Рис.

 

14. Сделать по аналогии кнопку для перевода документа в неактивный статус.

15. Выполнить проверку корректности заполнения полей. В случае не заполнения одного из полей, отвечающих за имя, отчество и фамилию голосующего, в событии Input Validation полей FirstName, MiddleName, LastName выполнена такого рода проверка. Однако такие предупреждения желательно ограничивать только событием сохранения документа. Для этого в условие проверки заполнения перечисленных полей в формуле при проверке на корректность надо вставить условие проверки того, что документ находится в процессе сохранения (рис.??).

@IsDocBeingSaved & @trim(LastName)="";

 

Рис.

 

16. В каждом документе должны присутствовать кнопки, обеспечивающие основные действия при работе с ним: Закрыть, Редактировать, Сохранить, Отменить. Очевидно, что кнопки должны быть видны в разных режимах.

Поскольку данные кнопки будут присутствовать во всех документах, они должны быть общими. В Lotus Notes для таких случаев предусмотрен объект базы данных Shared code / Shared actions. Для создания новой общей кнопки необходимо выбрать объект данного типа, откроется окно со списком имеющихся общих кнопок (в нашем случае он пока пуст) и нажать кнопку Create shared actions. Создается новая общая кнопка и открывается окно ее свойств. Порядок работы с кнопкой в этом случае такой же, как при работе с кнопкой в форме.

17. В поле Name на первой вкладке вводится имя кнопки Редактировать. Она должна быть доступна для пользователей, обладающих правом на редактирование данного документа. Она должна быть активна (видна) в режиме редактирования, просмотра документа, а не его создания.

На второй вкладке указывается формула для скрытия кнопки:

Tmp1:=@trim(@replace(editors;@UserNamesList;"")); @if(@elements(editors)>@elements(tmp1);@false;@true)

Комментарии к формуле:

– функция @userNamesList возвращает список всех ролей, пользователей и всех групп в адресной книге текущей базы;

– в поле editors хранится список ролей, групп и имен пользователей, которые могут редактировать этот документ;

– процедура Replace позволяет определить пересечение множества значений первого списка и второго, при нахождении в первом списке элемента, который есть также во втором этот элемент заменяется на "";

– процедура @Trim удаляет все пустые элементы списка, созданного в результате выполнения предыдущей процедуры replace;

В результате, если пересечение списков editors и @UserNamesList не пустое, то количество элементов в исходном первом списке больше, чем количество элементов, полученных в результате совместного выполнения процедур @trim(@replace()). В таком случае кнопка не скрывается, иначе скрывается. Нажатие на эту кнопку должно выполнять действие – включение режима редактирования документа, поэтому на нажатие кнопки программируется команда

@Command([EditDocument])

Параметры скрытия кнопки представлены на рис.??.

 

Рис.

 

18. Аналогично создается кнопка Сохранить. Она должна быть доступна для тех, кто перевел документ в режим редактирования. Кнопка должна быть активна (видна) в режиме редактирования. Параметры скрытия кнопки и назначенное ей действие – сохранение файла документа – представлены на рис.??.

 

Рис.

 

19. Аналогично создается кнопка Отменить. Она должна иметь свойства, аналогичные кнопке Сохранить. Команда, которую она выполняет – закрытие окна документа

@command([FileCloseWindow])

20. Кнопка Закрыть должна быть доступна для всех ролей. Она должна быть активна (видна) в режиме чтения документа, а не создания. Команда для нее – @command([FileCloseWindow]).

21. Необходимо изменить последовательность отображения кнопок при работе с формой в режиме Lotus Notes. Для этого достаточно выделить кнопку в панели действий (правое верхнее окно в режиме дизайна формы) и, удерживая нажатой левую кнопку мыши, выполнить перемещение по дереву кнопок. Расположите кнопки в порядке¸ представленном на рис.??.

 

Рис.

 

22. Выполните проверку действий и отображения кнопок в режиме работы с формой в Lotus Notes.

23. Самостоятельно создать подформу Контактная информация и добавить ее на первую вкладку таблицы в форме Карточка участника голосования согласно представленному ниже дизайну (рис.??):

 

Рис.

 

Вопросы для отчета по теме

1. Каким образом в Lotus Domino Designer создаются пользователи и группы, определяются их права и роли?

2. Какие системные действия можно использовать при работе с документами?

3. Что такое подформа? В каких случаях ее можно использовать?

4. Каким образом можно прикреплять к карточке документа различные файлы?

5. Каково основное назначение событий Input Translation, Input Validation?

6. Назовите структуру условного оператора в языке формул Lotus.

7. Что такое вложенное действие, общее действие?

8. Перечислите основное назначение следующих команд языка формул Lotus: command, trim, replace, userNamesList, IsDocBeingSaved, Failure, Success, UserName.

Лабораторная работа №13



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: