Туториал №2#
Создание простого приложения для автосалона#
Описание приложения:
Мы собираемся создать приложение, состоящее из нескольких компонентов, позволяющее отслеживать активные для продажи автомобили, назначать менеджера для подписания договора и позволяющее закрывать сделку менеджерам.
Мы создадим следующие компоненты:
Компонент “Transaction Specialists”#
Первый компонент будет являться простой формой для добавления новых менеджеров и будет состоять из одного кастомного property:
Далее мы переходим к настройке нашей рабочей области, добавим на нее элемент panel, в рамках которого будем вести нашу работу.
После этого в настройках панели в группе настроек “Layout” измените ориентацию панели на vertical и начните добавлять в нее следующие элементы: нам понадобится созданный нами manager_name и кнопка. Должно получиться вот так:
После этого создайте dataflow, назовите его “Add a manager” и добавьте следующие шаги: get action model
, update entry
, write response
. Должно получиться вот так:
Настройте шаг Update entry
следующим образом:
Не забудьте выставить source step
для шага update entry
!
После настройки dataflow привяжите его к кнопке следующим образом: зайдите в настрйоки кнопки, кликните по группе настроек “actions”, “command type” поставьте на “execute dataflow” и выберите созданный нами dataflow “Add a manager”.
Нажмите на “Save”, “Ready to publish”. Опубликуйте компонент, затем добавьте его на workplace с помощью “Navigation menu” домена, на котором вы разворачиваете ваше приложение(в нашем случае это домен “digital-workplace”)
Нажмите “ADD MENU ITEM” и добавьте наш компонент:
Зайдите на workplace
и добавьте несколько менеджеров для дальнейшей работы с ними.
Компонент “Car fleet”#
С помощью данного компонента мы настроим вывод всех автомобилей и общей информации о них, добавим форму для создания записей о новых автомобилях, форму для прикрепления менеджера по сделкам к автомобилю, а также форму подтверждения о том, что сделка завершена с последующей архивацией записи об автомобиле.
В этом компоненте мы создадим ряд кастомных propety:
car_vin
: property type -string
, title -VIN
, settings -required
,primary key
,query
;car_brand
: property type -string
, title -Car Brand
, settings -required
,query
;car_model
: property type -string
, title -Car Model
, settings -required
,query
;year_of_manufacture
: property type -integer
, title -Year of manufacture
, settings -required
,query
;color
: property type -string
, title -Color
, settings -required
,query
;price
: property type -number
, title -Price of the car
, settings -required
,query
;is_manager_exists
: property type -boolean
, title -Is manager exists
, settings -query
;choosen_manager
: property type -catalog
, component -Transaction Specialists
title -Chosen Manager
, settings -query
;is_archieved
: property type -string
, settings -query
.
Компонент будет состоять из следующих частей(страниц):
Main page
Чтобы добавить страницу Вам необходимо найти группу Layout
в Toolbox
и перенести элемент Page
в рабочую область.
На данной странице будет представлен data grid со всеми активными для продажи автомобилями и общей информации о них для менеджеров по продажам. Кроме того, на страницу добавим кнопку, которая будет переводить на страницу с формой для добавления автомобилей в список, но ее мы добавим позже.
Добавьте в рабочую область панель, поменяйте настройку ориентации на vertical, затем добавьте еще две панели. В нижнюю перенесите элемент data grid, а в верхнюю добавьте еще две панели. В левую положите label, в настройках “translation value” которого напишите “Car fleet”. А в правую добавьте кнопку, и в “translation value” напишите “Add a new car”. Позднее мы изменим настройку “Actions”, а сейчас можете изменить размер кнопки в настройках “Layout”.
Вы можете попробовать другие настройки.
Далее переходим к настройке data grid
: нажмите на шестеренку и выберите компонент для data grid “Car fleet”. Далее рядом с columns нажмите на +
, это добавит колонку к нашему data grid, сделайте так 5 раз.
Нажмите на первую колонку, затем “Add field” и выберите property car_brand
. Дальнейшая настройка должна выглядеть следующим образом:
Вы должны настроить следующие колонки похожим образом в такой поочередности: 2 колонка - car_model
, 3 колонка - year_of_manufacture
, 4 колонка - color
, 5 колонка - price
.
Также в настройках data grid выставим Static filters
. Так как мы собираемся выводить сюда автомобили, на которые еще не назначен менеджер, выставим следующую настройку:
Итоговый результат на нашей рабочей области должен быть таким:
Add a new car
К данной странице будет приводить нажатие пользователем кнопки “Add a new сar” с нашей предыдущей страницы. Приступим к настройке нашей рабочей области.
Добавим на страницу панель. В ее настройках поменяем ориентацию страницы на vertical. Далее добавим еще две панели. В первой так же поменяем ориентацию на vertical и перенесем наши property, чтобы получилось вот так:
В нижнюю панель добавим две кнопки, настроим их padding как на кнопке “Add a new car” и назовем их должным образом: “Add a new car” и “Back to all cars”.
В настройках кнопки “Back to all cars” выставим настройку “Actions” на “Open page” “Main page”. При нажатии на эту кнопку пользователя будет переводить на страницу с data grid. Для кнопки “Add a new car” создадим data flow, которое в последующем к ней привяжем.
Data flow будет состоять из следующих шагов: get action model
, execute script
, update entry
, write response
. Давайте займемся их настройкой.
В шаге execute script
создадим переменные, которые будут использоваться для property is_manager_exists
и is_archieved
:
item["_is_manager_exists@boolean"] = False
item["_is_archieved@boolean"] = False
Далее настроим шаг Update entry
:
Ниже нам необходимо замапить наши поля. Не забывайте, что поля в настройках шага мапятся с приставкой data.property_name
. Для property is_archieved
и is_manager_exists
используйте значения переменных, которые мы выставили в шаге execute script, поле chosen_manager
оставьте пустым:
Обязательно выставляйте source step для каждого шага, кроме первого. В дальнейшем описании туториала упоминаний об этом не будет.
Теперь, когда наш data flow завершен, мы можем привязать его к кнопке “Add a new car” и сохранить наш компонент. Итоговый результат нашей страницы продемонстрирован ниже:
Appoint a manager
Данная страница будет вызываться в качестве модального окна, при клике на ту или иную запись в data grid. Она создана для единственного функционала - назначения менеджера для того или иного автомобиля. Перейдем к настройке рабочей области.
Сама страница будет напоминать страницу “Add a new car”, единственное различие: мы добавим в рабочую область property chosen_manager
, оно будет единственным доступным для изменения, благодаря ему менеджер сможет выбрать коллегу, которому передаст автомобиль со сделкой. Так же добавьте две кнопки, одна должна закрывать модальное окно и будет называться “Back to all cars”, другая будет носить название “Appoint a manager” и будет связана с data flow, которое мы создадим чуть позже.
Не забудьте в настройках TextBox у каждого вынесенного property, кроме chosen_manager
, включить настройку Disabled
Итоговый результат на данной странице должен выглядеть как показано ниже:
Перейдем к настройке data flow.
Нам необходимо добавить следующие шаги: get action model
, execute script
, lookup reference
, update entry
, write response
.
В шаге execute script
мы создадим переменную, с помощью которой мы будем менять property is_manager_exists
на True, из-за чего в последующем созданная запись будет пропадать из data grid на Main page, где мы выставили static filters.
item["_is_manager_exists@boolean"] = True
Далее мы используем шаг Lookup reference
. Рекомендую Вам прочесть о данном шаге в разделе Dataflow нашей технической документации. Сам шаг должен быть настроен как показано ниже.
После этого мы настраиваем шаг Update entry
, в field component key указываем field name из шага Lookup reference
:
В ‘Fields mapping’ оставляем поля пустыми, кроме chosen_manager
и is_manager_exists
, именно эти поля мы хотим изменить в записи, найденной с помощью шага Lookup reference
.
В шаге write response
нам необходимо выставить source step.
Назначьте выполнение этого dataflow при нажатии на кнопку “Appoint a manager”. После этого сохраните компонент.
Переходим к component script для сборки модального окна.
Для создания модального окна вы можете использовать скрипт ниже. Для работы с component script крайне рекомендую Вам прочесть раздел документации Использование Python
:
def show_model_info(model):
context.Logger.Error("updated")
def open_custom_modal(sender, model):
# Creating a modal window template using the GUID of a specific component
dialog_builder = context.PlatformServices.DialogBuilder('component guid')
# Setting the title for the modal window and selecting a specific page from the component's settings
# Also setting the component instance ID to 1, so the first saved instance of component data will be used
dialog_builder.WithEntryId(int(model[0].Id)).WithTitle("Appoint a manager").WithPageId('page id')
# Setting the size of the modal window
dialog_builder.WithVSize("650px").WithHSize("820px")
dialog_builder.OnComplete(lambda model: show_model_info(model))
dialog_builder.OnCancel(update_cars_success)
# Opening the created modal window
dialog_builder.OpenDialog()
def get_datagrid_cars(sender, *args):
global datagrid_cars
datagrid_cars = sender
def update_cars_success():
datagrid_cars.Refresh()
Функции get_datagrid_cars
и update_cars_success
используются, чтобы автоматически обновлять data grid после какого-то действия. Если их не использовать, то data grid обновится только после перезагрузки страницы в браузере. После копирования вам необходимо сохранить компонент и вернуться к рабочей области на страницу “Main page”.
Вам необходимо обратиться к настройкам data grid в группу настроек Events
, и назначить выполнение функций на определенные действия над data grid.
Сохраните компонент, после чего перейдите к настройке следующей страницы.
Enter into a contract
Данная страница является формой, которая позволит менеджеру архивировать ту или иную сделку с автомобилем, изменяя значение в поле is_archieved
на True
.
Страница является копией страницы Appoint a manager
, различие лишь в том, что все поля имеют настройку Disabled
-> True
. Снизу мы добавим две кнопки, одна из которых будет запускать dataflow, а другая переводить пользователя на страницу компонента, который мы пока не создали.
Сама страница должна выглядеть следующим образом:
Давайте перейдем к созданию и настройке dataflow. Нам понадобится 5 шагов: get action model
, execute script
, update entry
, form action
, write response
.
В шаге execute script
мы создадим переменную, благодаря которой положим значение True
в property is_archieved
.
item["_is_archieved@boolean"] = True
Настройка шага update entry
должна выглядеть как показано ниже:
В field component key мы дадим ссылку на запись, которую хотим отредактировать, после этого переходим к “Fields mapping”. Тут мы оставляем все поля пустыми, кроме is_archieved
. Сюда мы кладем переменную, записанную нами в шаге execute script
.
Далее идет шаг Form action
, к настройке которого мы вернемся после создания последнего компонента. Сейчас сохраните компонент, чтобы не потерять результаты труда.
Компонент “Managers grid”#
Данный компонент будет состоять из одной страницы и в нем мы не будем создавать кастомные property. Этот компонент будет использоваться только менеджерами, у которых есть к нему доступ, и в рамках него они смогут видеть все автомобили, переведенные на этап сделки и назначенные на того или иного менеджера.
Создадим data grid, привяжем его к компоненту Car fleet
и добавим колонку под каждое из его property. Результат должен быть вот таким:
После чего обратимся к группе настроек Actions
, установим Command type - Open application
, Component - Car fleet
, Component page Eneter into a contract
, страница Eneter into a contract
создана нами в рамках последней страницы компонента Car fleet
.
Далее необходимо нажать на кнопку Action parameters
и замаппить Id -> Id как показано ниже.
Давайте сохраним компонент и перейдем к его настройкам. Кроме наименования и выбора нужного домена нам необходимо нажать на галочку Restrict access
, чтобы мы смогли установить особые права безопасности для данного компонента.
Давайте еще раз сохранимся, отметим компонент как готовый к публикации и вынесем его в Navigation menu
используемого нами домена.
Возвращаемся в компонент Car fleet
на страницу Enter into a contract
Осталась одна неиспользуемая кнопка Back to all contracts
, давайте выставим ей Command type
в группе настроек Actions
на Navigation back
.
После этого нам необходимо вернуться к dataflow “Deal is done” и закончить с настройкой шага Form action
. Итоговая настройка шага должна выглядеть следующим образом:
Не забудьте выбрать source step
в шаге update entrty
.
Сохранитесь, опубликуйте компонент, вынесите его в workplace с помощью Navigation menu
и удостоверьтесь, что все компоненты на месте.
Настройка доступа к компоненту Managers grid
#
Вам необходимо обратиться к меню “Access” в раздел “Permissions” и нажать на кнопочку “Add” в правом верхнем углу.
На вашем экране откроется окно с настройкой permission, где вам необходимо указать домен, дать имя для permission. Чтобы дать доступ к манипуляциями над компонентом Managers grid
вам необходимо обратиться ко всем Permissions
и зайти в раздел Components
, в нем найти наш компонент Managers grid
и выбрать полные права доступа к данному компоненту. Нажмите на кнопку “Save” и перейдите в следующий раздел “Roles”
Тут Вам так же необходимо нажать на кнопку “ADD”, выбрать нужный домен, наимнование и выбрать “Permission”, который вы создали ранее. После переходите в раздел Users
.
В разделе Users
указаны все пользователи, зарегестрированные в вашей системе. Кликните по пользователю, которому хотите радать права на пользование данным компонентом, в “Select contexts” выберите “Platform” -> “System” и в “Select roles” найдите роль, которую создали ранее, после чего кликните по чекбоксу и нажите “Save”
Итог#
Вы создали небольшое и простое приложение, в рамках которого порботали с несколькими компонентами и научились связывать их между собой, вы научились создавать модальные окна и прикоснулись к выстраиванию взаимодействия между языком программирования и инструментами нашей платформы.
Попробуйте создать несколько менеджеров, добавьте новые автомобили к продаже, назначьте на них менеджеров, попробуйте закрыть сделки.
Безусловно, это приложение тестовое, его можно до бесконечности улучшать и усложнять. После его создания вы можете самостоятельно воспользоваться другими инструментами, выстроить иную логику, настроить дизайн по вашему вкусу. Платформа предоставляет вам гибкие инструменты, делающие разработку увлекательнее и проще!
Описания по использованным в туториале инструментам вы можете найти в разделе “Разработка приложений”.