Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bfd9f26d41 | ||
|
|
e3add5878b |
@@ -8,7 +8,9 @@ const StandardBtn = (props) => {
|
|||||||
const clickHandler = ( e ) => {
|
const clickHandler = ( e ) => {
|
||||||
setData( prevState => ({
|
setData( prevState => ({
|
||||||
...prevState,
|
...prevState,
|
||||||
"Kategorija": e.target.value
|
"Category":{
|
||||||
|
[e.target.name]: e.target.value
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
import React from 'react'
|
|
||||||
import './button.css'
|
|
||||||
|
|
||||||
const TimeBtn = (props) => {
|
|
||||||
|
|
||||||
const {data, setData, filter} = props.data
|
|
||||||
|
|
||||||
const clickHandler = ( e ) => {
|
|
||||||
setData( prevState => ({
|
|
||||||
...prevState,
|
|
||||||
[e.target.name]: e.target.value
|
|
||||||
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='standard-btn'>
|
|
||||||
<button name={filter} value={props.title} className={data.Slanje=== props.title ? "active" : "standardBtn"} onClick={e => clickHandler(e)}>{props.title}</button>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default TimeBtn
|
|
||||||
@@ -12,15 +12,6 @@
|
|||||||
border: #02ADBA;
|
border: #02ADBA;
|
||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
|
||||||
width: 300px;
|
|
||||||
background-color: #fff;
|
|
||||||
font-size: 25px;
|
|
||||||
padding: 7px 20px 7px 20px;
|
|
||||||
color: #02ADBA;
|
|
||||||
border: #02ADBA;
|
|
||||||
}
|
|
||||||
|
|
||||||
.standardBtn:hover {
|
.standardBtn:hover {
|
||||||
background-color:#3eced8 ;
|
background-color:#3eced8 ;
|
||||||
color: white;
|
color: white;
|
||||||
|
|||||||
@@ -1,34 +1,55 @@
|
|||||||
import {useState} from "react";
|
import React from "react";
|
||||||
import "./Filters.css";
|
import "./Filters.css";
|
||||||
import Filter from "./Filter/Filter";
|
import Filter from "./Filter/Filter";
|
||||||
import TitleBtn from "../Button/TitleBtn";
|
import TitleBtn from "../Button/TitleBtn";
|
||||||
import { Link } from "react-router-dom";
|
import {Link} from 'react-router-dom';
|
||||||
|
import Color from '../../data/color';
|
||||||
|
import AirCondition from "../../data/air-condition";
|
||||||
|
import Seats from "../../data/seats";
|
||||||
|
import Sensors from "../../data/sensors";
|
||||||
|
import Gearbox from "../../data/gearbox";
|
||||||
|
import Lights from "../../data/lights";
|
||||||
import Checkbox from "./Filter/Checkbox";
|
import Checkbox from "./Filter/Checkbox";
|
||||||
import CheckBox from "../../data/checkbox";
|
import CheckBox from "../../data/checkbox";
|
||||||
|
|
||||||
|
|
||||||
const AdvancedFilters = (props) => {
|
const AdvancedFilters = (props) => {
|
||||||
const { data, setData } = props.data.data;
|
|
||||||
const [gradovi, setGradovi] = useState(data.Lokacija.gradovi)
|
|
||||||
let index = 0;
|
|
||||||
|
|
||||||
return (
|
const {filters, setFilters} = props.data
|
||||||
<div className='filters-container'>
|
const data1 = [Color, AirCondition, Seats, Gearbox, Sensors, Lights]
|
||||||
<div className='checkbox-content'>
|
let index = 0
|
||||||
{CheckBox.map((item) => {
|
|
||||||
index += 1;
|
|
||||||
return (
|
|
||||||
<Checkbox key={index} item={item} objekat={{ data, setData }} />
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style={{ marginTop: 50 }}>
|
|
||||||
<Link to='/location'>
|
|
||||||
<TitleBtn title='Dalje' />
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default AdvancedFilters;
|
return(
|
||||||
|
<div className="filters-container">
|
||||||
|
<div className="filters-content">
|
||||||
|
{
|
||||||
|
data1.map(item => {
|
||||||
|
index += 1;
|
||||||
|
return(
|
||||||
|
<Filter key={index} ime={item.ime} tipovi={item.tipovi} data={{filters, setFilters}}/>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div className="checkbox-content">
|
||||||
|
{
|
||||||
|
CheckBox.map(item => {
|
||||||
|
index += 1;
|
||||||
|
return(
|
||||||
|
<Checkbox key={index} title={item} data={{filters, setFilters}}/>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style={{marginTop: 50}}>
|
||||||
|
<Link to="/location">
|
||||||
|
<TitleBtn title="Dalje" />
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AdvancedFilters
|
||||||
@@ -1,38 +1,26 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import "./css/Checkbox.css";
|
import './css/Checkbox.css';
|
||||||
|
|
||||||
const Checkbox = ({ objekat, item }) => {
|
const Checkbox = (props) => {
|
||||||
const { data, setData } = objekat;
|
|
||||||
const [isChecked, setIsChecked] = useState(data.Filteri[`${item.value}`]);
|
|
||||||
|
|
||||||
const changeHandler = (event) => {
|
|
||||||
setData((prevData) => ({
|
|
||||||
...prevData,
|
|
||||||
Filteri: {
|
|
||||||
...prevData.Filteri,
|
|
||||||
[event.target.name]: !isChecked,
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
const {setFilters} = props.data
|
||||||
<div className='checkbox-div'>
|
const [isChecked, setIsChecked] = useState(true)
|
||||||
<label className='checkbox-title' htmlFor={`${item.title}`}>
|
|
||||||
{item.title}
|
|
||||||
</label>
|
const changeHandler = ( event ) => {
|
||||||
<input
|
setFilters(prevData => ({
|
||||||
type='checkbox'
|
...prevData,
|
||||||
name={item.variable}
|
[event.target.name]: isChecked
|
||||||
checked={data.Filteri[`${item.variable}`]}
|
}))
|
||||||
className='checkbox'
|
}
|
||||||
id={`${item.title}`}
|
|
||||||
onChange={(e) => {
|
return(
|
||||||
changeHandler(e);
|
<div className="checkbox-div">
|
||||||
setIsChecked(!isChecked);
|
<label className="checkbox-title" htmlFor={`${props.title}`}>{props.title}</label>
|
||||||
}}
|
<input type="checkbox" name={props.title} className="checkbox" id={`${props.title}`} onChange={(e) => {changeHandler(e); setIsChecked(!isChecked)}}/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
)
|
||||||
);
|
}
|
||||||
};
|
|
||||||
|
|
||||||
export default Checkbox;
|
export default Checkbox;
|
||||||
@@ -1,62 +1,40 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, {useEffect, useState} from "react";
|
||||||
import "./css/DoubleFilter.css";
|
import "./css/DoubleFilter.css";
|
||||||
|
|
||||||
const DoubleFilter = (props) => {
|
const DoubleFilter = (props) => {
|
||||||
const { data, setData } = props.data;
|
|
||||||
const { title, fields, VName } = props.item;
|
|
||||||
|
|
||||||
const changeHandler = (e) => {
|
const {setFilters} = props.data
|
||||||
setData((prevData) => ({
|
const [doubleFilterData, setDoubleFilterData] = useState({})
|
||||||
...prevData,
|
|
||||||
Filteri: {
|
|
||||||
...prevData.Filteri,
|
|
||||||
[VName]: {
|
|
||||||
...prevData.Filteri[`${VName}`],
|
|
||||||
[e.target.name]: e.target.value,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
const changeHandler = ( e ) => {
|
||||||
<div className='doubleFilter-component'>
|
setDoubleFilterData(prevData => ({
|
||||||
<label htmlFor='filters-div'>{title}</label>
|
...prevData,
|
||||||
<div className='double-filters' id='filters-div'>
|
[e.target.name]: e.target.value
|
||||||
<div className='filter'>
|
}))
|
||||||
<label htmlFor='od' className='filter-info'>
|
}
|
||||||
Od
|
|
||||||
</label>
|
useEffect(() => {
|
||||||
<input
|
setFilters(prevData => ({
|
||||||
placeholder='Unesite'
|
...prevData,
|
||||||
id='od'
|
[props.title]: doubleFilterData
|
||||||
name='Od'
|
}))
|
||||||
value={data.Filteri[`${VName}`].Od}
|
}, [doubleFilterData])
|
||||||
className='filter-number'
|
|
||||||
type='number'
|
return (
|
||||||
min={fields.min}
|
<div className="doubleFilter-component">
|
||||||
max={fields.max}
|
<label htmlFor="filters-div">{props.title}</label>
|
||||||
onChange={(e) => changeHandler(e)}
|
<div className="double-filters" id="filters-div">
|
||||||
/>
|
<div className="filter">
|
||||||
|
<label htmlFor="od" className="filter-info">Od</label>
|
||||||
|
<input placeholder="Unesite" id="od" name="Od" className="filter-number" type="number" min={props.fields.min} max={props.fields.max} onChange={(e) => changeHandler(e)}/>
|
||||||
|
</div>
|
||||||
|
<div className="filter">
|
||||||
|
<label htmlFor="do" className="filter-info">Do</label>
|
||||||
|
<input placeholder="Unesite" id="do" name="Do" className="filter-number" type="number" min={props.fields.min} max={props.fields.max} onChange={(e) => changeHandler(e)}/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='filter'>
|
)
|
||||||
<label htmlFor='do' className='filter-info'>
|
}
|
||||||
Do
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
placeholder='Unesite'
|
|
||||||
id='do'
|
|
||||||
name='Do'
|
|
||||||
value={data.Filteri[`${VName}`].Do}
|
|
||||||
className='filter-number'
|
|
||||||
type='number'
|
|
||||||
min={fields.min}
|
|
||||||
max={fields.max}
|
|
||||||
onChange={(e) => changeHandler(e)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default DoubleFilter;
|
export default DoubleFilter;
|
||||||
@@ -1,42 +1,29 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React from "react";
|
||||||
import "./css/Filter.css";
|
import './css/Filter.css';
|
||||||
|
|
||||||
const Filter = (props) => {
|
const Filter = (props) => {
|
||||||
const { data, setData } = props.data;
|
|
||||||
const { ime, VName, tipovi } = props.item;
|
|
||||||
|
|
||||||
const changeHandler = (e) => {
|
const {setFilters} = props.data
|
||||||
setData((prevData) => ({
|
|
||||||
...prevData,
|
|
||||||
Filteri: {
|
|
||||||
...prevData.Filteri,
|
|
||||||
[e.target.name]: e.target.value,
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
const changeHandler = ( e ) => {
|
||||||
<div className='filter-component'>
|
setFilters( prevData => ({
|
||||||
<label htmlFor={VName} className='filter-name'>
|
...prevData,
|
||||||
{ime}
|
[e.target.name]: e.target.value
|
||||||
</label>
|
}))
|
||||||
<select
|
}
|
||||||
className='dropdown-list'
|
|
||||||
name={VName}
|
return(
|
||||||
id={VName}
|
<div className="filter-component">
|
||||||
value={data.Filteri[`${VName}`]}
|
<label htmlFor={props.ime} className="filter-name">{props.ime}</label>
|
||||||
onChange={(e) => changeHandler(e)}
|
<select className="dropdown-list" name={props.ime} id={props.ime} onChange={(e) => changeHandler(e)}>
|
||||||
>
|
{props.tipovi.map((tip, i) => {
|
||||||
{tipovi.map((tip, i) => {
|
return (
|
||||||
return (
|
<option key={i} value={tip} name={tip}>{tip}</option>
|
||||||
<option key={i} value={tip} name={tip}>
|
)
|
||||||
{tip}
|
})}
|
||||||
</option>
|
</select>
|
||||||
);
|
</div>
|
||||||
})}
|
)
|
||||||
</select>
|
}
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Filter;
|
export default Filter;
|
||||||
@@ -1,96 +1,28 @@
|
|||||||
import { React, useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import "./css/LocationCheckbox.css";
|
import './css/LocationCheckbox.css';
|
||||||
|
|
||||||
const LocationCheckbox = (props) => {
|
const LocationCheckbox = (props) => {
|
||||||
const { data, setData } = props.data;
|
|
||||||
const [checked, setChecked] = useState(false);
|
|
||||||
const [value, setValue] = useState(false);
|
|
||||||
|
|
||||||
// useEffect(() => {
|
const {setCheckboxStatus} = props.data;
|
||||||
// data.Lokacija.gradovi.forEach(grad => {
|
const [checked, setChecked] = useState(true)
|
||||||
// if(grad === props.title){
|
|
||||||
// return setValue(true)
|
|
||||||
// }return setValue(false)
|
|
||||||
// })
|
|
||||||
// }, [data.Lokacija.gradovi])
|
|
||||||
|
|
||||||
// na pocetku dobijem prazan niz, ukoliko oznaci jedan grad, treba ga dodati u niz
|
const changeHandler = (e) => {
|
||||||
// prije svakog dodavanja treba provjeriti da li je taj grad u nizu, ukoliko nije treba ga dodati
|
setCheckboxStatus(prevStatus => ({
|
||||||
// brisanje gradova iz niza samo ukoliko je taj grad u nizu
|
...prevStatus,
|
||||||
|
[e.target.name]: checked
|
||||||
const dodajGrad = (e) => {
|
}))
|
||||||
console.log("dodajem", e.target.name);
|
|
||||||
if (!data.Lokacija.gradovi[`${e.target.name}`]) {
|
|
||||||
setData((prevData) => ({
|
|
||||||
...prevData,
|
|
||||||
Lokacija: {
|
|
||||||
...prevData.Lokacija,
|
|
||||||
gradovi: [...prevData.Lokacija.gradovi, e.target.name],
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
const obrisiGrad = (e) => {
|
|
||||||
console.log("brisem", e.target.name);
|
|
||||||
setData((prevData) => ({
|
|
||||||
...prevData,
|
|
||||||
Lokacija: {
|
|
||||||
...prevData.Lokacija,
|
|
||||||
gradovi: [
|
|
||||||
...prevData.Lokacija.gradovi.splice(
|
|
||||||
data.Lokacija.gradovi.indexOf(e.target.name),
|
|
||||||
1
|
|
||||||
),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
const clickHandler = (e) => {
|
return (
|
||||||
if (checked) {
|
<div className="checkbox">
|
||||||
return obrisiGrad(e);
|
<label className="checkbox-title" htmlFor={props.title}>{props.title}</label>
|
||||||
}
|
<input className="check-box" type="checkbox" name={props.title} id={props.title} onChange={(e)=> {
|
||||||
dodajGrad(e);
|
setChecked(!checked)
|
||||||
};
|
changeHandler(e)
|
||||||
|
}}/>
|
||||||
// const isChecked = () => {
|
</div>
|
||||||
// if(data.Lokacija.gradovi[0]){
|
)
|
||||||
// console.log("true")
|
}
|
||||||
// return true
|
|
||||||
// } return false
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const checkHandler = (item) => {
|
|
||||||
// data.Lokacija.gradovi.map( grad => {
|
|
||||||
// if(grad === item){
|
|
||||||
// return false
|
|
||||||
// } return true
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
// popraviti bug koji ima (checkboxi koji su oznaceni,
|
|
||||||
// nakon ponovnog prikaza komponente se ne prikazuju)
|
|
||||||
// nakon promjene kantona gradovi ostaju
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='checkbox'>
|
|
||||||
<label className='checkbox-title' htmlFor={props.title}>
|
|
||||||
{props.title}
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
className='check-box'
|
|
||||||
checked={checked}
|
|
||||||
type='checkbox'
|
|
||||||
name={props.title}
|
|
||||||
id={props.title}
|
|
||||||
onChange={(e) => {
|
|
||||||
clickHandler(e);
|
|
||||||
setChecked(!checked);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default LocationCheckbox;
|
export default LocationCheckbox;
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filters-content{
|
.filters-content{
|
||||||
@@ -36,9 +36,11 @@
|
|||||||
padding: 2em 5em;
|
padding: 2em 5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.checkbox-content{
|
|
||||||
|
|
||||||
|
/* .checkbox-content{
|
||||||
width: ;
|
width: ;
|
||||||
}
|
} */
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,109 +1,64 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Link } from "react-router-dom";
|
import {Link} from 'react-router-dom';
|
||||||
import "./Filters.css";
|
import "./Filters.css";
|
||||||
import Filter from "./Filter/Filter";
|
import Filter from "./Filter/Filter";
|
||||||
import DoubleFilter from "./Filter/DoubleFilter";
|
import DoubleFilter from "./Filter/DoubleFilter";
|
||||||
import TitleBtn from "../Button/TitleBtn";
|
import TitleBtn from "../Button/TitleBtn";
|
||||||
import Cars from "../../data/cars-brands";
|
import vehicleService from "../../services/vehicle-service";
|
||||||
import Trucks from "../../data/trucks-brands";
|
|
||||||
import Motors from "../../data/motors-brands";
|
|
||||||
import Cubes from "../../data/cubes";
|
|
||||||
import Type from "../../data/type";
|
|
||||||
import Fuel from "../../data/fuel";
|
|
||||||
import Transmission from "../../data/transmission";
|
|
||||||
import Condition from "../../data/condition";
|
|
||||||
import Year from "../../data/year";
|
|
||||||
import Price from "../../data/price";
|
|
||||||
import HorsePower from "../../data/horsepower";
|
|
||||||
import Kilowats from "../../data/kilowats";
|
|
||||||
import Kilometers from "../../data/kilometers";
|
|
||||||
import Color from "../../data/color";
|
|
||||||
import AirCondition from "../../data/air-condition";
|
|
||||||
import Drive from "../../data/drive";
|
|
||||||
import Doors from "../../data/doors";
|
|
||||||
import Sensors from "../../data/sensors";
|
|
||||||
import Gearbox from "../../data/gearbox";
|
|
||||||
|
|
||||||
const StandardFilters = (props) => {
|
const StandardFilters = (props) => {
|
||||||
const { data, setData } = props.data.data;
|
|
||||||
const [brandIndex, setBrandIndex] = useState(0);
|
|
||||||
const [model, showModel] = useState(true);
|
|
||||||
let index = 0;
|
|
||||||
let brands;
|
|
||||||
|
|
||||||
// if(data.Category.Vozilo === "Auto"){
|
const {data, filters, setFilters} = props.data;
|
||||||
// showModel(true)
|
const [brandIndex, setBrandIndex] = useState(0);
|
||||||
// return
|
let index = 0;
|
||||||
// })
|
let details, marke;
|
||||||
|
|
||||||
// }else if(data.Category.Vozilo === "Motor"){
|
details = vehicleService(data.Category.Vozilo);
|
||||||
// showModel(false)
|
const {show, brands, data1, data2, data3} = details;
|
||||||
// return brands = Motors.map(brand => {
|
|
||||||
// return brand.brand
|
|
||||||
// })
|
|
||||||
// }else if(data.Category.Vozilo === "Teretno vozilo"){
|
|
||||||
// return brands = Trucks.map(brand => {
|
|
||||||
// return brand.brand
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
brands = Cars.map((brand) => {
|
const [model, setModel] = useState(show);
|
||||||
return brand.brand;
|
|
||||||
});
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
// console.log(data, setData)
|
|
||||||
if (data.Filteri.Brend !== "")
|
|
||||||
setBrandIndex(brands.indexOf(data.Filteri.Brend));
|
|
||||||
}, [data]);
|
|
||||||
|
|
||||||
const models = Cars[brandIndex].models;
|
useEffect(() => {
|
||||||
|
if(filters.Marka)setBrandIndex(marke.indexOf(filters.Marka))
|
||||||
|
}, [filters])
|
||||||
|
|
||||||
const Brands = {
|
|
||||||
ime: "Marka",
|
|
||||||
VName: "Brend",
|
|
||||||
tipovi: brands,
|
|
||||||
};
|
|
||||||
|
|
||||||
const Models = {
|
marke = brands.map(marka => {return marka.brand})
|
||||||
ime: "Model",
|
|
||||||
VName: "Model",
|
|
||||||
tipovi: models,
|
|
||||||
};
|
|
||||||
|
|
||||||
const data2 = [Price, Year, Kilometers, Cubes, HorsePower, Kilowats];
|
return(
|
||||||
const data1 = [Type, Condition, Transmission, Fuel, Drive, Doors, Color, AirCondition, Gearbox, Sensors];
|
<div className="filters-container">
|
||||||
|
<Filter ime={"Marka"} tipovi={marke} data={{data, filters, setFilters}}/>
|
||||||
|
{model ? (<Filter ime={"Model"} tipovi={brands[brandIndex].models} data={{data, filters, setFilters}}/>): null}
|
||||||
|
|
||||||
return (
|
{data1.map(item => {
|
||||||
<div className='filters-container'>
|
index += 1;
|
||||||
<Filter item={Brands} data={{ data, setData }} />
|
return(
|
||||||
{model && <Filter item={Models} data={{ data, setData }} />}
|
<Filter key={index} ime={item.ime} tipovi={item.tipovi} data={{data, filters, setFilters}}/>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
|
||||||
{data1.map((item) => {
|
{data2.map(item => {
|
||||||
index += 1;
|
index += 1;
|
||||||
return <Filter key={index} item={item} data={{ data, setData }} />;
|
return(
|
||||||
})}
|
<DoubleFilter key={index} title={item.title} fields={item.fields} data={{data, filters, setFilters}}/>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
|
||||||
{data2.map((item) => {
|
{data3.map(item => {
|
||||||
index += 1;
|
index += 1;
|
||||||
return (
|
return(
|
||||||
<DoubleFilter
|
<Filter key={index} ime={item.ime} tipovi={item.tipovi} data={{data, filters, setFilters}}/>
|
||||||
key={index}
|
)
|
||||||
item={item}
|
})}
|
||||||
title={item.title}
|
|
||||||
fields={item.fields}
|
|
||||||
data={{ data, setData }}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
|
|
||||||
<div style={{ marginTop: 50 }}>
|
<div style={{marginTop: 50}}>
|
||||||
<Link to='/location'>
|
<Link to="/location">
|
||||||
<TitleBtn title='Dalje' />
|
<TitleBtn title="Dalje" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
)
|
||||||
};
|
}
|
||||||
|
|
||||||
export default StandardFilters;
|
export default StandardFilters
|
||||||
@@ -1,54 +1,55 @@
|
|||||||
* {
|
*{
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* color:#02adba */
|
/* color:#02adba */
|
||||||
|
|
||||||
.links-container ul li {
|
.links-container ul li {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
border-bottom: 3px solid #02adba;
|
border-bottom: 3px solid #02adba;
|
||||||
}
|
}
|
||||||
|
|
||||||
.links-container {
|
.links-container{
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filters-links {
|
.filters-links{
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filters-link {
|
.filters-link{
|
||||||
padding: 0.5em 2.5em;
|
padding: 0.5em 2.5em;
|
||||||
white-space: none;
|
white-space: none;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 541px) {
|
@media only screen and (min-width: 541px){
|
||||||
.filters-link {
|
.filters-link {
|
||||||
line-height: 54px;
|
line-height: 54px;
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 921px) {
|
@media only screen and (min-width: 921px){
|
||||||
.filters-link {
|
.filters-link {
|
||||||
line-height: 54px;
|
line-height: 54px;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
|
||||||
|
|
||||||
.filters-links {
|
}
|
||||||
width: 90%;
|
|
||||||
margin: auto;
|
.filters-links {
|
||||||
}
|
width: 90%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,23 +4,20 @@ import Location from "../../data/location";
|
|||||||
|
|
||||||
const LocationFilter = (props) => {
|
const LocationFilter = (props) => {
|
||||||
|
|
||||||
const {data, setData} = props.data;
|
const {setLocationData} = props.data;
|
||||||
|
|
||||||
const clickHandler = (e) => {
|
const clickHandler = (e) => {
|
||||||
setData( prevData => ({
|
setLocationData( prevData => ( {
|
||||||
...prevData,
|
...prevData,
|
||||||
Lokacija: {
|
|
||||||
...prevData.Lokacija,
|
|
||||||
"kanton": e.target.value
|
"kanton": e.target.value
|
||||||
}
|
}))
|
||||||
}))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="locationFilter-div">
|
<div className="locationFilter-div">
|
||||||
<label className="location-title" htmlFor={Location.ime}>Izaberite lokaciju:</label>
|
<label className="location-title" htmlFor={Location.ime}>Izaberite lokaciju:</label>
|
||||||
<select name={Location.ime} value={data.Lokacija.kanton} id={Location.ime} onChange={(e) => clickHandler(e) }>
|
<select name={Location.ime} id={Location.ime} onChange={(e) => clickHandler(e) }>
|
||||||
<option value="Svi">Svi</option>
|
<option value="Svi">Svi</option>
|
||||||
<optgroup label={Location.entiteti[0].entitet}>
|
<optgroup label={Location.entiteti[0].entitet}>
|
||||||
{Location.entiteti[0].kantoni.map((kanton, i) => {
|
{Location.entiteti[0].kantoni.map((kanton, i) => {
|
||||||
|
|||||||
@@ -1,142 +1,37 @@
|
|||||||
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
|
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
|
||||||
import "./css/App.css";
|
import './css/App.css';
|
||||||
import { React, useEffect, useState } from "react";
|
import { React, useEffect, useState } from 'react';
|
||||||
import CategoryPage from "./CategoryPage";
|
import CategoryPage from './CategoryPage';
|
||||||
import LandingPage from "./LandingPage";
|
import LandingPage from './LandingPage';
|
||||||
import FiltersPage from "./FiltersPage";
|
import FiltersPage from './FiltersPage';
|
||||||
import LocationPage from "./LocationPage";
|
import LocationPage from './LocationPage';
|
||||||
import EmailPage from "./EmailPage";
|
import EmailPage from './EmailPage';
|
||||||
import CongratsPage from "./CongratsPage";
|
import CongratsPage from './CongratsPage';
|
||||||
import LinkR from "../data/routes";
|
import LinkR from '../data/routes';
|
||||||
|
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
|
|
||||||
// const info = 'Dobrodosli na stranicu kivi!'
|
// const info = 'Dobrodosli na stranicu kivi!'
|
||||||
const [data, setData] = useState({
|
const [data, setData] = useState({})
|
||||||
Kategorija: "",
|
|
||||||
Email: "",
|
|
||||||
NapredniFilteri: false,
|
|
||||||
Filteri: {
|
|
||||||
Brend: "",
|
|
||||||
Model: "",
|
|
||||||
ABS: false,
|
|
||||||
Airbag: false,
|
|
||||||
Alarm: false,
|
|
||||||
AutoKuka: false,
|
|
||||||
CentralnaBrava: false,
|
|
||||||
DaljinskoZakljucavanje: false,
|
|
||||||
ESP: false,
|
|
||||||
ElektricniPodizaciStakala: false,
|
|
||||||
ElektricniRetrovizori: false,
|
|
||||||
GrijanjeSjedista: false,
|
|
||||||
HladjenjeSjedista: false,
|
|
||||||
ISOFIX: false,
|
|
||||||
KomandeNaVolanu: false,
|
|
||||||
Koza: false,
|
|
||||||
LED: false,
|
|
||||||
Laser: false,
|
|
||||||
Xenon: false,
|
|
||||||
MasaznaSjedista: false,
|
|
||||||
MemorijaSjedista: false,
|
|
||||||
Metalik: false,
|
|
||||||
NaslonZaRuku: false,
|
|
||||||
Navigacija: false,
|
|
||||||
ParkingAssistent: false,
|
|
||||||
Panorama: false,
|
|
||||||
PosjedujeKlimu: false,
|
|
||||||
Registrovan: false,
|
|
||||||
SenzorMrtvogUgla: false,
|
|
||||||
ServisnaKnjiga: false,
|
|
||||||
ServoVolan: false,
|
|
||||||
Siber: false,
|
|
||||||
StartStop: false,
|
|
||||||
Tempomat: false,
|
|
||||||
Turbo: false,
|
|
||||||
RoloZavjese: false,
|
|
||||||
DPFFAP: false,
|
|
||||||
Stanje: "",
|
|
||||||
Gorivo: "",
|
|
||||||
BrojVrata: "",
|
|
||||||
TipVozila: "",
|
|
||||||
Pogon: "",
|
|
||||||
EmisioniStandard: "",
|
|
||||||
VelicinaFelgi: "",
|
|
||||||
Transmisija: "",
|
|
||||||
BrojStepenihPrijenosa: "",
|
|
||||||
Boja: "",
|
|
||||||
TipKlime: "",
|
|
||||||
ParkingSenzori: "",
|
|
||||||
Cijena: {
|
|
||||||
Od: "",
|
|
||||||
Do: "",
|
|
||||||
},
|
|
||||||
Godiste: {
|
|
||||||
Od: "",
|
|
||||||
Do: "",
|
|
||||||
},
|
|
||||||
Kilometraza: {
|
|
||||||
Od: "",
|
|
||||||
Do: "",
|
|
||||||
},
|
|
||||||
Kilovata: {
|
|
||||||
Od: "",
|
|
||||||
Do: "",
|
|
||||||
},
|
|
||||||
KonjskihSnaga: {
|
|
||||||
Od: "",
|
|
||||||
Do: "",
|
|
||||||
},
|
|
||||||
Kubikaza: {
|
|
||||||
Od: "",
|
|
||||||
Do: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Lokacija: {
|
|
||||||
entitet: "Svi",
|
|
||||||
kanton: "Svi",
|
|
||||||
gradovi: [],
|
|
||||||
},
|
|
||||||
Slanje: "Odmah",
|
|
||||||
});
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log(data);
|
console.log(data)
|
||||||
}, [data]);
|
}, [data])
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='App'>
|
<div className="App">
|
||||||
<Router>
|
<Router>
|
||||||
<Routes>
|
<Routes>
|
||||||
|
|
||||||
<Route path='/' element={<LandingPage />} />
|
<Route path='/' element={<LandingPage />} />
|
||||||
<Route
|
<Route path='category' element={<CategoryPage data={{data, setData}} routes={LinkR.category} />}/>
|
||||||
path='category'
|
<Route path='filters' element={<FiltersPage data={{data, setData}} routes={LinkR.filters}/>}/>
|
||||||
element={
|
<Route path='location' element={<LocationPage data={{data, setData}} routes={LinkR.location}/>}/>
|
||||||
<CategoryPage data={{ data, setData }} routes={LinkR.category} />
|
<Route path='email' element={<EmailPage data={{data, setData}} routes={LinkR.email} />}/>
|
||||||
}
|
<Route path='congrats' element={<CongratsPage data={{data, setData}} routes={LinkR.congrats} />}/>
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path='filters'
|
|
||||||
element={
|
|
||||||
<FiltersPage data={{ data, setData }} routes={LinkR.filters} />
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path='location'
|
|
||||||
element={
|
|
||||||
<LocationPage data={{ data, setData }} routes={LinkR.location} />
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path='email'
|
|
||||||
element={
|
|
||||||
<EmailPage data={{ data, setData }} routes={LinkR.email} />
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path='congrats'
|
|
||||||
element={
|
|
||||||
<CongratsPage data={{ data, setData }} routes={LinkR.congrats} />
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</Routes>
|
</Routes>
|
||||||
</Router>
|
</Router>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,19 +1,20 @@
|
|||||||
import Header from "../components/Header/Header";
|
import Header from '../components/Header/Header';
|
||||||
import ButtonsToolbar from "../components/ButtonsToolbar/ButtonsToolbar";
|
import ButtonsToolbar from '../components/ButtonsToolbar/ButtonsToolbar';
|
||||||
import CategoryBtns from "../components/CategoryBtns/categorybtns";
|
import CategoryBtns from '../components/CategoryBtns/categorybtns'
|
||||||
import "./css/CategoryPage.css";
|
import './css/CategoryPage.css'
|
||||||
|
|
||||||
function CategoryPage(props) {
|
function CategoryPage(props) {
|
||||||
const { data, setData } = props.data;
|
|
||||||
|
|
||||||
const naslov = "IZABERITE KATEGORIJU";
|
const {data, setData} = props.data
|
||||||
|
|
||||||
|
const naslov = 'IZABERITE KATEGORIJU'
|
||||||
return (
|
return (
|
||||||
<div className='category'>
|
<div className="category">
|
||||||
<Header header={naslov} />
|
<Header header={naslov}/>
|
||||||
<ButtonsToolbar routes={props.routes} />
|
<ButtonsToolbar routes={props.routes}/>
|
||||||
<div className='category-buttons'>
|
<div className='category-buttons'>
|
||||||
<CategoryBtns data={{ data, setData }} />
|
<CategoryBtns data={{data, setData}}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +1,31 @@
|
|||||||
import Header from "../components/Header/Header";
|
import Header from '../components/Header/Header';
|
||||||
import TitleBtn from "../components/Button/TitleBtn";
|
import TitleBtn from '../components/Button/TitleBtn';
|
||||||
import "./css/CongratsPage.css";
|
import './css/CongratsPage.css'
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
function CongratsPage() {
|
function CongratsPage() {
|
||||||
const naslov = "ČESTITAMO!";
|
|
||||||
const btnTitle = "NOVA PRETRAGA";
|
const naslov = 'ČESTITAMO!'
|
||||||
|
const btnTitle = 'NOVA PRETRAGA'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='congrats-page'>
|
<div className="congrats-page">
|
||||||
<Header header={naslov} />
|
<Header header={naslov}/>
|
||||||
<div className='paragh-div'>
|
<div className='paragh-div'>
|
||||||
<div className='first-paragh'>
|
<div className='first-paragh'>
|
||||||
<h2 className='h2'>
|
<h2 className='h2'>ČESTITAMO! Potvrđeni email je poslat na vašu email adresu.</h2>
|
||||||
ČESTITAMO! Potvrđeni email je poslat na vašu email adresu.
|
</div>
|
||||||
</h2>
|
<div className='second-paragh'>
|
||||||
</div>
|
<h2 className='h2'>Svi rezultati će u najkraćem roku biti poslani na vašu adresu.</h2>
|
||||||
<div className='second-paragh'>
|
</div>
|
||||||
<h2 className='h2'>
|
<div className='third-paragh'>
|
||||||
Svi rezultati će u najkraćem roku biti poslani na vašu adresu.
|
<h1 className='h1'>Ako želite novu pretragu idete na</h1>
|
||||||
</h2>
|
</div>
|
||||||
</div>
|
|
||||||
<div className='third-paragh'>
|
<Link to='/'>
|
||||||
<h1 className='h1'>Ako želite novu pretragu idete na</h1>
|
<TitleBtn title={btnTitle}/>
|
||||||
</div>
|
</Link>
|
||||||
|
|
||||||
<Link to='/'>
|
|
||||||
<TitleBtn title={btnTitle} />
|
|
||||||
</Link>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,107 +1,96 @@
|
|||||||
import { useState, useEffect } from "react";
|
import { useState, useEffect} from 'react';
|
||||||
import "./css/EmailPage.css";
|
import './css/EmailPage.css'
|
||||||
import Header from "../components/Header/Header";
|
import Header from '../components/Header/Header';
|
||||||
import ButtonsToolbar from "../components/ButtonsToolbar/ButtonsToolbar";
|
import ButtonsToolbar from '../components/ButtonsToolbar/ButtonsToolbar';
|
||||||
import TimeBtn from "../components/Button/TimeBtn";
|
import StandardBtn from '../components/Button/StandardBtn';
|
||||||
import TitleBtn from "../components/Button/TitleBtn";
|
import TitleBtn from '../components/Button/TitleBtn';
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from 'react-router-dom';
|
||||||
import postData from "../services/search-post-service";
|
|
||||||
|
|
||||||
function EmailPage(props) {
|
function EmailPage(props) {
|
||||||
const { data, setData } = props.data;
|
|
||||||
const [error, setError] = useState(false);
|
|
||||||
const [toggleButtons, setToggle] = useState(true);
|
|
||||||
|
|
||||||
const [state, setState] = useState({
|
const {data, setData} = props.data
|
||||||
email: "",
|
const [error, setError] = useState(false)
|
||||||
confirmEmail: "",
|
|
||||||
});
|
|
||||||
|
|
||||||
const header = "SLANJE OBAVJEŠTENJA";
|
|
||||||
let title1 = "Odmah";
|
|
||||||
let title2 = "Dnevno";
|
|
||||||
let title3 = "ZAVRŠI";
|
|
||||||
let errmsg = "Email does not match!";
|
|
||||||
let filter = "Slanje";
|
|
||||||
|
|
||||||
const emailCheck = (e, ec) => {
|
const [state, setState] = useState({
|
||||||
if (e !== "" && e === ec) {
|
email: "",
|
||||||
setError(false);
|
confirmEmail: ""
|
||||||
setData((prevData) => ({
|
})
|
||||||
...prevData,
|
|
||||||
Email: state.email,
|
const header = "SLANJE OBAVJEŠTENJA";
|
||||||
}));
|
let title1 = 'Odmah';
|
||||||
return error;
|
let title2 = 'Dnevno';
|
||||||
} else {
|
let title3 = 'ZAVRŠI';
|
||||||
setError(true);
|
let errmsg = 'Email does not match!';
|
||||||
return error;
|
let filter = 'Slanje'
|
||||||
|
|
||||||
|
|
||||||
|
const emailCheck = (e, ec) => {
|
||||||
|
if(e !== "" && e === ec){
|
||||||
|
setError(false)
|
||||||
|
setData(prevData => ({
|
||||||
|
...prevData,
|
||||||
|
"Email": state.email
|
||||||
|
}))
|
||||||
|
return error
|
||||||
|
}else {
|
||||||
|
setError(true)
|
||||||
|
return error
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
const updateInput = (event) => {
|
const updateInput = (event) => {
|
||||||
setState((prevState) => ({
|
setState(prevState => ({
|
||||||
...prevState,
|
...prevState,
|
||||||
[event.target.name]: event.target.value,
|
[event.target.name]: event.target.value
|
||||||
}));
|
}))
|
||||||
};
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
emailCheck(state.email, state.confirmEmail);
|
emailCheck(state.email, state.confirmEmail)
|
||||||
}, [state]);
|
}, [state])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Header header={header} />
|
<Header header={header}/>
|
||||||
<ButtonsToolbar routes={props.routes} />
|
<ButtonsToolbar routes={props.routes}/>
|
||||||
<div className='info'>
|
<div className="info">
|
||||||
<h2 className='h2'>Slanje obavještenja</h2>
|
<h2 className='h2'>Slanje obavještenja</h2>
|
||||||
</div>
|
</div>
|
||||||
<div className='buttons-container'>
|
<div className='buttons-container'>
|
||||||
<TimeBtn data={{ data, setData, filter }} title={title1} />
|
<StandardBtn data={{data, setData, filter}} title={title1}/>
|
||||||
<TimeBtn data={{ data, setData, filter }} title={title2} />
|
<StandardBtn data={{data, setData, filter}} title={title2}/>
|
||||||
</div>
|
</div>
|
||||||
<div className='form'>
|
<div className='form'>
|
||||||
<form method='POST' id='form-email'>
|
<form method="POST" id="form-email">
|
||||||
<div className='email-div'>
|
<div className='email-div'>
|
||||||
<input
|
<input type="email" id="email" name='email' placeholder='vas.email@mail.com' required size='250' onChange={updateInput} />
|
||||||
type='email'
|
<input type="email" id="confirmEmail" name='confirmEmail' placeholder='potvrdite.email@mail.com' required size='250' onChange={updateInput} />
|
||||||
id='email'
|
<p style={{color: "red"}} >{error ? errmsg : null}</p>
|
||||||
name='email'
|
</div>
|
||||||
placeholder='vas.email@mail.com'
|
|
||||||
required
|
</form>
|
||||||
size='250'
|
</div>
|
||||||
onChange={updateInput}
|
<div>
|
||||||
/>
|
<h3 className='h3-2'>*U svakom trenutku možete prekinuti slanje objava kroz
|
||||||
<input
|
link u vašem emailu
|
||||||
type='email'
|
</h3>
|
||||||
id='confirmEmail'
|
</div>
|
||||||
name='confirmEmail'
|
<div>
|
||||||
placeholder='potvrdite.email@mail.com'
|
{error ? (<TitleBtn title={title3} /> ) : (
|
||||||
required
|
<Link to="/congrats">
|
||||||
size='250'
|
<TitleBtn title={title3} />
|
||||||
onChange={updateInput}
|
</Link>
|
||||||
/>
|
)}
|
||||||
<p style={{ color: "red" }}>{error ? errmsg : null}</p>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 className='h3-2'>
|
|
||||||
*U svakom trenutku možete prekinuti slanje objava kroz link u vašem
|
|
||||||
emailu
|
);
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{error ? (
|
|
||||||
<TitleBtn title={title3} />
|
|
||||||
) : (
|
|
||||||
<Link to='/congrats' onClick={() => postData(data)}>
|
|
||||||
<TitleBtn title={title3} />
|
|
||||||
</Link>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default EmailPage;
|
export default EmailPage;
|
||||||
@@ -6,22 +6,32 @@ import FiltersNav from '../components/FiltersNavbar/FiltersNav';
|
|||||||
import StandardFilters from "../components/Filters/Standard-filters";
|
import StandardFilters from "../components/Filters/Standard-filters";
|
||||||
import AdvancedFilters from "../components/Filters/Advanced-filters";
|
import AdvancedFilters from "../components/Filters/Advanced-filters";
|
||||||
|
|
||||||
const FiltersPage = ({routes, data, setData}) => {
|
const FiltersPage = (props) => {
|
||||||
|
|
||||||
const naslov = "Filteri za pretrazivanje"
|
const naslov = "Filteri za pretrazivanje"
|
||||||
const [toggle, setToggle] = useState(true)
|
const [toggle, setToggle] = useState(true)
|
||||||
|
const [filters, setFilters] = useState({});
|
||||||
|
const {data, setData} = props.data
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setData( prevData => ({
|
||||||
|
...prevData,
|
||||||
|
"Filters": filters
|
||||||
|
}))
|
||||||
|
}, [filters])
|
||||||
|
|
||||||
const showFilters = (toggle) => {
|
const showFilters = (toggle) => {
|
||||||
if(toggle){
|
if(toggle){
|
||||||
return <StandardFilters data={{data, setData}}/>
|
return <StandardFilters data={{data, filters, setFilters}}/>
|
||||||
}
|
}
|
||||||
return <AdvancedFilters data={{data, setData}}/>;
|
return <AdvancedFilters data={{data, filters, setFilters}}/>;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(
|
return(
|
||||||
<div className="FiltersPage">
|
<div className="FiltersPage">
|
||||||
<Header header={naslov}/>
|
<Header header={naslov}/>
|
||||||
<ButtonsToolbar routes={routes}/>
|
<ButtonsToolbar routes={props.routes}/>
|
||||||
<FiltersNav toggle={{toggle, setToggle}}/>
|
<FiltersNav toggle={{toggle, setToggle}}/>
|
||||||
{showFilters(toggle)}
|
{showFilters(toggle)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,71 +1,87 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from 'react';
|
||||||
import "./css/LocationPage.css";
|
import './css/LocationPage.css';
|
||||||
import Header from "../components/Header/Header";
|
import Header from "../components/Header/Header";
|
||||||
import Location from "../data/location";
|
import Location from '../data/location';
|
||||||
import LocationFilter from "../components/Location/LocationFilter";
|
import LocationFilter from '../components/Location/LocationFilter';
|
||||||
import ButtonsToolbar from "../components/ButtonsToolbar/ButtonsToolbar";
|
import ButtonsToolbar from '../components/ButtonsToolbar/ButtonsToolbar';
|
||||||
import LocationCheckbox from "../components/Filters/Filter/LocationCheckbox";
|
import LocationCheckbox from '../components/Filters/Filter/LocationCheckbox';
|
||||||
import TitleBtn from "../components/Button/TitleBtn";
|
import TitleBtn from '../components/Button/TitleBtn';
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
const LocationPage = (props) => {
|
const LocationPage = (props) => {
|
||||||
const { data, setData } = props.data;
|
|
||||||
const [gradovi, setGradovi] = useState([]);
|
|
||||||
const naslov = "Dodajte lokaciju";
|
|
||||||
|
|
||||||
let id = 0;
|
const {data, setData} = props.data
|
||||||
|
const [locationData, setLocationData] = useState({})
|
||||||
|
const [locationInfo, setLocationInfo] = useState({"gradovi": []})
|
||||||
|
const [checkboxStatus, setCheckboxStatus] = useState({})
|
||||||
|
const [location, setLocation] = useState({});
|
||||||
|
const naslov = "Dodajte lokaciju"
|
||||||
|
|
||||||
useEffect(() => {
|
let id = 0;
|
||||||
if (data.Lokacija.kanton) {
|
|
||||||
Location.entiteti.map((entity) => {
|
|
||||||
return entity.kantoni.map((kantony) => {
|
|
||||||
if (data.Lokacija.kanton === "Distrikt Brčko") {
|
|
||||||
setGradovi([]);
|
|
||||||
return setData((prevData) => ({
|
|
||||||
...prevData,
|
|
||||||
Lokacija: {
|
|
||||||
...prevData.Lokacija,
|
|
||||||
entitet: entity.entitet,
|
|
||||||
gradovi: ["Brčko"],
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
} else if (data.Lokacija.kanton === kantony.kanton) {
|
|
||||||
setGradovi(kantony.gradovi);
|
|
||||||
return setData((prevData) => ({
|
|
||||||
...prevData,
|
|
||||||
Lokacija: {
|
|
||||||
...prevData.Lokacija,
|
|
||||||
entitet: entity.entitet,
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, [data.Lokacija.kanton]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("parent object", gradovi);
|
if(locationData.kanton){
|
||||||
}, [data.Lokacija.gradovi]);
|
Location.entiteti.map(entity => {
|
||||||
|
return entity.kantoni.map(kantony => {
|
||||||
|
if(locationData.kanton === kantony.kanton){
|
||||||
|
return setLocationInfo({
|
||||||
|
"entitet": entity.entitet,
|
||||||
|
"kanton": kantony.kanton,
|
||||||
|
"gradovi": kantony.gradovi
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}setCheckboxStatus({})
|
||||||
|
console.log("locationInfo", locationInfo)
|
||||||
|
}, [locationData])
|
||||||
|
|
||||||
return (
|
useEffect(() => {
|
||||||
<div className='location-div'>
|
if(locationData.kanton === 'Distrikt Brcko'){
|
||||||
<Header header={naslov} />
|
setLocation(
|
||||||
<ButtonsToolbar routes={props.routes} />
|
{
|
||||||
<LocationFilter data={{ data, setData }} />
|
"entitet": "Distrikt Brcko",
|
||||||
<div className='checkbox-div'>
|
"kanton": "Distrikt Brcko",
|
||||||
{gradovi.map((grad) => {
|
"gradovi": "Brcko"
|
||||||
id += 1;
|
}
|
||||||
return (
|
)
|
||||||
<LocationCheckbox key={id} title={grad} data={{ data, setData }} />
|
}else{
|
||||||
);
|
setLocation( prevData => ({
|
||||||
})}
|
...prevData,
|
||||||
</div>
|
"entitet": locationInfo.entitet,
|
||||||
<Link to='/email'>
|
"kanton": locationInfo.kanton,
|
||||||
<TitleBtn title='Naredna stranica' />
|
"gradovi": checkboxStatus
|
||||||
</Link>
|
}))}
|
||||||
</div>
|
console.log("location", location)
|
||||||
);
|
}, [checkboxStatus])
|
||||||
};
|
|
||||||
|
|
||||||
export default LocationPage;
|
useEffect(() => {
|
||||||
|
setData( prevData => ({
|
||||||
|
...prevData,
|
||||||
|
"Location": location
|
||||||
|
}))
|
||||||
|
console.log("data", data)
|
||||||
|
}, [location])
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='location-div'>
|
||||||
|
<Header header={naslov}/>
|
||||||
|
<ButtonsToolbar routes={props.routes}/>
|
||||||
|
<LocationFilter data={{setLocationData}}/>
|
||||||
|
<div className='checkbox-div'>
|
||||||
|
{locationInfo.gradovi.map((grad) => {
|
||||||
|
id += 1
|
||||||
|
return(
|
||||||
|
<LocationCheckbox key={id} title={grad} data={{checkboxStatus, setCheckboxStatus}}/>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
<Link to="/email">
|
||||||
|
<TitleBtn title="Naredna stranica"/>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default LocationPage
|
||||||
@@ -15,6 +15,5 @@
|
|||||||
.checkbox-div{
|
.checkbox-div{
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
margin-bottom: 50px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
const AirCondition = {
|
const AirCondition = {
|
||||||
"ime" : "Klima",
|
"ime" : "Klima",
|
||||||
"VName": "TipKlime",
|
|
||||||
"tipovi" : [
|
"tipovi" : [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Jednozonska",
|
"Jednozonska",
|
||||||
|
|||||||
@@ -1,179 +1,38 @@
|
|||||||
const CheckBox = [
|
const CheckBox = [
|
||||||
{
|
"ABS",
|
||||||
title: "ABS",
|
"ESP",
|
||||||
value: false,
|
"Tempomat",
|
||||||
variable: "ABS",
|
"Alarm",
|
||||||
},
|
"Airbag",
|
||||||
{
|
"Šiber",
|
||||||
title: "ESP",
|
"Servo volan",
|
||||||
value: false,
|
"Koža",
|
||||||
variable: "ESP",
|
"Klima",
|
||||||
},
|
"Centralna brava",
|
||||||
{
|
"Daljinsko zaključavanje",
|
||||||
title: "Alarm",
|
"ISOFIX",
|
||||||
value: false,
|
"Registrovan",
|
||||||
variable: "Alarm",
|
"Xenon",
|
||||||
},
|
"LED",
|
||||||
{
|
"Laser",
|
||||||
title: "Airbag",
|
"Električni podizači stakala",
|
||||||
value: false,
|
"Naslon za ruke",
|
||||||
variable: "Airbag",
|
"Električni retrovizor",
|
||||||
},
|
"Start/Stop",
|
||||||
{
|
"Turbo",
|
||||||
title: "Šiber",
|
"Stranac",
|
||||||
value: false,
|
"Pakring assistent",
|
||||||
variable: "Siber",
|
"Senzor mrtvog ugla",
|
||||||
},
|
"Servisna knjiga",
|
||||||
{
|
"Komande na volanu",
|
||||||
title: "Servo volan",
|
"Navigacija",
|
||||||
value: false,
|
"Grijanje sjedišta",
|
||||||
variable: "ServoVolan",
|
"Masažna sjedišta",
|
||||||
},
|
"Memorija sjedišta",
|
||||||
{
|
"Panorama",
|
||||||
title: "Koža",
|
"Ocarinjen",
|
||||||
value: false,
|
"Udaren",
|
||||||
variable: "Koza",
|
|
||||||
},
|
]
|
||||||
{
|
|
||||||
title: "Klima",
|
|
||||||
value: false,
|
|
||||||
variable: "PosjedujeKlimu",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Centralna brava",
|
|
||||||
value: false,
|
|
||||||
variable: "CentralnaBrava",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Daljinsko zaključavanje",
|
|
||||||
value: false,
|
|
||||||
variable: "DaljinskoZakljucavanje",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Kuka",
|
|
||||||
value: false,
|
|
||||||
variable: "AutoKuka",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "ISOFIX",
|
|
||||||
value: false,
|
|
||||||
variable: "ISOFIX",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Registrovan",
|
|
||||||
value: false,
|
|
||||||
variable: "Registrovan",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Xenon",
|
|
||||||
value: false,
|
|
||||||
variable: "Xenon",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "LED",
|
|
||||||
value: false,
|
|
||||||
variable: "LED",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Laser",
|
|
||||||
value: false,
|
|
||||||
variable: "Laser",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Električni podizači stakala",
|
|
||||||
value: false,
|
|
||||||
variable: "ElektricniPodizaciStakala",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Naslon za ruku",
|
|
||||||
value: false,
|
|
||||||
variable: "NaslonZaRuku",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Električni retrovizor",
|
|
||||||
value: false,
|
|
||||||
variable: "ElektricniRetrovizori",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Start/Stop",
|
|
||||||
value: false,
|
|
||||||
variable: "StartStop",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Tempomat",
|
|
||||||
value: false,
|
|
||||||
variable: "Tempomat",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Turbo",
|
|
||||||
value: false,
|
|
||||||
variable: "Turbo",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "DPF/FAP",
|
|
||||||
value: false,
|
|
||||||
variable: "DPFFAP",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Pakring assistent",
|
|
||||||
value: false,
|
|
||||||
variable: "ParkingAssistent",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Senzor mrtvog ugla",
|
|
||||||
value: false,
|
|
||||||
variable: "SenzorMrtvogUgla",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Servisna knjiga",
|
|
||||||
value: false,
|
|
||||||
variable: "ServisnaKnjiga",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Komande na volanu",
|
|
||||||
value: false,
|
|
||||||
variable: "KomandeNaVolanu",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Navigacija",
|
|
||||||
value: false,
|
|
||||||
variable: "Navigacija",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Grijanje sjedišta",
|
|
||||||
value: false,
|
|
||||||
variable: "GrijanjeSjedista",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Hlađenje sjedišta",
|
|
||||||
value: false,
|
|
||||||
variable: "HladjenjeSjedista",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Masažna sjedišta",
|
|
||||||
value: false,
|
|
||||||
variable: "MasaznaSjedista",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Memorija sjedišta",
|
|
||||||
value: false,
|
|
||||||
variable: "MemorijaSjedista",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Panorama",
|
|
||||||
value: false,
|
|
||||||
variable: "Panorama",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Rolo zavjese",
|
|
||||||
value: false,
|
|
||||||
variable: "RoloZavjese",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Metalik",
|
|
||||||
value: false,
|
|
||||||
variable: "Metalik",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default CheckBox;
|
export default CheckBox;
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
const Color = {
|
const Color = {
|
||||||
"ime": "Boja",
|
"ime": "Boja",
|
||||||
"VName": "Boja",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Bež",
|
"Bež",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Condition = {
|
const Condition = {
|
||||||
"ime": "Stanje",
|
"ime": "Stanje",
|
||||||
"VName": "Stanje",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Novo",
|
"Novo",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Cubes = {
|
const Cubes = {
|
||||||
"title": "Kubikaza",
|
"title": "Kubikaza",
|
||||||
"VName": "Kubikaza",
|
|
||||||
"fields": {
|
"fields": {
|
||||||
"min": 0.8,
|
"min": 0.8,
|
||||||
"max": 6.2,
|
"max": 6.2,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Doors = {
|
const Doors = {
|
||||||
"ime": "Broj vrata",
|
"ime": "Broj vrata",
|
||||||
"VName": "BrojVrata",
|
|
||||||
"tipovi" : [
|
"tipovi" : [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"2/3",
|
"2/3",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Drive = {
|
const Drive = {
|
||||||
"ime" : "Pogon",
|
"ime" : "Pogon",
|
||||||
"VName": "Pogon",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Prednji",
|
"Prednji",
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
const Fuel = {
|
const Fuel = {
|
||||||
"ime": "Gorivo",
|
"ime": "Gorivo",
|
||||||
"VName": "Gorivo",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Dizel",
|
"Dizel",
|
||||||
"Benzin",
|
"Benzin",
|
||||||
"Plin",
|
"Benzin/Plin",
|
||||||
"Cng",
|
"Cng",
|
||||||
"Hybrid",
|
"Hybrid",
|
||||||
"Elektro"
|
"Elektro"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Gearbox = {
|
const Gearbox = {
|
||||||
"ime": "Broj brzina",
|
"ime": "Broj brzina",
|
||||||
"VName": "BrojStepenihPrijenosa",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"3+R",
|
"3+R",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const HorsePower = {
|
const HorsePower = {
|
||||||
"title": "Konjskih snaga",
|
"title": "Konjskih snaga",
|
||||||
"VName": "KonjskihSnaga",
|
|
||||||
"fields": {
|
"fields": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 2000,
|
"max": 2000,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Kilometers = {
|
const Kilometers = {
|
||||||
"title": "Kilometraza",
|
"title": "Kilometraza",
|
||||||
"VName": "Kilometraza",
|
|
||||||
"fields": {
|
"fields": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 1000000,
|
"max": 1000000,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Kilowats = {
|
const Kilowats = {
|
||||||
"title": "Kilovata",
|
"title": "Kilovata",
|
||||||
"VName": "Kilovata",
|
|
||||||
"fields": {
|
"fields": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 1000,
|
"max": 1000,
|
||||||
|
|||||||
13
kivi-cars/src/data/lights.js
Normal file
13
kivi-cars/src/data/lights.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
const Lights = {
|
||||||
|
"ime": "Svjetla",
|
||||||
|
"tipovi": [
|
||||||
|
"Odaberite",
|
||||||
|
"Halogena",
|
||||||
|
"Xenon",
|
||||||
|
"Led",
|
||||||
|
"Laser",
|
||||||
|
"Ostalo"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Lights;
|
||||||
@@ -1,225 +1,231 @@
|
|||||||
const Location = {
|
const Location = {
|
||||||
ime: "Lokacija",
|
"ime": "Lokacija",
|
||||||
entiteti: [
|
"entiteti": [
|
||||||
{
|
{"entitet":"Federacija BiH",
|
||||||
entitet: "Federacija BiH",
|
"kantoni": [
|
||||||
kantoni: [
|
{"kanton": "Sarajevo",
|
||||||
{
|
"gradovi": [
|
||||||
kanton: "Sarajevo",
|
"Hadžići",
|
||||||
gradovi: [
|
"Ilidža",
|
||||||
"Hadžići",
|
"Ilijaš",
|
||||||
"Ilidža",
|
"Sarajevo - Centar",
|
||||||
"Ilijaš",
|
"Sarajevo-Novi Grad",
|
||||||
"Sarajevo-Centar",
|
"Sarajevo-Novo Sarajevo",
|
||||||
"Sarajevo-Novi Grad",
|
"Sarajevo-Stari Grad",
|
||||||
"Sarajevo-Novo Sarajevo",
|
"Trnovo",
|
||||||
"Sarajevo-Stari Grad",
|
"Vogošća"
|
||||||
"Trnovo",
|
]
|
||||||
"Vogošća",
|
},
|
||||||
],
|
{"kanton":"Unsko-sanski",
|
||||||
|
"gradovi": [
|
||||||
|
"Bihać",
|
||||||
|
"Bosanska Krupa",
|
||||||
|
"Bosanski Petrovac",
|
||||||
|
"Bužim",
|
||||||
|
"Cazin",
|
||||||
|
"Ključ",
|
||||||
|
"Sanski Most",
|
||||||
|
"Velika Kladuša"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton": "Posavski",
|
||||||
|
"gradovi": [
|
||||||
|
"Domaljevac",
|
||||||
|
"Odžak",
|
||||||
|
"Orašje",
|
||||||
|
"Šamac"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Tuzlanski",
|
||||||
|
"gradovi": [
|
||||||
|
"Banovići",
|
||||||
|
"Doboj-Istok",
|
||||||
|
"Gradačac",
|
||||||
|
"Gračanica",
|
||||||
|
"Kalesija",
|
||||||
|
"Kladanj",
|
||||||
|
"Lukavac",
|
||||||
|
"Sapna",
|
||||||
|
"Srebrenik",
|
||||||
|
"Teočak",
|
||||||
|
"Tuzla",
|
||||||
|
"Čelić",
|
||||||
|
"Živinice"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Zeničko-dobojski",
|
||||||
|
"gradovi": [
|
||||||
|
"Breza",
|
||||||
|
"Doboj-Jug",
|
||||||
|
"Kakanj",
|
||||||
|
"Maglaj",
|
||||||
|
"Olovo",
|
||||||
|
"Tešanj",
|
||||||
|
"Usora",
|
||||||
|
"Vareš",
|
||||||
|
"Visoko",
|
||||||
|
"Zavidovići",
|
||||||
|
"Zenica",
|
||||||
|
"Žepče"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Bosansko-podrinjski",
|
||||||
|
"gradovi": [
|
||||||
|
"Foča",
|
||||||
|
"Goražde",
|
||||||
|
"Pale"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Srednjobosanski",
|
||||||
|
"gradovi": [
|
||||||
|
"Bugojno",
|
||||||
|
"Busovača",
|
||||||
|
"Dobretići",
|
||||||
|
"Donji Vakuf",
|
||||||
|
"Fojnica",
|
||||||
|
"Gornji Vakuf - Uskoplje",
|
||||||
|
"Jajce",
|
||||||
|
"Kiseljak",
|
||||||
|
"Kreševo",
|
||||||
|
"Novi Travnik",
|
||||||
|
"Travnik",
|
||||||
|
"Vitez"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Hercegovačko-neretvanski",
|
||||||
|
"gradovi": [
|
||||||
|
"Grad Mostar",
|
||||||
|
"Jablanica",
|
||||||
|
"Konjic",
|
||||||
|
"Neum",
|
||||||
|
"Prozor",
|
||||||
|
"Ravno",
|
||||||
|
"Stolac",
|
||||||
|
"Čapljina",
|
||||||
|
"Čitluk"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Zapadno-hercegovački",
|
||||||
|
"gradovi": [
|
||||||
|
"Grude",
|
||||||
|
"Ljubuški",
|
||||||
|
"Posušje",
|
||||||
|
"Široki Brijeg"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Livanjski",
|
||||||
|
"gradovi": [
|
||||||
|
"Bosansko Grahovo",
|
||||||
|
"Drvar",
|
||||||
|
"Glamoč",
|
||||||
|
"Kupres",
|
||||||
|
"Livno",
|
||||||
|
"Tomislavgrad"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{"entitet":"Republika Srpska",
|
||||||
kanton: "Unsko-sanski",
|
"kantoni": [
|
||||||
gradovi: [
|
{"kanton":"Banjalučka",
|
||||||
"Bihać",
|
"gradovi": [
|
||||||
"Bosanska Krupa",
|
"Banja Luka",
|
||||||
"Bosanski Petrovac",
|
"Gradiška",
|
||||||
"Bužim",
|
"Istočni Drvar",
|
||||||
"Cazin",
|
"Jezero",
|
||||||
"Ključ",
|
"Kneževo",
|
||||||
"Sanski Most",
|
"Kostajnica",
|
||||||
"Velika Kladuša",
|
"Kotor Varoš",
|
||||||
],
|
"Kozarska Dubica",
|
||||||
|
"Krupa na uni",
|
||||||
|
"Kupres",
|
||||||
|
"Laktaši",
|
||||||
|
"Mrkonjić Grad",
|
||||||
|
"Novi Grad",
|
||||||
|
"Oštra Luka",
|
||||||
|
"Petrovac",
|
||||||
|
"Prijedor",
|
||||||
|
"Prnjavor",
|
||||||
|
"Ribnik",
|
||||||
|
"Srbac",
|
||||||
|
"Čelinac",
|
||||||
|
"Šipovo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Dobojsko-Bijeljinska",
|
||||||
|
"gradovi": [
|
||||||
|
"Bijeljina",
|
||||||
|
"Brod",
|
||||||
|
"Derventa",
|
||||||
|
"Doboj",
|
||||||
|
"Donji Žabar",
|
||||||
|
"Lopare",
|
||||||
|
"Lukavac",
|
||||||
|
"Modriča",
|
||||||
|
"Pelagićevo",
|
||||||
|
"Petrovo",
|
||||||
|
"Stanari",
|
||||||
|
"Teslić",
|
||||||
|
"Tešanj",
|
||||||
|
"Tuzla",
|
||||||
|
"Ugljevik",
|
||||||
|
"Vukosavlje",
|
||||||
|
"Šamac"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Sarajevsko-Zvornička",
|
||||||
|
"gradovi": [
|
||||||
|
"Bratunac",
|
||||||
|
"Han Pijesak",
|
||||||
|
"Ilijaš",
|
||||||
|
"Istočni Stari Grad",
|
||||||
|
"Kasindo",
|
||||||
|
"Kladanj",
|
||||||
|
"Lukavica",
|
||||||
|
"Milići",
|
||||||
|
"Olovo",
|
||||||
|
"Osmaci",
|
||||||
|
"Pale",
|
||||||
|
"Rogatica",
|
||||||
|
"Rudo",
|
||||||
|
"Sarajevo-Novi Grad",
|
||||||
|
"Sokolac",
|
||||||
|
"Srebrenica",
|
||||||
|
"Trnovo",
|
||||||
|
"Ustiprača",
|
||||||
|
"Višegrad",
|
||||||
|
"Vlasenica",
|
||||||
|
"Zvornik",
|
||||||
|
"Šekovići",
|
||||||
|
"Žepa"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"kanton":"Trebinjsko-Fočanska",
|
||||||
|
"gradovi": [
|
||||||
|
"Berkovići",
|
||||||
|
"Bileća",
|
||||||
|
"Foča",
|
||||||
|
"Gacko",
|
||||||
|
"Istočni Mostar",
|
||||||
|
"Kalinovik",
|
||||||
|
"Ljubinje",
|
||||||
|
"Nevesinje",
|
||||||
|
"Trebinje",
|
||||||
|
"Čajniče"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{"entitet":"Distrikt Brcko",
|
||||||
kanton: "Posavski",
|
"kantoni": [
|
||||||
gradovi: ["Domaljevac", "Odžak", "Orašje", "Šamac"],
|
{"kanton": "Distrikt Brcko",
|
||||||
},
|
"gradovi":[
|
||||||
{
|
|
||||||
kanton: "Tuzlanski",
|
]
|
||||||
gradovi: [
|
}
|
||||||
"Banovići",
|
]
|
||||||
"Doboj-Istok",
|
}
|
||||||
"Gradačac",
|
]
|
||||||
"Gračanica",
|
}
|
||||||
"Kalesija",
|
|
||||||
"Kladanj",
|
|
||||||
"Lukavac",
|
|
||||||
"Sapna",
|
|
||||||
"Srebrenik",
|
|
||||||
"Teočak",
|
|
||||||
"Tuzla",
|
|
||||||
"Čelić",
|
|
||||||
"Živinice",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Zeničko-dobojski",
|
|
||||||
gradovi: [
|
|
||||||
"Breza",
|
|
||||||
"Doboj-Jug",
|
|
||||||
"Kakanj",
|
|
||||||
"Maglaj",
|
|
||||||
"Olovo",
|
|
||||||
"Tešanj",
|
|
||||||
"Usora",
|
|
||||||
"Vareš",
|
|
||||||
"Visoko",
|
|
||||||
"Zavidovići",
|
|
||||||
"Zenica",
|
|
||||||
"Žepče",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ kanton: "Bosansko-podrinjski", gradovi: ["Foča", "Goražde", "Pale"] },
|
|
||||||
{
|
|
||||||
kanton: "Srednjobosanski",
|
|
||||||
gradovi: [
|
|
||||||
"Bugojno",
|
|
||||||
"Busovača",
|
|
||||||
"Dobretići",
|
|
||||||
"Donji Vakuf",
|
|
||||||
"Fojnica",
|
|
||||||
"Gornji Vakuf - Uskoplje",
|
|
||||||
"Jajce",
|
|
||||||
"Kiseljak",
|
|
||||||
"Kreševo",
|
|
||||||
"Novi Travnik",
|
|
||||||
"Travnik",
|
|
||||||
"Vitez",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Hercegovačko-neretvanski",
|
|
||||||
gradovi: [
|
|
||||||
"Grad Mostar",
|
|
||||||
"Jablanica",
|
|
||||||
"Konjic",
|
|
||||||
"Neum",
|
|
||||||
"Prozor",
|
|
||||||
"Ravno",
|
|
||||||
"Stolac",
|
|
||||||
"Čapljina",
|
|
||||||
"Čitluk",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Zapadno-hercegovački",
|
|
||||||
gradovi: ["Grude", "Ljubuški", "Posušje", "Široki Brijeg"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Livanjski",
|
|
||||||
gradovi: [
|
|
||||||
"Bosansko Grahovo",
|
|
||||||
"Drvar",
|
|
||||||
"Glamoč",
|
|
||||||
"Kupres",
|
|
||||||
"Livno",
|
|
||||||
"Tomislavgrad",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
entitet: "Republika Srpska",
|
|
||||||
kantoni: [
|
|
||||||
{
|
|
||||||
kanton: "Banjalučka",
|
|
||||||
gradovi: [
|
|
||||||
"Banja Luka",
|
|
||||||
"Gradiška",
|
|
||||||
"Istočni Drvar",
|
|
||||||
"Jezero",
|
|
||||||
"Kneževo",
|
|
||||||
"Kostajnica",
|
|
||||||
"Kotor Varoš",
|
|
||||||
"Kozarska Dubica",
|
|
||||||
"Krupa na uni",
|
|
||||||
"Kupres",
|
|
||||||
"Laktaši",
|
|
||||||
"Mrkonjić Grad",
|
|
||||||
"Novi Grad",
|
|
||||||
"Oštra Luka",
|
|
||||||
"Petrovac",
|
|
||||||
"Prijedor",
|
|
||||||
"Prnjavor",
|
|
||||||
"Ribnik",
|
|
||||||
"Srbac",
|
|
||||||
"Čelinac",
|
|
||||||
"Šipovo",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Dobojsko-Bijeljinska",
|
|
||||||
gradovi: [
|
|
||||||
"Bijeljina",
|
|
||||||
"Brod",
|
|
||||||
"Derventa",
|
|
||||||
"Doboj",
|
|
||||||
"Donji Žabar",
|
|
||||||
"Lopare",
|
|
||||||
"Lukavac",
|
|
||||||
"Modriča",
|
|
||||||
"Pelagićevo",
|
|
||||||
"Petrovo",
|
|
||||||
"Stanari",
|
|
||||||
"Teslić",
|
|
||||||
"Tešanj",
|
|
||||||
"Tuzla",
|
|
||||||
"Ugljevik",
|
|
||||||
"Vukosavlje",
|
|
||||||
"Šamac",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Sarajevsko-Zvornička",
|
|
||||||
gradovi: [
|
|
||||||
"Bratunac",
|
|
||||||
"Han Pijesak",
|
|
||||||
"Ilijaš",
|
|
||||||
"Istočni Stari Grad",
|
|
||||||
"Kasindo",
|
|
||||||
"Kladanj",
|
|
||||||
"Lukavica",
|
|
||||||
"Milići",
|
|
||||||
"Olovo",
|
|
||||||
"Osmaci",
|
|
||||||
"Pale",
|
|
||||||
"Rogatica",
|
|
||||||
"Rudo",
|
|
||||||
"Sarajevo-Novi Grad",
|
|
||||||
"Sokolac",
|
|
||||||
"Srebrenica",
|
|
||||||
"Trnovo",
|
|
||||||
"Ustiprača",
|
|
||||||
"Višegrad",
|
|
||||||
"Vlasenica",
|
|
||||||
"Zvornik",
|
|
||||||
"Šekovići",
|
|
||||||
"Žepa",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
kanton: "Trebinjsko-Fočanska",
|
|
||||||
gradovi: [
|
|
||||||
"Berkovići",
|
|
||||||
"Bileća",
|
|
||||||
"Foča",
|
|
||||||
"Gacko",
|
|
||||||
"Istočni Mostar",
|
|
||||||
"Kalinovik",
|
|
||||||
"Ljubinje",
|
|
||||||
"Nevesinje",
|
|
||||||
"Trebinje",
|
|
||||||
"Čajniče",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
entitet: "Distrikt Brčko",
|
|
||||||
kantoni: [{ kanton: "Distrikt Brčko", gradovi: ["Brčko"] }],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Location;
|
export default Location;
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
const Price = {
|
const Price = {
|
||||||
"title": "Cijena",
|
"title": "Cijena",
|
||||||
"VName": "Cijena",
|
|
||||||
"fields": {
|
"fields": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 1000000,
|
"max": 1000000,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Seats = {
|
const Seats = {
|
||||||
"ime": "Sjedišta",
|
"ime": "Sjedišta",
|
||||||
"VName": "BrojSjedista",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"1",
|
"1",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Sensors = {
|
const Sensors = {
|
||||||
"ime": "Senzori",
|
"ime": "Senzori",
|
||||||
"VName": "ParkingSenzori",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"naprijed",
|
"naprijed",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Transmission = {
|
const Transmission = {
|
||||||
"ime": "Transmisija",
|
"ime": "Transmisija",
|
||||||
"VName": "Transmisija",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Automatski mjenjač",
|
"Automatski mjenjač",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Type = {
|
const Type = {
|
||||||
"ime": "Vrsta vozila",
|
"ime": "Vrsta vozila",
|
||||||
"VName": "TipVozila",
|
|
||||||
"tipovi": [
|
"tipovi": [
|
||||||
"Odaberite",
|
"Odaberite",
|
||||||
"Karavan",
|
"Karavan",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const Year = {
|
const Year = {
|
||||||
"title": "Godiste",
|
"title": "Godiste",
|
||||||
"VName": "Godiste",
|
|
||||||
"fields": {
|
"fields": {
|
||||||
"min": 1960,
|
"min": 1960,
|
||||||
"max": new Date().getFullYear(),
|
"max": new Date().getFullYear(),
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
async function postData(data) {
|
|
||||||
// Default options are marked with *
|
|
||||||
const response = await fetch("http://localhost:8000/search/", {
|
|
||||||
method: "POST", // *GET, POST, PUT, DELETE, etc.
|
|
||||||
mode: "cors", // no-cors, *cors, same-origin
|
|
||||||
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
|
|
||||||
credentials: "same-origin", // include, *same-origin, omit
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
redirect: "follow",
|
|
||||||
referrerPolicy: "no-referrer",
|
|
||||||
body: JSON.stringify(data),
|
|
||||||
});
|
|
||||||
return console.log(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default postData;
|
|
||||||
50
kivi-cars/src/services/vehicle-service.js
Normal file
50
kivi-cars/src/services/vehicle-service.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import Cars from "../data/cars-brands";
|
||||||
|
import Trucks from "../data/trucks-brands";
|
||||||
|
import Motors from "../data/motors-brands"
|
||||||
|
import Cubes from "../data/cubes";
|
||||||
|
import Type from "../data/type";
|
||||||
|
import Fuel from "../data/fuel";
|
||||||
|
import Transmission from "../data/transmission";
|
||||||
|
import Drive from "../data/drive";
|
||||||
|
import Condition from "../data/condition";
|
||||||
|
import Doors from "../data/doors";
|
||||||
|
import Year from "../data/year";
|
||||||
|
import Price from "../data/price";
|
||||||
|
import HorsePower from "../data/horsepower";
|
||||||
|
import Kilowats from "../data/kilowats";
|
||||||
|
import Kilometers from "../data/kilometers";
|
||||||
|
|
||||||
|
const vehicleService = (vehicle) => {
|
||||||
|
let data1, data2, data3, brands, show;
|
||||||
|
if(vehicle === "Auto"){
|
||||||
|
show = true;
|
||||||
|
data1 = [Fuel, Type]
|
||||||
|
data2 = [Price, Year, Kilometers, Cubes, HorsePower, Kilowats]
|
||||||
|
data3 = [Transmission, Drive, Condition, Doors]
|
||||||
|
brands = Cars.map(brand => {
|
||||||
|
return brand})
|
||||||
|
}
|
||||||
|
else if(vehicle === "Motor"){
|
||||||
|
show = false;
|
||||||
|
data1 = [Condition]
|
||||||
|
data2 = [Price, Year, Kilometers, Cubes, HorsePower, Kilowats]
|
||||||
|
data3 = []
|
||||||
|
brands = Motors.map(brand => {
|
||||||
|
return brand
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else if(vehicle === "Teretno vozilo"){
|
||||||
|
show = false;
|
||||||
|
data1 = [Condition, Fuel]
|
||||||
|
data2 = [Price, Year, Kilometers, Cubes, HorsePower, Kilowats]
|
||||||
|
data3 = []
|
||||||
|
brands = Trucks.map(brand => {
|
||||||
|
return brand
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return {"show": show, "brands": brands, "data1": data1, "data2": data2, "data3": data3}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default vehicleService;
|
||||||
Reference in New Issue
Block a user