Inclui páginas base de Buscas e Buscar Itinerário
This commit is contained in:
@@ -15,6 +15,7 @@ import { IonReactRouter } from '@ionic/react-router';
|
|||||||
import Cadastro from './pages/Cadastro/Cadastro';
|
import Cadastro from './pages/Cadastro/Cadastro';
|
||||||
import Login from './pages/Login';
|
import Login from './pages/Login';
|
||||||
import Home from './pages/Home';
|
import Home from './pages/Home';
|
||||||
|
import Buscas from './pages/Buscas';
|
||||||
import Perfil from './pages/Perfil';
|
import Perfil from './pages/Perfil';
|
||||||
import PerfilEditar from './pages/PerfilEditar';
|
import PerfilEditar from './pages/PerfilEditar';
|
||||||
import CadastroVan from './pages/CadastroVan';
|
import CadastroVan from './pages/CadastroVan';
|
||||||
@@ -52,6 +53,7 @@ import React from 'react';
|
|||||||
import MinhasVans from './pages/MinhasVans';
|
import MinhasVans from './pages/MinhasVans';
|
||||||
import MeusItinerarios from './pages/MeusItinerarios/MeusItinerarios';
|
import MeusItinerarios from './pages/MeusItinerarios/MeusItinerarios';
|
||||||
import CadastrarItinerario from './pages/CadastrarItinerario/CadastrarItinerario';
|
import CadastrarItinerario from './pages/CadastrarItinerario/CadastrarItinerario';
|
||||||
|
import BuscarItinerario from './pages/BuscarItinerario';
|
||||||
|
|
||||||
setupIonicReact();
|
setupIonicReact();
|
||||||
|
|
||||||
@@ -62,6 +64,8 @@ const routes = (
|
|||||||
|
|
||||||
<Route exact path="/home" component={Home}></Route>
|
<Route exact path="/home" component={Home}></Route>
|
||||||
|
|
||||||
|
<Route exact path="/buscas" component={Buscas}></Route>
|
||||||
|
|
||||||
<Route exact path="/perfil" component={Perfil}></Route>
|
<Route exact path="/perfil" component={Perfil}></Route>
|
||||||
<Route exact path="/perfil/editar" component={PerfilEditar}></Route>
|
<Route exact path="/perfil/editar" component={PerfilEditar}></Route>
|
||||||
<Route exact path="/perfil/completar" component={CadastroCompletar}></Route>
|
<Route exact path="/perfil/completar" component={CadastroCompletar}></Route>
|
||||||
@@ -71,6 +75,8 @@ const routes = (
|
|||||||
<Route exact path="/transportes" component={Transportes}></Route>
|
<Route exact path="/transportes" component={Transportes}></Route>
|
||||||
<Route exact path="/buscar-passageiro" component={BuscarPassageiro}></Route>
|
<Route exact path="/buscar-passageiro" component={BuscarPassageiro}></Route>
|
||||||
<Route exact path="/buscar-transporte" component={BuscarTransporte}></Route>
|
<Route exact path="/buscar-transporte" component={BuscarTransporte}></Route>
|
||||||
|
<Route exact path="/buscar/passageiro" component={BuscarPassageiro}></Route>
|
||||||
|
<Route exact path="/buscar/itinerario" component={BuscarItinerario}></Route>
|
||||||
|
|
||||||
<Route exact path="/usuario/:id" component={Perfil}></Route>
|
<Route exact path="/usuario/:id" component={Perfil}></Route>
|
||||||
|
|
||||||
@@ -109,7 +115,7 @@ const IonicApp: React.FC = () => {
|
|||||||
<IonRouterOutlet>{routes}</IonRouterOutlet>
|
<IonRouterOutlet>{routes}</IonRouterOutlet>
|
||||||
|
|
||||||
<IonTabBar slot="bottom">
|
<IonTabBar slot="bottom">
|
||||||
<IonTabButton tab="buscar" href="/buscar-transporte">
|
<IonTabButton tab="buscar" href="/buscas">
|
||||||
<IonIcon icon={search} />
|
<IonIcon icon={search} />
|
||||||
<IonLabel>Buscar</IonLabel>
|
<IonLabel>Buscar</IonLabel>
|
||||||
</IonTabButton>
|
</IonTabButton>
|
||||||
|
|||||||
191
src/pages/BuscarItinerario.tsx
Normal file
191
src/pages/BuscarItinerario.tsx
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
import {
|
||||||
|
IonBackButton,
|
||||||
|
IonButtons,
|
||||||
|
IonCard,
|
||||||
|
IonCardContent,
|
||||||
|
IonCardHeader,
|
||||||
|
IonCardSubtitle,
|
||||||
|
IonCardTitle,
|
||||||
|
IonContent,
|
||||||
|
IonGrid,
|
||||||
|
IonHeader,
|
||||||
|
IonItem,
|
||||||
|
IonLabel,
|
||||||
|
IonList,
|
||||||
|
IonListHeader,
|
||||||
|
IonPage,
|
||||||
|
IonRow,
|
||||||
|
IonSelect,
|
||||||
|
IonSelectOption,
|
||||||
|
IonTitle,
|
||||||
|
IonToolbar,
|
||||||
|
} from "@ionic/react";
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { useHistory } from "react-router";
|
||||||
|
|
||||||
|
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>
|
||||||
|
<IonHeader translucent>
|
||||||
|
<IonToolbar>
|
||||||
|
<IonTitle>Buscar itinerários</IonTitle>
|
||||||
|
<IonButtons slot="start">
|
||||||
|
<IonBackButton text="" defaultHref="/buscas" />
|
||||||
|
</IonButtons>
|
||||||
|
</IonToolbar>
|
||||||
|
</IonHeader>
|
||||||
|
|
||||||
|
<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>Vagas disponíveis: {itinerario.lugares}</p>
|
||||||
|
<p>Motorista: {itinerario.motorista}</p>
|
||||||
|
<p>Valor: {itinerario.valor}</p>
|
||||||
|
</IonCardSubtitle>
|
||||||
|
</IonCardHeader>
|
||||||
|
</IonCard>
|
||||||
|
);
|
||||||
|
})
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)}
|
||||||
|
{/* </IonRow>
|
||||||
|
</IonGrid> */}
|
||||||
|
</IonContent>
|
||||||
|
</IonPage>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default BuscarItinerario;
|
||||||
59
src/pages/Buscas.tsx
Normal file
59
src/pages/Buscas.tsx
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import { IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonContent, IonPage } from "@ionic/react";
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { useHistory } from "react-router";
|
||||||
|
|
||||||
|
const Buscas: React.FC = () => {
|
||||||
|
useEffect(() => {}, []);
|
||||||
|
const history = useHistory();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<IonPage>
|
||||||
|
<IonContent fullscreen>
|
||||||
|
<IonCard button onClick={ () => history.push({ pathname: "/buscar/itinerario"}) }>
|
||||||
|
<img src="https://images.unsplash.com/photo-1561361513-2d000a50f0dc?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8dmFufGVufDB8fDB8fA%3D%3D&w=1000&q=80" />
|
||||||
|
<IonCardHeader>
|
||||||
|
<IonCardTitle>Buscar itinerários</IonCardTitle>
|
||||||
|
</IonCardHeader>
|
||||||
|
|
||||||
|
<IonCardContent>
|
||||||
|
Clique aqui para buscar por itinerários
|
||||||
|
</IonCardContent>
|
||||||
|
</IonCard>
|
||||||
|
|
||||||
|
<IonCard button onClick={ () => history.push({ pathname: "/buscar/passageiro"}) }>
|
||||||
|
<img src="https://media.istockphoto.com/photos/male-passenger-using-laptop-during-flight-picture-id926203958?k=20&m=926203958&s=612x612&w=0&h=o52_eychVRRum6U5Q8C3bVxpnyXzcueqo1I52bhI-KA=" />
|
||||||
|
<IonCardHeader>
|
||||||
|
<IonCardTitle>Buscar passageiros</IonCardTitle>
|
||||||
|
</IonCardHeader>
|
||||||
|
|
||||||
|
<IonCardContent>
|
||||||
|
Clique aqui para buscar por passageiros
|
||||||
|
</IonCardContent>
|
||||||
|
</IonCard>
|
||||||
|
|
||||||
|
<IonCard button onClick={ () => history.push({ pathname: "/buscar-transporte"}) }>
|
||||||
|
<IonCardHeader>
|
||||||
|
<IonCardTitle>/buscar-transporte</IonCardTitle>
|
||||||
|
</IonCardHeader>
|
||||||
|
|
||||||
|
<IonCardContent>
|
||||||
|
Clique aqui para buscar por transportes
|
||||||
|
</IonCardContent>
|
||||||
|
</IonCard>
|
||||||
|
|
||||||
|
<IonCard button onClick={ () => history.push({ pathname: "/buscar-passageiro"}) }>
|
||||||
|
<IonCardHeader>
|
||||||
|
<IonCardTitle>/buscar-passageiro</IonCardTitle>
|
||||||
|
</IonCardHeader>
|
||||||
|
|
||||||
|
<IonCardContent>
|
||||||
|
Clique aqui para buscar por passageiros
|
||||||
|
</IonCardContent>
|
||||||
|
</IonCard>
|
||||||
|
</IonContent>
|
||||||
|
</IonPage>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Buscas;
|
||||||
Reference in New Issue
Block a user