Дизайн

Для отображения проездных билетов используются шаблоны. Если определить шаблон не удается, используется шаблон по умолчанию.

Шаблон

Шаблон проездного билета определяется на уровне класса и в соответствии с ним показываются объекты, связанные с этим классом. В зависимости от шаблона элементы билета располагаются по-разному.

На рисунке ниже представлены составные части шаблона.

Название карты

Раздел о названии карты

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

Тем не менее в логике отображения допускаются варианты. Для поездок без пересадок они обеспечиваются следующими элементами объекта TransitObject:

  • object.tripType
  • object.ticketLeg.originName
  • object.ticketLeg.destinationName
  • object.ticketLeg.originStationCode
  • object.ticketLeg.destinationStationCode

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

  • Только пункт отправления. Он особенно важен для билетов, которые действуют в пределах конкретного региона.
  • Пункт отправления и пункт назначения. Первый из них находится на карте слева, а второй – справа. Между элементами расположен символ-разделитель. Какой именно, зависит от типа поездки. На карте может быть указана следующая информация о пунктах отправления и назначения:
    • Названия и коды станций. При этом названия расположены выше кодов и написаны более мелким шрифтом.
    • Только названия станций.
    • Только коды станций.

С объектами TransitObject для поездок с пересадками ситуация похожая. Отличие в том, что вместо объекта object.ticketLeg нужно использовать список object.ticketLegs[]. Необходимо добавить сведения обо всех станциях, включая промежуточные. Они должны быть оформлены единообразно. На билете будут указаны только начальный и конечный пункты всего маршрута.

При желании можно указать цвет фона – на уровне класса или на уровне объекта. При этом параметры, заданные на уровне объекта, имеют приоритет над теми, что относятся к классу.

Шаблон карты

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

Количество объектов в списке class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] зависит от числа строк, которое вы указываете сами. В списке может быть один или два объекта следующих типов:

  • oneItem с одним элементом:
    • item
  • twoItems с двумя элементами:
    • startItem
    • endItem
  • threeItems с тремя элементами:
    • startItem
    • midItem
    • endItem

Каждый из элементов – это поле для выбора одного (.firstValue) или двух (.firstValue и .secondValue) значений либо предопределенное значение (.predefinedItem). Выбранные значения отображаются вместе с ярлыками. Если значений два, для их разделения используется символ "/". Так же отделяются друг от друга и связанные с ними ярлыки. В более сложных случаях подходит предопределенное значение.

Элементы, для которых не указаны значения, не отображаются. Подробнее об этом написано здесь. Это относится и к строкам. Элементы частично заполненных строк отображаются в другом, более удобном, порядке.

Если вы не выберете шаблон карты, количество строк и число элементов, будут использованы параметры по умолчанию. Подробнее…

Если вы определили главное изображение и в списке cardRowTemplateInfos несколько строк, то оно будет отображаться под первой строкой. Если же строка одна, это изображение появится над ней.

Штрихкод карты

Элементы штрихкода карты

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

В этом же разделе находятся ещё три поля для выбора значений: два расположены рядом друг с другом над штрихкодом, а одно – под ним. У этих полей нет ярлыков. Они могут содержать текстовые структурированные данные, а также текстовые или графические модули. Изображения должны соответствовать правилам использования бренда.

У штрихкода есть тип и значение. Поддерживаемые типы штрихкодов приведены здесь. Кроме того, под штрихкодом может находиться текст. Он нужен, чтобы упростить сканирование кода, но может использоваться и для других целей.

Если вы не перезапишете раздел со штрихкодом, то будут использоваться значения по умолчанию. Подробнее…

Шаблон подробных сведений

Раздел о шаблоне подробных сведений

В этом шаблоне представлен список элементов class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[], которые могут содержать сообщения, структурированные данные или модули "текст", "изображение" либо "ссылка".

Каждый из элементов – это поле для выбора одного (.firstValue) или двух (.firstValue и .secondValue) значений либо предопределенное значение (.predefinedItem). Выбранные значения отображаются вместе с ярлыками. Если значений два, для их разделения используется символ "/". Так же отделяются друг от друга и связанные с ними ярлыки. В более сложных случаях подходит предопределенное значение. Обратите внимание, что поля с графическими модулями отображаются с заданной шириной и без ярлыков.

Элементы, для которых не указаны значения, не отображаются. Подробнее об этом написано здесь.

Если вы не перезапишете шаблон подробных сведений, то ссылки на поля в стандартном списке будут представлены в порядке по умолчанию. Подробнее…

Для поездок с пересадками в верхней части раздела показывается простой маршрут, и изменить его расположение нельзя. Чтобы простой маршрут отображался для поездок без пересадок, укажите class.enableSingleLegItinerary.

Шаблон списка

Раздел о шаблоне списка

Шаблон списка нужен для отображения в приложении элементов раздела "Карты". В списке проездной билет представлен с логотипом и на цветном фоне, а также с дополнительной информацией на трех строках.

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

  • originAndDestinationCodes
  • originAndDestinationNames
  • originName

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

Метки

У всех полей со структурированными данными есть ярлыки, которые предоставляет Google. Мы самостоятельно переводим их названия на все поддерживаемые языки.

Некоторые ярлыки можно изменить, используя поля class.custom<name_of_the_field>Label. Если вы это сделаете, вам придется самостоятельно переводить названия на все желаемые языки.

Ссылки на поля

Ссылки на поля используются в разных частях шаблона с форматом class.classTemplateInfo.*.fields[]. В ссылке на поле содержится список путей к сообщениям, структурированным данным или модулям "текст", "изображение" либо "ссылка".

В ссылку на поле можно добавить не каждый вид пути. В некоторых из них могут допускаться только пути к текстовым модулям или структурированным текстовым данным. Последние представляются в виде полей типа "строка", "локализованная строка", "дата" и "деньги".

Список можно использовать в качестве резервного способа. В таком случае, если в первом пути окажется пустое поле, будет выполнен следующий. Этот способ подходит для путей к текстовым модулям или структурированным текстовым данным. При этом допускается применение только одного из двух типов. Используйте такой способ, только если в некоторых объектах будет встречаться определенный набор полей. В остальных случаях для разных примеров использования стоит создавать отдельные классы.

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

Для каждого элемента в списке следует добавлять идентификаторы ссылок. Их нужно указывать в полях .id. В строке ссылки на поле для элемента следует использовать один и тот же идентификатор. Пример:

  • object.imageModulesData[0].id = my-id
  • class.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-id’]

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

Шаблон по умолчанию

Разделы о шаблоне по умолчанию

Для каждого класса и объекта может быть представлен только один графический модуль. Если вам нужно больше модулей для того или иного уровня, перезапишите шаблон по умолчанию.

Модулей типа "текст" можно добавить до 10 штук как для класса, так и для объекта. Поля отображаются в том порядке, в котором они представлены в массиве. Если вам нужно больше модулей для того или иного уровня, перезапишите шаблон по умолчанию.

Можно добавить до 10 сообщений как для класса, так и для модуля. Порядок сообщений не гарантирован. Если вам нужно больше модулей для того или иного уровня либо определенный порядок, перезапишите шаблон по умолчанию.

Для модуля ссылок ограничений нет. Для каждого уровня URI будут отображаться в следующем порядке:

  1. Координаты на карте
  2. Телефоны
  3. Адреса электронной почты
  4. Веб-страницы
Для каждой группы URI будут отображаться в том порядке, в котором они представлены в массиве. Если вам нужен другой порядок, перезапишите шаблон по умолчанию.

Разделы о шаблоне списка по умолчанию