14 June 2009

Notes on what needs to be done at the user interface level to share
tracks properly.

1. GBROWSE ACCOUNTS

1a. Use case 1 -- Signing into GBrowse

   Motivation: Currently when a user logs into gbrowse, he gets an anonymous
   cookie that provides access to his stored preferences and uploaded files.
   This means that he loses the information when moving to a different machine
   or after "cleaning" his cookies. This needs to be supplemented with a sign-in
   mechanism that identifies the user via a username and password.

   - When bringing up gbrowse, a "log in/create account" link appears 
     in the upper right corner of the screen.
   - User clicks on link -- a username/password box appears in dropdown fashion.
   - User enters username/password and optionally clicks on a "remember me 
     on this computer" checkbox.
   - User presses "submit" link.
       -  To CANCEL at any point, user presses "cancel" link.
   - Dropdown box disappears and is replaced by a "Logged in as
     <username>" message, and a "log out" link.
   - Screen is refreshed to show users custom settings and tracks.

   

1b. Use case 2 -- Signing out of GBrowse

   Motivation: On public computers, people will want to erase their tracks.

   - User presses "log out" link.
   - Screen refreshes to show anonymous page.

1c. Use case 3 -- Signing up for new GBrowse account

   Motivation: Users need a way to create new accounts for themselves.

   - User presses "log in/create account" link.
   - Username/password dropdown box appears. There is a "create new account"
     link inside it.
   - User presses "create new account".
   - Box expands to show user "first name (optional)", "last name
     (optional)", "email address (required)", "password (required)"
     and "confirm password (required)" links.
   - User fills out information and submits.
   - Confirmation appears telling user that an email message has been sent
     with confirmation code.
   - Within a few minutes, confirmation email appears in user's
     inbox. It contains a confirmation code link.
   - User clicks on link, which takes him to GBrowse, confirms account
     activation, and logs him in for the first time.

1d. Use case 4 -- User has forgotten his password

   Motivation: Users are human.

   - User presses "log in/create account" link.
   - Dropdown box appears. There is a "forgotten username/password" link
     inside it.
   - User clicks this link. Box expands to prompt user for his email address.
   - User fills in email address and presses submit. An email message with
     username and a newly-generated password appears.

1e. Use case 4 -- User wants to change his password

   Motivation: Good idea
   - User presses "log in/create account" link.
   - Dropdown box appears. There is a "change password" link
     inside it.
   - User clicks this link. Box expands to prompt user for old password,
     new password and confirm password.
   - User submits.

IMPLEMENTATION NOTES:

- Users should be identified in a MySQL database.
- Passwords should not be stored in the database in the clear, but
  instead be hashed using a salt plus a one-way hash algorithm.
- When users log in, the db should keep track of when the most recent
  login, so that admin can clear out old unused accounts.

2. UPLOADING TRACKS

INTRO: Logged-in users have access to long-term track storage and
configuration. Their tracks are stored as a series of configuration
files and databases. The databases are indexed file or mysql-based
databases, and not in-memory databases.

2a. Use case 5 -- User creates a new track

   Motivation: Users want to add their own custom tracks to the genome.

   - User presses "Manage custom tracks" button.
   - A new section called "My tracks" drops down. This section lists all
     previously-created custom tracks, along with track management
     controls, and has a link marked "New track".
   - User presses "New track" button.
   - Section expands to show two controls: a file upload field marked 
     "Upload data file", and a text box marked "View a shared track."
   - User presses the "Upload data file" field.
   - The upload data field is replaced by a spinning disk icon, and user is
     given the message that "Your data is being processed. You will receive 
     an email notification when it is ready for configuration."
   - When data processing is completed, a new entry for the uploaded data
     file appears in the section's track management listing.

2b. Use case 5 -- User configures a (new) track

   Motivation: After uploading a new file, GBrowse guesses at the track 
   configuration using a generic configuration. The user will want to
   customize this.

   - User presses the "Manage custom tracks" button. The track management
     section appears.
   - Each uploaded file appears as a line in the custom tracks listing, 
     accompanied by icons to manage the following functions "configure",
     "share" and "delete."
   - User presses the "configure" icon. This expands the box to show
     a series of controls to adjust the track configuration. The details
     of the track configuration need to be worked out, but should build
     on the work of WebGBrowse 
     (http://webgbrowse.cgb.indiana.edu/webgbrowse/cgi-bin/uploadData)
     and Sheldon McKay's track config templates (mckays@cshl.edu).
   - There are three commit controls: "cancel", "preview" and "save".
     The preview button updates the main gbrowse screen to show the effect
     of a change, but doesn't save the changes.
   - User presses "cancel" to leave the previous configuration intact, and
     "save" to permanently save the changes.

2c. Use case 6 -- User deletes a track

    Motivation: User wants to permanently remove an uploaded track.

   - User presses the "Manage custom tracks" button. The track management
     section appears.
   - Each uploaded file appears as a line in the custom tracks listing, 
     accompanied by icons to manage the following functions "configure",
     "share" and "delete."
   - User presses the "delete" icon. The track disappears in the main
     gbrowse screen is updated to reflect this fact.

2d. Use case 7 -- User shares a track

    Motivation: User wants to share a track with friends or with the
    public.

   - User presses the "Manage custom tracks" button. The track management
     section appears.
   - Each uploaded file appears as a line in the custom tracks listing, 
     accompanied by icons to manage the following functions "configure",
     "share" and "delete."
   - User presses the "share" icon. The section expands to show the
     following two controls:
         - a checkbox saying "make this track public".
	 - a textbox prompting user to enter email address of someone
	   to share the track with.
   - If user presses the checkbox, then the track becomes public. Other
     users can then search for it using the interface described later.
   - If user presses the "share this track with individuals" link, a textbox
     appears that prompts him to enter the email address of an individual to
     share the link with. User types an email address and presses a save3
     button (or types <enter>).
   - The email address converts to plain text, and a new text field appears
     to prompt for additional email addresses.
   - The system will send an email message to the designated user containing
     a link that allows him access to the track.

2e. Use case 8 -- User unshares a track

    Motivation: User wants to share a track with friends or with the
    public.

   - User presses the "Manage custom tracks" button. The track management
     section appears.
   - Each uploaded file appears as a line in the custom tracks listing, 
     accompanied by icons to manage the following functions "configure",
     "share" and "delete."
   - User presses the "share" icon.
   - User sees the list of people with whom the track is shared. Each email
     addresses has a "delete" icon next to it. User presses "delete" button.
   - To unshare a public track, user unselects the "make this track public"
     checkbox.

2f. Use case 9 -- Finding a public shared track

    Motivation: User wants to access a track that was uploaded by a
    different user. Anyone can access tracks marked public.

    - User presses the "Manage custom tracks" button.
    - The track management section appears (see use case 5). User presses
      the "New track" button.
    - Section expands to show the "Upload data file" and "Add a shared track"
      fields.
    - Next to the latter field is a "Search for public tracks" link. User
      presses it.
    - A text field appears. User types in search terms. User can search for
      following fields: 1) name or email address of the track owner; 2)
      track title (contents of its "key" configure option); 3) track 
      description (contents of its "citation" configure option).
    - User presses "search" button or presses <enter>. A checkbox list of 
      suggested matches appears. User checks the track(s) that he desires.
    - User presses the "submit" button to close the section and view shared
      tracks.

2g. Use case 10 -- Entering a public or private track by its URL

    Motivation: User enters the known URL of a public or private track.
    He will get the URL of a private track from the email that is generated
    when the track owner shares the track with him. A user can only get
    access to a private track if he is logged in under an authorized email
    address/account.

    - User presses the "Manage custom tracks" button.
    - The track management section appears (see use case 5). User presses
      the "New track" button.
    - Section expands to show the "Upload data file" and "Add a shared track"
      fields.
    - User pastes URL of a private track into the "Add a shared track" field.
    - User presses the "submit" button to close the section and view
      the shared track.

    Alternative scenarios

    - If user is not authorized to see this track, he is given an error
      message.

    - Instead of pasting the track URL into the field, user can simply click on 
      the link in the email that is sent him when the owner shares the track.

2h. Use case 11 -- Managing shared tracks

    Motivation: As shared tracks are added, a list of those tracks appears. User
    can delete them.

    - In the "Manage custom tracks" section, there is a "Other tracks" section
      in addition to the "My tracks" section. The "Other tracks" section lists
      each shared track that is being viewed, along with a "delete" icon.
    - User presses "delete" icon to remove shared track.
    - Shared track disappears from gbrowse main section.


      