События виджета
В процессе работы виджета возникает 4 типа событий, на которые можно подписать функцию-обработчик, чтобы позволить получать данные из виджета:
- загрузка виджета,
- расчет доставки,
- выбор ПВЗ,
- выбор курьерской доставки.
Пример с использованием нескольких обработчиков событий указан в файле example3-1.htm
Загрузка виджета (onReady)
Событие срабатывает, когда виджет загрузил все стили, скрипты, карты, а также – информацию о городах и пунктах выдачи заказов. Оно означает, что уже можно пользоваться методами виджета. Учтите, что html и разметка карт на этом моменте еще могут не подгрузиться. В событии нет никаких передаваемых параметров. Для работы с этим событием необходимо в параметре указать название функции-обработчика и описать выполнение этой функции:
<script type="text/javascript">
var widjet = new IVOLTWidjet({
yandex_key: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', //ключ API Я.Карт
defaultCity: 'Омск',
link: 'forpvz',
onReady: startWidget
});
function startWidget() {
alert('Виджет загружен');
}
</script>
Создание обработчика данного события можно увидеть в примере example3-5-1.html
Расчет доставки (onCalculate)
Событие срабатывает, когда виджет получает данные о стоимости и сроках доставки.
Событие передает в функцию-обработчик объект вида:
{"deliveries": <Объект доставок>, "city": <Код города из базы voltmarket>, "cityName": <Название города>}
Пример такого объекта в формате JSON:
{
"city": "907",
"cityName": "Ростов-на-Дону",
"deliveries": {
"delivery_voltmarket": {
"id": "delivery_voltmarket",
"profiles": [
{
"id": "courier",
"name": "ВольтМаркет: Курьер",
"price": "Бесплатно",
"term": "11 Февраля"
},
{
"id": "pickup",
"name": "ВольтМаркет: Самовывоз",
"price": "Бесплатно",
"term": "Сегодня"
}
]
},
"sdek": {
"id": "sdek",
"profiles": [
{
"id": "pickup",
"name": "СДЭК: самовывоз",
"price": "Бесплатно",
"term": "2-3 дня"
}
]
}
}
}
Для создания обработчика можно использовать следующий код:
<script type="text/javascript">
var widjet = new IVOLTWidjet({
yandex_key: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', //ключ API Я.Карт
defaultCity: 'auto',
link: 'forpvz',
onCalculate: onCalculateHandler
});
function onCalculateHandler(wat)
{
console.log('Расчет доставки ', wat);
var str = 'Доставка в город '+ wat.cityName + "\n";
if(typeof wat.deliveries === 'object') {
for(var d in wat.deliveries) {
if(wat.deliveries.hasOwnProperty(d)) {
str += "\n" + 'id: ' + wat.deliveries[d].id + "\n";
for(var p in wat.deliveries[d].profiles) {
var profile = wat.deliveries[d].profiles[p];
str += 'profile: ' + profile.id + "\n";
str += 'name: ' + profile.name + "\n";
str += 'price: ' + profile.price + "\n";
str += 'term: ' + profile.term + "\n\n";
}
}
}
}
alert(str);
}
</script>
В данном примере при каждом расчете доставки будет выводиться сообщение о всех доступных профилях доставки, а также в консоль браузера будет выводиться текст “Расчет доставки” и содержимое объекта с параметрами доставки.
Пример подписки можно посмотреть в файле example3-5-2.html
Выбор ПВЗ (onChoosePVZ)
Событие возникает, когда покупатель выбирает ПВЗ кнопкой «Выбрать» в подробном описании ПВЗ. Событие передает в функцию-обработчик объект, пример которого показн ниже в формате JSON:
{
"id": "volt_17",
"city": "907",
"cityName": "Ростов-на-Дону",
"price": "Бесплатно",
"term": "Сегодня",
"deliveryCode": "delivery_voltmarket",
"deliveryId": "delivery_voltmarket:pickup",
"deliveryName": "ВольтМаркет: Самовывоз",
"deliveryProfile": "pickup",
"PVZ": {
"Name": "ВольтМаркет-РНД",
"WorkTime": "Пн 08:00-17:00; Вт-Пт 09:00-18:00; Сб-Вс выходные",
"Address": "г. Ростов-на-Дону, Индустриальная улица 9",
"Phone": "8 863 303-42-53",
"Note": "",
"cX": "39.811568",
"cY": "47.280940"
}
}
Для формирования обработчика этого события можно использовать следующий код:
<script type="text/javascript">
var widjet = new IVOLTWidjet({
yandex_key: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', //ключ API Я.Карт
defaultCity: 'auto',
link: 'forpvz'
});
widjet.binders.add(choosePVZ, 'onChoosePVZ');
function choosePVZ(wat) {
alert('Доставка в город ' + wat.cityName +
"\nдо ПВЗ с кодом: " + wat.id + ', цена ' + wat.price
);
console.log('Выбран ПВЗ ', wat);
}
</script>
В данном примере при выборе ПВЗ (кнопка выбора ПВЗ должна отображаться, т.е. параметр choose
= true
) выводится сообщение, в котором указан город, код пункта выдачи заказов и стоимость доставки, а также в консоли браузера отобразится сообщение с текстом и объектом с параметрами доставки.
Пример создания обработчика данного события можно посмотреть в файле example3-5-3.html
Выбор курьерской доставки (onChooseCourier)
Событие возникает, когда покупатель выбирает доставку курьером для определённого города.
Событие передает в функцию-обработчик объект, пример которого приведен ниже в формате JSON:
{
"city": "Ростов-на-Дону",
"deliveryCode": "delivery_voltmarket",
"deliveryId": "delivery_voltmarket:courier",
"deliveryName": "ВольтМаркет: Курьер",
"deliveryProfile": "courier",
"price": "Бесплатно",
"term": "11 Февраля"
}
Ниже указан пример создания обработчика для этого события. В примере выводится сообщение, в котором указан город, срок доставки заказов и стоимость доставки, а также в консоли браузера отобразится сообщение с текстом и объектом с параметрами доставки.
<script type="text/javascript">
var widjet = new IVOLTWidjet({
yandex_key: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', //ключ API Я.Карт
defaultCity: 'auto',
link: 'forpvz',
onChooseCourier: onChooseCourier
});
function onChooseCourier(wat) {
alert('Выбрана доставка курьером в город ' + wat.cityName + "\n" +
'цена ' + wat.price + "\n" +
'срок ' + wat.term
);
console.log('Выбрана доставка курьером ', wat);
}
</script>
Весь код примера создания обработчика данного события можно посмотреть в файле example3-5-4.html