Giter VIP home page Giter VIP logo

anutimetable's Introduction

anutimetable

  • Timetable database last update: 2021-10-31

⚠️ This project is no longer maintained. It has been replaced by anucssa/anutimetable, available at https://timetable.cssa.club/ ⚠️

Modification Notes

Any changes to index.html, js/timetable.js and anuscrape/scraper.py should be synchronized with the template files in semester_update folder.

Updates

2021-08-07

  • Add semester auto-detect thanks to @Lutra-Fs

2021-02-13

  • Added automatic weekly scrapes of the timetable thanks to @BishopOfTurkey!

2018-07-20

2018-07-17

2018-06-18

2018-03-11

  • Restored display of class locations
  • Added week switcher

2018-03-09

  • Temporarily removed location of classes as requested by ANU

2018-02-22

  • Fixed an issue where updating the revision num will cause a Course.course initialize error
  • Removed auto-selector residual code for now
  • Added Mocha test directory

2018-02-15

  • Added option to take a .PNG screenshot of the timetable
  • Added hide button to activities (requested by email from a few people)

2018-01-16

  • Finalised auto-scraper and added the following scripts under /anutimtable/anuscrape:
    1. commit.sh - bash script that checks for new timetable data and updates the GitHub repo
    2. schedule_scraping.bak - crontab configuration that sets scraping frequency
    3. update_date.py - python program that updates version numbers if new data is found

2018-01-12

  • Changed the regex used in the scrapers to work correctly with the 2018 timetable
  • Added a verify.py script that takes the timetable.json file and checks for conflicting course activities in terms of iid values

2017-12-28

  • Changed scrapers to use the 2018 timetable website
  • Changed mode to _S1 courses only

2017-02-20

  • Added offline support

2017-02-14

  • Added autofocus property for the course input box

2017-02-13

  • Fixed an issue with IE/Edge where Array.prototype.indexOf method does not exist

2017-01-24

  • Fixed an issue with scraper generating wrong iid
  • Fixed an issue with some cell's color won't go away after deleting the course (parent().get(0) only returns one element, therefore need to loop over parent())

2017-01-22

  • Enhanced choose button to be displayed only when there's alternatives
  • Fixed some spelling errors

2017-01-21

  • Added a PHP scraper (for non-ANU network use)
  • Fixed the background color issue (temporarily)

2016-02-06

  • Fixed table displaying issue.

2016-02-04

  • Added auto-selecting feature.
    • No UI for now, use Magic.cast() in console to see effects.
    • The result will be ordered by clashes in ascending order.

2016-01-28

  • Temporarily fixed the problem with choosable compulsory courses.
    • It will be deprecated soon.

2016-01-18

  • Fixed the problem with confirm window popping out while clicking re-choose buttons.
  • Added border spacing.

2016-01-16

  • Compressed JSON structure.
    • day will now be index instead of string.
    • Removed name because it's redundant.
    • Added id.
  • Added tutorial re-choose feature (appeared as icons).
  • Added pinned classes icon effect.
  • Added confirm window when deleting courses.
  • Added revisionNum.
    • If a new value is found, then clear tutorials.
    • This value is only changed when changing data structure!
  • Added mouseover effects when you hover a choosable tutorial.
    • The purpose of this is to ease the pain of finding same tutorials with different time.
  • Changed delete button next to course name to icons.
  • Changed the behaviour of tutorial displaying.
    • It will now automatically add newly updated classes to the cookie/localStorage instead of ignoring its existence.
    • After choosing a tutorial, the element will be deleted instead of set to hidden.
    • The choose button will now longer appear if there's a chosen tutorial.
    • Because of the order changing after re-choose tuts, lesson style will now determined by the existence of lesson-style-x, instead of hash.
  • Changed the way of deciding how different groups belong to one tutorial.
    • The normal format of a class name is: {COURSE_NAME}{GROUP_TYPE}{GROUP_NUMBER}/ {NUMBER}, {NUMBER} will be used.
  • Changed the structure of Course.structure ({ class: chosen tutorial id, ... }).
  • Changed weekdays header to full.
  • Removed leading zeros in item.info and ending /s (because the official data sometimes mistakenly gives different numbers such as 01 and 1).
  • Removed usage of data-fgroup, data-id will now be used.
  • Fixed a bug where when creating an empty timeslot, it will clone the lesson style class as well.

2016-01-11

  • Style changes to save vertical real estate.
  • Made lesson style fit to whole block.
  • Fixed the issue where the color remains when a class is removed.
  • Removed animations.

2016-01-06

  • Fixed an issue with colspan.
  • Cleared redundant code.

2015-12-21

  • Fixed course deletion animation (slideDown() -> slideUp()).
  • Fixed pressing enter will not add a course issue under some browsers (event.which is not supported).

2015-12-19

  • Rewrote the code related to :30 courses support.
    • Instead of remove unused cells, it will now just hide them, this makes searching much easier.
    • It's now fully functional and the code is much cleaner than the previous version.
    • There should be no broken table if used proper, but if it occurs, please submit an issue with a screeshot and the course addition/deletion order.
  • 'class' label is now treated as 'non-compulsory' category and is selectable between different ones.
  • Added one more color to make sure six courses all get a different widget color.
  • Replaced the text 'Updated for 2016.' with default timetable update time.
  • Changed the table to show borders since it's hard to see which timeslot section the class belongs to without them
    • If we set the lesson block to inherit the cell height (cell height 1px and lesson block height 100%), it'll cause some issues when adding/deleting classes, even not, it shows too much space and looks weird).

2015-12-15

  • Added maximum 6 courses adding limitation.
    • Code is messy, will need to rewrite it someday.
    • If the table displays in an abnormal way, submit an issue with a screeshot and the course addition/deletion order.
  • Added :30 courses supports.
  • Changed the structure for JSON (Note that the old JSON will no longer work!).
    • Removed key 'hour', added key 'start', altered key from 'duration' to 'dur'.
    • Combined all identical data classes.
    • Size reduced by 50%.

2015-12-09

  • Deprecated save & flush button, these operations will now be processed automatically. <issue #26>
  • Reconstructed functions & variables into OOP style.
    • Not sure why 'this' keyword sometimes not working so using the direct name (e.g. Course.display()) instead for now.
  • Made the load JSON button only visible when the online source is not accessible. <issue #27>
  • Made the auto-complete more smarter. <issue #29, #31>
    • It'll now order by matching relevance.
    • The name will be more readable.
    • Course addition will be now ignore everything after the dash, instead of underscore.
  • Changed the structure for JSON (Note that the old JSON will no longer work!).
    • The structure will now be: [[fullName], [info], [location], [course]].
    • Removed key 'fullName', added key 'nid', 'iid' and 'lid' in course object.
    • This provides an index searching for fullName, location and info, which reduces the size of the data by about 50%.
    • The structure will change again in the upcoming days to merge same classes together and suit :30 classes. The file size will be significantly reduced.

2015-12-08

  • Added delete, clear, save and flush feature (use localStorage / cookie depends on the availability).
  • Fixed an issue with tutorial selection (explained in master upstream branch issue #22).
  • Fixed the issue with not being able to choose between one hour tutorials.
  • Fixed the issue with ics export will include all the tutorials regardless of choosing or not.
  • Categorized files into folders (js, css and data, all json files will be saved in data).
  • Added auto-complete feature.
    • For matching, if the user is using his/her/theirs own data without fullName field, then it'll use name instead.
  • Added a spider written in jQuery.
    • Usage: Go to the pre-course-selection page, execute the code in a console or inline javascript: link.
    • Will retrieve validation data automatically, no need to input by yourself.
    • Appends an extra field 'fullName' to the data, which denotes the human readable name of the course (for use of auto-complete).
    • When executing, it'll display a mini progress box in the middle of the page.
    • This will fix the issue #22 without using a new identifier.

2015-12-06

2015-12-05

  • 2016 draft timetable available.
  • Added load json feature, supports local/offline (i.e. protocol file://, not local server) use.
  • Fixed the /timetable.json relative path issue (was directing to the root directory).
  • Changed the ics import button location and color.

Known issues

  • After deleting a course located at a index other than the last index, if the current index column is all empty, it won't delete this unused index column, which will cause a redundant gap column, but it'll be re-indexed after refreshing.
  • When there is only one class for a certain group left, the choose button shouldn't be visible.

anutimetable's People

Contributors

alwinius avatar bishopofturkey avatar brendanmeyer avatar caitelatte avatar calmelb avatar catmanjan avatar catmanjanalt avatar emorf avatar harrisonoates avatar jackadamson avatar jjcrawford avatar lutra-fs avatar mdchia avatar oliverbalfour avatar paked avatar pl4nty avatar psmarshall avatar qxcv avatar samyex6 avatar talidemestre avatar tetris12367 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

Watchers

 avatar  avatar  avatar  avatar

anutimetable's Issues

Get a better data source

Current data is from a terrible web scraper, would be nice to have the source data.

Also the suffixes like "/ 001" look ugly and seem to be used as a workaround for unique naming. Would be good to return it to the format "Lecture A" instead of "Lecture01 /001"

Download as .ics broken in Safari

Received the following email:

After finalizing my timetable on Safari, clicking on the “Download as .ics” button results in this error message:
Safari can't open the page "data:blob:http://anutimetable.com/5fe43ace-ccc6-4284-823c-edc2678e5a8d”. The error is: “The operation couldn’t be completed. (kCFErrorDomainCFNetwork error –10.)” (kCFErrorDomainCFNetwork:-10)

I will have a look at this on the weekend, however this issue has existed since the start of the project so I suspect it will be another dead end.

Support for courses which offer classes on different weeks

This is an unlikely one since it would be a major change to the data source and scraper. Comment from Stalkerspace:

I like the alternative ANU timetable builder, however I can't seem to view the weeks that classes are on or off. Is there some extra function to do this, or should I dig through the ics file?

.ics file generated cannot be read by Calendar for Mac

Received an email

I used Firefox and it was able to successfully download an ics file, but the ics file cannot be imported into the Calendar app for Mac. I tried several times but it still can't be imported nor read by the Cal app.

Table not refreshing properly

Empty cells appear when tutorials which clash with others are selected, when the width of the column is reduced when all clashes in a day are removed, disfiguring the table. Can be fixed with a page refresh.

Times displayed should be responsive to classes added

Some classes start at 7am (laws2244)

This is a problem since the earliest time shown is 8am, but at the same time, adding more hours will make the rest of site harder to use

Ideally, the only times should show the minimum amount of hours required to show the whole timetable for that user

Course not found error

When entering COMP4630, I get the error 'course not found'. But the lecture times for this course are up on the official ANU timetable.

Tutorials are broken again

For example, see SCOM1001, if you select one tutorial it does not get rid of the rest.

This may be due to an error in the data itself, or the scraper.

two glitches found in anutimetable.com

For COMP3420 three lectures, you are only able to choose one of them( if you choose one the rest of them will disappear like choosing tutorials)

And COMP2100 Lab is 1 hour long not 2 hours.

btw: anutimetable.com is 1000 times better than the timetable system provided by ANU

Show classes in the current semester only

From email:

When building a timetable with math1013, it seems to pick up the lecture times for the current semester and the previous semester. MATH1013 (and MATH1014) are run in both semesters.

Drop down filtering should be smarter

For example, if I type in "com" I don't get any COMP courses, and when I type in "comp" only 3 of the courses are COMP courses.

Ideally the filtering would assume that the user is typing a course code at first, if they type a space or anything that does not match the form /(^[A-Za-z]{1,4}\d{0,4})/gm then assume they are typing the name of the course rather than the code.

Courses in the dropdown list should be simplified

For example "ANTH8006_S1 Social Analysis & Community Politics (Advanced)"

Should display the the user as "ANTH8006 - Social Analysis & Community Politics (Advanced)"

The actual value may need to be stored elsewhere to assist with mapping the selected value to the data

Can /data/timetable.json be removed?

Not sure if /data/timetable.json is being used at all now with the updated data method, ideally we should just delete it as it is a large file (an attack vector for DDoS)

Remove the Load data from .json button

With the new scraper working great, people shouldn't need to load their own JSON

The button should be removed as it will just confuse non-tech savvy users

Scraper misses some courses for some reason

For example ENGN3230 is missing from the list, but available in the ANU system

Need to investigate:

  • Any throttling ANU may be enforcing
  • What happens to the scraper when a 200 response error page comes back from ANU

choose button visibility problem

When there is only one class for a certain group left, the choose button shouldn't be visible.
The structure now does not store how many equivalent classes a group has, need to deal with this.

[Solved] Issue with the course tutorial selection

Two entries for an identical tutorial don't necessary have the same id.

E.g.:

{"info": "Workshop01/ 006", "name": "SCOM1001", "hour": 11, "id": 2784, "location": "Green Couch Room", "day": "fri"},
{"info": "Workshop01/ 006", "name": "SCOM1001", "hour": 12, "id": 2785, "location": "Green Couch Room", "day": "fri"},

Which will cause an issue of treating these two as different classes.
Therefore I added another identifier fgroup (item.name + item.info) as a comparing element.

Table border spacing

Do you think the table will look better after adding border-space?

.table {
    border-collapse: separate;
    border-spacing: 2px;
}

Project: V2

The semester has already started people already got their basic timetable figured out so there's no point of adding stuff piece by piece, V2 aims to migrate to the angularJS framework and the bunch of bugs & improvements.
Updates: #50 #60 #64 #69 #78
Possible updates: #65 #83 #84 Mobile-friendly

Welcome to post any ideas/solutions.

Scrape improvements

Currently scraping timetable off-campus is ridiculously slow, will need to improve it by batching.

Auto class selector

If a course has too many tutorials to choose from, the timetable will look nasty and difficult to decide.
So I'm planning to add a feature which will give you the best solution.

This selector only gives solutions that don't have collision on tutorials, which means lectures can have the same timeslot with tutorials.

Data discrepancy

Hi Jan,

I've been poking around with the ANU Timetable Builder for a couple days and I just noticed an incident where the data on the timetable does not match up with that provided by the university. I'm not sure what the cause of it is yet but thought I'd alert you ASAP.

I observed that with ECON1101, there are three lessons displaying the info of "Lecture1 / 1" on anutimetable.com where two of these are actually supposed to read "Lecture2 / 2" and "Lecture3 / 2" respectively, according to the data at http://timetabling.anu.edu.au/sws2017/

I figure that it's probable that similar discrepancies exist for other courses.

The main problem with this is that it entirely throws a spanner in the 'choosing' of lessons because these lessons are inaccurately grouped together.

I noticed that when iterating through every element in timetableData["ECON1101"] and logging each lesson info, the dud "Lecture1 / 1" lessons were not even included in the data set (ie. only the two Monday lectures, one Tuesday lecture, and Thursday morning lectures were logged). I don't fully understand the implementation of the timetable or how they could be missing from timetableData["ECON1101"] and yet still displayed on the timetable so perhaps this part of my investigation is a red herring.

tl;dr I've attached an image of the discrepancy

Cheers,

discrepant data

Add "Timetable current as of" note

If your web scraper is run manually, it can be easy for it to get out of date if they do updates without you noticing (all the time). @bshlgrs had this problem last year and got an email from ANU Timetabling when they noticed his was out of date. It'll also solve the issue of when you haven't updated your information when a new semester begins. :)

It's not something I can add myself without figuring out your data sources or there'd be a PR attached. :)

"Large Group Teaching" aren't choosable

Received the following email:

Whilst I was making my timetable I noticed some options didn’t have the ‘choose’ feature despite them being duplicates. This is the case for the BIOL1008 Large Group Teaching and all the STAT1008 lectures.

Make web scraper adapt to form changes

Every time ANU modifies the initial form the web scraper POST data is invalidated - if the scraper could scrape this data from the form and then pass it into subsequent requests it would not require so much human intervention.

Cells leaking into the wrong columns

I've noticed one semi-regular problem with some events leaking over into the wrong day columns:
tablebug

Seems very particular to the order that I add my courses, though. I tried adding the same courses in a different order and I didn't get the above bug but instead got the following, also problematic result:

tablebug2

(PS I've been playing around with the timetabler for a few days and I'm absolutely loving it. I've been trying to implement a few of my own improvements locally that may or may not come through. Y'all are doing great work!)

All times are off by 1 hour

All times on courses (That I've seen: ENGN1217 ENGN1218 COMP1730 MATH1014) are displayed 1 hour earlier on the timetable.

Change the way saving works

I think people would prefer something that automatically saved when they added a course - Clear should also clear local storage and cookies.

After that's done the Save and Flush features can be removed. Also the instructions at the bottom can be removed since it should be simple enough with just the two buttons.

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.