Commit 48d95187 authored by Odair M.'s avatar Odair M.

Merge branch 'add-search-types' into 'develop'

add curso

See merge request !16
parents 74bdac6c 46111824
Pipeline #22547 failed with stages
in 36 seconds
......@@ -21,6 +21,8 @@ import Table from '@material-ui/core/Table';
import IconButton from '@material-ui/core/IconButton';
const Rows = React.createContext([]);
const DIAS_SEMANAS = ["","Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"]
const DISCIPLINA = 0
const BLOCO = 1
const CURSO = 2
......@@ -51,17 +53,68 @@ export function BlocoSearch(props) {
return ( <h1>bloco</h1>)
}
export function CursoSearch(props) {
return ( <h1>curso</h1>)
}
export function SalaSearch(props) {
const classes = useStyles();
const {rows, setRows} = React.useContext(Rows);
console.log(rows)
return ( <h1>sala</h1>)
}
export function DisciplinaSearch(props) {
// plota uma tabela com as informacoes de uma turma. recebe como entrada uma
// lista de turmas. com o seguinte formato:
/*
* [ {
turma: {
codigo: "A"
data_inicio: "2019-12-15T00:00:00.000Z"
data_fim: "2019-12-15T00:00:00.000Z"
merged: false
organizador: "Administrador do Sistema"
vagas: 7
ano: 2020
periodo: "1"
id: 2129
disciplinaCod: "ci204"
mergedCod: null
departamentoCod: "informatica"
cursoCod: "96A"
turmaId: null
professorCod: null
semestre: "2020/2"
}
horarios: [
{dia: 5, horario_inicial: "19:30:00", horario_final: "21:30:00", livre: false, motivo: "aula", …}
{dia: 3, horario_inicial: "19:30:00", horario_final: "21:30:00", livre: false, motivo: "aula", …}
]
curso: {
nome: "Informatica Biomedica"
codigo: "96A"
_id: 35
localizacao: null
secretarioId: null
blocoCod: "pa"
setorCod: null
}
disciplina: {
codigo: "ci204"
nome: "ADMINISTRACAO DE INFORMATICA"
carga_horaria: 0
duracao: "semestral"
modalidade: "presencial"
_id: 471
tipodesalaId: null
departamentoCod: "informatica"
}
} ]
*/
export function TurmaTable(props) {
const [rows,setRows] = React.useState([])
React.useEffect(()=>{
setRows(props.rows)
},[props.rows])
const classes = useStyles();
const {rows, setRows} = React.useContext(Rows);
return ( <div>
<div>
<Paper className={classes.root}>
......@@ -75,7 +128,7 @@ export function DisciplinaSearch(props) {
</fixedHeader>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.turma.codigo}
</TableCell>))}
</TableRow>
......@@ -85,7 +138,7 @@ export function DisciplinaSearch(props) {
<b>Curso</b>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.curso? row.curso.nome : ""}
</TableCell>))}
</TableRow>
......@@ -95,7 +148,7 @@ export function DisciplinaSearch(props) {
<b>Nome da disciplina</b>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.disciplina.nome}
</TableCell>))}
</TableRow>
......@@ -105,7 +158,7 @@ export function DisciplinaSearch(props) {
<b>Sala</b>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.horarios.map((value, index) => {
return <p>{value.salaCode}</p>
})}
......@@ -117,9 +170,9 @@ export function DisciplinaSearch(props) {
<b> Dia</b>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.horarios.map((value, index) => {
return <p>{value.dia}</p>
return <p>{DIAS_SEMANAS[value.dia]}</p>
})}
</TableCell>))}
</TableRow>
......@@ -129,7 +182,7 @@ export function DisciplinaSearch(props) {
<b> Início</b>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.horarios.map((value, index) => {
return <p>{value.horario_inicial}</p>
})}
......@@ -141,7 +194,7 @@ export function DisciplinaSearch(props) {
<b> Fim</b>
</TableCell >
{rows.map(row => (
<TableCell align="center" key={row.disciplina.codigo}>
<TableCell align="center" >
{row.horarios.map((value, index) => {
return <p>{value.horario_final}</p>
})}
......@@ -154,104 +207,92 @@ export function DisciplinaSearch(props) {
<TableRow align="right">Fim</TableRow> */}
</TableBody>
{/* <TableBody>
{rows.map(row => (
<TableCell key={row.disciplina.codigo}>
<TableRow align="center" scope="row">
{row.turma.codigo}
</TableRow>
<TableRow align="center">{row.curso? row.curso.nome : ""}</TableRow >
<TableRow align="center">{row.disciplina.nome}</TableRow>
<TableRow align="center">
{row.horarios.map((value, index) => {
return <p>{value.salaCode}</p>
})}
</TableRow>
<TableRow align="center">
{row.horarios.map((value, index) => {
return <p>{value.dia}</p>
})}
</TableRow>
<TableRow align="center">
{row.horarios.map((value, index) => {
return <p>{value.horario_inicial}</p>
})}
</TableRow>
<TableRow align="center">
{row.horarios.map((value, index) => {
return <p>{value.horario_final}</p>
})}
</TableRow>
</TableCell>
))}
</TableBody> */}
</Table>
</Paper>
</div>
</div>)
}
export function DisciplinaSearch(props) {
const {rows, setRows} = React.useContext(Rows);
const [r,setR] = React.useState([])
React.useEffect(()=>{
setR(rows)
},rows)
return (<TurmaTable rows={r} />)
}
// componente que mostra plota a informaçao na tela. Recebe como parametro uma
// linha e plota informações de turma dessa linha
function DepartamentoSubComponente(props) {
const classes = useStyles();
return ( <div>
<Paper className={classes.root}>
<Table className={classes.table} aria-label="simple table">
<TableHead>
<TableRow>
<TableCell>Código turma</TableCell>
<TableCell align="right">Curso</TableCell>
<TableCell align="right">Nome da disciplina</TableCell>
<TableCell align="right">Sala</TableCell>
<TableCell align="right">Dia</TableCell>
<TableCell align="right">Início</TableCell>
<TableCell align="right">Fim</TableCell>
</TableRow>
</TableHead>
<TableBody>
{props.row.turmas.map(turma => (
<TableRow key={turma.disciplina.codigo}>
<TableCell component="th" scope="row">{turma.codigo}</TableCell>
<TableCell align="right">{turma.cursos? turma.cursos.nome : ""}</TableCell>
<TableCell align="right">{turma.disciplina.nome}</TableCell>
<TableCell align="right">
{turma.horarios.map((value, index) => {
return <p>{value.salaCode}</p>
})}
</TableCell>
<TableCell align="right">
{turma.horarios.map((value, index) => {
return <p>{value.dia}</p>
})}
</TableCell>
<TableCell align="right">
{turma.horarios.map((value, index) => {
return <p>{value.horario_inicial}</p>
})}
</TableCell>
<TableCell align="right">
{turma.horarios.map((value, index) => {
return <p>{value.horario_final}</p>
})}
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</Paper>
const [turmas, setTurmas] = React.useState([])
React.useEffect(()=>{
var _turmas = []
_turmas = []
setTurmas([])
if (props.row.turmas) {
for(var i=0; i<props.row.turmas.length; i++) {
var turma = props.row.turmas[i]
_turmas.push({ "turma": turma,
"horarios": turma.horarios,
"professor": turma.professor,
"disciplina": turma.disciplina,
"curso": turma.cursos
})
}
}
setTurmas(_turmas)
</div>
},[props.row])
return ( <div>
{ turmas &&
<TurmaTable rows={turmas} />
} </div>
)
}
export function CursoSubComponente(props) {
const [turmas, setTurmas] = React.useState([])
React.useEffect(()=> {
var _turmas = []
if (props.row.disciplinas) {
for(var i=0; i < props.row.disciplinas.length; i++) {
var disciplina = props.row.disciplinas[i]
for(var j=0; j < disciplina.turmas.length; j++) {
var turma = disciplina.turmas[j]
_turmas.push({
"curso":props.row,
"disciplina":disciplina,
"professor": turma.professor,
"turma":turma,
"horarios":turma.horarios
})
}
}
}
setTurmas(_turmas)
},[props.row])
return (<div>
{ turmas &&
<TurmaTable rows={turmas} />
} </div>
)
}
// A ideia é que eu passo para o componente nestedList uma lista de linhas com
// o resultado da pesquisa. e um componente chamado subcomponente que sabe como
// plotar o resultado na tela e ai o componente nested tem o trabalho apenas de
// iterar cada linha de resultado e chamar o componente subcomponente para
// plotar.
export function CursoSearch(props) {
const {rows, setRows} = React.useContext(Rows);
return ( <NestedList rows={rows} subcomponente={CursoSubComponente} />)
}
export function DepartamentoSearch(props) {
const {rows, setRows} = React.useContext(Rows);
return ( <NestedList rows={rows} subcomponente={DepartamentoSubComponente} />)
const [r, setR] = React.useState([rows])
React.useEffect(()=>{
setR(rows)
},[rows])
return ( <NestedList rows={r} subcomponente={DepartamentoSubComponente} />)
}
......@@ -302,7 +343,6 @@ export function PaginaInicial(props) {
let res = await api.get(`/disciplinas/search?query=${searchBar}`, {});
setRows(res.data.turmas);
return "oi";
}
async function handleSubmitBloco() {
console.log("pesquisa por Bloco")
......@@ -369,7 +409,7 @@ export function PaginaInicial(props) {
direction="row"
justify="center"
>
<Grid item md={2} sm={3} >
<Grid item md={2} sm={2} >
<TextField
select
label="Buscar Por"
......@@ -380,8 +420,8 @@ export function PaginaInicial(props) {
>
<MenuItem value={DISCIPLINA}>Disciplina</MenuItem>
<MenuItem value={DEPARTAMENTO}>Departamento</MenuItem>
{ /*
<MenuItem value={CURSO}>Curso</MenuItem>
{ /*
<MenuItem value={SALA}>Sala</MenuItem>
*/
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment