Challenge Overview


1. Context


    Project Context

  • This is the second challenge in the project meant to add some additional features to a pre-existing visualization library called PivotTable.js.

    Challenge Context

    In the PREVIOUS challenge, the goal of this challenge was to modify/augment the functionality of the library called PivotTable.js to handle Multiple Aggregators in the UI (which does not exist in the original library, as can be seen in the discussion by the library Maintainer).

    In the last challenge, we managed to add MULTI-AGGREGATION support for Table-type renderers. In this challenge, the goal is to add support for the remaining types of renderers (as well as slightly improve the existing renderers). More details discussed below.


2. Challenge Details


    About PivotTable.js library

    This library is used to create pivot tables, which basically are easy to use and understand 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.

    Result of the Last Challenge

    The result of the last challenge can be found in the forum.

    New functionality to be added: Multiple Aggregates

    The PivotTable.js needs to be modified such that it can handle Multiple Aggregate data.

    Renderers to Cover

    The library should be implemented for the following kinds of renderers: https://prnt.sc/tuja8c
    . In this image, the renderers that have already been implemented in the last challenge have been shown within the RED BOX. In this challenge the remaining need to covered.

    Priority of Renderers to Cover

    Among the remaining renderers, the Line Chart and the 4 kinds of BAR Charts (horizontal bar, horizontal stacked bar, normal bar, stacked bar) are of very high priority, while the rest are of normal priority.
    So ideally, attempt the Line Chart first, then the Bar charts and finally the remaining.

    Improvement to the Already Implemented Renderers

    The list of required minor improvements to existing renderers will be made available in the forum shortly after the launch of the challenge. Those changes need to be implemented with slightly higher priority than normal.
    Ideally attempt to implement the Line and Bar charts, then attempt the improvements in the already implemented renderers, and finally attempt the implementation of the remaining new renderers.

    Note - To understand the particulars of the previous challenge, it is highly recommended to the contestants to go through its Challenge specification.

    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 does not have multiple aggregations support, and the goal of previous challenge was to start adding this capability to some renderers. The goal of this challenge is to complete that job.

    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.

    Make it Jupyter-ready

    The library should run on Jupyter. Modifying a UI based Javascript library to be deployed on Jupyter is relatively straightforward, and to assist with it, here's the Jupyter version of the PivotTable library.

    Note that the above library is the actual library (without the changes that were added in the last challenge). Hence it should not be used as the starting point. It should just be used as a reference, if required, to see how the pure Javascript PivotTable library can be converted to its Jupyter version.

    It's pretty straightforward, as it basically requires some packaging, and not much programming.

3. Expected Outcome


    The expected outcome of this challenge is: a modified version of PivotTable.js with support for Multiple Aggregations for all the renderers. Currently, support from only five renderers have been implemented in the first challenge.

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.


Final Submission Guidelines


The submission should include:

  • Code containing the enhanced version of the PivotTable.js library, with all renderers implemented - with all of its original capabilities intact.
  • Detailed documentation
  • Some demonstrations to verify the ability to handle fields aggregations.
  • A video demonstrating the desired new capabilities added. When demonstrating, please prefer demonstrated on a Jupyter Notebook

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30138097