messager.subscribe('init', config => { this.config = config; sailplay.send('load.actions.list') sailplay.on('load.actions.list.success', data => { this.actions(data.actions) }) })
return function (params) { this.achiv = ko.observableArray([]); this.update = config => { if (!config) config = this.config; sailplay.send('load.badges.list', { lang: 'ru' }) } sailplay.on('load.badges.list.success', result => { result.multilevel_badges.forEach(arr => { if (arr[0].name != 'Участник') { this.achiv(arr) } }) }); messager.subscribe('init', config => { this.config = config; this.update(config) }) }
init() { sailplay.send('init', this.options) sailplay.on('init.success', config => { this.config = config; this.config.auth_hash = this.auth_hash; messager.publish(config, 'init') }) }
messager.subscribe('actions_update', () => { sailplay.send('load.actions.list') sailplay.on('load.actions.list.success', data => { this.actions(data.actions) }) })
return function (params) { this.actions = ko.observableArray([]) this.profile_not_filled = ko.observable(true); this.email_not_verified = ko.observable(true); this.isAction = (action, name) => { if (action.action) return action.action == name else return action.type == name } this.perform = action => { if(!action.socialType) { sailplay.send('actions.perform', action) } } this.openProfile = () => { messager.publish(null, 'open_profile') } this.verifyEmail = () => { location.href = '/personal/#settings'; location.reload(); } $('body').on('mouseenter', '.bns_qust_item', function() { $(this).addClass('type_hovered'); }).on('mouseleave', '.bns_qust_item', function() { $(this).removeClass('type_hovered'); }).on('hover', '.bns_qust_item iframe', function() { $(this).parents('.bns_qust_item').addClass('type_hovered'); }); this.onMouseEnter = (action, e) => { let isIframe = e.target.tagName == 'IFRAME'; let button = e.target.parentElement; if(!isIframe) { button = e && e.target && e.target.getElementsByClassName && e.target.getElementsByClassName('bns_social_iframe')[0]; } if(action.socialType && button && !button.classList.contains('parsed')) { button.classList.add('parsed'); sailplay.actions.parse(button, action) } } sailplay.on('actions.perform.success', data => { setTimeout(() => { messager.publish(this.config, 'init'); }, 500) }) sailplay.on('actions.perform.complete', data => { setTimeout(() => { messager.publish(this.config, 'init'); }, 500) }) messager.subscribe('profile_filled', () => { this.profile_not_filled(false); }) messager.subscribe('email_verified', () => { this.email_not_verified(false); }) messager.subscribe('actions_update', () => { sailplay.send('load.actions.list') sailplay.on('load.actions.list.success', data => { this.actions(data.actions) }) }) messager.subscribe('init', config => { this.config = config; sailplay.send('load.actions.list') sailplay.on('load.actions.list.success', data => { this.actions(data.actions) }) }) }
return function (params) { this.setCookie = (c_name, value, exdays) => { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + "; expires=" + exdate.toUTCString(); document.cookie = c_name + "=" + c_value; } this.getCookie = c_name => { var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if (c_start == -1) c_start = c_value.indexOf(c_name + "="); if (c_start == -1) c_value = null; else { c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if (c_end == -1) c_end = c_value.length; c_value = unescape(c_value.substring(c_start, c_end)); } return c_value; } this.renew_messages = [ `<p> Вы – легенда! С суммой покупок более 400 000 рублей для Вас открыта уникальная возможность заказа экипировки от мировых брендов по индивидуальным параметрам. </p> <p> </p> <p> Ваша персональная скидка увеличена до 15%*. Мы продолжаем начислять Вам по 2%* бонусов с каждого чека, которыми можно оплачивать до 100% своих покупок. Дополнительно, Вам на карту теперь возвращаются 100% стоимости услуг сервиса. Мы будем рады подарить Вам 3 000 бонусов в день рождения. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 10% и начисляется бонус 1% </p>`, `<p> Круг избранных очень мал. Теперь Вы в нем. Золотая медаль Ваша. С суммой покупок больше 200 000 рублей вы достигли статуса «Чемпион». Одна ступень отделяет вас от финала. </p> <p> </p> <p> Ваша именная PRO-карта будет доставлена в любой удобный Вам розничный магазин СпортДепо, или по указанному Вами адресу. Ваша персональная скидка увеличена до 12%*. Но это ещё не всё! Теперь Вы можете оплачивать бонусами 100% своих покупок и услуги сервиса. Мы продолжаем начислять Вам по 2%* бонусов с каждого чека. В день рождения мы подарим Вам 2 000 бонусов. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 7% и начисляется бонус 1% </p>`, `<p> Поздравляем – вы достигли статуса «Вице-Чемпион»! Серебряная медаль Ваша! С суммой покупок свыше 90 000 рублей Ваша персональная скидка увеличена до 10%*. Но это ещё не всё! Мы продолжаем начислять Вам по 2%* бонусов и теперь Вы можете ими оплачивать до 50% стоимости своих покупок и услуг сервиса. В день рождения мы начислим Вам 1 000 бонусов в подарок. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 5% и начисляется бонус 1% </p>`, `<p> Мы рады, что Вы с нами! С суммой покупок 50 000 рублей Вы достигли статуса «Призёр» - получите свою первую медаль! Ваша персональная скидка 5%*. Но это ещё не всё! Мы продолжаем начислять Вам по 3%* бонусов на карту с каждой покупки. 1 бонус = 1 рубль. Теперь бонусами Вы можете оплатить до 30% стоимости своих покупок и услуг сервиса. В день рождения Вы получите 500 бонусов в подарок. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 3% и начисляется бонус 1% </p> `, `<p> Добро пожаловать в команду! Весь наш персонал – профессиональные спортсмены. Подберём экипировку с учетом Ваших индивидуальных потребностей. Этот сертификат и 300 бонусов в подарок на первую покупку! </p> <p> </p> <p> С каждой покупки на Вашу карту будут начисляться бонусы в объёме 5% * от суммы чека - используйте их для оплаты дальнейших покупок. 1 бонус = 1 рубль. Бонусами можно оплатить до 20% стоимости покупок. </p> <p> </p> <p> Вам, как участнику программы лояльности, открывается доступ к привилегиям: </p> <ul> <li>значительная выгода при покупке товаров</li> <li>полезные информационные сервисы</li> <li>300 бонусов в подарок на день рождения</li> <li>выгодные условия по сервису и ремонту инвентаря</li> </ul> <p> </p> <p> Список привилегий постоянно расширяется. </p> <p> С каждой покупки на Вашу командную карту начисляются бонусы в объёме 5%* от суммы чека. 1 бонус = 1 рубль. Бонусами можно оплатить до 20% стоимости покупок. </p> <p> </p> <p style="font-size: 12px">* за исключением категории «беговые лыжи», на которую начисляется бонус 3%</p>` ]; this.messages = [ `<p> С суммой покупок более 400 000 рублей Вы достигните статуса «Легенда». Для Вас откроется уникальная возможность заказа экипировки от мировых брендов по индивидуальным параметрам. Ваша персональная скидка будет увеличена до 15%*. Мы продолжим начислять Вам по 2%* бонусов с каждого чека, которыми можно оплачивать до 100% своих покупок. Дополнительно, Вам на карту будут возвращаться 100% стоимости услуг сервиса. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 10% и начисляется бонус 1% </p>`, `<p> Круг избранных очень мал. Золотая медаль и титул «Чемпион» будут присвоены Вам при сумме покупок свыше 200 000 рублей. </p> <p> </p> <p> Ваша именная PRO-карта будет изготовлена и доставлена в любой удобный Вам розничный магазин СпортДепо, или по указанному Вами адресу. Ваша персональная скидка будет увеличена до 12%*. Теперь Вы сможете оплачивать бонусами 100% своих покупок и услуги сервиса. Мы продолжим начислять Вам по 2%* бонусов с каждого чека. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 7% и начисляется бонус 1% </p>`, `<p> Когда сумма Ваших покупок превысит 90 000 рублей, Вы достигните статуса «Вице-Чемпион» и получите серебряную медаль. Ваша персональная скидка будет увеличена до 10%*. Но это ещё не всё! Мы продолжим начислять Вам по 2%* бонусов и Вы сможете ими оплачивать до 50% стоимости своих покупок и услуг сервиса. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 5% и начисляется бонус 1% </p>`, `<p> С суммой покупок 50 000 рублей Вы достигнете статуса «Призёр» и получите свою первую медаль! Ваша персональная скидка составит 5%*. Но это ещё не всё! Мы продолжим начислять Вам по 3%* бонусов на карту с каждой покупки. 1 бонус = 1 рубль. Теперь бонусами Вы сможете оплачивать до 30% стоимости своих покупок и услуг сервиса. </p> <p> </p> <p style="font-size: 12px"> * за исключением категории «беговые лыжи», на которую предоставляется скидка 3% и начисляется бонус 1% </p> `, `<p> При регистрации в программе Вы получаете статус «Участник» , который открывает доступ к привилегиям: </p> <ul> <li>значительная выгода при покупке товаров</li> <li>полезные информационные сервисы</li> <li>300 бонусов в подарок на день рождения</li> <li>выгодные условия по сервису и ремонту инвентаря</li> </ul> <p> </p> <p> Список привилегий постоянно расширяется. </p> <p> С каждой покупки на Вашу командную карту начисляются бонусы в объёме 5%* от суммы чека. 1 бонус = 1 рубль. Бонусами можно оплатить до 20% стоимости покупок. </p> <p> </p> <p style="font-size: 12px">* за исключением категории «беговые лыжи», на которую начисляется бонус 3%</p>` ] this.nextStatusPoint = [ 400000, 200000, 90000, 50000, 0 ] this.statuses = ko.observableArray([]); this.firstActive = ko.observable(-1); this.isActive = (status, index) => { if (this.firstActive() == -1) if (status.is_received) { if (this.getCookie('last_status') && this.getCookie('last_status') != index()) { this.popupVm.openStatus(this.statuses()[index()], index, true) } this.setCookie('last_status', index()) this.firstActive(index()); messager.publish(this.nextStatusPoint[index() - 1 > 0 ? index() - 1 : 0], 'next-status'); } return this.firstActive() == index() } this.update = config => { if (!config) config = this.config; this.alreadyActive = false; sailplay.send('load.badges.list', { lang: 'ru' }) } sailplay.on('load.badges.list.success', result => { sailplay.jsonp.get(this.config.DOMAIN + this.config.urls.tags.exist, { auth_hash: this.config.auth_hash, tags: JSON.stringify(['Участник', 'Призер', 'Вице-чемпион', 'Чемпион', 'Легенда']) }, result_tags => { var discount_tags = result_tags.tags.reverse(); var tag_exist = false; result.multilevel_badges.forEach(arr => { let temp = [].concat(arr), temp_for_popup = [].concat(arr); if (arr[0].name == 'Участник') { discount_tags.forEach((tag, index) => { if (tag.exist & !tag_exist) { if (this.getCookie('last_status') && this.getCookie('last_status') != index) { this.popupVm.openStatus(temp_for_popup.reverse()[index], () => index, true) } this.setCookie('last_status', index) this.firstActive(index); messager.publish(this.nextStatusPoint[index - 1 > 0 ? index - 1 : 0], 'next-status'); tag_exist = true; } }) this.statuses(temp.reverse()) } }) }) }); this.popupVm = { messages: this.messages, renew_messages: this.renew_messages, index: ko.observable(), status: ko.observable(), renew: ko.observable(false), opened: ko.observable(false), width: ko.observable('660px'), openStatus: (status, index, isRenew) => { document.body.className += ' no_scrol'; this.popupVm.status(status); this.popupVm.renew(isRenew || false); this.popupVm.index(index()); this.popupVm.opened(true); } } messager.subscribe('init', config => { this.config = config; this.update(config) }) }