"Вот, какой смысл умываться по утрам? Чтобы быть бодрым? А какой смысл быть по утрам бодрым? Какой вообще смысл БЫТЬ по утрам? Непонятно. И непонятно, то ли жизнь всегда была бессмысленной, а ты просто не замечал этого, то ли смысл был, но куда-то затерялся." - Бараш
Актуальность
решения данной проблемы в контексте курса Научно-исследовательского семинара в
магистратуре ФИИТ обуславливается необходимостью нахождения технической
реализации решения данной проблемы для внедрения в выпускную-квалификационную
работу магистра, которая является развитием идей выпускную-квалификационной работы бакалавра.
В частности, в последней стал вопрос не только вывода на экран ряда двумерных
массивов данных СБРС, но и предоставление возможности их редактирования, без
которого полезность ВКРб значительно снижается. Поскольку в рамках ВКРб данный
вопрос полноценно решить не удалось, он перетёк в ВКРм. Кроме вышеописанного,
имеет место ограничение по используемым элементами интерфейса, накладываемые
фреймворком Xamarin Forms.
Решение
для интерфейса студента
По итогам прошлого
этапа изысканий, наиболее подходящим решением для отображения оценок студента,
т.е. списка массивов данных было определено… лучше бы про Хакинтош написал…
применение ListView с кастомными хедерами и футерами, которые позволяют
отобразить сводную информацию и итог, и кастомным шаблоном элемента массива,
который в себе содержит Grid, и их группировкой по модулям, каждый из которых
имеет кастомный заголовок.
Решение
для интерфейса преподавателя
Несмотря на успех в
реализации задачи предыдущего этапа, остается вопрос модификации данного
решения для применения к данным преподавателя для отображения ряда двумерных
массивов данных СБРС с возможностью их редактирования. Для данной задачи, в
результате изучения имеющихся возможнстей и работы в рамках курса
“UI/UX-дизайн” было найдено решение.
Первым уровнем решения, как и в случае с данными студента, является ListView
списка дисциплин, где происходит группировка УКД по дисциплине,с кастомными
заголовками групп и элементами. На втором уровне - применение нескольких
ListView, находящихся внутри StackLayout и навигационной обертки TabbedPage,
внутри которых задаётся кастомный вид элемента и источник данных со списком
элементов и заданными заголовками и футерами. Внешняя обёртка TabbedPage
обуславливается необходимостью переключения между двумя наборами данных в
рамках одной дисциплины - баллы и посещения. StackLayout используется как
базовый макет, не требующий задания абсолютного положения и использующий
незначительное количество ресурсов. Самым нагруженным является ListView,
который реализует возможности пролистывания ScrollView, для него определены
заголовок, шаблон элемента и футер. В них используется Grid для расположения
элементов блока в необходимой структуре. Особенностью здесь является
использование двух новых элементов интерфейса - Picker и Entry.
Picker — это
элемент управления для выбора текстового элемента из списка данных. При его
нажатии выпадает короткий список элементов, из которого пользователь может
выбрать один.
Entry — элемент
управления для редактирования одной строки текста.
Picker находится
вверху StackLayout и используется для выбора контрольного мероприятия, по
которому будет происходить оценивание, или занятия, по которому будет
проставляться посещаемость. Entry, в свою очередь, интегрирован в шаблон
элемента списка и является полем ввода баллов с отправкой на сервер по событию.
Поиск
по спискам
Кроме того,
изыскание выявили необходимость добавления возможности поиска по спискам,
представляемым в интерфейсе приложения для преподавателя, будь то список
предметов, студентов, контрольных мероприятий или занятий. Эта возможность
существенно сэкономит время на поиск необходимого пункта. Xamarin Forms
предоставляет два встроенных варианта внедрения данного функционала -
Shell.SearchHandler и SearchBar.
SearchHandler -
встроенные функции поиска, предоставляемые оболочкой Xamarin.Forms. Возможность
поиска можно добавить на страницу, задав Shell.SearchHandler свойство
SearchHandler объекта. После этого в верхней части страницы появится поле
поиска.
SearchBar - это
пользовательский элемент управления ввода, используемый для инициации поиска.
Элемент управления SearchBar поддерживает замещающий текст, ввод запроса,
выполнение поиска и отмену.
Shell.SearchHandler
SearchBar
Принимая решение о
выборе элемента интерфейса, стоит помнить о том, что Shell.SearchHandler
является частью Оболочки (Shell) - особого типа приложений Xamarin Forms,
который отличается навигацией через боковое меню, созданного Microsoft в 2019,
когда Google убирает боковое меню из гайдлайнов, iOS не принимала их никогда, а
поддержка UWP в Shell так и не стала полноценной. Кроме того, использование
такого элемента вынудит выполнить перенос всего приложения на эту концепцию. В
связи с чем, становится очевидным выбор в пользу SearchBar.