Skip to content

Commit ffd6ea7

Browse files
supalarrySeluj78
authored andcommitted
search use loading icon
1 parent 9950a67 commit ffd6ea7

File tree

3 files changed

+42
-43
lines changed

3 files changed

+42
-43
lines changed

frontend/src/components/shared/FilterSlider.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<div class="mb-8" ref="sliderDropdown">
44
<div class="mx-auto flex w-full items-center mb-4 max-w-md">
55
<div class="w-full flex justify-between">
6-
<h1 class="text-xl text-purple-matcha capitalize">{{ name }}</h1>
7-
<h1 class="text-xl text-purple-matcha">
6+
<h1 class="text-base text-purple-matcha capitalize">{{ name }}</h1>
7+
<h1 class="text-base text-purple-matcha">
88
<span class="">{{this.slider.startMin}}<span v-if="oneHandle"> {{this.unit}}</span></span>
99
<span v-if="!oneHandle"> to </span>
1010
<span v-if="!oneHandle" class="">{{this.slider.startMax}} {{this.unit}}</span></h1>

frontend/src/components/shared/MultipleFilters.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h1 class="text-md text-left opacity-50 mb-4">{{ info }}</h1>
66
<div class="h-48 w-auto overflow-scroll rounded-md border border-gray-300 bg-white">
77
<h1 v-for="(option, index) in options" :key="option + index + option"
8-
v-bind:class="{'sort-dropdown-option': true, 'text-lg': true, 'border-b': index !== options.length - 1, 'capitalize': true,
8+
v-bind:class="{'sort-dropdown-option': true, 'text-base': true, 'border-b': index !== options.length - 1, 'capitalize': true,
99
'font-extrabold': selectedFilters.indexOf(option) !== -1, 'text-gray-matcha': selectedFilters.indexOf(option) !== -1}"
1010
v-on:click="select(option)">
1111
{{option}}

frontend/src/views/app/Search.vue

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
<template>
22
<!-- eslint-disable max-len -->
3-
<div v-bind:class="{
4-
'mx-4': true,
5-
'sm:mx-16': true,
6-
'lg:mx-32': true,
7-
'md:flex': searchedAtLeastOnce}">
3+
<div class="mx-4 sm:mx-16 lg:mx-32">
84
<div v-if="!recommendationsAnalysisDone && !sliderValuesFetched" class="mx-auto flex items-center justify-center mt-32">
95
<img class="h-36" src="../../assets/loading.svg">
106
</div>
@@ -20,30 +16,30 @@
2016
<section v-on:click="setError(null)"
2117
v-if="!recommendationsAnalysisDone && sliderValuesFetched"
2218
class="flex flex-col my-8 md:my-12">
23-
<div class="md:hidden"><img src="../../assets/search.png" class="w-20 mb-4 mx-auto"></div>
24-
<div>
25-
<FilterSlider
26-
v-bind:min="sliders.age.min"
27-
v-bind:max="sliders.age.max"
28-
v-bind:name="'age'"
29-
v-on:save-filter="saveFilter"></FilterSlider>
30-
<FilterSlider
31-
v-bind:min="1"
32-
v-bind:max="2000"
33-
v-bind:unit="'km'"
34-
v-bind:oneHandle="true"
35-
v-bind:name="'distance'"
36-
v-on:save-filter="saveFilter"></FilterSlider>
37-
<FilterSlider
38-
v-bind:min="sliders.popularity.min"
39-
v-bind:max="sliders.popularity.max"
40-
v-bind:unit="'pts'"
41-
v-bind:name="'popularity'"
42-
v-on:save-filter="saveFilter"></FilterSlider>
43-
</div>
44-
<div>
45-
<MultipleFilters
46-
v-bind:options="[
19+
<div><img src="../../assets/search.png" class="w-20 mb-4 mx-auto"></div>
20+
<div>
21+
<FilterSlider
22+
v-bind:min="sliders.age.min"
23+
v-bind:max="sliders.age.max"
24+
v-bind:name="'age'"
25+
v-on:save-filter="saveFilter"></FilterSlider>
26+
<FilterSlider
27+
v-bind:min="1"
28+
v-bind:max="2000"
29+
v-bind:unit="'km'"
30+
v-bind:oneHandle="true"
31+
v-bind:name="'distance'"
32+
v-on:save-filter="saveFilter"></FilterSlider>
33+
<FilterSlider
34+
v-bind:min="sliders.popularity.min"
35+
v-bind:max="sliders.popularity.max"
36+
v-bind:unit="'pts'"
37+
v-bind:name="'popularity'"
38+
v-on:save-filter="saveFilter"></FilterSlider>
39+
</div>
40+
<div>
41+
<MultipleFilters
42+
v-bind:options="[
4743
'swimming', 'wine', 'reading', 'foodie', 'netflix', 'music', 'yoga', 'golf',
4844
'photography', 'baking', 'shopping', 'outdoors', 'art', 'travel', 'hiking',
4945
'running', 'volunteering', 'cycling', 'climbing', 'tea', 'fishing', 'soccer',
@@ -54,10 +50,10 @@
5450
'language exchange', 'sports', 'comedy', 'fashion', 'disney', 'vlogging',
5551
'astrology', 'board games', 'craft beer', 'coffee', 'writer',
5652
]"
57-
v-bind:name="'interests'"
58-
v-bind:info="'If no selected, all are accounted.'"
59-
v-on:save-filter-multiple="saveFilterMultiple"></MultipleFilters>
60-
</div>
53+
v-bind:name="'interests'"
54+
v-bind:info="'If no selected, all are accounted.'"
55+
v-on:save-filter-multiple="saveFilterMultiple"></MultipleFilters>
56+
</div>
6157
<div class="auth-sub-container-error mx-auto max-w-md" v-if="error"><h1 class="auth-sub-container-error-message">{{ error }}</h1></div>
6258
<div class="mx-auto w-full max-w-md">
6359
<h1 v-if="!submitted" v-on:click="search()" class="onboarding-sub-container-content-button-outline w-48 text-lg font-normal max-w-full bg-purple-matcha w-full text-white-matcha mx-auto">
@@ -98,22 +94,21 @@ export default {
9894
sliderValuesFetched: false,
9995
filters: {
10096
age: {
101-
min: -1,
102-
max: -1,
97+
min: null,
98+
max: null,
10399
},
104100
distance: {
105101
min: 0,
106-
max: -1,
102+
max: null,
107103
},
108104
popularity: {
109-
min: -1,
110-
max: -1,
105+
min: null,
106+
max: null,
111107
},
112108
interests: [],
113109
},
114110
recommendationsAnalysisDone: false,
115111
error: null,
116-
searchedAtLeastOnce: false,
117112
submitted: false,
118113
}),
119114
methods: {
@@ -134,12 +129,17 @@ export default {
134129
const sliderRangesRequest = await this.$http.get('/search/values');
135130
const values = sliderRangesRequest.data.search_minmax;
136131
this.sliders.age.min = values.min_age;
132+
this.filters.age.min = values.min_age;
137133
if (this.sliders.age.min < 18) {
138134
this.sliders.age.min = 18;
135+
this.filters.age.min = 18;
139136
}
140137
this.sliders.age.max = values.max_age;
138+
this.filters.age.max = values.max_age;
141139
this.sliders.popularity.min = values.min_score;
140+
this.filters.popularity.min = values.min_score;
142141
this.sliders.popularity.max = values.max_score;
142+
this.filters.popularity.max = values.max_score;
143143
this.sliderValuesFetched = true;
144144
},
145145
async search() {
@@ -184,7 +184,6 @@ export default {
184184
}
185185
}
186186
this.submitted = false;
187-
this.searchedAtLeastOnce = true;
188187
this.recommendationsAnalysisDone = true;
189188
this.scrollToTop();
190189
},

0 commit comments

Comments
 (0)