Code Monkey home page Code Monkey logo

yacsandroid's Introduction

YACSAndroid

Build Status Code Climate Code Climate Code Climate FOSSA Status

License

FOSSA Status

yacsandroid's People

Contributors

robinm8 avatar bad-science avatar fossabot avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

Forkers

fossabot

yacsandroid's Issues

Create Sections View

A sections view should comply to Google's Material Design specification and fetch all of a course's sections from the YACS API.

Each section item shows a section number, CRN, professor(s), ratio of remaining seats, and times when the section meets.

YACS data will be populated into the course item RecyclerView using the following API version 5 endpoints in asynchronous calls:

  • /sections.json?show_periods=true?course_id=###

Create Instrumental Tests

We should have instrumental tests to test the app for quality assurance of each build.

Travis CI will be used alongside Espresso to carry out the testing.

YACSService Fetched Wrong Courses, Cached Department ID Changed

While testing the YACSService and caching system, I noticed the cached department_ids differed from the department_ids on the live API. Chaos ensued. I wondered if the YACS API offered a way to get courses in a more reliable way. So, I sent a request to courses.json using a querystring department_code=CSCI instead of using a querystring with department_id. To my surprise, the request worked for all department codes. So, I modifed YACSService to use department_code when fetching courses, cleared the YACS Android cache, and tested the result. As it turns out, everything works again!

ViewPager Header Stuck After Course View Transition

This is a header animation bug that occurs when swapping out the SchoolsAdapter to CoursesAdapter of the RecyclerView.

This is caused because the MaterialViewPager loses its observer of the scrolled position in SchoolsAdapter when the adapters are swapped out in the RecyclerView.

This might be fixable by forcing the RecyclerView to scroll back to the top after the user taps on a department. Then, wait for the scroll animation to end and swap out the adapters afterwards.

Design Back Button Behavior

Back Button Description

The device back button should operate as a "go back" button through the history of the RecyclerView under the "Explore" tab of the MainActivity ViewPager.

Back Button Expected Bahavior

  • If the MaterialDrawer exists and it is open
    • Then close the MaterialDrawer
  • Else If the MainActivity ViewPager is on the "Schedule" tab
    • Move MainActivity ViewPager to the "Explore" tab
  • Else If the MainActivity ViewPager is on the "Explore" tab
    • If the RecyclerView is showing Courses View
      • If any course item expanded
        • Then collapse all expanded course items
      • Else
        • Switch the RecyclerView adapter to show Departments View
    • If the 'RecyclerView' is showing Departments View
      • Then exit the app

Create Courses View

A courses view should comply to Google's Material Design specification and fetch all of a department's courses from the YACS API.

YACS data will be populated into the RecyclerView using the following API version 5 endpoints in asynchronous calls:

either

  • /courses.json?search="query"

or

  • /courses.json?department_code="AAAA"

Create YACS API Java Interface

An API to Java interface should be able to run queries and convert JSON responses to Java objects asynchronously.

This interface will send requests to API version 5 endpoints:

  • /schools.json?show_departments
  • /courses.json?search={query}
  • /courses.json?department_id={department_id}
  • /sections.json?course_id={course_id}&show_periods

Create Persistent Settings Activity

A settings activity should comply with Google's Material Design specification and display configurable settings to the user.

Concept settings:

  • Set YACS API URL by college (names in a list)

Create Schedules View

A schedules view should comply to Google's Material Design specification and fetch all schedules of a set of selected course sections from the YACS API.

Each schedule item shows its section number, professor(s), ratio of seats taken to total seats, CRN, and a timetable per weekday (when a section meets).

YACS data will be populated into the schedule item RecyclerView using the following API version 5 endpoint in asynchronous calls:

  • /schedules.json?show_periods=true&section_ids=###,###, ...

Extend YACS API Java Interface

This interface will be extended to send requests to API version 5 endpoint:

  • /schedules.json?show_periods=true&section_ids=###,###, ...

Create App Intro

An app intro should comply with Google's material design specification and introduce YACS to the user. A animation flow will be used to transition between slides.

The number of slides necessary and content is up for discussion.

Concept:
A skip button should be available to tap for direct redirection to the main app screen.

The first slide should welcome the user to YACS, show the YACS icon, a short description.

The second slide should inform the user that YACS is able to save schedules to Google Calendar and needs to ask permission to do so. The app should ask the user for permission to write to their Google Calendar when the user taps or swipes for the next slide.
No matter if the user grants the permission or not, the user should be able to continue to the third slide.

The third slide should let the user select their (YACS supported) college and tell the user that this setting is configurable in the app settings activity. This step is required to set the YACS API domain on first run.

The forth slide should be a conclusion slide while congratulating the user and allowing the user to continue to the main app screen.

Create Departments RecyclerView

A RecyclerView should comply to Google's Material Design specification and list all school departments fetched from the YACS API.

YACS data will be populated into the RecyclerView using the following API version 5 endpoint in an asynchronous call:

  • /schools.json?show_departments

Fix Retrofit Models

It turned out the Gson JSON parser did not parse the json into my previous models correctly.

Create Main Activity ViewPager

A ViewPager should comply to Google's Material Design specification and display the YACS logo, background, and the departments ListView.

Develop Course Expand/Collapse Behavior

Currently, the expand button in course_view_item is just a placeholder.

Its expected behaviour when tapped:

  • state: "expand"
    • Extend the truncated course description
    • Enable the SectionsView from disabled state
    • Populate the SectionsView with the course's sections.
  • state: "collapse"
    • Retract the truncated course description
    • Disable the SectionsView from enabled state

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.