Exemplo n.º 1
0
 messager.subscribe('init', config => {
     this.config = config;
     sailplay.send('load.actions.list')
     sailplay.on('load.actions.list.success', data => {
         this.actions(data.actions)
     })
 })
Exemplo n.º 2
0
    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)
        })


    }
Exemplo n.º 3
0
 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')
     })
 }
Exemplo n.º 4
0
 messager.subscribe('actions_update', () => {
     sailplay.send('load.actions.list')
     sailplay.on('load.actions.list.success', data => {
         this.actions(data.actions)
     })
 })
Exemplo n.º 5
0
    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)
            })
        })
    }
Exemplo n.º 6
0
    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>&nbsp;</p>            
            <p>
                Ваша персональная скидка увеличена до 15%*. Мы продолжаем начислять Вам по 2%* бонусов с каждого чека, которыми можно оплачивать до 100% своих покупок. Дополнительно, Вам на карту теперь возвращаются 100% стоимости услуг сервиса. Мы будем рады подарить Вам 3 000 бонусов в день рождения.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 10% и начисляется бонус 1%
            </p>`,
            `<p>
                Круг избранных очень мал. Теперь Вы в нем. Золотая медаль Ваша. С суммой покупок больше 200 000 рублей вы достигли статуса «Чемпион». Одна ступень отделяет вас от финала.
            </p>
            <p>&nbsp;</p>
            <p>                
                Ваша именная PRO-карта будет доставлена в любой удобный Вам розничный магазин СпортДепо, или по указанному Вами адресу. Ваша персональная скидка увеличена до 12%*. Но это ещё не всё! Теперь Вы можете оплачивать бонусами 100% своих покупок и услуги сервиса. Мы продолжаем начислять Вам по 2%* бонусов с каждого чека. В день рождения мы подарим Вам 2 000 бонусов.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 7% и начисляется бонус 1%
            </p>`,
            `<p>
                Поздравляем – вы достигли статуса «Вице-Чемпион»! Серебряная медаль Ваша! С суммой покупок свыше 90 000 рублей Ваша персональная скидка увеличена до 10%*. Но это ещё не всё! Мы продолжаем начислять Вам по 2%* бонусов и теперь Вы можете ими оплачивать до 50% стоимости своих покупок и услуг сервиса. В день рождения мы начислим Вам 1 000 бонусов в подарок.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 5% и начисляется бонус 1%
            </p>`,
            `<p>
                Мы рады, что Вы с нами! С суммой покупок 50 000 рублей Вы достигли статуса «Призёр» - получите свою первую медаль! Ваша персональная скидка 5%*. Но это ещё не всё! Мы продолжаем начислять Вам по 3%* бонусов на карту с каждой покупки. 1 бонус = 1 рубль. Теперь бонусами Вы можете оплатить до 30% стоимости своих покупок и услуг сервиса. В день рождения Вы получите 500 бонусов в подарок.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 3% и начисляется бонус 1%
            </p>
            `,
            `<p>
                Добро пожаловать в команду! Весь наш персонал – профессиональные спортсмены. Подберём экипировку с учетом Ваших индивидуальных потребностей. Этот сертификат и 300 бонусов в подарок на первую покупку!
            </p>
            <p>&nbsp;</p>                        
            <p>
                С каждой покупки на Вашу карту будут начисляться бонусы в объёме 5% * от суммы чека - используйте их для оплаты дальнейших покупок. 1 бонус = 1 рубль. Бонусами можно оплатить до 20% стоимости покупок.
            </p>
            <p>&nbsp;</p>                        
            <p>            
                Вам, как участнику программы лояльности, открывается доступ к привилегиям:
            </p>
            <ul>
                <li>значительная выгода при покупке товаров</li>
                <li>полезные информационные сервисы</li>
                <li>300 бонусов в подарок на день рождения</li>
                <li>выгодные условия по сервису и ремонту инвентаря</li>
            </ul>
            <p>&nbsp;</p>            
            <p>
                Список привилегий постоянно расширяется.
            </p>
            <p>
                С каждой покупки на Вашу командную карту начисляются бонусы в объёме 5%* от суммы чека. 1 бонус = 1 рубль. Бонусами можно оплатить до 20% стоимости покупок.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">* за исключением категории «беговые лыжи», на которую начисляется бонус 3%</p>`
        ];

        this.messages = [
            `<p>
                С суммой покупок более 400 000 рублей Вы достигните статуса «Легенда». Для Вас откроется уникальная возможность заказа экипировки от мировых брендов по индивидуальным параметрам.
                Ваша персональная скидка будет увеличена до 15%*. Мы продолжим начислять Вам по 2%* бонусов с каждого чека, которыми можно оплачивать до 100% своих покупок. Дополнительно, Вам на карту будут возвращаться 100% стоимости услуг сервиса.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 10% и начисляется бонус 1%
            </p>`,
            `<p>
                Круг избранных очень мал. Золотая медаль и титул «Чемпион» будут присвоены Вам при сумме покупок свыше 200 000 рублей.
            </p>
            <p>&nbsp;</p>
            <p>                
                Ваша именная PRO-карта будет изготовлена и доставлена в любой удобный Вам розничный магазин СпортДепо, или по указанному Вами адресу. Ваша персональная скидка будет увеличена до 12%*. Теперь Вы сможете оплачивать бонусами 100% своих покупок и услуги сервиса. Мы продолжим начислять Вам по 2%* бонусов с каждого чека.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 7% и начисляется бонус 1%
            </p>`,
            `<p>
                Когда сумма Ваших покупок превысит 90 000 рублей, Вы достигните статуса «Вице-Чемпион» и получите серебряную медаль. Ваша персональная скидка будет увеличена до 10%*. Но это ещё не всё! Мы продолжим начислять Вам по 2%* бонусов и Вы сможете ими оплачивать до 50% стоимости своих покупок и услуг сервиса.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 5% и начисляется бонус 1%
            </p>`,
            `<p>
                С суммой покупок 50 000 рублей Вы достигнете статуса «Призёр» и получите свою первую медаль! Ваша персональная скидка составит 5%*. Но это ещё не всё! Мы продолжим начислять Вам по 3%* бонусов на карту с каждой покупки. 1 бонус = 1 рубль. Теперь бонусами Вы сможете оплачивать до 30% стоимости своих покупок и услуг сервиса.
            </p>
            <p>&nbsp;</p>            
            <p style="font-size: 12px">
                * за исключением категории «беговые лыжи», на которую предоставляется скидка 3% и начисляется бонус 1%
            </p>
            `,
            `<p>
                При регистрации в программе Вы получаете статус «Участник» , который открывает доступ к привилегиям: 
            </p>
            <ul>
                <li>значительная выгода при покупке товаров</li>
                <li>полезные информационные сервисы</li>
                <li>300 бонусов в подарок на день рождения</li>
                <li>выгодные условия по сервису и ремонту инвентаря</li>
            </ul>
            <p>&nbsp;</p>            
            <p>
                Список привилегий постоянно расширяется.
            </p>
            <p>
                С каждой покупки на Вашу командную карту начисляются бонусы в объёме 5%* от суммы чека. 1 бонус = 1 рубль. Бонусами можно оплатить до 20% стоимости покупок.
            </p>
            <p>&nbsp;</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)
        })
    }