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!=-
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+)
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)
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 acts as a container for the widgets, retrieving and managing them.
- 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.
|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|
|5th July||Implementing widgets, wrap up scripts and code for presentation|
|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.