GithubHelp home page GithubHelp logo

legaard / au-schedule Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 0.0 160 KB

Schedule generate for ST-students at Aarhus University

Home Page: http://uniskema.dk

TypeScript 91.58% JavaScript 3.36% HTML 4.66% CSS 0.40%
aarhus-universitet schedule generator

au-schedule's Introduction

Build Status

AU Schedule Generator

This project sets out to make life easier for students, at the Science and Technology department at Aarhus University (AU), by offering a simple way to generate schedules for one person or multiple people (e.g. a study group). Using this generator the student can:

  • Generate a weekly schedule for courses at the current semester.
  • Add multiple people to the same schedule and easily toggle between the various students.
  • Filter all courses shown; e.g. name of the course, day or type of course (lecture, exercises, etc.).
  • Under development: see exams for the various courses

Note: The data used in this project is retrieved from timetable.scitech.au.dk – always make sure the generated schedule is correct using this website.

Maintainers

The following people are currently maintaining on the schedule generator:

However, feel free to make a pull request if you want to improve the project or add new features/functionality - we are better together 😄

Technologies

This project is based on Angular 4, therefore uses uses TypeScript, and utilize Sass for styling. The data used in the project is provided by a Node.js application (running on a DigitalOcean droplet) which scrapes an official AU website. The Node.js application is running on au-service.legaard.xyz.

How to work with the project

The project is generated with the generated with Angular CLI. Run ng serve for a dev server and navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|module.

Build for production

Run npm run build to build the project. The build artifacts will be stored in the dist/ directory.

au-schedule's People

Contributors

angular-cli avatar chl90 avatar legaard avatar

Watchers

 avatar  avatar  avatar

au-schedule's Issues

Create a toggle preset component

Implementation steps:

  • Create a new component (e.g. TogglePresetComponent) and add it to the sidebar
    • Should have some kind of button and input field
    • Emit name of preset when clicked
  • The sidebar component should act on "create preset events", i.e. take emitted name of preset, find all active (student toggled on) students' IDs an dispatch a "add preset" action

Add local storage to the student toggle reducer

Implementation steps:

  • Create a local storage service (ensure storage is available, set appropriate prefix, etc.)
  • Use the new service to set the initial state of the reducer, and create an effect that stores data on student toggle changes. Alternatively, create a meta reducer for the store.

Create student data service

Requirements:

  • Service should be able to fetch course- and exam data for a given student
  • Should return appropriate data models which can be used in the data store

Create class service

Implementation steps:

  • Create a new model for the class data.
  • Create a new service which takes a class id, class group and group. The service should return an Observable using the new model.

Url: api/v1/classes/${classId}/class-group/${classGroup}/group/${group}

Create front page

Implementation steps:

  • Create new component and add to router
  • Create service that fetches student names by id

Create StudentToggle state

Implementation steps:

  • Create new actions: add student, remove student and toggle student.
  • Create a new StudentToggle state and a reducer for it.
  • Add reducer to the store and add new state to the global app state.
  • Consider: Maybe create an effect that listens for a new action called fetch student - every time this event is dispatched, the effect should call the student service and add the retrieved student to the store.

Create logging service

Requirements:

  • The service should have three methods: info, warn, error.
  • Messages should be logged to the console when in dev mode and send to the server in prod mode (only errors).

Create new error handler

Implementation steps:

  • Create a new error handler class
  • Inject the logging service into the handler and use the error method when errors occur.
  • Add the new error handler to the app module (should replace the existing ErrorHandler provided by Angular).

See example here.

Create an ExamsService

Implementation steps:

  • Create a new model for the exam data.
  • Create a new service which takes a student id and a quarter (a number from 1 to 4). The service should return an Observable using the new model.

Url: api/v1/exams/${quarter}/${studentId}

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.