Git Product home page Git Product logo

hag-timetable-app's People

Contributors

greenopposite avatar redstonemedia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

hag-timetable-app's Issues

Allow in app updates

Describe the feature you'd like

Allow the user to download updates for the app and install them, rather than just sending them to the downloads page.
The installation can be handled by the App Installer package

Describe why you think your feature is important

This will make it easier for users to update the App and will encourage some people who are still on old versions to update.

Tests

Describe the feature you'd like

Automated Tests for the App.

Describe why you think your feature is important

Helpful for finding bugs.

Add an intro screen

I created a design for an intro screen, which would be displayed the first time you open the app:

Selecting your class:

Klasse

Selecting a Theme:

Theme

Configuring a custom Theme:

Theme โ€“ Custom

Adding courses:

Kurse

@RedstoneMedia is there anything you would change?

App displays drop out, but should display subsitution

Describe the bug and what you did in the app when the bug happened
The App displays that, the lesson is not taking place, however the substitution table, shows that there is a substitution taking place in the same hour, with no set replacement.
Expected behaviour
The App should display that, the lesson is substituted.
Screenshots
Screenshot 2021-05-10 112055
image

Smartphone:

  • Device: HUAWEI P30 ELE-L29
  • Android version: EMUI 11.0.0

App does not always display previous substitutions

Describe the bug and what you did in the app when the bug happened
The app does not display previous substitutions of the current week (#6), if connected to the internet.

Expected behaviour
The app should always display the previous subsitutions of the week.

Smartphone:

  • Device: Huawei P30 ELE-L29
  • Android version: 10

Add smaller binaries without Google ml kit as an option

Describe the feature you'd like

Add a release flavor, that does not include the huge gogle_ml_kit dependency.
This will require the use of a custom build tool or a separate branch, as flutter does not currently provide the ability to swap out the pubspec.yaml at compile time (flutter/flutter#46979).

Describe why you think your feature is important

Some people might not want to use the automatic course scan feature, or might think that the additional ~50 MB are not worth it.
Some potential users might be on a limited data plan. This makes the option to get the app without expending so much bandwidth valid.

Fix IServ substitutions

Describe the bug and what you did in the app when the bug happened
The IServ substitutions table layout has changed, this causes unexpected substitutions to be shown or the substitution not being parsed at all.

Expected behaviour
The new tables get parsed correctly

Screenshots
image

Additional context
The previous table headers:

Stunde
Fach
Vertretung
Raum
statt Fach
statt Lehrer
statt Raum
Text
Entfall

App freezes when loading or reloading

Describe the bug and what you did in the app when the bug happened
The app completely freezes while the app is loading the timetable, substitution and calendar data. This is only true in the newer versions of the App even though there were no modifications in the loading code (maybe some dependency changed)

Expected behaviour
The app should not freeze, especially when reloading.
This error should not happen, since all the loading is done in asyncInit which is not awaited and should thus also not freeze the app (but it does).

Smartphone:

  • Device: HUAWEI P30 ELE-L29
  • Android version: 10

Visually indicating holidays

Describe the feature you'd like

Visually indicating holidays (Only German holidays).
The normal substitutions should still apply, since the holiday calendar data might not always be correct.

Describe why you think your feature is important

It's useful to know if you might not have school in advance, because substitutions only apply for the next day.

App does not load correctly

Describe the bug and what you did in the app when the bug happened
I opened the app, and it didn't load the timetable.

Expected behaviour
It should load the timetable.

Screenshots
WhatsApp Image 2021-01-26 at 10 16 47

Smartphone:

  • Device: Pocophone f1
  • Android version: 10

Additional context
[ERROR:flutter/lib/ui/ui_dart_state.cc(184)] Unhandled Exception: FormatException: Invalid UTF-8 byte (at offset 12789) fillTimeTable (package:stundenplan/parsing/parse_timetable.dart:22:35)
@RedstoneMedia

Please don't forget to add a severity label (Low, Medium or High)
โœ”

Notifications are duplicated

Describe the bug and what you did in the app when the bug happened
Sometimes notifications are repeated multiple times (sometimes you will get one every time the background services fetches data, even if there is nothing new)

Expected behaviour
Notifications should only appear one time and only if something changes (substitutions)

Smartphone:

  • Device: Huawei P30 ELE-L29
  • Android version: 10

Course names are not editable in course select list widget in the intro screen

Describe the bug and what you did in the app when the bug happened
In the intro screen the course select list items are not selectable (The keyboard opens, but then closes fast again).
If however another text input was touched on the current screen before, everything you type will go into the previous text field and not into the one you clicked on.

This probably means that the text controllers of the list are all pointing to the last active text controller.
However, this makes no sense and I can't see why it works in the setup page when the arguments to the widget are exactly the same.
This means that we could have a serious memory issue, that will be very hard to fix.

Expected behaviour
The courses in the course select list should be editable and not have such a weird behaviour.

Smartphone:

  • Device: HUAWEI P30
  • Android version: 10

Add current hour highlight

Describe the feature you'd like

Highlight the current hour that falls into the start and end time, like it is done WeekdayGridObject.

Describe why you think your feature is important

We display the current day but not the current hour that is not ideal.
Also @GreenOpposite needs to do something and my brain is to stupid to deal with the date math in dart (that last part might be the real reason I created this issue).

Add snapshot button for debugging plan issues

Describe the feature you'd like

A snapshot button, which when clicked saves the current subsiution and time table to disk.
(For debug builds)

Describe why you think your feature is important

This feature would allow better debuging of the app. Since without it substiution related bugs have to be resolved, while the substiution is still active, since they are only temporary.

Add a wiki

Describe the feature you'd like

Add a Wiki to this GitHub Repo
This should include:

  • How to Install the App
  • The Main Page (How the layout works, How to access the settings)
  • The Settings Page (How to add and remove courses, How to add/remove/switch profiles, What other options do)
  • Sub Settings Pages (IServ Login options, Calendar options)
  • FAQ (Common issues a user might have and how to fix them, Common features and how to activate them)
  • Add a link to the wiki in the app

Before considering writing a wiki entry on the settings page, it should be considered to implement #15 first.

Describe why you think your feature is important

It's important, to help a user, if they get confused or want to do something specific, but don't know how.
It also serves as a feature list

Add local push notifications

Describe the feature you'd like

Add local push notification that notify the user, if their personal timetable has been changed.
This could be done by creating a PeriodicWorkRequest that checks the timetable every couple of minutes (15)
and then checks if there are any relevant changes. This can be done with the https://pub.dev/packages/workmanager lib
If yes the background service can create a local notification.

Describe why you think your feature is important

It is useful to get notified when your timetable changes, because this means that the user does not have to frequently check the app every couple of minutes or hours to see if there are any changes.

The App is broken

Describe the bug and what you did in the app when the bug happened
The Timetable parsing fails.

Expected behaviour
It shouldn't.

Screenshots
no.

Smartphone:

  • Device: Unimportant
  • Android version: Unimportant

Additional context
The website probably changed. There is no "Nr." in headerColumnStringIndexMap; [parse_timetable.dart:116] causing the length to be null.

Please don't forget to add a severity label (Low, Medium or High)
โœ”

Schulmanager should only be active for the class that the IServ login user has

Describe the bug and what you did in the app when the bug happened
Select a Profile, in a different grade, which happens to have a subject, that also exists in the grade, of the IServ login user. This subject must then have a substitution in the Schulmanger.
This causes the substitution from the IServ login user grade to appear in a complete different grade, because the subject names are the same in both profiles.

Expected behavior
No substitution shows up from the Schulmanger in another grades profile.

Course auto completion

Describe the feature you'd like us to implement

Add course auto completion, when adding new courses or editing them in the course list.

Describe why you think your feature is important

Adding course auto completion would help new users to set up their courses, when they don't know the exact names that their courses have.

Display substitution kind (if it's not a dropout) in the detail view

Describe the feature you'd like

Display the new substitution kind ("Art") in the substitution detail view, if the cell is not dropped.
One could also display the "(Le.) nach" value, if one figures out what the abbreviation is supposed to mean. It has to be noted that this value should only be displayed, if it is not the same as the substitution kind value (which it often is).

Describe why you think your feature is important

A new update on the Units substitution table on IServ now includes a Text value for the substitution kind, instead of a boolean: isDropped.
This could be valuable information to the user and should thus be displayed.

Ignore case for course names

Describe the bug
When inputting courses into the course that exist, the app does not display them in the list, when the case of the name is of.
This is especially annoying as there is apparently no consistency in the capitalization, some course names are fully uppercase others are fully lowercase and some only capitalize the first letter. This makes it way to hard for the user to input their course.

Expected behaviour
The course names should not be case-sensitive. That also holds true for the course auto completion, which is also case-sensitive, but shouldn't be.

Smartphone:

  • Device: HUAWEI P30
  • Android version: EMUI 11.0.0

Screenshots
Naming inconsistency also exists in the timetable itself (CH1 and ch1) :
image

Additional context
We wouldn't have this problem if the school would be a little more consistent, but this basically goes for the entire schools online infrastructure and this app only exist because of the frustrations with the current system. It is sad that students need to make an app for something as important as a timetable, because the school is unable to implement something proper. But oh well ๐Ÿคท

Grab and somehow display iserv calender data via calDAV

Describe the feature you'd like

Displaying information for a day (Maybe a modal when clicking on the day header).
This data can be grabbed from IServ at https://{iserv_domain}/caldav/{username}/home/
There is already dart package to communicate with a caldav server : https://pub.dev/packages/caldav_client

This should be an optional feature, since the user would have to put in their IServ username and password.
Which also means that we should probaly not store this information like we store normal data, but use https://pub.dev/packages/flutter_secure_storage instead.

Re think and replace parts of the settings page

Describe the feature you'd like

I would like to propose to change the current settings page.
We cannot however just replace the settings page with the intro page.
As it would remove the ability to select/ add/remove profiles.

Describe why you think your feature is important

Since we already added intro pages, it doesn't make sense to have effectively the same functionally in two places.
(Except the profiles feature).

Display substitution data source

Describe the feature you'd like

Display which data source (IServ, Schulmanager) the substitution is from, when opening the info dialog of a substitution.

Describe why you think your feature is important

This is useful information to know, since the "Schulmanager" and IServ data source differ in reliability and update time. So knowing where the data comes from makes it easier for the user to assess, if the data can be relied upon.
It also makes it easier to debug and report errors.

Support AGs

Describe the feature you'd like

The app should support adding AGs to the course list and displaying them and their potential substitutions.
This information is already stored in the special "AG" class on IServ only.

Describe why you think your feature is important

There are numerous people that have AGs, while they might know when they have them, since they chose them themselves.
They might not know if they are substituted. Providing this information in the App is trivial and comes with a great benefit for those people.

Schulmanager substitutions don't show up, but dropouts do

Describe the bug and what you did in the app when the bug happened
The Schulmanager integration does not appear to be reporting substitutions. It currently only reports dropouts.
Expected behaviour
The integration should report all kinds of changes, not just dropouts.

Add option to automaticly extract course list from image

Describe the feature you'd like

It would be nice to have a feature that allows the user to take an image of a timetable printed on paper and extracts the course names from that image.

This feature could be displayed in the course list intro screen with a button that instructs the user to take an image of their timetable paper.

Describe why you think your feature is important

This is feature would help new users setup their correct courses faster (Just take a photo and your course list is now correct), because every student usually gets a printed timetable when their timetable changes substantially.

Save substitutions for whole week

Describe the feature you'd like

Save substitutions for whole week.

Describe why you think your feature is important

The Feature is important, since it is helpful to know what substitutions you had yesterday for example, since this is not currently possible.

App displays subsitons from previous week

Describe the bug and what you did in the app when the bug happened
The app displays the substitutions of the previous week.

Expected behaviour
The app substitution cache resets the days, which are older than a week, thus not displaying stale data.

Screenshots
signal-2021-07-01-142322

Smartphone:

  • Device: HUAWEI P30 ELE-L29
  • Android version: EMUI 11.0.0

Schulmanger Integration does not work

Describe the bug and what you did in the app when the bug happened
Data is not loaded from the Schulmanger, even when logged into IServ.

Expected behaviour
It should work.

Keep iserv logins to an absolute limit

Describe the feature you'd like

Store IServ session cookies on the device (In secure storage) and only login, when the old session expired.

Describe why you think your feature is important

Recent changes in the IServ login process made it quite slow (and more unreliable).
These changes also affect our apps loading times. Storing session cookies on the device, instead of login in every single time would probably significantly improve performance.

Iserv login does not work annymore

Describe the bug and what you did in the app when the bug happened
Due to changes in the IServ web page, the login process is not functional any more.

Expected behaviour
The login process works and the Callander and Schulmanger integrations keep on working.

Substiution plan does not parse

Describe the bug and what you did in the app when the bug happened
They made a change again and now the substitution parsers fails.
This causes the app to load indefinitely.

Expected behaviour
It does not load indefinitely and does not fail to parse the substitution plan because of "Vertr-Text-2".

Smartphone:

  • Device: All
  • Android version: *

Last two classes don't get displayed when opening the app

Describe the bug and what you did in the app when the bug happened
When opening the app, no 10-11 hour are displayed, even though the class is set to be a full height school grade (Q1)
This issue goes away after opening the settings and clicking on done.

Expected behaviour
The subjects in the 10-11 hours get displayed when opening the app initially.

Smartphone:

  • Device: HUAWEI P30
  • Android version: EMUI 11.0.0

Too long substitutions break the layout

Describe the bug and what you did in the app when the bug happened
Substitutions that are too long break the layout, forcing containers to grow, causing the layout to break in the main plan and the detail view.

Expected behaviour
Instead of trying to display the entire substitution the App should shorten the text, so that the layout does not break.
Alternative the substitution font size could be reduced.

Screenshots

Smartphone:

  • Device: HUAWEI P30 ELE-L29
  • Android version: 10 | EMUI 11.0.0

Add null safety

Describe the feature you'd like

Add null safety.

Describe why you think your feature is important

The compiler keeps yelling at me.

Schulmanager Integration

Describe the feature you'd like

Add the ability to pull substitution data from Schulmanger and display it in the app.

Additionally, it would be possible to relay substitution data to others via Bluetooth, however this would need to be an opt-in mechanism, since this allows for others to find out your subjects without your consent. Annother problem is, that the raw data from the Schulmanager app is not verifiable, which means that an attacker could fabricate wrong substitutions without any way for the peers to know that the data is wrong.

Describe why you think your feature is important

This is useful, since the Schulmanager allows for live substitution updates, while the current approach only allows for daily updates.
The old approach is still critical, since not everyone has access to a Schulmanger account or doesn't want to authenticate in any way.

Save file data in one file instead of saving them in 2

Wouldn't it make sense, if we saved the file data in one file instead of 2. That means we can get rid of some duplicate code in loadProfileManagerAndThemeFromFiles and might even be able to refactor shared state, so we can use it for both file and local storage saving.

Is there a reason you implemented it this way ? @GreenOpposite
I would be happy to do the refactoring (I also need some of that juicy green on my profile ๐ŸŸฉ)

Refreshing duplicates some elements to other days

Describe the bug and what you did in the app when the bug happened

In some cases when refreshing, lessons get duplicated to other days.
This does not happen when opening the app for the first time or reloading via the options.

To Reproduce:
Use class 11d without any courses

Expected behaviour

The lessons don't get duplicated to other days.

Screenshots

Before:

After:

Smartphone:

  • Device: HUAWEI P30 ELE-L29
  • Android version: EMUI 1.0.0

Change App Icon to something more original

Describe the feature you'd like

Change the App Icon to something that is more original than a modified version of the WebUntis Icon.

Describe why you think your feature is important

This is important in order to be able to increase the user base of the app,
because the current Icon could be considered a copyright violation and that would look bad.

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.