GSOC09 dashboard project

img/wiki_up/ls2_dashboard_ui.jpg

Aim of the project is to create a widget-based customisable dashboard for LimeSurvey2 administrators, allowing them to get an overview of any information inside LimeSurvey2. The widgets, from which the dashboard is constructed from, will be customizable, interactive, reusable and have a consistent design.

-=Widgets for LimeSurvey 2!=-

{cookie}

= Implementation Ideas=

Paradigms
The widget UI will be based on the following paradigms:
 * Display information concisely and cleanly
 * Dynamic content - allow sorting of tables, display extra information in mouse tooltips etc.
 * Multi-content capable, i.e. be able to switch between related content within one widget, using AJAX (see below)
 * Minimal "chrome": each widget has a title, control box, a first-level navigation, second-level navigation and optionally a third-level *navigation, giving the user a powerful ways to navigate information without too much interface clutter (see mockup).
 * remember which information it has been displaying last time
 * work uniformly in major browsers (IE6+, FF2+, Safari 3+, Chrome, Opera 9+)

Implementation notes
Some ideas and notes about the implementation:
 * In the MVC pattern, the Widget will be a Model, with a View implementation that display different modes of the widgets (not different views!), i.e. most likely the settings mode and the display mode. This basic view will also draw the chrome. Each widget will thus be built using this Base View.
 * Each specific widget then subclasses the base Widget model, specifying the navigation links and other widget-specific options
 * Each of these links then displays content that corresponds to a LimeSurvey View, e.g. "display all surveys" View etc. Access is automatically controlled by the ACL. By clicking these links, the widget will request them using AJAX.
 * Content, that will be displayed by the widget might need certain pre-processing, hence WidgetAdapters will be created to "mash" retrieved information from a View into widget-friendly format. (Alternatively, each Model could provide certain Views specially designed for display in widgets)
 * The widget provides interface to interact with information, e.g. filter them or display extra information on demand. WidgetAdapters here will act the other way, converting these actions into URL requests and processing the result.

=NAU Diagram (Not A UML Diagram)=



=Implementation Description=

Note: Despite the diagram above, implementation details are likely to change during the development stage.

Widget Base Class
Widget base class is the Model-View-Controller trio, that implements the widget behaviour and data storage. Two tables will be created: Widgets for keeping track of individual widgets existing inside the system and WidgetTypes the different widget types available in the system.

Dashboard Class
Dashboard acts as a container for the widgets, retrieving and managing them.

=Action Plan=

Outline
Main deliverables:
 * Context-free dashboard (do not depend on the current page - admin's dashboard)
 * Context-sensitive dashboard (widget display depends on the current view)
 * Implement widgets for administration and survey management
 * Integration with other modules (e.g. statistics)
 * External dashboard, for placing widgets outside LimeSurvey

Milestones
More detailed plan for coding. More coding will be done during in the second half of GSOC, due to study constraints in the first half.

Testing and documentation will be done throughout the development.

Development Log
News and updates on development of this feature are recorded on GSOC Dashboard Project Development Log. Production timeline is logged on ohloh

=Links=
 * Original proposal
 * First (Basic) Prototype