Compare commits

..

5 Commits

Author SHA1 Message Date
Nedim Uka
27fa721627 Renaming to english 2019-05-16 13:00:08 +02:00
Senad Uka
9fdfce49ed Merge branch 'dockerize-database' into 'master'
Dockerize database

See merge request saburly/marketalarm/web!2
2019-04-30 12:07:09 +00:00
Senad Uka
864b917b4f Make place selection possible 2019-04-30 06:48:41 +02:00
Senad Uka
a2f6f033bf Places almost finished 2019-04-28 11:13:46 +02:00
Senad Uka
64f2cb82a8 Scrape kantoni into html file 2019-04-28 09:02:46 +02:00
20 changed files with 1492 additions and 127 deletions

View File

@@ -3,8 +3,15 @@
The purpose of this project is to build a web application that enables subscribing to notifications when new products are published on various ad based marketplaces. The MVP will be only based on OLX.ba
Create postgres docker image
docker build -t marketalerts .
Run postgres image with:
docker run --name pg_test -d -p 5432:5432 marketalerts
Run with:
Run migrations in app folder
npx sequelize db:migrate
Run app with:
$ npm install
$ npm start

27
app/controllers/city.js Normal file
View File

@@ -0,0 +1,27 @@
const db = require('../models/index');
const { currentRERequest } = require('../helpers/url');
const { regions } = require('../helpers/codes');
const cities = regions();
const getCity = (req,res) => {
const nextStep = req.query.nextStep || '/';
res.render('city', {
nextStep,
cities
});
}
const postCity = async (req, res) => {
const request = await currentRERequest(req);
const nextStep = req.query.nextStep || `/mjesto/${request.uniqueId}`;
request.city = req.body.city;
await request.save();
res.redirect(nextStep)
}
module.exports = {
getCity,
postCity
};

View File

@@ -1,7 +0,0 @@
const getDobrodosli = (req,res) => {
res.render('dobrodosli', { nextStep: '/vrstanekretnine' } );
}
module.exports = {
getDobrodosli
};

View File

@@ -1,41 +0,0 @@
const db = require('../models/index');
const { currentRERequest } = require('../helpers/url');
const gradovi = [
{"ime":" Sarajevo","id":"sarajevo"},
{"ime":" Unsko-sanski","id":"unskosanski"},
{"ime":" Posavski","id":"posavski"},
{"ime":" Tuzlanski","id":"tuzlanski"},
{"ime":" Zeničko-dobojski","id":"zenickodobojski"},
{"ime":" Bosansko-podrinjski","id":"bosanskopodrinjski"},
{"ime":" Srednjobosanski","id":"srednjobosanski"},
{"ime":" Hercegovačko-neretvanski","id":"hercegovackoneretvanski"},
{"ime":" Zapadno-hercegovački","id":"zapadnohercegovacki"},
{"ime":" Livanjski","id":"livanjski"},
{"ime":" Banjalučka","id":"banjalučka"},
{"ime":" Dobojsko-Bijeljinska","id":"dobojskobijeljinska"},
{"ime":" Sarajevsko-Zvornička","id":"sarajevskozvornicka"},
{"ime":" Trebinjsko-Fočanska","id":"trebinjskofocanska"},
{"ime":"Distrikt Brčko","id":"distriktbrcko"},
];
const getGrad = (req,res) => {
const nextStep = req.query.nextStep || '/';
res.render('grad', {
nextStep,
gradovi
});
}
const postGrad = async (req, res) => {
let request = await currentRERequest(req);
request.city = req.body.grad;
await request.save();
res.send("Result is " + JSON.stringify(request));
}
module.exports = {
getGrad,
postGrad
};

View File

@@ -0,0 +1,25 @@
const db = require('../models/index');
const { currentRERequest } = require('../helpers/url');
const { places } = require('../helpers/codes');
const getNeighborhood = async (req,res) => {
let request = await currentRERequest(req);
const neighborhoods = places(request.city);
const nextStep = req.query.nextStep || '/';
res.render('neighborhood', {
nextStep,
neighborhoods
});
}
const postgNeighborhood = async (req, res) => {
let request = await currentRERequest(req);
request.neighborhood = req.body.neighborhood;
await request.save();
res.send("Result is " + JSON.stringify(request));
}
module.exports = {
getNeighborhood,
postgNeighborhood
};

View File

@@ -1,25 +1,24 @@
const db = require('../models/index');
const vrsteNekretnina = [
const realEstateTypes = [
{ ime: "Kuća", id: "kuca" },
{ ime: "Stan", id: "stan" },
{ ime: "Vikendica", id: "vikendica" }
];
const getVrstaNekretnine = (req,res) => {
const getRealEstateTypes = (req,res) => {
const nextStep = req.query.nextStep;
res.render('vrsta_nekretnine', {
res.render('real_estate_type', {
nextStep,
vrste: vrsteNekretnina
realEstateTypes: realEstateTypes
});
}
const postVrstaNekretnine = (req, res) => {
const postRealEstateTypes = (req, res) => {
let nextStep = req.query.nextStep;
db.RealEstateRequest.create({
realEstateType: req.body.vrsta
realEstateType: req.body.realestatetype
}).then( (result) => {
nextStep = nextStep || `/grad/${result.uniqueId}`;
res.redirect(nextStep);
@@ -30,6 +29,6 @@ const postVrstaNekretnine = (req, res) => {
}
module.exports = {
getVrstaNekretnine,
postVrstaNekretnine
getRealEstateTypes,
postRealEstateTypes
};

View File

@@ -0,0 +1,7 @@
const getWelcome = (req,res) => {
res.render('welcome', { nextStep: '/vrstanekretnine' } );
}
module.exports = {
getWelcome
};

893
app/helpers/codes.js Normal file
View File

@@ -0,0 +1,893 @@
const geographies = [
{
"ime":" Sarajevo",
"id":"sarajevo",
"olxid": "9",
"mjesta":[
{
"ime":"Hadžići",
"id":"hadii",
"olxid":"3817"
},
{
"ime":"Ilidža",
"id":"ilida",
"olxid":"3879"
},
{
"ime":"Ilijaš",
"id":"ilija",
"olxid":"3892"
},
{
"ime":"Sarajevo - Centar",
"id":"sarajevocentar",
"olxid":"3812"
},
{
"ime":"Sarajevo-Novi Grad",
"id":"sarajevonovigrad",
"olxid":"3969"
},
{
"ime":"Sarajevo-Novo Sarajevo",
"id":"sarajevonovosarajevo",
"olxid":"5896"
},
{
"ime":"Sarajevo-Stari Grad",
"id":"sarajevostarigrad",
"olxid":"4048"
},
{
"ime":"Trnovo",
"id":"trnovo",
"olxid":"4063"
},
{
"ime":"Vogošća",
"id":"vogoa",
"olxid":"4126"
}
]
},
{
"ime":" Unsko-sanski",
"id":"unskosanski",
"olxid": "9",
"mjesta":[
{
"ime":"Bihać",
"id":"biha",
"olxid":"75"
},
{
"ime":"Bosanska Krupa",
"id":"bosanskakrupa",
"olxid":"373"
},
{
"ime":"Bosanski Petrovac",
"id":"bosanskipetrovac",
"olxid":"504"
},
{
"ime":"Bužim",
"id":"buim",
"olxid":"374"
},
{
"ime":"Cazin",
"id":"cazin",
"olxid":"857"
},
{
"ime":"Ključ",
"id":"klju",
"olxid":"2362"
},
{
"ime":"Sanski Most",
"id":"sanskimost",
"olxid":"3738"
},
{
"ime":"Velika Kladuša",
"id":"velikakladua",
"olxid":"5122"
}
]
},
{
"ime":" Posavski",
"id":"posavski",
"olxid": "15",
"mjesta":[
{
"ime":"Domaljevac",
"id":"domaljevac",
"olxid":"6144"
},
{
"ime":"Odžak",
"id":"odak",
"olxid":"424"
},
{
"ime":"Orašje",
"id":"oraje",
"olxid":"3252"
},
{
"ime":"Šamac",
"id":"amac",
"olxid":"540"
}
]
},
{
"ime":" Tuzlanski",
"id":"tuzlanski",
"olxid": "15",
"mjesta":[
{
"ime":"Banovići",
"id":"banovii",
"olxid":"2"
},
{
"ime":"Doboj-Istok",
"id":"dobojistok",
"olxid":"1090"
},
{
"ime":"Gradačac",
"id":"gradaac",
"olxid":"1854"
},
{
"ime":"Gračanica",
"id":"graanica",
"olxid":"1826"
},
{
"ime":"Kalesija",
"id":"kalesija",
"olxid":"2129"
},
{
"ime":"Kladanj",
"id":"kladanj",
"olxid":"2319"
},
{
"ime":"Lukavac",
"id":"lukavac",
"olxid":"2840"
},
{
"ime":"Sapna",
"id":"sapna",
"olxid":"5699"
},
{
"ime":"Srebrenik",
"id":"srebrenik",
"olxid":"4391"
},
{
"ime":"Teočak",
"id":"teoak",
"olxid":"5010"
},
{
"ime":"Tuzla",
"id":"tuzla",
"olxid":"4944"
},
{
"ime":"Čelić",
"id":"eli",
"olxid":"2801"
},
{
"ime":"Živinice",
"id":"ivinice",
"olxid":"5774"
}
]
},
{
"ime":" Zeničko-dobojski",
"id":"zenickodobojski",
"olxid": "15",
"mjesta":[
{
"ime":"Breza",
"id":"breza",
"olxid":"704"
},
{
"ime":"Doboj-Jug",
"id":"dobojjug",
"olxid":"1122"
},
{
"ime":"Kakanj",
"id":"kakanj",
"olxid":"2022"
},
{
"ime":"Maglaj",
"id":"maglaj",
"olxid":"2941"
},
{
"ime":"Olovo",
"id":"olovo",
"olxid":"1925"
},
{
"ime":"Tešanj",
"id":"teanj",
"olxid":"4594"
},
{
"ime":"Usora",
"id":"usora",
"olxid":"1087"
},
{
"ime":"Vareš",
"id":"vare",
"olxid":"5037"
},
{
"ime":"Visoko",
"id":"visoko",
"olxid":"5171"
},
{
"ime":"Zavidovići",
"id":"zavidovii",
"olxid":"5548"
},
{
"ime":"Zenica",
"id":"zenica",
"olxid":"4571"
},
{
"ime":"Žepče",
"id":"epe",
"olxid":"2940"
}
]
},
{
"ime":" Bosansko-podrinjski",
"id":"bosanskopodrinjski",
"olxid": "15",
"mjesta":[
{
"ime":"Foča",
"id":"foa",
"olxid":"1289"
},
{
"ime":"Goražde",
"id":"gorade",
"olxid":"1588"
},
{
"ime":"Pale",
"id":"pale",
"olxid":"3546"
}
]
},
{
"ime":" Srednjobosanski",
"id":"srednjobosanski",
"olxid": "6",
"mjesta":[
{
"ime":"Bugojno",
"id":"bugojno",
"olxid":"732"
},
{
"ime":"Busovača",
"id":"busovaa",
"olxid":"810"
},
{
"ime":"Dobretići",
"id":"dobretii",
"olxid":"4151"
},
{
"ime":"Donji Vakuf",
"id":"donjivakuf",
"olxid":"1160"
},
{
"ime":"Fojnica",
"id":"fojnica",
"olxid":"1407"
},
{
"ime":"Gornji Vakuf - Uskoplje",
"id":"gornjivakufuskoplje",
"olxid":"1775"
},
{
"ime":"Jajce",
"id":"jajce",
"olxid":"1960"
},
{
"ime":"Kiseljak",
"id":"kiseljak",
"olxid":"2237"
},
{
"ime":"Kreševo",
"id":"kreevo",
"olxid":"2608"
},
{
"ime":"Novi Travnik",
"id":"novitravnik",
"olxid":"3477"
},
{
"ime":"Travnik",
"id":"travnik",
"olxid":"4678"
},
{
"ime":"Vitez",
"id":"vitez",
"olxid":"5422"
}
]
},
{
"ime":" Hercegovačko-neretvanski",
"id":"hercegovackoneretvanski",
"olxid": "7",
"mjesta":[
{
"ime":"Grad Mostar",
"id":"gradmostar",
"olxid":"3017"
},
{
"ime":"Jablanica",
"id":"jablanica",
"olxid":"1930"
},
{
"ime":"Konjic",
"id":"konjic",
"olxid":"2169"
},
{
"ime":"Neum",
"id":"neum",
"olxid":"3111"
},
{
"ime":"Prozor",
"id":"prozor",
"olxid":"3421"
},
{
"ime":"Ravno",
"id":"ravno",
"olxid":"4769"
},
{
"ime":"Stolac",
"id":"stolac",
"olxid":"4439"
},
{
"ime":"Čapljina",
"id":"apljina",
"olxid":"947"
},
{
"ime":"Čitluk",
"id":"itluk",
"olxid":"1009"
}
]
},
{
"ime":" Zapadno-hercegovački",
"id":"zapadnohercegovacki",
"olxid": "8",
"mjesta":[
{
"ime":"Grude",
"id":"grude",
"olxid":"1892"
},
{
"ime":"Ljubuški",
"id":"ljubuki",
"olxid":"2905"
},
{
"ime":"Posušje",
"id":"posuje",
"olxid":"3268"
},
{
"ime":"Široki Brijeg",
"id":"irokibrijeg",
"olxid":"2708"
}
]
},
{
"ime":" Livanjski",
"id":"livanjski",
"olxid": "10",
"mjesta":[
{
"ime":"Bosansko Grahovo",
"id":"bosanskograhovo",
"olxid":"560"
},
{
"ime":"Drvar",
"id":"drvar",
"olxid":"4640"
},
{
"ime":"Glamoč",
"id":"glamo",
"olxid":"1533"
},
{
"ime":"Kupres",
"id":"kupres",
"olxid":"2635"
},
{
"ime":"Livno",
"id":"livno",
"olxid":"2741"
},
{
"ime":"Tomislavgrad",
"id":"tomislavgrad",
"olxid":"1228"
}
]
},
{
"ime":" Banjalučka",
"id":"banjalučka",
"olxid": "14",
"mjesta":[
{
"ime":"Banja Luka",
"id":"banjaluka",
"olxid":"21"
},
{
"ime":"Gradiška",
"id":"gradika",
"olxid":"305"
},
{
"ime":"Istočni Drvar",
"id":"istonidrvar",
"olxid":"4662"
},
{
"ime":"Jezero",
"id":"jezero",
"olxid":"1965"
},
{
"ime":"Kneževo",
"id":"kneevo",
"olxid":"4147"
},
{
"ime":"Kostajnica",
"id":"kostajnica",
"olxid":"6142"
},
{
"ime":"Kotor Varoš",
"id":"kotorvaro",
"olxid":"2574"
},
{
"ime":"Kozarska Dubica",
"id":"kozarskadubica",
"olxid":"244"
},
{
"ime":"Krupa na uni",
"id":"krupanauni",
"olxid":"382"
},
{
"ime":"Kupres ",
"id":"kupres",
"olxid":"2654"
},
{
"ime":"Laktaši",
"id":"laktai",
"olxid":"2671"
},
{
"ime":"Mrkonjić Grad",
"id":"mrkonjigrad",
"olxid":"3073"
},
{
"ime":"Novi Grad",
"id":"novigrad",
"olxid":"444"
},
{
"ime":"Oštra Luka",
"id":"otraluka",
"olxid":"3737"
},
{
"ime":"Petrovac",
"id":"petrovac",
"olxid":"515"
},
{
"ime":"Prijedor",
"id":"prijedor",
"olxid":"3287"
},
{
"ime":"Prnjavor",
"id":"prnjavor",
"olxid":"3358"
},
{
"ime":"Ribnik",
"id":"ribnik",
"olxid":"2365"
},
{
"ime":"Srbac",
"id":"srbac",
"olxid":"4271"
},
{
"ime":"Čelinac",
"id":"elinac",
"olxid":"979"
},
{
"ime":"Šipovo",
"id":"ipovo",
"olxid":"4509"
}
]
},
{
"ime":" Dobojsko-Bijeljinska",
"id":"dobojskobijeljinska",
"olxid": "15",
"mjesta":[
{
"ime":"Bijeljina",
"id":"bijeljina",
"olxid":"123"
},
{
"ime":"Bosanski Brod",
"id":"bosanskibrod",
"olxid":"421"
},
{
"ime":"Derventa",
"id":"derventa",
"olxid":"1030"
},
{
"ime":"Doboj",
"id":"doboj",
"olxid":"1088"
},
{
"ime":"Donji Žabar",
"id":"donjiabar",
"olxid":"3254"
},
{
"ime":"Lopare",
"id":"lopare",
"olxid":"2800"
},
{
"ime":"Lukavac",
"id":"lukavac",
"olxid":"6029"
},
{
"ime":"Modriča",
"id":"modria",
"olxid":"2996"
},
{
"ime":"Pelagićevo",
"id":"pelagievo",
"olxid":"1856"
},
{
"ime":"Petrovo",
"id":"petrovo",
"olxid":"1827"
},
{
"ime":"Stanari",
"id":"stanari",
"olxid":"1148"
},
{
"ime":"Teslić",
"id":"tesli",
"olxid":"4549"
},
{
"ime":"Tešanj",
"id":"teanj",
"olxid":"4636"
},
{
"ime":"Travnik",
"id":"travnik",
"olxid":"4692"
},
{
"ime":"Tuzla",
"id":"tuzla",
"olxid":"4966"
},
{
"ime":"Ugljevik",
"id":"ugljevik",
"olxid":"5009"
},
{
"ime":"Vukosavlje",
"id":"vukosavlje",
"olxid":"3197"
},
{
"ime":"Šamac",
"id":"amac",
"olxid":"539"
}
]
},
{
"ime":" Sarajevsko-Zvornička",
"id":"sarajevskozvornicka",
"olxid": "16",
"mjesta":[
{
"ime":"Bratunac",
"id":"bratunac",
"olxid":"595"
},
{
"ime":"Han Pijesak",
"id":"hanpijesak",
"olxid":"1904"
},
{
"ime":"Ilijaš",
"id":"ilija",
"olxid":"3947"
},
{
"ime":"Istočni Stari Grad",
"id":"istonistarigrad",
"olxid":"4049"
},
{
"ime":"Kasindo",
"id":"kasindo",
"olxid":"3880"
},
{
"ime":"Kladanj",
"id":"kladanj",
"olxid":"2325"
},
{
"ime":"Lukavica",
"id":"lukavica",
"olxid":"3971"
},
{
"ime":"Milići",
"id":"milii",
"olxid":"6143"
},
{
"ime":"Olovo",
"id":"olovo",
"olxid":"3221"
},
{
"ime":"Osmaci",
"id":"osmaci",
"olxid":"2128"
},
{
"ime":"Pale",
"id":"pale",
"olxid":"3978"
},
{
"ime":"Rogatica",
"id":"rogatica",
"olxid":"3529"
},
{
"ime":"Rudo",
"id":"rudo",
"olxid":"3648"
},
{
"ime":"Sarajevo-Novi Grad",
"id":"sarajevonovigrad",
"olxid":"6069"
},
{
"ime":"Sokolac",
"id":"sokolac",
"olxid":"4183"
},
{
"ime":"Srebrenica",
"id":"srebrenica",
"olxid":"4310"
},
{
"ime":"Trnovo",
"id":"trnovo",
"olxid":"4067"
},
{
"ime":"Ustiprača",
"id":"ustipraa",
"olxid":"1593"
},
{
"ime":"Višegrad",
"id":"viegrad",
"olxid":"5259"
},
{
"ime":"Vlasenica",
"id":"vlasenica",
"olxid":"5456"
},
{
"ime":"Zvornik",
"id":"zvornik",
"olxid":"5684"
},
{
"ime":"Šekovići",
"id":"ekovii",
"olxid":"4475"
},
{
"ime":"Žepa",
"id":"epa",
"olxid":"1906"
}
]
},
{
"ime":" Trebinjsko-Fočanska",
"id":"trebinjskofocanska",
"olxid": "17",
"mjesta":[
{
"ime":"Berkovići",
"id":"berkovii",
"olxid":"4441"
},
{
"ime":"Bileća",
"id":"bilea",
"olxid":"183"
},
{
"ime":"Foča",
"id":"foa",
"olxid":"1287"
},
{
"ime":"Gacko",
"id":"gacko",
"olxid":"1462"
},
{
"ime":"Istočni Mostar",
"id":"istonimostar",
"olxid":"3038"
},
{
"ime":"Kalinovik",
"id":"kalinovik",
"olxid":"2164"
},
{
"ime":"Ljubinje",
"id":"ljubinje",
"olxid":"2884"
},
{
"ime":"Nevesinje",
"id":"nevesinje",
"olxid":"3138"
},
{
"ime":"Trebinje",
"id":"trebinje",
"olxid":"4766"
},
{
"ime":"Čajniče",
"id":"ajnie",
"olxid":"911"
}
]
},
{
"ime":"Distrikt Brčko",
"id":"distriktbrcko",
"olxid": "12",
"mjesta":[
{
"ime":"Brčko",
"id":"brko",
"olxid":"12"
}
]
}
]
const regions = () => {
return geographies.map( (g) => ({ ime: g.ime, id: g.id, olxid: g.olxid }) );
}
const places = (regionId) => {
for (geo of geographies) {
if(geo.id === regionId) {
return geo.mjesta;
}
}
return null;
}
module.exports = {
regions,
places
}

View File

@@ -5,7 +5,6 @@ const currentRERequest = async (req) => {
if(!uniqueId) return null;
const request = await db.RealEstateRequest.findOne({ where: {uniqueId} });
console.log("Request ", request);
return request;
}

View File

@@ -0,0 +1,18 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn(
'RealEstateRequests',
'place',
Sequelize.STRING
);
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn(
'RealEstateRequests',
'place'
);
}
};

View File

@@ -12,6 +12,7 @@ module.exports = (sequelize, DataTypes) => {
},
email: DataTypes.STRING,
city: DataTypes.STRING,
place: DataTypes.STRING,
}, {});
RealEstateRequest.associate = function(models) {
// associations can be defined here

View File

@@ -1,8 +1,8 @@
.dobrodosli-center-button {
.welcome-center-button {
width: 100%;
}
.dobrodosli-big-logo {
.welcome-big-logo {
font-size: 200pt;
background-image: url(./images/logo.png);
background-size: contain;

31
app/views/city.ejs Normal file
View File

@@ -0,0 +1,31 @@
<div class="row center-align">
<h2>U kojoj regiji tražite nekretninu?</h2>
</div>
<form method="POST" id="form-city">
<div class="row center-align">
<ul class="collection with-header">
<% for(const city of cities) { %>
<li class="collection-item" >
<div id="<%= city.id %>" ><%= city.ime %>
<a href="#!" class="secondary-content">
<i class="material-icons">send</i>
</a>
</div>
</li>
<% } %>
</ul>
<input type="hidden" name="city" id="city" />
</div>
</form>
<script>
$(document).ready( () => {
$(".collection-item").click( (e) => {
const clickedId = $(e.target).attr("id");
$("#city").val(clickedId);
$("#form-city").submit();
});
});
</script>

View File

@@ -1,25 +0,0 @@
<div class="row center-align">
<h2>U kojoj regiji tražite nekretninu?</h2>
</div>
<form method="POST" id="form-grad">
<div class="row center-align">
<ul class="collection with-header">
<% for(const grad of gradovi) { %>
<li class="collection-item" > <div id="<%= grad.id %>" ><%= grad.ime %><a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
<% } %>
</ul>
<input type="hidden" name="grad" id="grad" />
</div>
</form>
<script>
$(document).ready( () => {
$(".collection-item").click( (e) => {
const clickedId = $(e.target).attr("id");
$("#grad").val(clickedId);
$("#form-grad").submit();
});
});
</script>

View File

@@ -0,0 +1,31 @@
<div class="row center-align">
<h2>U kojem mjestu tražite nekretninu?</h2>
</div>
<form method="POST" id="form-neighborhood">
<div class="row center-align">
<ul class="collection with-header">
<% for(const neighborhood of neighborhoods) { %>
<li class="collection-item" >
<div id="<%= neighborhood.id %>" ><%= neighborhood.ime %>
<a href="#!" class="secondary-content">
<i class="material-icons">send</i>
</a>
</div>
</li>
<% } %>
</ul>
<input type="hidden" name="neighborhood" id="neighborhoods" />
</div>
</form>
<script>
$(document).ready( () => {
$(".collection-item").click( (e) => {
const clickedId = $(e.target).attr("id");
$("#neighborhood").val(clickedId);
$("#form-neighborhood").submit();
});
});
</script>

View File

@@ -0,0 +1,35 @@
<div class="row center-align">
<h2>Koju nekretninu tražite?</h2>
</div>
<form method="POST" id="form-real-estate-type">
<div class="row center-align">
<ul class="collection with-header">
<% for(const realEstatetype of realEstateTypes) { %>
<li class="collection-item" >
<div id="<%= realEstatetype.id %>" ><%= realEstatetype.ime %>
<a href="#!" class="secondary-content">
<i class="material-icons">send</i>
</a>
</div>
</li>
<% } %>
</ul>
<input type="hidden" name="realestatetype" id="realestatetype" />
</div>
</form>
<script>
$(document).ready( () => {
$(".collection-item").click( (e) => {
const clickedId = $(e.target).attr("id");
$("#realestatetype").val(clickedId);
$("#form-real-estate-type").submit();
});
});
</script>

View File

@@ -1,29 +0,0 @@
<div class="row center-align">
<h2>Koju nekretninu tražite?</h2>
</div>
<form method="POST" id="form-vrsta">
<div class="row center-align">
<ul class="collection with-header">
<% for(let vrsta of vrste) { %>
<li class="collection-item" > <div id="<%= vrsta.id %>" ><%= vrsta.ime %><a href="#!" class="secondary-content"><i class="material-icons">send</i></a></div></li>
<% } %>
</ul>
<input type="hidden" name="vrsta" id="vrsta" />
</div>
</form>
<script>
$(document).ready( () => {
$(".collection-item").click( (e) => {
const clickedId = $(e.target).attr("id");
$("#vrsta").val(clickedId);
$("#form-vrsta").submit();
});
});
</script>

View File

@@ -1,7 +1,7 @@
<!-- -->
<div class="row center-align">
<span class="dobrodosli-big-logo">🤙</span>
<span class="welcome-big-logo">🤙</span>
</div>
<div class="row center-align">
<div>Sve nekretnine dostupne u oglasima.</div>
@@ -10,7 +10,7 @@
</div>
<div class="row">
<div class="col s6 push-s3">
<a href="<%= nextStep %>" class="dobrodosli-center-button waves-effect waves-light btn">
<a href="<%= nextStep %>" class="welcome-center-button waves-effect waves-light btn">
Javi mi
</a>
</div>

View File

@@ -1,6 +1,7 @@
const dobrodosli = require('./app/controllers/dobrodosli').getDobrodosli;
const { getVrstaNekretnine, postVrstaNekretnine} = require('./app/controllers/vrsta_nekretnine');
const { getGrad, postGrad } = require('./app/controllers/grad');
const welcome = require('./app/controllers/welcome').getWelcome;
const { getRealEstateTypes, postRealEstateTypes} = require('./app/controllers/real_estate_types');
const { getCity, postCity } = require('./app/controllers/city');
const { getNeighborhood, postgNeighborhood } = require('./app/controllers/neighborhoods');
let express = require("express");
const path = require("path");
@@ -107,15 +108,19 @@ app.post("/api/payforalert", function(request, response) {
});
});
app.get('/', dobrodosli);
app.get('/vrstanekretnine/:request_id', getVrstaNekretnine);
app.get('/vrstanekretnine', getVrstaNekretnine);
app.get('/', welcome);
app.get('/vrstanekretnine/:request_id', getRealEstateTypes);
app.get('/vrstanekretnine', getRealEstateTypes);
app.post('/vrstanekretnine/:request_id', postVrstaNekretnine);
app.post('/vrstanekretnine', postVrstaNekretnine);
app.post('/vrstanekretnine/:request_id', postRealEstateTypes);
app.post('/vrstanekretnine', postRealEstateTypes);
app.get('/grad/:request_id', getCity);
app.post('/grad/:request_id', postCity);
app.get('/mjesto/:request_id', getNeighborhood);
app.post('/mjesto/:request_id', postgNeighborhood);
app.get('/grad/:request_id', getGrad);
app.post('/grad/:request_id', postGrad);
app.use('/assets', express.static('./app/public'))

389
tools/kantoni.html Normal file
View File

@@ -0,0 +1,389 @@
<!DOCTYPE>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.4.0.js"></script>
</head>
<body>
<select name="kanton" id="kanton" class="drop-select" onchange="pronadji_gradove()">
<option value="">Iz svih lokacija</option>
<option value="" disabled="">Federacija BiH</option>
<option value="9">&nbsp;Sarajevo</option>
<option value="3">&nbsp;Tuzlanski</option>
<option value="4">&nbsp;Zeničko-Dobojski</option>
<option value="1">&nbsp;Unsko-Sanski</option>
<option value="2">&nbsp;Posavski</option>
<option value="5">&nbsp;Bosansko-podrinjski</option>
<option value="6">&nbsp;Srednjobosanski</option>
<option value="7">&nbsp;Hercegovačko-Neretvanski</option>
<option value="8">&nbsp;Zapadno-Hercegovački</option>
<option value="10">&nbsp;Livanjski</option>
<option value="" disabled="">Republika Srpska</option>
<option value="14">&nbsp;Banjalučka</option>
<option value="15">&nbsp;Dobojsko-Bijeljinska</option>
<option value="16">&nbsp;Sarajevsko-Zvornička</option>
<option value="17">&nbsp;Trebinjsko-Fočanska</option>
<option value="12">Disktrikt Brčko</option>
</select>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="unskosanski" id="unskosanski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="75">Bihać</option>
<option value="373">Bosanska Krupa</option>
<option value="504">Bosanski Petrovac</option>
<option value="374">Bužim</option>
<option value="857">Cazin</option>
<option value="2362">Ključ</option>
<option value="3738">Sanski Most</option>
<option value="5122">Velika Kladuša</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="posavski" id="posavski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="6144">Domaljevac</option>
<option value="424">Odžak</option>
<option value="3252">Orašje</option>
<option value="540">Šamac</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="tuzlanski" id="tuzlanski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="2">Banovići</option>
<option value="1090">Doboj-Istok</option>
<option value="1854">Gradačac</option>
<option value="1826">Gračanica</option>
<option value="2129">Kalesija</option>
<option value="2319">Kladanj</option>
<option value="2840">Lukavac</option>
<option value="5699">Sapna</option>
<option value="4391">Srebrenik</option>
<option value="5010">Teočak</option>
<option value="4944">Tuzla</option>
<option value="2801">Čelić</option>
<option value="5774">Živinice</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="zenickodobojski" id="zenickodobojski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="704">Breza</option>
<option value="1122">Doboj-Jug</option>
<option value="2022">Kakanj</option>
<option value="2941">Maglaj</option>
<option value="1925">Olovo</option>
<option value="4594">Tešanj</option>
<option value="1087">Usora</option>
<option value="5037">Vareš</option>
<option value="5171">Visoko</option>
<option value="5548">Zavidovići</option>
<option value="4571">Zenica</option>
<option value="2940">Žepče</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="bosanskopodrinjski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="1289">Foča</option>
<option value="1588">Goražde</option>
<option value="3546">Pale</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="srednjobosanski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="732">Bugojno</option>
<option value="810">Busovača</option>
<option value="4151">Dobretići</option>
<option value="1160">Donji Vakuf</option>
<option value="1407">Fojnica</option>
<option value="1775">Gornji Vakuf - Uskoplje</option>
<option value="1960">Jajce</option>
<option value="2237">Kiseljak</option>
<option value="2608">Kreševo</option>
<option value="3477">Novi Travnik</option>
<option value="4678">Travnik</option>
<option value="5422">Vitez</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="hercegovackoneretvanski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="3017">Grad Mostar</option>
<option value="1930">Jablanica</option>
<option value="2169">Konjic</option>
<option value="3111">Neum</option>
<option value="3421">Prozor</option>
<option value="4769">Ravno</option>
<option value="4439">Stolac</option>
<option value="947">Čapljina</option>
<option value="1009">Čitluk</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="zapadnohercegovacki" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="1892">Grude</option>
<option value="2905">Ljubuški</option>
<option value="3268">Posušje</option>
<option value="2708">Široki Brijeg</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="sarajevo" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="3817">Hadžići</option>
<option value="3879">Ilidža</option>
<option value="3892">Ilijaš</option>
<option value="3812">Sarajevo - Centar</option>
<option value="3969">Sarajevo-Novi Grad</option>
<option value="5896">Sarajevo-Novo Sarajevo</option>
<option value="4048">Sarajevo-Stari Grad</option>
<option value="4063">Trnovo</option>
<option value="4126">Vogošća</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="livanjski" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="560">Bosansko Grahovo</option>
<option value="4640">Drvar</option>
<option value="1533">Glamoč</option>
<option value="2635">Kupres</option>
<option value="2741">Livno</option>
<option value="1228">Tomislavgrad</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="grad11" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="645">distriktbrcko</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="banjalučka" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="21">Banja Luka</option>
<option value="305">Gradiška</option>
<option value="4662">Istočni Drvar</option>
<option value="1965">Jezero</option>
<option value="4147">Kneževo</option>
<option value="6142">Kostajnica</option>
<option value="2574">Kotor Varoš</option>
<option value="244">Kozarska Dubica</option>
<option value="382">Krupa na uni</option>
<option value="2654">Kupres </option>
<option value="2671">Laktaši</option>
<option value="3073">Mrkonjić Grad</option>
<option value="444">Novi Grad</option>
<option value="3737">Oštra Luka</option>
<option value="515">Petrovac</option>
<option value="3287">Prijedor</option>
<option value="3358">Prnjavor</option>
<option value="2365">Ribnik</option>
<option value="4271">Srbac</option>
<option value="979">Čelinac</option>
<option value="4509">Šipovo</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="dobojskobijeljinska" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="123">Bijeljina</option>
<option value="421">Bosanski Brod</option>
<option value="1030">Derventa</option>
<option value="1088">Doboj</option>
<option value="3254">Donji Žabar</option>
<option value="2800">Lopare</option>
<option value="6029">Lukavac</option>
<option value="2996">Modriča</option>
<option value="1856">Pelagićevo</option>
<option value="1827">Petrovo</option>
<option value="1148">Stanari</option>
<option value="4549">Teslić</option>
<option value="4636">Tešanj</option>
<option value="4692">Travnik</option>
<option value="4966">Tuzla</option>
<option value="5009">Ugljevik</option>
<option value="3197">Vukosavlje</option>
<option value="539">Šamac</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="sarajevskozvornicka" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="595">Bratunac</option>
<option value="1904">Han Pijesak</option>
<option value="3947">Ilijaš</option>
<option value="4049">Istočni Stari Grad</option>
<option value="3880">Kasindo</option>
<option value="2325">Kladanj</option>
<option value="3971">Lukavica</option>
<option value="6143">Milići</option>
<option value="3221">Olovo</option>
<option value="2128">Osmaci</option>
<option value="3978">Pale</option>
<option value="3529">Rogatica</option>
<option value="3648">Rudo</option>
<option value="6069">Sarajevo-Novi Grad</option>
<option value="4183">Sokolac</option>
<option value="4310">Srebrenica</option>
<option value="4067">Trnovo</option>
<option value="1593">Ustiprača</option>
<option value="5259">Višegrad</option>
<option value="5456">Vlasenica</option>
<option value="5684">Zvornik</option>
<option value="4475">Šekovići</option>
<option value="1906">Žepa</option>
</select>
</span>
</div>
<div style="height:40px;">
<span class="drop-container" style="width: 168px;">
<span class="drop-label">Mjesto</span><span class="drop-arrow"></span>
<select name="" id="trebinjskofocanska" class="drop-select" onchange="stavi_grad()">
<option value="0">Mjesto</option>
<option value="4441">Berkovići</option>
<option value="183">Bileća</option>
<option value="1287">Foča</option>
<option value="1462">Gacko</option>
<option value="3038">Istočni Mostar</option>
<option value="2164">Kalinovik</option>
<option value="2884">Ljubinje</option>
<option value="3138">Nevesinje</option>
<option value="4766">Trebinje</option>
<option value="911">Čajniče</option>
</select>
</span>
</div>
<script>
const stavi_grad = () => {};
const gradovi = [
{"ime":" Sarajevo","id":"sarajevo"},
{"ime":" Unsko-sanski","id":"unskosanski"},
{"ime":" Posavski","id":"posavski"},
{"ime":" Tuzlanski","id":"tuzlanski"},
{"ime":" Zeničko-dobojski","id":"zenickodobojski"},
{"ime":" Bosansko-podrinjski","id":"bosanskopodrinjski"},
{"ime":" Srednjobosanski","id":"srednjobosanski"},
{"ime":" Hercegovačko-neretvanski","id":"hercegovackoneretvanski"},
{"ime":" Zapadno-hercegovački","id":"zapadnohercegovacki"},
{"ime":" Livanjski","id":"livanjski"},
{"ime":" Banjalučka","id":"banjalučka"},
{"ime":" Dobojsko-Bijeljinska","id":"dobojskobijeljinska"},
{"ime":" Sarajevsko-Zvornička","id":"sarajevskozvornicka"},
{"ime":" Trebinjsko-Fočanska","id":"trebinjskofocanska"},
{"ime":"Distrikt Brčko","id":"distriktbrcko"},
];
for (let grad of gradovi) {
const mjesta = [];
$('#' + grad.id).children().each( function() {
const mjesto = $(this).text();
mjesta.push( {
ime: mjesto,
id: mjesto.toLowerCase().replace(/[^a-z]/g,''),
olxid: $(this).val()
});
});
grad.mjesta = mjesta;
}
console.log(JSON.stringify(gradovi));
</script>
</body>
</html>