pl4nty / anutimetable

Timetable builder for the Australian National University
https://timetable.cssa.club
Creative Commons Attribution Share Alike 4.0 International
22 stars 9 forks source link

Assuming events only have one location #409

Open pl4nty opened 6 months ago

pl4nty commented 6 months ago

Original title: artv3033 location

Room was listed incorrectly

Category: Issue Contact: u6080485@anu.edu.au

Originally submitted via the Microsoft Form

jthvai commented 6 months ago

This is not a datasource discrepancy issue - the data matches.

ARTV3033 has three rooms listed on ANU's timetable (RSSS 5.72, RSSS 6.68, SRWB 3.02), but only one of them has been displayed here. @pl4nty are we assuming time slots only have one room? Oh boy we sure are.

jthvai commented 6 months ago

The root issue is in the scraper, here. We assume that cells[7] (the Location table cell) only has one a tag, and that that contains the location. Below is the Location cell for ARTV3033 - I'd be willing to bet it's not the only course with multiple a tags in Location.

<td class=" ">
  <a href="http://www.anu.edu.au/maps#show=123279" target="_blank" class="ui-link">
    RSSS meeting Rm 5.72
  </a>,
  <a href="http://www.anu.edu.au/maps#show=123279" target="_blank" class="ui-link">
    RSSS Meeting Room 6.68
  </a>,
  <a href="http://www.anu.edu.au/maps#show=11367" target="_blank" class="ui-link">
    SRWB 3.02
  </a> 
  on campus
</td>
jthvai commented 6 months ago

I think we can just provide Google Maps links for the first href and dump and concat the rest of the plaintext in the cell. For a rewrite in the future though, it'd probably be better to implement proper support for multiple GMaps links.

jthvai commented 1 month ago

As discussed in person, a solution:

when clicking on the location string of events with more than one location[^1], a secondary window with a list of locations (linked to an external maps service) should open.

[^1]: Events with only one location should probably be kept as they are now, with the link leading directly to a maps service.