Giter Site home page Giter Site logo

matrusp / matrusp Goto Github PK

View Code? Open in Web Editor NEW
114.0 114.0 14.0 33.88 MB

Repositório principal do projeto MatrUSP

Home Page: http://bcc.ime.usp.br/matrusp

License: Other

CSS 10.52% JavaScript 46.18% PHP 0.24% Python 3.37% Makefile 0.25% HTML 33.24% SCSS 6.19%

matrusp's Introduction

MATRUSP TCC 2016

Branch voltada para o re-desenvolvimento do MatrUSP.

Versão atual Versão anterior Documentação

Envolva-se

Veja como contribuir para o repositório.

Ou navegue pela Wiki do projeto.

Conheça os contribuidores que tornaram o MatrUSP uma realidade.

FAQ

  • Como o MatrUSP funciona?

    Todo dia à meia-noite, nós rodamos um script Python que varre o JupiterWeb em busca de oferecimentos de disciplinas. Os dados são processados e convertidos em um arquivo JSON que é salvo em disco no servidor. Quando um usuário acessa o MatrUSP, transmitimos este arquivo. Toda a lógica de combinações de disciplinas é feita no cliente.

Licença

O MatrUSP, como fork do CAPIM, segue a mesma licença:

A ideia original era fazer o CAPIM ser código-livre. Porém, as licenças mais comuns (como a GPL) não atenderiam a algumas restrições que eu gostaria de impor ao código. Portanto, aqui defino a licença do CAPIM:

  1. É proibido qualquer tipo de retorno financeiro, direta ou indiretamente, como, por exemplo:
    • o uso de propagandas, divulgação, apoio, troca de favores ou serviços afins no próprio site do aplicativo, em qualquer site que leve ao aplicativo e em qualquer site relacionado ao aplicativo;
    • cobrar pela utilização do serviço ou qualquer serviço adicional;
    • a venda de informações dos usuários;
  2. É proibido o acúmulo de informações pessoais dos usuários, exceto pelos próprios horários que eles mesmos salvarem com um identificador de escolha deles;
  3. É proibida a promoção pessoal do(s) desenvolvedor(es), exceto por uma menção em uma janela discreta para esta finalidade. Esta janela só deve aparecer quando solicitada pelo usuário e deve conter crédito para todos os desenvolvedores envolvidos, atuais e passados;
  4. São permitidos o desenvolvimento e distribuição independentes do projeto, contanto que seja mantida esta licença e seja usado outro nome para o projeto;
  5. O código fonte deve ser disponibilizado em algum repositório público, cujo endereço deve ser promovido em algum lugar do aplicativo;
  6. Toda alteração ao código também deve obedecer a esta licença.

matrusp's People

Contributors

aberc avatar brunoendo avatar jyrodrigues avatar pedropaulovc avatar raverona avatar samlibardi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

matrusp's Issues

Medir o tamanho da barra de rolagem por JS

Como o tamanho da barra de rolagem muda dependendo do navegador, temos que tornar o código adaptável. Para esconder a barra de rolagem no lecture-explorer são criadas duas <div>s, onde a de dentro é maior do que a de fora. Isto está setado em _accordion.scss assim:

#accordion {
  height: calc(100% + #{$scroll-bar-width});
  width: calc(100% + #{$scroll-bar-width});
  overflow: scroll;
}

Criar uma função em JS para medir o tamanho da barra de rolagem e definir o tamanho da <div> interna de acordo.

Adicionar a carga horária semanal

Exibir na interface a carga horária semanal de uma grade de matrícula. Preferencialmente exibir em termos de créditos aula/trabalho. Se não for possível, exibir em termos de total de horas de aula por semana.

Conflitos inexistentes

O matrusp atual tem detectado conflitos inexistentes e ocultando disciplinas de forma desnecessária.
Vide no screenshot que PTC3307 e PSI3321 não são conflitantes porém apenas a de prioridade maior pode ficar acionada.
screenshot_58

Verificar o conflito de horários considerando as datas de início e término das disciplinas

O MatrUSP verifica o conflito entre turmas e disciplinas comparando apenas os horários e os dias de oferecimento. Há disciplinas, na Medicina por exemplo, que duram menos de um semestre e os alunos podem fazer matrículas sem conflitos de horários graças às diferenças nas datas de início e término de cada disciplina.

Na Poli, há turmas de laboratório com aulas quinzenais. É possível fazer matrícula em duas turmas com o "mesmo horário", uma com aulas nas semanas pares e outras nas semanas ímpares.

Exceção ao imprimir grade vazia

  1. Abra o MatrUSP em modo incognito
  2. Aperte em Imprimir

Esperado: O usuário consegue imprimir uma grade vazia

Real: Uma exceção é lançada. Nada é impresso.

image

Cadê as matéria

Não tá teno matérias da fau. Sumiu.

Cadê

(serião to precisando, mim ajuda vaii)

Disciplina inativa torna-se ativa ao copiar um plano

Uma disciplina que está inativa, e não pode ser selecionada, aparecerá como ativa no plano copiado.
Por exemplo, se a disciplina A está inativa no plano 1 e copiamos e mudamos para o plano 2, aparentemente será possível selecionar A. Ao clicar no checkbox, entretanto, a disciplina volta a ficar inativa, passando a agir normalmente.

Exceção clicar no botão "+"

  1. Clique no botão "+" sem preencher o campo de nome de disciplina

Esperado: Nenhuma exceção deveria ser gerada

Real:

image

Barra de rolagem na lista de disciplinas não é exibida

  1. Monte uma grade no MatrUSP com mais de 12 disciplinas distintas

Esperado: Quando o número de disciplinas for maior do que a capacidade do container, exibir uma barra de rolagem. Ex:
image

Real: A barra de rolagem é escondida via CSS

image

Permutações de Grade Demoradas

Ao marcar e desmarcar turmas há uma lentidão ao gerar as grades alternativas. Adicionar um timer para recalcular a cada X segundos ou até um botão para recalcular / check box pra desligar a atualização automática.

Identificadores diferentes são gerados para a mesma grade

  1. Monte uma grade no MatrUSP
  2. Clique repetidas vezes em Enviar por Email

Esperado: No máximo um identificador deveria ser gerado por sessão. Caso o usuário altere a grade, o cliente sobrescreveria o conteúdo armazenado no servidor para o identificador auto-gerado.

Impossível salvar o identificador em uma tela de 800x600

O que eu faço:
- Abro o matrusp usando o Chromium em uma tela de 800x600.
- Elaboro a minha grade no matrusp.
- Tento salvar o meu identificador.

O que ocorre:
- Não consigo clicar no campo "Salve o seu plano aqui".

O que eu espero que ocorra:
- Que eu consiga clicar no campo para adicionar um identificador para em seguida clicar em "Salvar".

Separar turmas teóricas e práticas na escolha de disciplinas

Há disciplinas que tem aulas teóricas e aulas prática. Ex: 6022010, LEB0450, etc. Habitualmente o Jupiter indica qual turma prática está associada a qual turma teórica, o que permite gerar um JOIN com os horários das duas partes. Porém, às vezes esta informação não está disponível e o comportamento atual do MatrUSP é simplesmente listar todas as turmas teóricas e práticas dentro da mesma disciplina. No momento cada grade horária gerada pelo MatrUSP inclui apenas uma turma por disciplina, o que é um problema neste caso.

Uma solução é, para cada disciplina com parte teórica e prática, quebrá-la em três:

  • AAA0001 (T) - Disciplina A, Turmas de parte teórica
  • AAA0001 (P) - Disciplina A, Turmas de parte prática
  • AAA0001 (T+P) - Disciplina A, Turmas de parte teórica + prática

Quando for possível fazer todos os JOINs, as disciplinas (T) e (P) não devem ser exibidas.

HTML inválido

Testado no MS Edge:

                <label id="upload-button">
                    <div id="upload-name"> Upload de Grade </div>
                    <img src="images/ic_upload.png" />
                    <input id="upload-input" type="file" accept="application/json">
                </div>

Verifique no console do navegador que nenhum aviso está sendo lançado.

MatrUSP fica lento ao adicionar 3 disciplinas com várias turmas

  1. No Edge
  2. Monte uma grade com MAT0111, MAE0116 e MAC2166
  3. Clique em cada combinação

Esperado: Uma vez que as combinações estão geradas, selecionar combinações deveria ser uma operação O(1)

Atual: Às vezes o MatrUSP engasga um pouco processando a seleção.

Disciplinas da pós indisponíveis.

Olás,
O que ocorre:

  • Buscar uma disciplina de pós graduação não me retorna resultado algum.

O que eu espero que ocorra:

  • A disciplina de pós graduação seja encontrada e que seja possível adicioná-la à minha grade.

Abraços
Giuliano.

Carregar um identificador não funciona

  1. No Edge
  2. Monte uma grade horária
  3. Clique em Enviar por Email. Copie o identificador.
  4. Abra uma janela incognito. Carregue a grade usando o identificador gerado

Esperado: A grade horária deveria abrir

Real: O MatrUSP abre vazio

Exceção ao fazer upload de arquivo inválido

  1. Clique em Upload de Grade
  2. Faça o upload de algum arquivo inválido. Uma imagem, documento, etc.

Experado: O usuário é informado que o arquivo é inválido

Real: State.prototype.uploadFile lança uma exceção:

image

Desselecionar uma disciplina mantém parte do schedule box

Adicione uma disciplina que possua um schedule box pequeno (i.e. que não mostre os horários de começo e fim, só mostre com hover). Ao desselecionar esta disciplina, as duas faixas (em cima e embaixo) mostrando o horário da disciplina permanecem exibidas, enquanto houver hover na disciplina.

Mudar o algoritmo de busca de disciplinas

Mudar o "rankeamento" de disciplinas. Ao procurar, por exemplo, "proba", temos o seguinte:
screen shot 2016-12-02 at 17 31 24
O à na primeira matéria faz com que ele seja rankeado acima da segunda, apesar dela ser muito parecida com a terceira.

Sugestão:

  • Diminuir o score da string para cada caracter que não foi pego pela regex. Com isso, strings grandes aparecerão depois de menores (em geral, nem sempre).

Melhorar a exibição do nome de uma disciplina

Principalmente quando a disciplina está "fechada", às vezes (a depender do tamanho da tela), só é possível ver uma única palavra:

Não dá pra deixar assim:
screen shot 2016-12-02 at 16 45 32
(fechado)
screen shot 2016-12-02 at 16 45 39
(aberto)

Opções:

  • Utilizar ellipsis quando estiver fechado
  • Quebrar a palavra por hífen
  • Diminuir os botões à direita

Imprimir não funciona no Edge

  1. No Edge
  2. Monte uma grade horária
  3. Clique em imprimir

Experado: Um arquivo deveria ser gerado

Real: Um popup vazio aparece

Melhorar o algoritmo de busca por combinações

Ele está escrito de uma forma simples: testa todas as possíveis combinações com todas as disciplinas. Mudar para incluir uma disciplina por vez. See duas disciplinas conflitam, não precisa testar todas as combinações que incluem estas disciplinas.

Espero que isso melhore o desempenho, resolvendo a issue #25.

Filtragem por insitituto

Olá, desenvolvedores do Matrusp.

Primeiramente, gostaria de agradecer demais o serviço que colocaram no ar.
Me ajudou muitas vezes! Ele é sensacional!!

Gostaria de fazer uma sugestão: Inserir um meio de pesquisar disciplinas
sendo oferecidas por um meio de busca. No jupiterweb não dá para fazer isso
de forma prática, pois ele lista TODAS as disciplinas. Até as que não estão
sendo oferecidas. Precisamos ir em cada uma que estamos interessados e ver
se estão abertas, ou pegar o nome de uma a uma e ir no matrusp conferir.
Não é difícil isso, é verdade... Mas parece que vocês têm em cada semestre
uma lista das disciplinas oferecidas. Nunca, quando fui tentar inserir uma
disciplina, apareceu uma que fosse de outro semestre. Talvez possam listar,
por instituto, quando algum usuário solicitar (uma "BUSCA AVANÇADA", não
sei...).

Bom, esta é a minha sugestão de incremento. Mas o sistema é ótimo do jeito
que está hehe

Obrigado novamente. Abraços.

Marcos Vinícius Petri

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.