Commit 357df98e451691610e9a6b3ebbe628f7a35aa5aa

Authored by Андрей Ларионов
1 parent b18fdfbaf2
Exists in master

Баг с каталогами

Showing 6 changed files with 107 additions and 162 deletions Side-by-side Diff

database/migrations/2023_03_01_072712_create_areas_table.php
... ... @@ -19,8 +19,8 @@ return new class extends Migration
19 19 //$table->string('slug', 255)->unique()->nullable();
20 20 $table->text('description')->nullable();
21 21 $table->string('map_coord')->default('');
22   - $table->integer('coord_x')->default(0);
23   - $table->integer('coord_y')->default(0);
  22 + $table->float('coord_x')->default(0);
  23 + $table->float('coord_y')->default(0);
24 24 $table->string('foto_main', 255)->nullable();
25 25 $table->timestamps();
26 26 });
... ... @@ -29,7 +29,7 @@ class App {
29 29 this.sendForm('.js_popup_sending_form_', '[data-popup="success"]');
30 30 //this.sendOffer(); //отправка предложения по e-mail;
31 31  
32   - //this.setGeneralMap(); // карта на странице карт;
  32 + this.setGeneralMap(); // карта на странице карт;
33 33 this.setComplexMap('complex-map', [55.726591050908745, 37.57244549999999], 'ЖК Садовые кварталы'); // карта на странице 'ЖК';
34 34 this.setComplexMap('offer-map', [55.70851106903402, 37.65864349999999], 'Аренда торгового помещения 321,6 м2'); // карта на странице 'Предложение';
35 35 this.setCatalogSorts(); // сортировка на странице 'каталог';
... ... @@ -1206,7 +1206,7 @@ class App {
1206 1206  
1207 1207 // карта на странице карт;
1208 1208 setGeneralMap() {
1209   -/*
  1209 +
1210 1210 if (document.querySelector('#general-map')) {
1211 1211  
1212 1212 ymaps.ready(init); // Дождёмся загрузки API и готовности DOM;
... ... @@ -1358,7 +1358,7 @@ class App {
1358 1358 }
1359 1359  
1360 1360 };
1361   -*/
  1361 +
1362 1362  
1363 1363 // аккордеон в футере
1364 1364 setFooterSpoilers() {
resources/views/catalogs/elemhouse.blade -copy.php
... ... @@ -0,0 +1,52 @@
  1 + <div class="swiper-slide">
  2 + <div class="card">
  3 + <div class="card__top">
  4 + @if (empty($house->foto_main))
  5 +
  6 + @else
  7 + <img src="{{ asset(Storage::url($house->foto_main)) }}" alt="{{ $house->title }}" loading="lazy"/>
  8 + @endif;
  9 +
  10 + <h3 class="card__title">{{$house->typearea->name_type }}</h3>
  11 + <div class="card__labels">
  12 + <span class="card__label card__label-favorites js_card_favorites <?=\App\Classes\RusDate::selected_item($house->id);?>" data-val="{{$house->id}}" id="card_favorite{{$house->id}}" name="card_favorite{{$house->id}}">
  13 + <svg width="18" height="18">
  14 + <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use>
  15 + </svg>
  16 + <svg width="18" height="18">
  17 + <use xlink:href="{{ asset('images/sprite.svg#card-favorites') }}"></use>
  18 + </svg>
  19 + </span>
  20 + <a class="card__label card__label-messenger" href="#">
  21 + <svg width="25" height="25">
  22 + <use xlink:href="{{ asset('images/sprite.svg#card-messenger') }}"></use>
  23 + </svg></a></div>
  24 + </div>
  25 + <div class="card__cnt">
  26 + <div class="card__info">
  27 + <address class="card__line card__line-complex">{{ $house->areas->name_area }}</address>
  28 + <address class="card__line">{{$house->metro}} ({{$house->description_metro }})<span style="background-color: #FFC955;"></span></address>
  29 + <address class="card__line">{{$house->address }}</address>
  30 + <div class="card__line">Площадь: <b>{{$house->area}} м2</b></div>
  31 + <div class="card__line">Цена за м<sup>2</sup>: <b>{{ $house->price_m2 }}₽</b></div>
  32 + </div>
  33 + <? switch ($house->format_house) {
  34 + case 'Аренда':
  35 + $comment = "<span>в месяц</span>";
  36 + break;
  37 + case 'Продажа':
  38 + $comment = "";
  39 + break;
  40 + case 'Бизнес':
  41 + $comment= "<span>в месяц</span>";
  42 + break;
  43 + case 'Арендованные':
  44 + $comment = "<span>в месяц</span>";
  45 + break;
  46 + }
  47 + ?>
  48 + <div class="card__price"><span>{{ $house->price }} ₽ </span><? echo $comment; ?>
  49 + </div><a class="card__btn btn btn--bordered" href="{{ route('offer', ['house' => $house->id]) }}">Подробнее</a>
  50 + </div>
  51 + </div>
  52 + </div>
resources/views/catalogs/house_mini.blade - copy.php
... ... @@ -0,0 +1,48 @@
  1 +<div class="card">
  2 + <div class="card__top">
  3 + @if (empty($house->foto_main))
  4 +
  5 + @else
  6 + <img src="{{ asset(Storage::url($house->foto_main)) }}" alt="{{ $house->title }}" loading="lazy"/>
  7 + @endif;
  8 +
  9 + <h3 class="card__title">{{$house->typearea->name_type }}</h3>
  10 + <div class="card__labels"><span class="card__label card__label-favorites js_card_favorites <?=\App\Classes\RusDate::selected_item($house->id);?>" data-val="{{$house->id}}" id="card_favorite{{$house->id}}" name="card_favorite{{$house->id}}">
  11 + <svg width="18" height="18">
  12 + <use xlink:href="{{ asset('images/sprite.svg#card-favorites-empty') }}"></use>
  13 + </svg>
  14 + <svg width="18" height="18">
  15 + <use xlink:href="{{ asset('images/sprite.svg#card-favorites') }}"></use>
  16 + </svg></span><a class="card__label card__label-messenger" href="#">
  17 + <svg width="25" height="25">
  18 + <use xlink:href="{{ asset('images/sprite.svg#card-messenger') }}"></use>
  19 + </svg></a></div>
  20 + </div>
  21 + <div class="card__cnt">
  22 + <div class="card__info">
  23 + <address class="card__line card__line-complex">{{ $house->areas->name_area }}</address>
  24 + <address class="card__line">{{$house->metro}} ({{$house->description_metro }})<span style="background-color: #FFC955;"></span></address>
  25 + <address class="card__line">{{$house->address }}</address>
  26 + <div class="card__line">Площадь: <b>{{$house->area}} м2</b></div>
  27 + <div class="card__line">Цена за м<sup>2</sup>: <b>{{ $house->price_m2 }}₽</b></div>
  28 + </div>
  29 + <? switch ($house->format_house) {
  30 + case 'Аренда':
  31 + $comment = "<span>в месяц</span>";
  32 + break;
  33 + case 'Продажа':
  34 + $comment = "";
  35 + break;
  36 + case 'Бизнес':
  37 + $comment= "<span>в месяц</span>";
  38 + break;
  39 + case 'Арендованные':
  40 + $comment = "<span>в месяц</span>";
  41 + break;
  42 + }
  43 + ?>
  44 + <div class="card__price"><span>{{ $house->price }} ₽ </span><? echo $comment; ?>
  45 + </div><a class="card__btn btn btn--bordered" href="{{ route('offer', ['house' => $house->id]) }}">Подробнее</a>
  46 + </div>
  47 + </div>
  48 +
resources/views/house/post.blade.php
... ... @@ -113,7 +113,7 @@
113 113 </div>
114 114 </div>
115 115  
116   - <!---------------------------!>
  116 + <!--------------------------->
117 117 <div class="offer-side-popup" data-popup="offer-side-popup">
118 118 <div class="offer-side-popup__wrap">
119 119 <button class="offer-side-popup__close js_popup_close" type="button">
... ... @@ -144,7 +144,7 @@
144 144 </button>
145 145 </div>
146 146 </div>
147   - <!---------------------------!>
  147 + <!--------------------------->
148 148 <div class="offer__lines">
149 149 <div class="offer__line"><span>Аренда в год за м2</span><span>{{ $house->rent_in_year }} ₽</span></div>
150 150 <div class="offer__line"><span>Аренда в месяц</span><span>{{ $house->rent_in_month }} ₽</span></div>
resources/views/mapsobj.blade.php
... ... @@ -6,161 +6,6 @@
6 6  
7 7 @section('custom_js')
8 8 @include('js.filter_value')
9   - <script>
10   - setGeneralMap() {
11   -
12   - if (document.querySelector('#general-map')) {
13   -
14   - ymaps.ready(init); // Дождёмся загрузки API и готовности DOM;
15   -
16   - function init() {
17   -
18   - const myMap = new ymaps.Map('general-map', { // Создание экземпляра карты и его привязка к контейнеру с заданным id;
19   - center: [55.752933963675126, 37.52233749962665], // При инициализации карты обязательно нужно указать её центр и коэффициент масштабирования;
20   - zoom: 10,
21   - controls: [] // Скрываем элементы управления на карте;
22   - });
23   -
24   - // Создаём макет содержимого.
25   - const MyIconContentLayout = ymaps.templateLayoutFactory.createClass(
26   - '<div style="color: #FFFFFF; font-weight: bold;">$[properties.iconContent]</div>'
27   - );
28   -
29   - let collection = new ymaps.GeoObjectCollection(null, { // Создаём коллекцию, в которую будемпомещать метки (что-то типа массива);
30   - // preset: 'islands#yellowIcon'
31   - });
32   -
33   - let collectionCoords = [ // Создаём массив с координатами (координаты должны располагаться в том же порядке, что и адреса в списке на сайте);
34   - [55.867783219108354, 37.392867499999916],
35   - [55.728043075486504, 37.73937949999994],
36   - [55.72624100423305, 37.476078499999964],
37   - [55.80751105044832, 37.449622999999974],
38   - [55.601783098948836, 37.36700499999998],
39   - [55.86086502152225, 37.540348999999964],
40   - [55.784961528728715, 37.56188599999996],
41   - [55.63910010399773, 37.319407999999996],
42   - [55.55819256767507, 37.55711549999994],
43   - [55.79829252928473, 37.52063549999999],
44   - ];
45   -
46   - for (let i = 0, l = collectionCoords.length; i < l; i++) { // C помощью цикла добавляем все метки в коллекцию;
47   - collection.add(new ymaps.Placemark(collectionCoords[i]));
48   - collection.get(i).properties.set('iconContent', `${i + 1}`); // Добавляем каждой метке порядковый номер, записываем его в свойство 'iconContent';
49   - }
50   -
51   - myMap.geoObjects.add(collection); // Добавляем коллекцию с метками на карту;
52   -
53   - collection.options.set('iconLayout', 'default#imageWithContent'); // Необходимо указать данный тип макета;
54   - collection.options.set('iconImageHref', 'images/mark-complex.svg'); // Своё изображение иконки метки;
55   - collection.options.set('iconImageSize', [52, 67]); // Размеры метки;
56   - collection.options.set('iconImageOffset', [-26, -67]); // Смещение левого верхнего угла иконки относительно её "ножки" (точки привязки);
57   - collection.options.set('iconContentOffset', [0, 17]);
58   - collection.options.set('iconContentLayout', MyIconContentLayout); // Смещение левого верхнего угла иконки относительно её "ножки" (точки привязки);
59   -
60   - const pageMapBar = document.querySelector('.js_page_map_bar');
61   - const pageMapBarBtn = pageMapBar.querySelector('.js_page_map_bar_btn');
62   - const pageMapBarList = pageMapBar.querySelector('.js_page_map_bar_list');
63   - const pageMapBarCards = pageMapBar.querySelectorAll('.card-news');
64   -
65   - const showCard = (i) => {
66   -
67   - pageMapBarCards.forEach((card, k) => {
68   -
69   - card.classList.remove('active');
70   -
71   - if (i == k) {
72   - card.classList.add('active');
73   - }
74   -
75   - });
76   -
77   - };
78   -
79   - const hidecard = () => {
80   -
81   - pageMapBarCards.forEach(card => {
82   - card.classList.remove('active');
83   - });
84   -
85   - }
86   -
87   - let pageMapBarItems;
88   -
89   - pageMapBarBtn.addEventListener('click', () => {
90   - pageMapBar.classList.toggle('active');
91   - });
92   -
93   - pageMapBarList.addEventListener('click', (e) => {
94   -
95   - if (e.target.closest('.page-map-bar__item')) {
96   -
97   - pageMapBarItems = pageMapBarList.querySelectorAll('.page-map-bar__item');
98   -
99   - pageMapBarItems.forEach((item, i) => {
100   -
101   - if (e.target == item && e.target.classList.contains('active')) {
102   -
103   - item.classList.remove('active');
104   -
105   - hidecard();
106   -
107   - } else if (e.target == item) {
108   -
109   - pageMapBarItems.forEach(item => {
110   - item.classList.remove('active');
111   - });
112   -
113   - item.classList.add('active');
114   -
115   - let offsetCoords = collection.get(i).geometry.getCoordinates();
116   -
117   - offsetCoords = [
118   - offsetCoords[0] - 0.0025,
119   - offsetCoords[1]
120   - ];
121   -
122   - myMap.setZoom(16);
123   - // myMap.setCenter(collection.get(i).geometry.getCoordinates());
124   - myMap.setCenter(offsetCoords);
125   -
126   - showCard(i);
127   -
128   - }
129   -
130   - });
131   - }
132   -
133   - });
134   -
135   - collection.events.add('click', function (e) {
136   -
137   - for (let i = 0, l = collection.getLength(); i < l; i++) {
138   -
139   - if (e.get('target') == collection.get(i)) {
140   -
141   - pageMapBarItems = pageMapBarList.querySelectorAll('.page-map-bar__item');
142   -
143   - pageMapBarItems.forEach((item) => {
144   - pageMapBar.classList.add('active');
145   - item.classList.remove('active');
146   - });
147   -
148   - pageMapBarItems[i].classList.add('active');
149   -
150   - showCard(i);
151   -
152   - }
153   -
154   - }
155   -
156   - });
157   -
158   - }
159   -
160   - }
161   -
162   - };
163   - </script>
164 9 @endsection
165 10  
166 11 @section('content')