Challenge Overview
1. Context
Project Context
- This is the first challenge in the project meant to add some additional features to a pre-existing visualization library called PivotTable.js.
Challenge Context
Within the project context mentioned above, the goal of this challenge is to modify/augment the functionality of the library called PivotTable.js to handle Multiple Aggregators in the UI.
Currently this functionality is not supported in the library, as can be seen in the discussion by the library Maintainer. Your task in the challenge is basically to add that capability.
2. Challenge Details
About PivotTable.js library
- This library is used to create pivot tables, which basically are easy to use UI components to display in an easy to understand manner. Here's a video describing the library and its uses for a quick introduction.
This library can be integrated into any HTML Code or platforms like Jupyter Notebook (a browser based Notebook) to display the data using HTML and Javascript. To understand the library well, refer to its repository: https://github.com/nicolaskruchten/pivottable.
New functionality to be added: Multiple Aggregates
The PivotTable.js needs to be modified such that it can handle Multiple Aggregate data. The output would look something like: https://imgur.com/fI636rq. To better understand what Multiple aggregates mean, please refer to resources available online. One such resource to get a basic idea is: https://www.sqlservercentral.com/forums/topic/multiple-aggregates-using-pivot. Note that this example is regarding SQL (which has nothing to do with this challenge), but the concept of Multiple Aggregates described here will be similar.Problems Users Face Currently
PivotTable.js is used by the client's users for quick and easy visualizations of data in Jupyter notebooks. Currently, client's users have to use tools like Plotly and code the visualization using Plotly syntax, including writing code for layout, graphs etc. This includes writing cumbersome Plot.ly syntax, which slows down quick explorations significantly. The client needs a solution that does not use Plot.ly, and that allows its users to quickly explore data with multiple aggregations without any coding on the users' part.
The client basically want to enable their users to carry out quick exploration without writing any code. The pivotable.js works fine for most scenarios. However, it doesn’t have multiple aggregations support, and the goal of this challenge is add that capability, as discussed above.Merging PivotTable.js library with the provided functionality
To make things a bit easier, the goal of this challenge can be seen as to merge functionality contained in https://gist.github.com/stephanvd/7246890 with the https://github.com/nicolaskruchten/pivottable.js library.
The contestants might have to do additional work in addition to the provided code, but this probably will be the bulk of the required code.Note on the use of open source libraries
Open source is acceptable in general but the client wants to approve specific libraries if they need to be used in the solution. So please confirm in the forum.
3. Expected Outcome
- The expected outcome of this challenge is: a modified version of PivotTable.js with support for Multiple Aggregations.
4. Scorecard Aid
Judging Criteria
- The review of this challenge will be done mostly following the standard development scorecard.
- Major - Here, the issues that are central to the working of the entire functionality will be addressed. Anything that can make the solution inadequate or dysfunctional will be mentioned here
- Minor - In the minor section, issues that are considerable but not major enough to break the solution will be mentioned.
- Note from the client about the judging criteria - "The solution should be able to show multiple fields aggregations at the same time in a single chart. For example, I want to show average of salary as one column and sum of children as another column for names in row. Similar to any typical visualization package."
Final Submission Guidelines
The submission should include:
- Code containing the enhanced version of the PivotTable.js library - with all of its original capabilities intact + the new capability that needs to be implemented.
- Detailed documentation
- Some demonstrations to verify the ability to handle fields aggregations.
- A video demonstrating the desired new capability. When demonstrating, please prefer demonstrated on a Jupyter Notebook - though note that demonstrating on Jupyter is not mandatory, but recommended.