Пример мобильного приложения на Glide для кафе (Часть 3).


Выбор блюд клиентом и помещение блюда в корзину заказов




Мы хотим дать пользователю возможность выбрать понравившиеся блюда и поместить его в корзину. Сразу надо сказать, что, прежде всего для этого надо идентифицировать каждого пользователя, чтобы корзина заказов у каждого была своя. App
Рис.2
App
Рис.1
Glide даёт возможность идентифицировать пользователя по его почтовому адресу.
Конечно, идентификацию пользователя можно провести через вкладку “Users”, нажав на её иконку внизу приложения (Рис.1), (App_Users_AK) и в открывшейся вкладке нажать значок “+” вверху вкладки, после чего заполнить поля “Name”, “Email” и при желании ещё и “Photo” (Рис.2). (App_Add_User) Но теперь все пользователи могут видеть эту информацию, и даже сделать заказ от вашего имени.

Поэтому мы поступим по-другому, Во первых, мы уберём вкладку “Users” с экрана приложения нажав на значок видимости (глазик), далее войдём в “Settings”, (иконка шестерёнки сверху) и выберем раздел Privacy. Privacy
Рис.3
Здесь поменяем настройки на “Только выбранные вами пользователи могут войти в систему” и “Любой может создать профиль” (рис.3). (Privacy3) В этом случае теперь перед установкой приложения у пользователя будет запрошен его Email, и после ввода отправлен код на почтовый адрес для завершения установки и регистрации (но здесь всё очень просто и дополнительные пояснения не требуются, и только первый раз). После чего при каждом последующем входе в приложение вы будете идентифицированы по своему адресу Email. И теперь при заказе каждый ваш заказ будет связан с вашим Email. Что даёт много дополнительных возможностей.

Давайте для начала откроем таблицу “Users” и создадим ещё одну колонку типа “Row ID” (Сначала откройте меню “Type” и в нём выберите “Other”, во вновь открывшемся меню и находится “Row ID”). И сразу же переименуем его в “User ID”. В итоге получиться столбец с 22-значной алфавитно-цифровой строкой. Это поможет нам в конечном итоге связать столбцы одной таблицы со столбцами другой. Такой же столбец создадим и в таблице “Лист1”, и назовём его “Меню ID”.

Теперь создадим новую таблицу и назовём её “Корзина”. Сюда мы будем помещать все данные о выбранных блюдах, их стоимости, о заказчике, о времени заказа и др. данные.
Для начала также создадим в таблице столбец с идентификаторами строк, и назовём его “Basket ID”.
Столбец ‘Name’мы сразу удалим, он нам не понадобиться. Данные о пользователе мы будем брать из таблицы ‘User’.
Далее, во-первых, я хочу, чтобы при выборе блюда было зафиксировано время помещения в корзину. Поэтому создадим новый столбец типа “Date & Time”, назовём его “Время заполнения”. В параметрах Part, Date format и Time format я выберу соответственно ‘Date & Time’, ‘Medium’ и ‘Without seconds’, но вы можете попробовать другие на ваше усмотрение.

Дальше, я хочу, чтобы при выборе блюда у нас указывались: наименование блюда, его стоимость и фото, можно указывать и другие характеристики блюда, имеющиеся в таблице 'Лист1', но мне этого хватит. Но все эти данные у нас есть в таблице “Лист1” и я хочу, чтобы пользователь их не вводил вручную, а я буду их брать из таблицы автоматически при выборе блюда пользователем. Поэтому чтобы привязаться к таблице с блюдами, я создам ещё один столбец типа 'Text' и назову его “Меню ID” (как в таблице ‘Лист 1’). Теперь создадим новый столбец типа Relation и назову его “Rel_menu_ID“, где свяжем столбец “Меню ID” нашей таблицы ‘Корзина’ со столбцом “Меню ID” таблицы ‘Лист 1’ (Лис1 > Меню ID), и не забудем поставить птичку в окошке ‘Match Multiple’. И не забываем закончить действие нажатием ‘Done’. Но столбец не передаёт нам сами данные, для этого служат столбцы типа ‘Lookup’. Создадим новый столбец типа ‘Lookup’ и назовём его ‘Look_menu_name’, где в качестве ‘Relation column’ зададим “Rel_menu_id” и в выпадающем меню выберем пункт “Название” (Rel_menu_id > Название). Таким же образом создадим ещё две аналогичных колонки ‘Look_menu_price’, где возьмём из таблицы ‘Лист1’ цену (Rel_menu_id > цена) и ‘Look_menu_photo’, где возьмём фото блюда (Rel_menu_id > Картинка). Можно взять и другие характеристики, но мне кажется, что они будут здесь лишними, а вы можете попробовать взять по вашему желанию.

Relation
Рис.4
Но нам надо знать какой пользователь сделал выбор, чтобы отличить, где, чья корзина. Но у нас все эти данные уже есть, и они находятся в таблице ‘Users’. Давайте возьмём их оттуда. Для начала создадим в таблице ‘Корзина’ новый столбец типа ‘Text’ и назовём его “User ID”. Далее по аналогии с тем как мы это делали с таблицей ‘Лист1’, мы создадим новый столбец типа ‘Relation’ и назовём его “Rel_user_id”, где свяжем столбец “User ID” нашей таблицы ‘Корзина’ со столбцом “User ID” таблицы ‘Users’ (Лис1 > User ID), и не забудем поставить птичку в окне ‘Match Multiple’(Рис. 4). (Rel_user_id) И жмём ‘Done’.
Lookup
Рис.5
Теперь уже мы можем получить данные о пользователе, для этого создадим новый столбец типа ‘Lookup’ и назовём его ‘Look_user_name’, где в качестве ‘Relation column’ зададим “Rel_user_id” и в выпадающем меню выберем пункт “Name” (Rel_user_id > Name). (Рис.5) (Look_user_name) Ещё нам надо взять Email пользователя, и может быть фотографию (кто захочет, или там будет пустая клетка, это не так важно). Поэтому, создадим ещё два столбцы типа ‘Lookup’, и назовём их “Look_user_email”“ и “look_user_photo”, куда поместим соответственно Email пользователя и его фото (Rel_user_id > Email) и ‘Look_use_id > Photo).

Хотя это не все данные для заполнения корзины, но давайте посмотрим, что у нас получилось.
Перейдём на вкладку “Layout”,выберем сначала, например, ‘Закуски’, а затем одно из блюд и здесь надо добавить кнопку для выбора блюда, т.е. положить в корзину. Form Button
Рис.6
Для этого нажмём на иконку ‘Добавить компонент’ (черная иконка с белым крестиком в окне NAVIGATION) и в появившемся окне найдёт компонент “Form Button”(Рис.6)(Form_button). Выберем мышью этот компонент слева в окне NAVIGATION, и в окне Свойств, в блоке DESIGN поменяем в строке Label “Open Form” на “Выбрать”.

Теперь давайте подумаем, какие действия мы хотим, чтобы происходили при нажатии этой кнопки. Прежде всего, чтобы блюдо, т.е. его наименование, цена и фото было помещено в таблицу “Корзина”, а также, чтобы в корзине были данные о пользователе, его имя и главное Email. И, во-вторых, чтобы пользователь получил уведомление, что это действие произошло. Для этого, ниже в блоке ACTION нажмём на строку “Show form screen title Форма” (У вас эта строка может слегка отличаться), и в появившемся окне “CONFIGURE ACTION” кликнем мышью по “Show form screen”, и во вновь открывшемся меню выберем “Create new action…” (чёрный кружочек с белым крестиком). В итоге, у нас откроется вкладке показанная на Рис.7. (New_Action) New Action
Рис.7


Нажмём на маленький карандашик слева вверху и в появившемся окошке напишем “Выбор блюда”. Это наименование нашего действия.
Add_row
Рис.8
Далее кликнем мышью по “Show form screen title Форма” и затем “Show form screen”, и в появившемся окне выберем “Add row”. Появится список Sheet - Лист1 (у вас может быть что-то другое, ведь Glide проставляет здесь всё по умолчанию, что ему захочется) Show_notification
Рис.9
и ниже список с наименованием всех столбцов от таблицы “Лист1”, но нам надо добавить новую строку не к таблице “Лист1”, а к таблице “Корзина”, поэтому мы кликнем по “Лист1” и поменяем на “Корзина”. Время заполнения – выберем “Current Date/Time”, а ‘Меню ID’ -> “Меню ID” и ‘User ID’ -> “User Profile > User ID” (Рис.8).
(Add_row) Если навести мышь на действие “Add row to Козина” (Не нажимая), то внизу появляется маленький чёрный кружочек с беленьким крестиком (это – добавить ещё одно действие), нажимаем и выберем новое действие “Show notification” (Показать уведомление). Нажимаем на него и в строке ‘Message’ пишем “Блюдо выбрано”, а в строке ‘Icon’ оставляем “Success”(Рис.9).
(Show_notification) И после всего не забудьте нажать на “Save” (справа вверху), а то изменения не сохраняться.

View as user
Рис.10
Блюдо выбрано
Рис.11
Ну что ж давайте теперь проверим, что у нас получилось. Для начала добавим двух пользователей к таблице “Users”, у меня это Илья и Наталья. Теперь давайте выберем несколько блюд. Сначала выберем блюда от имени ‘Илья’, а затем ‘Наталья’. Примечание. Переключение между пользователями осуществляется по нажатию стрелки вниз расположенной в строке “Viewing as Наталья (или Илья)” сверху слева центрального экрана (Рис.10) (view_as_user). А реально это тот, кто открывает приложение на Смартфоне.
При выборе у нас приходит сообщение, что блюдо выбрано (рис.11) (bludo_vybrano). Теперь давайте посмотрим нашу таблицу “Корзина” (Рис.12) (Корзина), мы видим здесь наименование выбранных блюд и их стоимость, а также имя заказчика (пользователя, ведь пользователь это тот, кто открывает приложение) и его Email, то есть, то, что нам и нужно. Корзина
Рис.12


Всё было бы хорошо, но мне бы хотелось, чтобы каждый пользователь видел, что он выбрал, а также имел возможность, что-то изменить. Об этом мы поговорим в продолжении этой статьи



Последние комментарии:
Наталья
0
# 28
(19:51:51 13.03.2023 г.)
Классно и понятно все! Спасибо огромное!
Ответить
Сергей
0
# 29
(19:53:33 13.03.2023 г.)
Ждем продолжения.
Ответить
Олег
0
# 49
(05:29:26 06.01.2024 г.)
Спасибо за статью!!!
Ответить

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

Закрыть
Имя:
430 + 67 =  
Добавить комментарий:
Имя:
430 + 67 =  

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то пишите на почту alekskuznech@mail.ru или в соцсети.