GSOC09 dashboard project

From LimeSurvey Manual


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!=-


Implementation Ideas


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


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


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.

Date (approx) Milestone
31th May Complete a basic skeleton framework loading dashboards and widgets
7th June Implement few basic widgets, as replacement for the current Admin page
14th June Context-sensitive dashboard
21th June Skinning, cross-browser
28th June **EXAMS**
5th July Implementing widgets, wrap up scripts and code for presentation
Date (approx) Milestone
12th July Implementing widgets
19th July Widget 'back-side': widget and dashboard options, customization; External Dashboard
26th July Develop External dashboards and widgets
2th August Integration with other modules (Statistics)
9th August Integration/doing the odd bits :)
16th August Wrap up

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