diff --git a/app/controllers/gardenSizes.js b/app/controllers/gardenSizes.js index ec16738..84408a5 100644 --- a/app/controllers/gardenSizes.js +++ b/app/controllers/gardenSizes.js @@ -1,8 +1,21 @@ const { currentRERequest } = require('../helpers/url'); -const { gardenSizes, getRealEstateTypeEnum } = require('../helpers/enums'); +const { getRealEstateTypeEnum } = require('../helpers/enums'); const getGardenSize = (req,res) => { - res.render('gardenSize', { gardenSizes }); + const rangeFrom = { + min : 0, + max : 3000, + value : 0, + step : 100 + } + + const rangeTo = { + min : 0, + max : 3000, + value : 100, + step : 100 + } + res.render('gardenSize', { rangeFrom, rangeTo }); }; const postGardenSize = async (req, res) => { @@ -13,7 +26,8 @@ const postGardenSize = async (req, res) => { const realEstateType = getRealEstateTypeEnum(request.realEstateType); if (realEstateType && realEstateType.hasGardenSize) { - request.gardenSize = req.body.gardensize; + request.gardenSize = req.body.from; + request.gardenSizeRange = req.body.to; await request.save(); } diff --git a/app/controllers/prices.js b/app/controllers/prices.js index 494ebf5..e65455f 100644 --- a/app/controllers/prices.js +++ b/app/controllers/prices.js @@ -1,8 +1,22 @@ const { currentRERequest } = require('../helpers/url'); -const { prices } = require('../helpers/enums'); const getPrice = (req,res) => { - res.render('price', { prices }); + const rangeFrom = { + min : 0, + max : 250000, + value : 0, + step : 1000 + } + + const rangeTo = { + min : 0, + max : 250000, + value : 50000, + step : 1000 + } + + + res.render('price', {rangeFrom, rangeTo }); }; const postPrice = async (req, res) => { @@ -11,7 +25,8 @@ const postPrice = async (req, res) => { const nextStepPage = req.query.nextStep || 'pregled'; const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`; - request.price = req.body.price; + request.price = req.body.from; + request.priceRange = req.body.to; await request.save(); res.redirect(nextStepUrl); diff --git a/app/controllers/queryReview.js b/app/controllers/queryReview.js index 8cf2b0e..a54b95a 100644 --- a/app/controllers/queryReview.js +++ b/app/controllers/queryReview.js @@ -10,7 +10,16 @@ const getQueryReview = async (req,res) => { return null; } - const { realEstateType, region, municipality, size, gardenSize, price } = request.dataValues; + const { + realEstateType, + region, + municipality, + size, + sizeRange, + gardenSize, + gardenSizeRange, + price, + priceRange } = request.dataValues; const realEstateTypeObject = getRealEstateTypeEnum(realEstateType); const enableGardenSizeEdit = realEstateTypeObject ? realEstateTypeObject.hasGardenSize : false; @@ -18,9 +27,9 @@ const getQueryReview = async (req,res) => { const realEstateTypeTitle = realEstateType ? getEnumTypeTitle(realEstateTypes, realEstateType) : null; const regionName = region ? getRegionName(region) : null; const municipalityName = (region && municipality) ? getMunicipalityName(region, municipality) : null; - const sizeTitle = size ? size + "m2" : null; - const gardenSizeTitle = gardenSize ? getEnumTypeTitle(gardenSizes, gardenSize) : null; - const priceTitle = price ? getEnumTypeTitle(prices, price) : null; + const sizeTitle = size ? size + "-" + sizeRange + " m2" : null; + const gardenSizeTitle = gardenSize ? gardenSize + "-" + gardenSizeRange + " m2" : null; + const priceTitle = price ? price + "-" + priceRange + " KM" : null; const uniqueId = request.dataValues.uniqueId ? request.dataValues.uniqueId : ''; diff --git a/app/controllers/sizes.js b/app/controllers/sizes.js index 39b80d7..d536553 100644 --- a/app/controllers/sizes.js +++ b/app/controllers/sizes.js @@ -2,7 +2,21 @@ const { currentRERequest } = require('../helpers/url'); const { sizes, getRealEstateTypeEnum } = require('../helpers/enums'); const getSize = (req,res) => { - res.render('size', { sizes }); + const rangeFrom = { + min : 0, + max : 250, + value : 0, + step : 10 + } + + const rangeTo = { + min : 0, + max : 250, + value : 50, + step : 10 + } + + res.render('size', { rangeFrom, rangeTo }); }; const postSize = async (req, res) => { @@ -13,7 +27,8 @@ const postSize = async (req, res) => { const nextStep = realEstateType && realEstateType.hasGardenSize ? 'okucnica' : 'cijena'; const nextStepPage = req.query.nextStep || nextStep; const nextStepUrl = `/${nextStepPage}/${request.uniqueId}`; - request.size = req.body.from + "-" + req.body.to ; + request.size = req.body.from; + request.sizeRange = req.body.to; await request.save(); res.redirect(nextStepUrl); diff --git a/app/migrations/20190529093410-slider-fields.js b/app/migrations/20190529093410-slider-fields.js new file mode 100644 index 0000000..d260600 --- /dev/null +++ b/app/migrations/20190529093410-slider-fields.js @@ -0,0 +1,27 @@ +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.sequelize.transaction((t) => { + return Promise.all([ + queryInterface.addColumn('RealEstateRequests', 'sizeRange', { + type: Sequelize.STRING + }, { transaction: t }), + queryInterface.addColumn('RealEstateRequests', 'gardenSizeRange', { + type: Sequelize.STRING, + }, { transaction: t }), + queryInterface.addColumn('RealEstateRequests', 'priceRange', { + type: Sequelize.STRING, + }, { transaction: t }) + ]) + }) + }, + + down: (queryInterface, Sequelize) => { + return queryInterface.sequelize.transaction((t) => { + return Promise.all([ + queryInterface.removeColumn('RealEstateRequests', 'sizeRange', { transaction: t }), + queryInterface.removeColumn('RealEstateRequests', 'gardenSizeRange', { transaction: t }), + queryInterface.removeColumn('RealEstateRequests', 'priceRange', { transaction: t }) + ]) + }) + } +}; \ No newline at end of file diff --git a/app/models/realestaterequest.js b/app/models/realestaterequest.js index 37997c6..228bbc6 100644 --- a/app/models/realestaterequest.js +++ b/app/models/realestaterequest.js @@ -13,8 +13,11 @@ module.exports = (sequelize, DataTypes) => { region: DataTypes.STRING, municipality: DataTypes.STRING, size: DataTypes.STRING, + sizeRange: DataTypes.STRING, gardenSize: DataTypes.STRING, + gardenSizeRange: DataTypes.STRING, price: DataTypes.STRING, + priceRange: DataTypes.STRING, bounding_box: DataTypes.GEOMETRY('POINT', 4326) }, {}); RealEstateRequest.associate = function(models) { diff --git a/app/views/gardenSize.ejs b/app/views/gardenSize.ejs index e751d70..9926b2d 100644 --- a/app/views/gardenSize.ejs +++ b/app/views/gardenSize.ejs @@ -3,27 +3,4 @@

Koliko okućnice tražite ?

-
-
- - -
-
- - - +<% include partials/range %> diff --git a/app/views/partials/range.ejs b/app/views/partials/range.ejs new file mode 100644 index 0000000..00bb27a --- /dev/null +++ b/app/views/partials/range.ejs @@ -0,0 +1,56 @@ +
+ +
+
+
Od
+
+

+ +

+
+
Do
+
+

+ +

+
+
+ + Dalje + +
+
+ + + \ No newline at end of file diff --git a/app/views/price.ejs b/app/views/price.ejs index 77cbb41..47c590a 100644 --- a/app/views/price.ejs +++ b/app/views/price.ejs @@ -3,27 +3,4 @@

Koja Vam okvirna cijena odgovara ?

-
-
- - -
-
- - - +<% include partials/range %> diff --git a/app/views/size.ejs b/app/views/size.ejs index bc88800..058b0c0 100644 --- a/app/views/size.ejs +++ b/app/views/size.ejs @@ -3,47 +3,4 @@

Od koliko kvadrata tražite nekretninu ?

-
- -
-
-
Od
-
-

- -

-
-
Do
-
-

- -

-
-
- - Dalje - -
-
- - \ No newline at end of file +<% include partials/range %>