mirror of
https://github.com/robonen/metr.git
synced 2026-03-20 02:44:42 +00:00
Catalog filters
This commit is contained in:
@@ -212,10 +212,12 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sugg__img {
|
.sugg__img {
|
||||||
flex-basis: 30%;
|
width: 100%;
|
||||||
height: 460px;
|
height: 100%;
|
||||||
margin: 4% 0 1% auto;
|
margin: 4% 0 1% auto;
|
||||||
background: linear-gradient(to top, rgba(1, 80, 140, 1), rgba(37, 45, 45, 0.6));
|
/*background: linear-gradient(to top, rgba(1, 80, 140, 1), rgba(37, 45, 45, 0.6));*/
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: cover;
|
||||||
transition: transform .2s linear;
|
transition: transform .2s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,6 +257,7 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
.podlozhka {
|
.podlozhka {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 369px;
|
width: 369px;
|
||||||
|
height: 460px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.podlozhka:hover .sugg__img {
|
.podlozhka:hover .sugg__img {
|
||||||
@@ -426,8 +429,7 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* изменяем цвет фона при наведении курсора */
|
/* изменяем цвет фона при наведении курсора */
|
||||||
.parametrs__block a:hover {
|
.parametrs__block a:hover, .parametrs__block__selected {
|
||||||
|
|
||||||
background-color: #000000;
|
background-color: #000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,31 +36,45 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#">Тип</a>
|
<li><a href="#">Тип</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#">Квартира</a></li>
|
<li @click="addSortParam('type', 'Flat')">
|
||||||
<li><a href="#">Участок</a></li>
|
<a href="#" :class="isSelected('type', 'Flat')">Квартира</a>
|
||||||
<li><a href="#">Дом</a></li>
|
</li>
|
||||||
|
<li @click="addSortParam('type', 'Land')">
|
||||||
|
<a href="#" :class="isSelected('type', 'Land')">Участок</a>
|
||||||
|
</li>
|
||||||
|
<li @click="addSortParam('type', 'House')">
|
||||||
|
<a href="#" :class="isSelected('type', 'House')">Дом</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#">Площадь</a>
|
<li><a href="#">Площадь</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b href="#">От: <input type="text"></b></li>
|
<li><b href="#">От: <input type="text" v-model.trim="spaceParams.min"></b></li>
|
||||||
<li><b href="#">До: <input type="text"></b></li>
|
<li><b href="#">До: <input type="text" v-model.trim="spaceParams.max"></b></li>
|
||||||
<li><a href="#">Сортировать</a></li>
|
<li @click="addRangeSortParam('spaceParams', 'Space')"><a href="#">Сортировать</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#">Кол - во комнат</a>
|
<li><a href="#">Кол - во комнат</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#">Студия</a></li>
|
<li @click="addSortParam('rooms', 'Studio')">
|
||||||
<li><a href="#">1 комната</a></li>
|
<a href="#" :class="isSelected('rooms', 'Studio')">Студия</a>
|
||||||
<li><a href="#">2 комнаты</a></li>
|
</li>
|
||||||
<li><a href="#">3 комнаты и более</a></li>
|
<li @click="addSortParam('rooms', 'Room1')">
|
||||||
|
<a href="#" :class="isSelected('rooms', 'Room1')">1 комната</a>
|
||||||
|
</li>
|
||||||
|
<li @click="addSortParam('rooms', 'Room2')">
|
||||||
|
<a href="#" :class="isSelected('rooms', 'Room2')">2 комнаты</a>
|
||||||
|
</li>
|
||||||
|
<li @click="addSortParam('rooms', 'Room3More')">
|
||||||
|
<a href="#" :class="isSelected('rooms', 'Room3More')">3 комнаты и более</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#">Цена</a>
|
<li><a href="#">Цена</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b href="#">От: <input type="text"></b></li>
|
<li><b href="#">От: <input type="text" v-model.trim="priceParams.min"></b></li>
|
||||||
<li><b href="#">До: <input type="text"></b></li>
|
<li><b href="#">До: <input type="text" v-model.trim="priceParams.max"></b></li>
|
||||||
<li><a href="#">Сортировать</a></li>
|
<li @click="addRangeSortParam('priceParams', 'Price')"><a href="#">Сортировать</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -92,12 +106,48 @@ export default {
|
|||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
offers: [],
|
offers: [],
|
||||||
componentForm: ''
|
sortParams: [],
|
||||||
|
spaceParams: {
|
||||||
|
min: null,
|
||||||
|
max: null,
|
||||||
|
},
|
||||||
|
priceParams: {
|
||||||
|
min: null,
|
||||||
|
max: null,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
url(path) {
|
url(path) {
|
||||||
return `url(${getURL(path)})`;
|
return `url(${getURL(path)})`;
|
||||||
|
},
|
||||||
|
isSelected(name, value) {
|
||||||
|
return this.sortParams.some((e) => e.name === name && e.value === value) ? 'parametrs__block__selected' : '';
|
||||||
|
},
|
||||||
|
addSortParam(name, value, isRange = false) {
|
||||||
|
const element = this.sortParams.findIndex((e) => e.name === name && e.value === value);
|
||||||
|
|
||||||
|
if (~element && !isRange) {
|
||||||
|
this.sortParams.splice(element, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sortParams = this.sortParams.filter((e) => e.name !== name);
|
||||||
|
this.sortParams.push({ name, value });
|
||||||
|
},
|
||||||
|
addRangeSortParam(range, paramName) {
|
||||||
|
const min = this[range].min;
|
||||||
|
const max = this[range].max;
|
||||||
|
|
||||||
|
if (min)
|
||||||
|
this.addSortParam('start' + paramName, min, true);
|
||||||
|
else
|
||||||
|
this.addSortParam('start' + paramName, min);
|
||||||
|
|
||||||
|
if (max)
|
||||||
|
this.addSortParam('end' + paramName, max, true);
|
||||||
|
else
|
||||||
|
this.addSortParam('end' + paramName, max);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
<h4>Адрес: {{ offer.location }}</h4>
|
<h4>Адрес: {{ offer.location }}</h4>
|
||||||
|
|
||||||
<h4>Кол-во комнат: {{ offer.rooms }}</h4>
|
<h4>Кол-во комнат: {{ roomType }}</h4>
|
||||||
|
|
||||||
<h4>Общая площадь: {{ offer.space }} м²</h4>
|
<h4>Общая площадь: {{ offer.space }} м²</h4>
|
||||||
</div>
|
</div>
|
||||||
@@ -127,6 +127,14 @@ export default {
|
|||||||
'House': 'Дом',
|
'House': 'Дом',
|
||||||
'Land': 'Участок',
|
'Land': 'Участок',
|
||||||
}[this.offer.type];
|
}[this.offer.type];
|
||||||
|
},
|
||||||
|
roomType() {
|
||||||
|
return {
|
||||||
|
'Studio': 'Студия',
|
||||||
|
'Room1': '1 комната',
|
||||||
|
'Room2': '2 комнаты',
|
||||||
|
'Room3More': '3 комнаты и больше',
|
||||||
|
}[this.offer.rooms]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
|
|||||||
Reference in New Issue
Block a user