add input box for sliders
This commit is contained in:
@@ -5,8 +5,7 @@ const PRICE_SLIDER_OPTIONS = {
|
|||||||
max: [300000]
|
max: [300000]
|
||||||
},
|
},
|
||||||
step: 1000,
|
step: 1000,
|
||||||
connect: true,
|
connect: true
|
||||||
tooltips: true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//This will be used for Flats, Apartments, Houses
|
//This will be used for Flats, Apartments, Houses
|
||||||
@@ -17,8 +16,7 @@ const HOME_SIZE_SLIDER_OPTIONS = {
|
|||||||
max: [400]
|
max: [400]
|
||||||
},
|
},
|
||||||
step: 5,
|
step: 5,
|
||||||
connect: true,
|
connect: true
|
||||||
tooltips: true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const GARDEN_SIZE_SLIDER_OPTIONS = {
|
const GARDEN_SIZE_SLIDER_OPTIONS = {
|
||||||
@@ -28,8 +26,7 @@ const GARDEN_SIZE_SLIDER_OPTIONS = {
|
|||||||
max: [10000]
|
max: [10000]
|
||||||
},
|
},
|
||||||
step: 100,
|
step: 100,
|
||||||
connect: true,
|
connect: true
|
||||||
tooltips: true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const LAND_SIZE_SLIDER_OPTIONS = {
|
const LAND_SIZE_SLIDER_OPTIONS = {
|
||||||
@@ -39,8 +36,7 @@ const LAND_SIZE_SLIDER_OPTIONS = {
|
|||||||
max: [100000]
|
max: [100000]
|
||||||
},
|
},
|
||||||
step: 100,
|
step: 100,
|
||||||
connect: true,
|
connect: true
|
||||||
tooltips: true
|
|
||||||
};
|
};
|
||||||
const GARAGE_SIZE_SLIDER_OPTIONS = {
|
const GARAGE_SIZE_SLIDER_OPTIONS = {
|
||||||
start: [10, 20],
|
start: [10, 20],
|
||||||
@@ -49,8 +45,7 @@ const GARAGE_SIZE_SLIDER_OPTIONS = {
|
|||||||
max: [150]
|
max: [150]
|
||||||
},
|
},
|
||||||
step: 2,
|
step: 2,
|
||||||
connect: true,
|
connect: true
|
||||||
tooltips: true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const GARAGE_PRICE_SLIDER_OPTIONS = {
|
const GARAGE_PRICE_SLIDER_OPTIONS = {
|
||||||
@@ -60,8 +55,7 @@ const GARAGE_PRICE_SLIDER_OPTIONS = {
|
|||||||
max: [100000]
|
max: [100000]
|
||||||
},
|
},
|
||||||
step: 500,
|
step: 500,
|
||||||
connect: true,
|
connect: true
|
||||||
tooltips: true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const AD_TYPE = {
|
const AD_TYPE = {
|
||||||
|
|||||||
@@ -61,10 +61,10 @@ const postFilters = async (req, res) => {
|
|||||||
const nextStepPage = req.query.nextStep || "pregled";
|
const nextStepPage = req.query.nextStep || "pregled";
|
||||||
const nextStepUrl = `/${nextStepPage}/${searchRequest.id}`;
|
const nextStepUrl = `/${nextStepPage}/${searchRequest.id}`;
|
||||||
|
|
||||||
const priceMin = parseInt(req.body.priceFilterMin) || 0;
|
const priceMin = parseInt(req.body.priceMin) || 0;
|
||||||
const priceMax = parseInt(req.body.priceFilterMax) || 0;
|
const priceMax = parseInt(req.body.priceMax) || 0;
|
||||||
const sizeMin = parseInt(req.body.sizeFilterMin) || 0;
|
const sizeMin = parseInt(req.body.sizeMin) || 0;
|
||||||
const sizeMax = parseInt(req.body.sizeFilterMax) || 0;
|
const sizeMax = parseInt(req.body.sizeMax) || 0;
|
||||||
|
|
||||||
//TODO: Filter validation
|
//TODO: Filter validation
|
||||||
|
|
||||||
@@ -74,11 +74,11 @@ const postFilters = async (req, res) => {
|
|||||||
searchRequest.sizeMax = sizeMax;
|
searchRequest.sizeMax = sizeMax;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
req.body.gardenSizeFilterMin !== undefined &&
|
req.body.gardenSizeMin !== undefined &&
|
||||||
req.body.gardenSizeFilterMax !== undefined
|
req.body.gardenSizeMax !== undefined
|
||||||
) {
|
) {
|
||||||
const gardenSizeMin = parseInt(req.body.gardenSizeFilterMin);
|
const gardenSizeMin = parseInt(req.body.gardenSizeMin);
|
||||||
const gardenSizeMax = parseInt(req.body.gardenSizeFilterMax);
|
const gardenSizeMax = parseInt(req.body.gardenSizeMax);
|
||||||
|
|
||||||
//TODO: Filter validation
|
//TODO: Filter validation
|
||||||
|
|
||||||
|
|||||||
@@ -95,3 +95,10 @@ h3 {
|
|||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sliderInputBox {
|
||||||
|
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.4) !important;
|
||||||
|
border: 1px solid #02adba !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,32 +5,57 @@
|
|||||||
<h5>Cijena</h5>
|
<h5>Cijena</h5>
|
||||||
<br><br>
|
<br><br>
|
||||||
<div class="center-align no-ui-slider" id="priceFilter"></div>
|
<div class="center-align no-ui-slider" id="priceFilter"></div>
|
||||||
<input type="hidden" id="priceFilterMin" name="priceFilterMin">
|
|
||||||
<input type="hidden" id="priceFilterMax" name="priceFilterMax">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br><br>
|
<br>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s5 m3 l3 push-m1 push-l2">
|
||||||
|
<input class="sliderInputBox" type="number" id="priceMin" name="priceMin">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col s5 m3 l3 push-s1 push-m4 push-l4">
|
||||||
|
<input class="sliderInputBox" type="number" id="priceMax" name="priceMax">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
<div class="row center-align">
|
<div class="row center-align">
|
||||||
<h5>Površina</h5>
|
<h5>Površina</h5>
|
||||||
<br><br>
|
<br><br>
|
||||||
<div class="center-align no-ui-slider" id="sizeFilter"></div>
|
<div class="center-align no-ui-slider" id="sizeFilter"></div>
|
||||||
<input type="hidden" id="sizeFilterMin" name="sizeFilterMin">
|
|
||||||
<input type="hidden" id="sizeFilterMax" name="sizeFilterMax">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br><br>
|
<br>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s5 m3 l3 push-m1 push-l2">
|
||||||
|
<input class="sliderInputBox" type="number" id="sizeMin" name="sizeMin">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col s5 m3 l3 push-s1 push-m4 push-l4">
|
||||||
|
<input class="sliderInputBox" type="number" id="sizeMax" name="sizeMax">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
<% if(hasGardenSize) { %>
|
<% if(hasGardenSize) { %>
|
||||||
<div class="row center-align">
|
<div class="row center-align">
|
||||||
<h5>Površina okućnice</h5>
|
<h5>Površina okućnice</h5>
|
||||||
<br><br>
|
<br><br>
|
||||||
<div class="center-align no-ui-slider" id="gardenSizeFilter"></div>
|
<div class="center-align no-ui-slider" id="gardenSizeFilter"></div>
|
||||||
<input type="hidden" id="gardenSizeFilterMin" name="gardenSizeFilterMin">
|
|
||||||
<input type="hidden" id="gardenSizeFilterMax" name="gardenSizeFilterMax">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br><br>
|
<br>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s5 m3 l3 push-m1 push-l2">
|
||||||
|
<input class="sliderInputBox" type="number" id="gardenSizeMin" name="gardenSizeMin">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col s5 m3 l3 push-s1 push-m4 push-l4">
|
||||||
|
<input class="sliderInputBox" type="number" id="gardenSizeMax" name="gardenSizeMax">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -42,42 +67,109 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
const priceFormat = wNumb({
|
const priceSliderOptions = {...<%- priceSliderOptions %>};
|
||||||
thousand: ".",
|
const sizeSliderOptions = {...<%- sizeSliderOptions %>};
|
||||||
suffix: " KM"
|
const priceStep = priceSliderOptions.step;
|
||||||
});
|
const sizeStep = sizeSliderOptions.step;
|
||||||
const sizeFormat = wNumb({
|
delete priceSliderOptions.step;
|
||||||
thousand: ".",
|
delete sizeSliderOptions.step;
|
||||||
suffix: " m2"
|
|
||||||
});
|
const updatePriceInputs = (values, handle, unencoded) => {
|
||||||
|
$("#priceMin").val(Math.round(unencoded[0]/priceStep)*priceStep);
|
||||||
|
$("#priceMax").val(Math.round(unencoded[1]/priceStep)*priceStep);
|
||||||
|
}
|
||||||
|
const updateSizeInputs = (values, handle, unencoded) => {
|
||||||
|
$("#sizeMin").val(Math.round(unencoded[0]/sizeStep)*sizeStep);
|
||||||
|
$("#sizeMax").val(Math.round(unencoded[1]/sizeStep)*sizeStep);
|
||||||
|
}
|
||||||
|
|
||||||
const priceSlider = document.getElementById("priceFilter");
|
const priceSlider = document.getElementById("priceFilter");
|
||||||
const extendedPriceSliderOptions = {...<%- priceSliderOptions %>, format: priceFormat};
|
|
||||||
noUiSlider.create(priceSlider, extendedPriceSliderOptions);
|
|
||||||
|
|
||||||
const sizeSlider = document.getElementById("sizeFilter");
|
const sizeSlider = document.getElementById("sizeFilter");
|
||||||
const extendedSizeSliderOptions = {...<%- sizeSliderOptions %>, format: sizeFormat};
|
|
||||||
noUiSlider.create(sizeSlider, extendedSizeSliderOptions);
|
const priceSliderObject = noUiSlider.create(priceSlider, priceSliderOptions);
|
||||||
|
const sizeSliderObject = noUiSlider.create(sizeSlider, sizeSliderOptions);
|
||||||
|
|
||||||
|
priceSliderObject.on('slide', updatePriceInputs);
|
||||||
|
sizeSliderObject.on('slide', updateSizeInputs);
|
||||||
|
|
||||||
|
const priceMinChangeHandler = (element) => {
|
||||||
|
if (element && element.currentTarget && element.currentTarget.value){
|
||||||
|
const newValue = element.currentTarget.value;
|
||||||
|
priceSliderObject.set([newValue, null]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const priceMaxChangeHandler = (element) => {
|
||||||
|
if (element && element.currentTarget && element.currentTarget.value){
|
||||||
|
const newValue = element.currentTarget.value;
|
||||||
|
priceSliderObject.set([null, newValue]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#priceMin").val(priceSliderOptions.start[0]);
|
||||||
|
$("#priceMax").val(priceSliderOptions.start[1]);
|
||||||
|
$("#priceMin").change(priceMinChangeHandler);
|
||||||
|
$("#priceMax").change(priceMaxChangeHandler);
|
||||||
|
|
||||||
|
const sizeMinChangeHandler = (element) => {
|
||||||
|
if (element && element.currentTarget && element.currentTarget.value){
|
||||||
|
const newValue = element.currentTarget.value;
|
||||||
|
sizeSliderObject.set([newValue, null]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const sizeMaxChangeHandler = (element) => {
|
||||||
|
if (element && element.currentTarget && element.currentTarget.value){
|
||||||
|
const newValue = element.currentTarget.value;
|
||||||
|
sizeSliderObject.set([null, newValue]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#sizeMin").val(sizeSliderOptions.start[0]);
|
||||||
|
$("#sizeMax").val(sizeSliderOptions.start[1]);
|
||||||
|
$("#sizeMin").change(sizeMinChangeHandler);
|
||||||
|
$("#sizeMax").change(sizeMaxChangeHandler);
|
||||||
|
|
||||||
<% if(hasGardenSize) { %>
|
<% if(hasGardenSize) { %>
|
||||||
const gardenSizeSlider = document.getElementById("gardenSizeFilter");
|
const gardenSizeSliderOptions = {...<%- gardenSizeSliderOptions %>};
|
||||||
const extendedGardenSizeSliderOptions = {...<%- gardenSizeSliderOptions %>, format: sizeFormat};
|
const gardenSizeStep = gardenSizeSliderOptions.step;
|
||||||
noUiSlider.create(gardenSizeSlider, extendedGardenSizeSliderOptions);
|
delete gardenSizeSliderOptions.step;
|
||||||
|
|
||||||
|
const updateGardenSizeInputs = (values, handle, unencoded) => {
|
||||||
|
$("#gardenSizeMin").val(Math.round(unencoded[0]/gardenSizeStep)*gardenSizeStep);
|
||||||
|
$("#gardenSizeMax").val(Math.round(unencoded[1]/gardenSizeStep)*gardenSizeStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
const gardenSizeSlider = document.getElementById("gardenSizeFilter");
|
||||||
|
const gardenSizeSliderObject = noUiSlider.create(gardenSizeSlider, gardenSizeSliderOptions);
|
||||||
|
gardenSizeSliderObject.on('slide', updateGardenSizeInputs);
|
||||||
|
const gardenSizeMinChangeHandler = (element) => {
|
||||||
|
if (element && element.currentTarget && element.currentTarget.value){
|
||||||
|
const newValue = element.currentTarget.value;
|
||||||
|
gardenSizeSliderObject.set([newValue, null]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const gardenSizeMaxChangeHandler = (element) => {
|
||||||
|
if (element && element.currentTarget && element.currentTarget.value){
|
||||||
|
const newValue = element.currentTarget.value;
|
||||||
|
gardenSizeSliderObject.set([null, newValue]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#gardenSizeMin").val(gardenSizeSliderOptions.start[0]);
|
||||||
|
$("#gardenSizeMax").val(gardenSizeSliderOptions.start[1]);
|
||||||
|
$("#gardenSizeMin").change("step", gardenSizeMinChangeHandler);
|
||||||
|
$("#gardenSizeMax").change("step", gardenSizeMaxChangeHandler);
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
$("#submit").click(() => {
|
$("#submit").click(() => {
|
||||||
const priceFilterValues = priceSlider.noUiSlider.get();
|
const priceFilterValues = priceSlider.noUiSlider.get();
|
||||||
$("#priceFilterMin").val(priceFormat.from(priceFilterValues[0]));
|
$("#priceFilterMin").val(priceFilterValues[0]);
|
||||||
$("#priceFilterMax").val(priceFormat.from(priceFilterValues[1]));
|
$("#priceFilterMax").val(priceFilterValues[1]);
|
||||||
|
|
||||||
const sizeFilterValues = sizeSlider.noUiSlider.get();
|
const sizeFilterValues = sizeSlider.noUiSlider.get();
|
||||||
$("#sizeFilterMin").val(sizeFormat.from(sizeFilterValues[0]));
|
$("#sizeFilterMin").val(sizeFilterValues[0]);
|
||||||
$("#sizeFilterMax").val(sizeFormat.from(sizeFilterValues[1]));
|
$("#sizeFilterMax").val(sizeFilterValues[1]);
|
||||||
|
|
||||||
<% if (hasGardenSize) { %>
|
<% if (hasGardenSize) { %>
|
||||||
const gardenSizeFilterValues = gardenSizeSlider.noUiSlider.get();
|
const gardenSizeFilterValues = gardenSizeSlider.noUiSlider.get();
|
||||||
$("#gardenSizeFilterMin").val(sizeFormat.from(gardenSizeFilterValues[0]));
|
$("#gardenSizeFilterMin").val(gardenSizeFilterValues[0]);
|
||||||
$("#gardenSizeFilterMax").val(sizeFormat.from(gardenSizeFilterValues[1]));
|
$("#gardenSizeFilterMax").val(gardenSizeFilterValues[1]);
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
$("#filtersForm").submit();
|
$("#filtersForm").submit();
|
||||||
|
|||||||
Reference in New Issue
Block a user