#summary Tracks progress for the GSoC 2011 project, GUI Overhaul (Fronted and Administration Interfaces)

<wiki:toc max_depth="3" />


= Introduction =

This page will track progress of the GSoC 2011 project, GUI Overhaul (Fronted and Administration Interfaces).
----

= Details =

The first tasks will be gathering some requirements from Melange administration. We have gathered following requirements from Carol:
 * Enhance administration dashboard
 * Withdraw/accept students from administration dashboard, even after the students with projects has been announced.
 * Make the regular dashboard more usable both in how the list requested and rendered

I also came up with following additional ideas to enhance Melange:
 * Adding breadcrumb. See Jacob Nielsen's article on how [http://www.useit.com/alertbox/breadcrumbs.html breadcrumb navigation increasingly useful].
 * Adding Cluster Map for program administrator. With this feature, program administrator can see all participants location in a single map or even get information/profile for a participant by clicking at the marker.
 * Upload handler for organization's logo. Currently, organizations need to provide a link to theirs logo's url.

----

= Iconic Dashboard Architecture =

Iconic dashboard basically is a chunk of template, or a Django view that will be rendered as a partial HTML. Specifically, the view will be rendered as a collection of links that either nested (link to another block/div in the same page) or linked to another page. Iconic dashboard consists of:
 * Django view (app/soc/views/dashboard.py). Classes in this view are not supposed to be instantiated directly, where each class acts as a base class. To implement iconic dashboard at least one derived class must be created.
 * Djano template (app/soc/templates/v2/soc/dashboard/*)

Lets say you want a GSoC view named dummy_dashboard (which is in app/soc/modules/gsoc/views/dummy_dashboard.py) implements iconic dashboard. First you need to import the base class of dashboard:

<code language="python">
...
from soc.views.dashboard import Dashboard
from soc.views.dashboard import DashboardUserActions
...
</code>

If the dummy_dashboard needs to render list component (such as in the participant dashboard), then Component class must be imported too.

<code language="python">
...
from soc.views.dashboard import Dashboard
from soc.views.dashboard import DashboardUserActions
...
</code>

Given use cases of GSoC program below on how to alter the dashboard will give you an understanding how the dashboard works.

<code language="python">
...
from soc.views.dashboard import Component
from soc.views.dashboard import Dashboard
from soc.views.dashboard import DashboardUserActions
...
</code>


== Iconic Dashboard Use Case in Admin Dashboard (GSoC) ==


== Iconic Dashboard Use Case in Participant Dashboard (GSoC) ==

----

= Meetings and Agendas =

== May 10, 2011 ==

=== My result reported in this meeting: ===
Not yet

=== Meeting notes, copying from Leo's note: ===
 * Set up and run an online GAE instance before Thursday with your "View" from the first week.
 * Write a blog post about it (and other work you've done) before next Monday so it can be reviewed before our conference call.
 * Create a wiki page on Melange wiki for recording the progress of your project.
 * Plan a meeting with your mentor and add notes to your OWN project wiki page.

=== My plan for next week: ===

 * I've set a live instance at http://akeda-melange.appspot.com
 * Started writing wiki page to track my project's progress
 * I'm planning to refactor melange.map.js to be more generic. As Mario has said the current status of melange.map.js functionalities is not supposed to be. It only provides map to organization home page. Other pages, such as profile and read only profile, have their own js files which, basically, have common usage of Google Maps API. The refactored melange.map.js should handle all maps functionalities, including my proposed function for MarkerClusterer.
 * Upload and crop features for org logo.
----

== May 16, 2011 ==

=== My result reported in this meeting: ===
 * I am working to make melange.map.js more generic, so it can be used by profile page as well, or maybe other pages that need to render maps.
 * I am also working to add breadcrumb and highlighted mainmenu in currently visited page

=== Meeting notes: ===
Copying from Lennie's note:
Daniel and Akeda will meet with Carol on Wednesday using Skype to brainstorm about their project.

=== My plan for next week: ===
 * Submit my code for breadcrumb functionalities to get any feedback
 * Prepare talking with Carols about her needs
----

== May 18, 2011 (Requirement gathering) ==

=== My result reported in this meeting: ===
Not yet

=== Meeting notes: ===
 * If we're login as a host and view the dashboard (My Dashboard), we will see the page overloaded by Jqgrid list. Carol wants the list is grouped. Akeda has suggestion to group the list by tabs.
 * When students with project announced, there might be a student consider himself ineligible to participate. If Carol rejects that student, there will be available slot to accept another student that already rejected. Carol needs this feature to withdraw / accept student in her dashboard.
 * Carol needs the Admin dashboard to be enhanced.

=== My plan for next week: ===
 * Create mockups for the Dashbord page with tabs to group the list
 * Create mockups for the withdraw/accept students manually after students announced period
 * I'm planning to give the mockups by Saturday so everyone can give feedbacks
 * I will implement this feature after everyone agree with the mockups.
----

== May 26, 2011 (Requirement gathering) ==

=== My result reported in this meeting: ===
Not yet

=== Meeting notes: ===
 * Akeda is working on redesigning dashboard. Lennie reminded him that there are two dashboards that Carol is faced with. One allows administrative functionality like sending out reminder emails while the other represents not only Carol's role as a Organization Admin for GOSPO but also gives more information than the regular dashboards for other users. The focus should be on improving the usability and functionalities that are exposed to Carol in her daily job as Program Administrator.

=== My plan for next week: ===
 * Contact Carol and Daniel to discuss the requirements briefly
----

== May 30, 2011 (Requirement gathering) ==

=== My result reported in this meeting: ===
See the notes at Google Wave, https://wave.google.com/wave/waveref/googlewave.com/w+mdcpD6vmC

=== Meeting notes: ===
 * Meeting was canceled. Notes recorded in Google Wave at https://wave.google.com/wave/waveref/googlewave.com/w+mdcpD6vmC

=== My plan for next week: ===
 * Give updated mockup and if possible with the implementation.
----

== Jun 06, 2011 (Toggleable list) ==

=== My result reported in this meeting: ===
See the notes at Google Wave, 
https://wave.google.com/wave/waveref/googlewave.com/w+P8uYzs7_C

=== Meeting notes: ===
 * Akeda is working on admin dashboard and regular dashboard's improvement. He will implement toggleable list and ask Mario questions/advice about the JS portion for list. The toggleable list is provided in a mockup at http://demo.gedex.web.id/melange_mockup/my-dashboard-toggleable.html
 * Notes recorded in Google Wave at https://wave.google.com/wave/waveref/googlewave.com/w+mdcpD6vmC

=== My plan for next week: ===
 * Implement toggleable list and start working on admin dashboard.
----

== Jun 13, 2011 (Toggleable list) ==

=== My result reported in this meeting: ===
I've posted the toggleable list patch to melange-soc-dev. The toggleable list is works by set the context of toggleable and collapse on component based class in app/soc/modules/gsoc/views/dashboard.py. If we set both toggleable and collapse to True, then the list wouldn't requested by the JS, but it updates the list_configurations variable with idx as its key. We still can make the list requested on the first load by ignoring toggleable and collapse context. With this approach, other list such as accecpted_orgs wouldn't affected.

=== Meeting notes: ===
 * Not yet

=== My plan for next week: ===
 * Not yet
----