Giter Site home page Giter Site logo

jmatth / dextools Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 21.8 MB

Unofficial frontend for Double Exposure conventions

Home Page: https://dextools.app

License: MIT License

Rust 26.23% JavaScript 1.50% HTML 0.93% Vue 41.10% TypeScript 28.39% Shell 1.85%
web-frontend scraper convention schedules

dextools's Introduction

Dextools

Dextools is a collection of tools for parsing and displaying convention schedules from Double Exposure. It currently consists of two components:

  1. A scraper that takes in the schedule's HTML and produces a JSON file.
  2. A web frontend for displaying the JSON with convenient search features, a calendar view for building your own personal schedule for the convention, and export options for producing an ics file or email text to sign up for your selected events.

Dextools is currently hosted at dextools.app.

Technology

The scraper is written in Rust with various crates for parsing HTML and working with times, etc.

The web frontend is written in Vue.js with Vuex and Vuetify.

dextools's People

Contributors

dependabot[bot] avatar jmatth avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

beckyscrypto

dextools's Issues

Add import/export URLs

It would be convenient to be able to create a url that, when opened on other devices, displayed agenda and offered the option to import it. Ideally this feature would:

  • Offer the option to export to URL or QR code
  • Display the exported schedule in the calendar view when the URL is opened
  • Display some prominent warning or error out if the provided URL does not correspond to the current convention

Add dark mode toggle

Vuetify 2 added the ability to dynamically switch between light and dark modes. It would be nice to allow users to toggle between the two, and ideally cache the setting to browser local storage.

Make EventsList work with keyboard navigation

The EventsList component is currently implemented using a virtual scroller. This allows the filter operations to run at an acceptable speed but causes some issues with keyboard navigation:

  1. Navigation order does not follow the visual order of elements in the list.
  2. Navigating to the end of the list does not cause new elements to render, so the entire list cannot be traversed.

Decouple scraper output and UI config

The scraper shouldn't have to know about every config parameter to the UI. For a quick fix it's probably good enough to have the scraper read in a "template" json file and insert it's event array into a provided key in that file. It would perhaps be better to have two completely separate files in the frontend but that would make automated deploys a bit trickier.

Events crossing day boundaries display incorrectly

In the calendar view, if an event starts on one day but ends the following day, only the portion on the first day will display. The section of the event that should run from midnight to the end on the second day just doesn't render.

Add feedback link

There should be a configurable link that allows users to submit anonymous feedback, probably through a google form or typeform.

Make JSON output sorted

Changing to use a template config had the unintended side effect of making the keys in the output get written in a weird order. It should be sorted in some logical way to make it more human readable.

Sort events chronologically

The schedule is currently stored and displayed in the order it appears on the site, which doesn’t directly correspond to the order in which events take place during the con. Not sure if we should sort the list before writing it out in the scraper or just preprocess it in the frontend. Probably the second one.

Show popup for new version

Instead of just hard refreshing the page automatically. This seems to cause a redirect loop in browsers with certain anti-tracking features.

Generate and link text-only schedule

Double Exposure currently provides text-only versions of the schedule on request via email. It should be easy enough generate our own version either in the scraper or dynamically on the website and add it to the site navigation.

Make the calendar view work with screen readers

Currently the calendar view is annoying to step through with a screen reader and it's not evident that events can be clicked on to open the event info dialog. Unclear whether this would require upstream changes.

Remove @types/node from dependencies

Something broke upstream so a specific version of this package was added to package.json to fix the build. Whenever the relevant upstream packages get fixed this should be removed.

Fix events that end at midnight in the calendar view

Currently if an event ends at midnight it will appear at the very top of the next day. This should really be fixed upstream in vuetify but can be done at this level by telling the component that such events end 1 second before midnight and overriding the event div contents to not reflect that change.

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.