PageSourceSearch

https://smartum.com.ua/js/goals.js?v=1790783557?v=1.0.239

js smartum.com.ua collected 2026-10-04 18:29:57 UTC 5,249 bytes, 114 lines download raw bytes

1//События GA4 - дополнительно к gtag-событиям ниже (их не меняем).
2//На сайте нет GTM: gtag.js не читает объекты {'event': ...} из dataLayer, поэтому отправляем через gtag();
3//без gtag (например, если его заблокировали) - в dataLayer, для GTM, если его подключат
4function pushDataLayerEvent(eventName, params){
5    try{
6        var data = {};
7        params = params || {};
8        for (var key in params) {
9            if (params.hasOwnProperty(key) && params[key] !== undefined && params[key] !== null && params[key] !== '') {
10                data[key] = params[key];
11            }
12        }
13        if (typeof window.gtag === 'function') {
14            window.gtag('event', eventName, data);
15            return;
16        }
17        window.dataLayer = window.dataLayer || [];
18        data['event'] = eventName;
19        window.dataLayer.push(data);
20    }catch (e) {
21        console.log(e);
22    }
23}
24
25//Тип формы, курс и город из формы (если есть). details: {form_type: 'leads', form: <form>}
26function getGoalFormParams(details, defaultFormType){
27    var params = {'form_type': details && details.form_type ? details.form_type : defaultFormType};
28
29    try{
30        var form = details && details.form ? details.form : null;
31        if (form && form.querySelector) {
32            var formTypeInput = form.querySelector('[name="formType"]');
33            if (!(details && details.form_type) && formTypeInput && formTypeInput.value) {
34                params['form_type'] = formTypeInput.value;
35            }
36
37            var courseInput = form.querySelector('[name="subjectCode"]') || form.querySelector('[name="program"]');
38            if (courseInput && courseInput.value && courseInput.value !== '0') {
39                params['course'] = courseInput.value;
40            }
41
42            var cityInput = form.querySelector('input[name="city"]');
43            if (cityInput && cityInput.value && cityInput.value !== '0') {
44                var cityOption = form.querySelector('[data-select-name="city"] [data-value-id="' + cityInput.value + '"]');
45                params['city'] = cityOption && cityOption.getAttribute('data-value') ? cityOption.getAttribute('data-value') : cityInput.value;
46            }
47        }
48    }catch (e) {
49        console.log(e);
50    }
51
52    return params;
53}
54
55//Открытие любой формы по кнопке [data-open-form] (кроме выбора города - это не форма заявки)
56document.addEventListener('click', function (e) {
57    var opener = e.target && e.target.closest ? e.target.closest('[data-open-form]') : null;
58    if (opener && opener.getAttribute('data-open-form') !== 'cities') {
59        pushDataLayerEvent('form_open', {'form_type': opener.getAttribute('data-open-form')});
60    }
61}, true);
62
63function toGoal(goal, action, details){
64    try{
65        switch(goal) {
66            case 'addLead':
67                switch (action){
68                    case 'send':
69                        pushDataLayerEvent('generate_lead', getGoalFormParams(details, 'leads'));
70
71                        try {
72                            fbq('track', 'Lead');
73                        }catch (e) {}
74
75                        gtag('event', 'лид_ушел_на_платформу__actually_', { 'event_category': 'conversion', 'event_action': 'request_form_send', });
76                        break;
77                    case 'open':
78                        gtag('event', 'нажатие__записать_ребенка_на_обучение', { 'event_category': 'conversion', 'event_action': 'open_lead_form', });
79                        break;
80                }
81                break;
82            case 'addLeadTimePopup':
83                switch (action){
84                    case 'send':
85                        pushDataLayerEvent('generate_lead', getGoalFormParams(details, 'consult'));
86
87                        try {
88                            fbq('track', 'Lead');
89                        }catch (e) {}
90
91                        gtag('event', 'отправка_формы_консультации_по_программа', { 'event_category': 'conversion', 'event_action': 'send_form_consult_programm', });
92                        break;
93                }
94                break;
95            case 'director':
96                switch (action){
97                    case 'send':
98                        gtag('event', 'задать_вопрос_директору__actually_', { 'event_category': 'director_mess', 'event_action': 'send_form_director', });
99                        break;
100                }
101                break;
102            case 'franchise':
103                switch (action){
104                    case 'send':
105                        pushDataLayerEvent('generate_lead', getGoalFormParams(detail
105s, 'franchise'));
106                        gtag('event', 'отправка_заявки_на_франшизу__actually_', { 'event_category': 'callbackFormFranchise', 'event_action': 'send_form', });
107                        break;
108                }
109                break;
110        }
111    }catch (e) {
112        console.log(e);
113    }
114}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.