PageSourceSearch

https://www.sibdom.ru/assets/javascripts/public/stickers_lib.js?1761187254

js sibdom.ru collected 2026-09-25 04:04:31 UTC 6,467 bytes, 184 lines download raw bytes

1
2function rendering_sticker_marker_ya(list, map, markers, skip_sticker_id) {
3
4  for (var y in list) {
5    var p = list[y];
6    var key = p.lat_avg + '|' + p.lng_avg + '|' + p.count_stickers;
7    //непоказываю в маркерах текущий вариант
8
9    if (p.count_stickers == 1 && skip_sticker_id == p.sticker_ids) {
10      continue;
11    } else if (p.count_stickers > 1 && p.sticker_ids.split(',').indexOf('' + skip_sticker_id) >= 0) {
12
13      var index = p.sticker_ids.split(',').indexOf('' + skip_sticker_id),
14              sticker_ids_tmp = [], sticker_ids = p.sticker_ids.split(',');
15
16      for (y in sticker_ids) {
17        if (y == index) {
18          continue
19        }
20        sticker_ids_tmp.push(sticker_ids[y]);
21      }
22      p.sticker_ids = sticker_ids_tmp.join(',');
23      p.count_stickers = p.count_stickers - 1;
24
25    }
26
27
28
29
30    var addon_class = 'placemark_layout_container',
31            bit = ('' + p.count_stickers).length,
32            d = 30 + bit * 5,
33            cluster = true;
34    if (p.lat_max == p.lat_min && p.lng_max == p.lng_min) {
35      addon_class = 'placemark_layout_container--one';
36      d = 15 + bit * 5;
37      var cluster = false;
38    }
39
40    var placemark_layout_container = $('<div class="' + addon_class + ' placemark_layout_container--' + bit + '">' +
41            '<div class="circle_layout">' + (p.count_stickers == '1' ? " " : p.count_stickers) + '</div></div>');
42    var circleLayout = ymaps.templateLayoutFactory.createClass(placemark_layout_container.prop('outerHTML'));
43    var circlePlacemark = new ymaps.Placemark(
44            [p.lat_avg, p.lng_avg], {}, {
45      iconLayout: circleLayout,
46      // Описываем фигуру активной области "Круг".
47      iconShape: {
48        type: 'Circle',
49        // Круг описывается в виде центра и радиуса
50        coordinates: [0, 0],
51        radius: d / 2
52      }
53    });
54    circlePlacemark.cluster_settings = p;
55    if (cluster) {
56      console.log('cluster');
57      circlePlacemark.events.add('click', function (e) {
58        var cluster_settings = e.get('target').cluster_settings;
59        map.setBounds([[cluster_settings.lat_min, cluster_settings.lng_min], [cluster_settings.lat_max, cluster_settings.lng_max]]);
60        if (map.getZoom() > 18) {
61          console.log('setZoom 1');
62          map.setZoom(18);
63        }
64      });
65    } else {
66      console.log('point');
67      circlePlacemark.events.add('click', function (e) {
68        var placemark = e.get('target');
69        var cluster_settings = placemark.cluster_settings;
70        var d = {sticker_ids: cluster_settings.sticker_ids, region: cluster_settings.region};
71        $.ajax({
72          url: '/api/stickers2map/',
73          dataType: 'json',
74          method: 'post',
75          data: d,
76        }).done(function (data) {
77          var newContent = '';
78          for (i in data.result) {
79            var sticker = data.result[i];
80            newContent += "<a class='baloon-row' href='" + sticker.url + "' target='_blank'>\n\
81                                    <div class='photo'>\n\
82                                      " + (sticker.image != null ? "<img src='" + sticker.image + "'/>" : "") + "\n\
83                                      <div class='type'>" + sticker.type_name + "</div>\n\
84                                    </div>\n\
85                                    <div class='info'>\n\
86                                      <div class='address'>" + sticker.address + "</div>\n\
87                                      <div class='text'>" + sticker.info + "</div>\n\
88                                      <div class='price'>" + sticker.price + "</div>\n\
89                                    </div>\n\
90                                  <div class='clear'></div>\n\
91                                  </a>";
92          }
93          map.balloon.open([cluster_settings.lat_avg, cluster_settings.lng_avg], newContent, {});
94
95        });
96      });
97    }
98
99
100    markers.add(circlePlacemark);
101
102  }
103
104  map.geoObjects.add(markers);
105}
106
107
108var button_stickers = null;
109
110function similar_marker_show() {
111
112
113  button_stickers = $('<a class="button-map button-map-stickers">Показать похожие варианты</a>').appendTo($('#tab_maps'));
114  button_stickers.click(function () {
115    $(this).toggleClass('active');
116    if ($(this).hasClass('active')) {
117      similar_marker_load();
118      if (typeof yaCounterMain === 'object') {
119        yaCounterMain.reachGoal('map_click_more_stickers', '1');
120      }
121    } else {
122
123
124      functions_sticker_view.stiker_markers.removeAll();
125      functions_sticker_view.map.geoObjects.add(functions_sticker_view.stiker_markers);
126
127    }
128  });
129  functions_sticker_view.stiker_markers = false;
130
131
132  //similar_marker_load();
133
134
135  functions_sticker_view.map.events.add('actionend', function (event) {
136    similar_marker_load();
137  });
138
139
140
141}
142
143
144
145function similar_marker_load() {
146  if (!button_stickers.hasClass('active')) {
147    return;
148  }
149
150  if (functions_sticker_view.timer_LSM) {
151    clearTimeout(functions_sticker_view.timer_LSM);
152  }
153
154  functions_sticker_view.timer_LSM = setTimeout(function () {
155
156    var url = "/" +
157            sticker_section_path + "/" + sticker_action_path + "/?q=" +
158            "7_" + parseInt(sticker_price_full * 1.2) +
159            ".8_" + parseInt(sticker_price_full * 0.8) + ".57_1";
160    var s_v = functions_sticker_view.map.getBounds()[0][0] + ';' + functions_sticker_view.map.getBounds()[0][1] +
161            ';' + functions_sticker_view.map.getBounds()[1][0] + ';' + functions_sticker_view.map.getBounds()[1][1] +
162            ';' + functions_sticker_view.map.getZoom();
163
164    s_v = s_v.split('-').join('m').split('.').join(',');
165    url += ".58_" + s_v;
166
167
168
169
170
171    $.ajax({
172      url: url,
173      dataType: 'json',
174      method: 'post'
175    }).done(function (data) {
176      if (functions_sticker_view.stiker_markers) {
177        functions_sticker_view.stiker_markers.removeAll();
178        functions_sticker_view.map.geoObjects.add(functions_sticker_view.stiker_markers);
179      }
180      functions_sticker_view.stiker_markers = new ymaps.GeoObjectCollection({}, {});
181      rendering_sticker_marker_ya(data.cluster, functions_sticker_view.map, functions_sticker_view.stiker_markers, sticker_id);
182    });
183  }, 500);
184}

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.