Skip to content
Indraneel Purohit edited this page Feb 12, 2014 · 6 revisions

Overview

Pull channels.json from server. This file will specify all urls absolutely. Cache keying will be done by the modules themselves. This way we eliminate the need to globally store a URL prefix. It will also contain the ordering of channels.

  {
    "channels": {
      "news": {"title": "News", "url": "https://rumobile.rutgers.edu/2/news.json"},
      "recreation": {
        "url": "https://rumobile.rutgers.edu/2/recreation.json", 
        "view": "Recreation"
      },
      ...
    },
    "order": {
      "New Brunswick": {
        "Undergraduate Student": ["bus", "maps", "news", ...]
        ...
      }
      ...
    }
  }

Channels

  • News.
  • Events.
  • Bus. Change: default screen is nearby stops and predictions.
  • Career Services.
  • Emergency Services. Change: show text of status, an EAP link below.
  • Feedback. Should probably change to be less shitty
  • Food. Change: show meals of nearest location, then list of other locations.
  • Places.
  • Recreation. Change: display hours of nearest location, then list of other locations.
  • Schedule of Classes. Probably no change.

Web shortcuts:

  • Housing
  • Libraries
  • myRutgers
  • eCollege
  • Alumni
  • Sakai
  • Student Life

Component / Shell interaction

Each component will have a delegate. This delegate will handle all component -> shell messages. All shell -> component communication will be handled by passing in a configuration dictionary to the class.

Components

  • Update. For handling update checking / prompting / etc
  • DTable. Dynamic table display that loads from JSON. Similar to FAQ. Will power news, emergency (index), career services, events, food. Change: can have custom rows that load from web or show hours etc
  • Bus. Handles all such bus things. Takes route config with pre-built stuff from server. Shouldn't need to build query URLs.
  • Hours. Displays a set of hours according to a particular format. UITableViewCell subclass (or MGBoxLineItem or whatever)
  • Recreation. Displays hours of nearest gym with other locations underneath.
  • Survey. Displays survey prompts and retains answers. Has the string templating functions we need to build titles etc. Places survey answers in NSUserDefaults
  • Feedback. Can probably pull this off the shelf. Otherwise same as current feedback. CTFeedback.
  • Places. Does places search, autocomplete etc.
  • Classes. Does SOC completion & display
  • KDTree. JSONKit deserialize.
  • Text. Displays static text using attributed text label.
  • Regex for fuzzy text search?
  • CAS pod. Handles all CAS related things. Gets a TGT / gets cookie set; potentially caches credentials

Classes

  • Menu. Draws the drawer on the left.
  • Channels. Handles channel launch requests from DTable etc. Basically anything that needs to connect to the outside of the app does so thru Channels. Channels will implement the delegate of each of the components above.

Dependencies

Extra To-dos

  • Awesome landing page for app. (current template for this is here)
  • Development blog (a project blog has been setup in a separate branch called gh-pages. the url can be found here)
  • FAQ Editor
  • Web Shortcuts editor
  • Web shortcuts from actual mobile website database

iOS Impl Details

Store app settings in NSUserDefaults.

  • Prefs (survey answers)
  • URL prefix
  • Last launch

Use AFNetworking directly, and NSURLCache to enforce caching.