Compare commits

..

3 Commits

Author SHA1 Message Date
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
13 changed files with 1440 additions and 194 deletions

View File

@@ -1,48 +0,0 @@
#
# example Dockerfile for https://docs.docker.com/engine/examples/postgresql_service/
#
FROM ubuntu:16.04
# Add the PostgreSQL PGP key to verify their Debian packages.
# It should be the same key as https://www.postgresql.org/media/keys/ACCC4CF8.asc
RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
# Add PostgreSQL's repository. It contains the most recent stable release
# of PostgreSQL, ``9.3``.
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list
# Install ``python-software-properties``, ``software-properties-common`` and PostgreSQL 9.3
# There are some warnings (in red) that show up during the build. You can hide
# them by prefixing each apt-get statement with DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y python-software-properties software-properties-common postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
# Note: The official Debian and Ubuntu images automatically ``apt-get clean``
# after each ``apt-get``
# Run the rest of the commands as the ``postgres`` user created by the ``postgres-9.3`` package when it was ``apt-get installed``
USER postgres
# Create a PostgreSQL role named ``docker`` with ``docker`` as the password and
# then create a database `docker` owned by the ``docker`` role.
# Note: here we use ``&&\`` to run commands one after the other - the ``\``
# allows the RUN command to span multiple lines.
RUN /etc/init.d/postgresql start &&\
psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\
createdb -O docker marketalerts
# Adjust PostgreSQL configuration so that remote connections to the
# database are possible.
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf
# And add ``listen_addresses`` to ``/etc/postgresql/9.3/main/postgresql.conf``
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf
# Expose the PostgreSQL port
EXPOSE 5432
# Add VOLUMEs to allow backup of config, logs and databases
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
# Set the default command to run when starting the container
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]

View File

@@ -3,8 +3,10 @@
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
Run postgres image with:
docker run --name pg_test -d -p 5432:5432 marketalerts
ENV:
JAWSDB_URL='mysql://sq4dlf9mz49avli0:gqy5vzmzyhp0837x@tuy8t6uuvh43khkk.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/rxhzg1550441ftqk'
Run with:
$ npm start

View File

@@ -1,10 +1,6 @@
{
"development": {
"username": "docker",
"password": "docker",
"database": "marketalerts",
"port": "5432",
"dialect": "postgres"
"use_env_variable": "JAWSDB_URL"
},
"test": {
"use_env_variable": "JAWSDB_URL"

View File

@@ -1,23 +1,8 @@
const db = require('../models/index');
const { currentRERequest } = require('../helpers/url');
const { regions } = require('../helpers/codes');
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 gradovi = regions();
const getGrad = (req,res) => {
@@ -29,10 +14,11 @@ const getGrad = (req,res) => {
}
const postGrad = async (req, res) => {
let request = await currentRERequest(req);
const request = await currentRERequest(req);
const nextStep = req.query.nextStep || `/mjesto/${request.uniqueId}`;
request.city = req.body.grad;
await request.save();
res.send("Result is " + JSON.stringify(request));
res.redirect(nextStep)
}
module.exports = {

26
app/controllers/mjesto.js Normal file
View File

@@ -0,0 +1,26 @@
const db = require('../models/index');
const { currentRERequest } = require('../helpers/url');
const { places } = require('../helpers/codes');
const getMjesto = async (req,res) => {
let request = await currentRERequest(req);
const mjesta = places(request.city);
const nextStep = req.query.nextStep || '/';
res.render('mjesto', {
nextStep,
mjesta
});
}
const postMjesto = async (req, res) => {
let request = await currentRERequest(req);
request.place = req.body.mjesto;
console.log("AAA ", req.body);
await request.save();
res.send("Result is " + JSON.stringify(request));
}
module.exports = {
getMjesto,
postMjesto
};

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

@@ -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

25
app/views/mjesto.ejs Normal file
View File

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

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 { getMjesto, postMjesto } = require('./app/controllers/mjesto');
let express = require("express");
const path = require("path");
@@ -117,6 +118,10 @@ app.post('/vrstanekretnine', postVrstaNekretnine);
app.get('/grad/:request_id', getGrad);
app.post('/grad/:request_id', postGrad);
app.get('/mjesto/:request_id', getMjesto);
app.post('/mjesto/:request_id', postMjesto);
app.use('/assets', express.static('./app/public'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`));

188
package-lock.json generated
View File

@@ -239,11 +239,6 @@
"isarray": "^1.0.0"
}
},
"buffer-writer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
"integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw=="
},
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -478,6 +473,11 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"denque": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/denque/-/denque-1.4.0.tgz",
"integrity": "sha512-gh513ac7aiKrAgjiIBWZG0EASyDF9p4JMWwKA8YU5s9figrL5SRNEMT6FDynsegakuhWd1wVqTvqvqAoDxw7wQ=="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -519,11 +519,6 @@
"domelementtype": "1"
}
},
"dotenv": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz",
"integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g=="
},
"dottie": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.1.tgz",
@@ -792,6 +787,14 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"generate-function": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
"requires": {
"is-property": "^1.0.2"
}
},
"generic-pool": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.5.0.tgz",
@@ -951,6 +954,11 @@
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -1054,6 +1062,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
},
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@@ -1169,9 +1182,9 @@
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
},
"moment-timezone": {
"version": "0.5.25",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.25.tgz",
"integrity": "sha512-DgEaTyN/z0HFaVcVbSyVCUU6HeFdnNC3vE4c9cgu2dgMTvjBUBdBzWfasTBmAW45u5OIMeCJtU8yNjM22DHucw==",
"version": "0.5.23",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.23.tgz",
"integrity": "sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==",
"requires": {
"moment": ">= 2.9.0"
}
@@ -1181,6 +1194,39 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mysql2": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-1.6.5.tgz",
"integrity": "sha512-zedaOOyb3msuuZcJJnxIX/EGOpmljDG7B+UevRH5lqcv+yhy9eCwkArBz8/AO+/rlY3/oCsOdG8R5oD6k0hNfg==",
"requires": {
"denque": "^1.4.0",
"generate-function": "^2.3.1",
"iconv-lite": "^0.4.24",
"long": "^4.0.0",
"lru-cache": "^4.1.3",
"named-placeholders": "^1.1.2",
"seq-queue": "^0.0.5",
"sqlstring": "^2.3.1"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
}
}
},
"named-placeholders": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
"integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
"requires": {
"lru-cache": "^4.1.3"
}
},
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -1327,11 +1373,6 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"packet-reader": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
"integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
},
"parse5": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
@@ -1375,85 +1416,6 @@
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"pg": {
"version": "7.10.0",
"resolved": "https://registry.npmjs.org/pg/-/pg-7.10.0.tgz",
"integrity": "sha512-aE6FZomsyn3OeGv1oM50v7Xu5zR75c15LXdOCwA9GGrfjXsQjzwYpbcTS6OwEMhYfZQS6m/FVU/ilPLiPzJDCw==",
"requires": {
"buffer-writer": "2.0.0",
"packet-reader": "1.0.0",
"pg-connection-string": "0.1.3",
"pg-pool": "^2.0.4",
"pg-types": "~2.0.0",
"pgpass": "1.x",
"semver": "4.3.2"
},
"dependencies": {
"semver": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz",
"integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c="
}
}
},
"pg-connection-string": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz",
"integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc="
},
"pg-int8": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
},
"pg-pool": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.6.tgz",
"integrity": "sha512-hod2zYQxM8Gt482q+qONGTYcg/qVcV32VHVPtktbBJs0us3Dj7xibISw0BAAXVMCzt8A/jhfJvpZaxUlqtqs0g=="
},
"pg-types": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.0.1.tgz",
"integrity": "sha512-b7y6QM1VF5nOeX9ukMQ0h8a9z89mojrBHXfJeSug4mhL0YpxNBm83ot2TROyoAmX/ZOX3UbwVO4EbH7i1ZZNiw==",
"requires": {
"pg-int8": "1.0.1",
"postgres-array": "~2.0.0",
"postgres-bytea": "~1.0.0",
"postgres-date": "~1.0.4",
"postgres-interval": "^1.1.0"
}
},
"pgpass": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz",
"integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=",
"requires": {
"split": "^1.0.0"
}
},
"postgres-array": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="
},
"postgres-bytea": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
"integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU="
},
"postgres-date": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.4.tgz",
"integrity": "sha512-bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA=="
},
"postgres-interval": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
"requires": {
"xtend": "^4.0.0"
}
},
"proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@@ -1632,10 +1594,15 @@
"statuses": "~1.4.0"
}
},
"seq-queue": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
"integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
},
"sequelize": {
"version": "4.43.2",
"resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.43.2.tgz",
"integrity": "sha512-EA3V1AsxVjf2EtGbdEoa9Fe5rSAqy5g4OsX0VwtU6iMezTjIYTCXV8o6mG7i6u3lu4Zc7JWZ6XwhS0k79pT/EQ==",
"version": "4.43.0",
"resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.43.0.tgz",
"integrity": "sha512-GkwGFVREKBf/ql6W6RXwXy1fzb/HOk0lmOBbcQrJMvJtB65Jfg7CUh+sENh0deuWk5s79JedgZJ/yEjvtzHXaQ==",
"requires": {
"bluebird": "^3.5.0",
"cls-bluebird": "^2.1.0",
@@ -1735,13 +1702,10 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
"split": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
"integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"requires": {
"through": "2"
}
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
},
"sshpk": {
"version": "1.16.1",
@@ -1826,11 +1790,6 @@
"terraformer": "~1.0.5"
}
},
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
@@ -2038,11 +1997,6 @@
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",

View File

@@ -22,15 +22,14 @@
"aws-sdk": "^2.422.0",
"cheerio": "^1.0.0-rc.2",
"compression": "^1.7.4",
"dotenv": "^7.0.0",
"ejs": "^2.6.1",
"express": "^4.16.4",
"express-ejs-layouts": "^2.5.0",
"express-layout": "^0.1.0",
"mysql2": "^1.6.4",
"node-fetch": "^2.3.0",
"pg": "^7.10.0",
"react-step-wizard": "^5.1.0",
"sequelize": "^4.43.2",
"sequelize": "^4.42.0",
"sequelize-cli": "^5.4.0"
}
}

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>