Ajustes Busca Itinerários
This commit is contained in:
@@ -24,8 +24,6 @@ import CompletarDocumento from './pages/CadastroCompletar/CompletarDocumento';
|
|||||||
import CompletarTelefone from './pages/CadastroCompletar/CompletarTelefone';
|
import CompletarTelefone from './pages/CadastroCompletar/CompletarTelefone';
|
||||||
import Transportes from './pages/Transportes/Transportes';
|
import Transportes from './pages/Transportes/Transportes';
|
||||||
import BuscarPassageiro from './pages/BuscarPassageiro/BuscarPassageiro';
|
import BuscarPassageiro from './pages/BuscarPassageiro/BuscarPassageiro';
|
||||||
import BuscarItinerarioList from './pages/BuscarItinerarioList';
|
|
||||||
import Debug from './pages/Debug';
|
|
||||||
|
|
||||||
/* Core CSS required for Ionic components to work properly */
|
/* Core CSS required for Ionic components to work properly */
|
||||||
import '@ionic/react/css/core.css';
|
import '@ionic/react/css/core.css';
|
||||||
|
|||||||
@@ -57,9 +57,11 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
const [addressTo, setAddressTo] = useState<any>("");
|
const [addressTo, setAddressTo] = useState<any>("");
|
||||||
const [coordinatesTo, setCoordinatesTo] = useState<any>("");
|
const [coordinatesTo, setCoordinatesTo] = useState<any>("");
|
||||||
const [showModalEnd, setShowModalEnd] = useState(false);
|
const [showModalEnd, setShowModalEnd] = useState(false);
|
||||||
const [addressResults, setAddressResults] = useState<any>([]);
|
const [addressResults, setAddressResults] = useState<any[]>([]);
|
||||||
const [inputActive, setInputActive] = useState("");
|
const [inputActive, setInputActive] = useState("");
|
||||||
|
|
||||||
|
const [recentSearches, setRecentSearches] = useState<any[]>([]);
|
||||||
|
|
||||||
const [itinerariesList, setItinerariesList] = useState<Itinerary[]>();
|
const [itinerariesList, setItinerariesList] = useState<Itinerary[]>();
|
||||||
|
|
||||||
// const optionsAddress = async (inputValue: any) => {
|
// const optionsAddress = async (inputValue: any) => {
|
||||||
@@ -116,6 +118,21 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const maxRecentSearchesLength = 0
|
||||||
|
|
||||||
|
if (recentSearches.length >= maxRecentSearchesLength) {
|
||||||
|
setRecentSearches(recentSearches.slice(recentSearches.length - maxRecentSearchesLength));
|
||||||
|
}
|
||||||
|
|
||||||
|
setRecentSearches((arr) => [
|
||||||
|
...arr,
|
||||||
|
{
|
||||||
|
addressFrom: addressFrom.label,
|
||||||
|
addressTo: addressTo.label,
|
||||||
|
time: Date.now(),
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
await itinerariesService
|
await itinerariesService
|
||||||
.searchItineraries({
|
.searchItineraries({
|
||||||
coordinatesFrom,
|
coordinatesFrom,
|
||||||
@@ -139,6 +156,11 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fillSearchBars(addressFrom: string, addressTo: string) {
|
||||||
|
// setAddressFrom(addressFrom);
|
||||||
|
// setAddressTo(addressTo);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<IonPage>
|
<IonPage>
|
||||||
<PageHeader
|
<PageHeader
|
||||||
@@ -194,19 +216,32 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
</IonCardContent>
|
</IonCardContent>
|
||||||
</IonCard>
|
</IonCard>
|
||||||
|
|
||||||
|
{recentSearches && recentSearches.length !== 0 ? (
|
||||||
|
<>
|
||||||
<IonItemDivider color="dark">Pesquisas recentes</IonItemDivider>
|
<IonItemDivider color="dark">Pesquisas recentes</IonItemDivider>
|
||||||
<IonRow class="latest-searches">
|
<IonRow class="latest-searches">
|
||||||
|
{recentSearches.map((search, index) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div key={index}>
|
||||||
|
<IonRow
|
||||||
|
class="latest-searches"
|
||||||
|
onClick={() => {
|
||||||
|
fillSearchBars(search.addressFrom, search.addressTo);
|
||||||
|
}}
|
||||||
|
>
|
||||||
<IonIcon
|
<IonIcon
|
||||||
className="icon-align-vcenter"
|
className="icon-align-vcenter"
|
||||||
size="large"
|
size="large"
|
||||||
icon={timeOutline}
|
icon={timeOutline}
|
||||||
></IonIcon>
|
></IonIcon>
|
||||||
<div className="div_from_to">
|
<div className="div_from_to">
|
||||||
<span>Rua Tal Tal, 154, São Paulo - SP</span>
|
<span>{search.addressFrom}</span>
|
||||||
<IonIcon icon={arrowForwardOutline}></IonIcon>
|
<IonIcon icon={arrowForwardOutline}></IonIcon>
|
||||||
<span>USP</span>
|
<span>{search.addressTo}</span>
|
||||||
<br />
|
<br />
|
||||||
<small>Há 1 hora</small>
|
<small>{search.time}</small>
|
||||||
</div>
|
</div>
|
||||||
<IonIcon
|
<IonIcon
|
||||||
className="icon-forward icon-align-vcenter"
|
className="icon-forward icon-align-vcenter"
|
||||||
@@ -214,7 +249,16 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
icon={chevronForwardOutline}
|
icon={chevronForwardOutline}
|
||||||
></IonIcon>
|
></IonIcon>
|
||||||
</IonRow>
|
</IonRow>
|
||||||
<IonRow class="latest-searches">
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</IonRow>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)}
|
||||||
|
{/* <IonRow class="latest-searches">
|
||||||
<IonIcon
|
<IonIcon
|
||||||
className="icon-align-vcenter"
|
className="icon-align-vcenter"
|
||||||
size="large"
|
size="large"
|
||||||
@@ -232,7 +276,7 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
size="large"
|
size="large"
|
||||||
icon={chevronForwardOutline}
|
icon={chevronForwardOutline}
|
||||||
/>
|
/>
|
||||||
</IonRow>
|
</IonRow> */}
|
||||||
{/* <IonModal isOpen={showModalEnd}>
|
{/* <IonModal isOpen={showModalEnd}>
|
||||||
<IonContent>
|
<IonContent>
|
||||||
<div className="header-search-modal">
|
<div className="header-search-modal">
|
||||||
@@ -274,7 +318,7 @@ const BuscarItinerario: React.FC = () => {
|
|||||||
</IonContent>
|
</IonContent>
|
||||||
</IonModal> */}
|
</IonModal> */}
|
||||||
|
|
||||||
{itinerariesList ? (
|
{itinerariesList && itinerariesList.length !== 0 ? (
|
||||||
<>
|
<>
|
||||||
<IonItemDivider color="secondary">Resultados</IonItemDivider>
|
<IonItemDivider color="secondary">Resultados</IonItemDivider>
|
||||||
{itinerariesList.map((itinerary, index) => {
|
{itinerariesList.map((itinerary, index) => {
|
||||||
|
|||||||
@@ -1,190 +0,0 @@
|
|||||||
import {
|
|
||||||
IonBackButton,
|
|
||||||
IonButtons,
|
|
||||||
IonCard,
|
|
||||||
IonCardContent,
|
|
||||||
IonCardHeader,
|
|
||||||
IonCardSubtitle,
|
|
||||||
IonCardTitle,
|
|
||||||
IonContent,
|
|
||||||
IonGrid,
|
|
||||||
IonHeader,
|
|
||||||
IonIcon,
|
|
||||||
IonItem,
|
|
||||||
IonLabel,
|
|
||||||
IonList,
|
|
||||||
IonListHeader,
|
|
||||||
IonPage,
|
|
||||||
IonRow,
|
|
||||||
IonSelect,
|
|
||||||
IonSelectOption,
|
|
||||||
IonTitle,
|
|
||||||
IonToolbar,
|
|
||||||
} from "@ionic/react";
|
|
||||||
import { cashOutline, personOutline, starOutline } from "ionicons/icons";
|
|
||||||
|
|
||||||
import { useEffect, useState } from "react";
|
|
||||||
import { useHistory } from "react-router";
|
|
||||||
import { PageHeader } from "../components/PageHeader";
|
|
||||||
|
|
||||||
interface coordinates {
|
|
||||||
lat: number;
|
|
||||||
lgn: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Itinerario {
|
|
||||||
motorista: string;
|
|
||||||
valor: string;
|
|
||||||
lugares: string;
|
|
||||||
avaliacao: string;
|
|
||||||
bairros_atendidos: coordinates[];
|
|
||||||
destinos: coordinates[];
|
|
||||||
}
|
|
||||||
|
|
||||||
const BuscarItinerario: React.FC = () => {
|
|
||||||
const [selectedBairro, setSelectedBairro] = useState("");
|
|
||||||
const [selectedFaculdade, setSelectedFaculdade] = useState("");
|
|
||||||
|
|
||||||
const [itinerarios, setItinerarios] = useState<Itinerario[]>();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setItinerarios([
|
|
||||||
{
|
|
||||||
motorista: "João",
|
|
||||||
valor: "R$ 150,00",
|
|
||||||
lugares: "2",
|
|
||||||
avaliacao: "4.5",
|
|
||||||
bairros_atendidos: [{ lat: -22.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
motorista: "Ricardo",
|
|
||||||
valor: "R$ 180,00",
|
|
||||||
lugares: "5",
|
|
||||||
avaliacao: "4.0",
|
|
||||||
bairros_atendidos: [{ lat: -22.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
motorista: "Luiz",
|
|
||||||
valor: "R$ 200,00",
|
|
||||||
lugares: "1",
|
|
||||||
avaliacao: "4.3",
|
|
||||||
bairros_atendidos: [{ lat: -22.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
motorista: "Marcos",
|
|
||||||
valor: "R$ 199,00",
|
|
||||||
lugares: "6",
|
|
||||||
avaliacao: "4.9",
|
|
||||||
bairros_atendidos: [{ lat: -22.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
motorista: "Orandi",
|
|
||||||
valor: "R$ 210,00",
|
|
||||||
lugares: "8",
|
|
||||||
avaliacao: "5.0",
|
|
||||||
bairros_atendidos: [{ lat: -22.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
motorista: "Pedro",
|
|
||||||
valor: "R$ 189,00",
|
|
||||||
lugares: "4",
|
|
||||||
avaliacao: "4.1",
|
|
||||||
bairros_atendidos: [{ lat: -22.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
motorista: "Pericles",
|
|
||||||
valor: "R$ 220,00",
|
|
||||||
lugares: "19",
|
|
||||||
avaliacao: "4.5",
|
|
||||||
bairros_atendidos: [{ lat: -23.873432, lgn: -47.142274 }],
|
|
||||||
destinos: [{ lat: -22.833645, lgn: -47.048905 }],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<IonPage>
|
|
||||||
<PageHeader
|
|
||||||
pageName="Buscar itinerários"
|
|
||||||
backButtonPageUrl="/buscas"
|
|
||||||
></PageHeader>
|
|
||||||
|
|
||||||
<IonContent fullscreen>
|
|
||||||
{/* <IonGrid>
|
|
||||||
<IonRow> */}
|
|
||||||
<IonList>
|
|
||||||
<IonListHeader>Filtros de busca</IonListHeader>
|
|
||||||
<IonItem>
|
|
||||||
<IonLabel>Bairro de origem</IonLabel>
|
|
||||||
<IonSelect
|
|
||||||
// placeholder="Selecione o bairro de origem"
|
|
||||||
onIonChange={(e) => {
|
|
||||||
setSelectedBairro(e.detail.value!);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<IonSelectOption value="1">Vila Marieta</IonSelectOption>
|
|
||||||
<IonSelectOption value="2">Botafogo</IonSelectOption>
|
|
||||||
<IonSelectOption value="3">Cambuí</IonSelectOption>
|
|
||||||
</IonSelect>
|
|
||||||
</IonItem>
|
|
||||||
|
|
||||||
<IonItem>
|
|
||||||
<IonLabel>Instituição de ensino de destino</IonLabel>
|
|
||||||
<IonSelect
|
|
||||||
// placeholder="Selecione a instituição de ensino de destino"
|
|
||||||
onIonChange={(e) => {
|
|
||||||
setSelectedFaculdade(e.detail.value!);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<IonSelectOption value="1">
|
|
||||||
PUC Campinas (campus 1)
|
|
||||||
</IonSelectOption>
|
|
||||||
<IonSelectOption value="2">Unicamp</IonSelectOption>
|
|
||||||
<IonSelectOption value="3">UNIP</IonSelectOption>
|
|
||||||
</IonSelect>
|
|
||||||
</IonItem>
|
|
||||||
</IonList>
|
|
||||||
{/* </IonRow> */}
|
|
||||||
|
|
||||||
{/* <IonRow> */}
|
|
||||||
{selectedBairro && selectedFaculdade ? (
|
|
||||||
<>
|
|
||||||
{itinerarios ? (
|
|
||||||
itinerarios.map((itinerario, index) => {
|
|
||||||
return (
|
|
||||||
<IonCard key={index}>
|
|
||||||
<IonCardHeader>
|
|
||||||
<IonCardTitle>
|
|
||||||
{/* <p>Bairros atendidos: {itinerario.bairros_atendidos[0].lat},{itinerario.bairros_atendidos[0].lgn}</p> */}
|
|
||||||
{/* <p>Instituições de ensino atendidas: {itinerario.destinos[0].lat},{itinerario.destinos[0].lgn}</p> */}
|
|
||||||
</IonCardTitle>
|
|
||||||
<IonCardSubtitle>
|
|
||||||
<p><IonIcon icon={personOutline} /> Vagas disponíveis: {itinerario.lugares}</p>
|
|
||||||
<p><IonIcon icon={starOutline} /> Motorista: {itinerario.motorista}</p>
|
|
||||||
<p><IonIcon icon={cashOutline} /> Valor: {itinerario.valor}</p>
|
|
||||||
</IonCardSubtitle>
|
|
||||||
</IonCardHeader>
|
|
||||||
</IonCard>
|
|
||||||
);
|
|
||||||
})
|
|
||||||
) : (
|
|
||||||
<></>
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
<></>
|
|
||||||
)}
|
|
||||||
{/* </IonRow>
|
|
||||||
</IonGrid> */}
|
|
||||||
</IonContent>
|
|
||||||
</IonPage>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default BuscarItinerario;
|
|
||||||
Reference in New Issue
Block a user