Challenge Overview

Project Overview

LightSpeed is an Excel based VBA application and in this project we are converting this application to a web based app to make it much easier to use. The web app will be an HTML5 app with offline capabilities.

Competition Task Overview

For this challenge, we need to enhance the search feature of the app. Please see details below.

Note we do not have an architecture for this challenge so asking questions early in the forum is important!

Search

Please check the UI prototype we posted in the forum, basically we are replacing the left search bar with two expandable sections and adding a new search / filter area to the top of the table view. Note the prototype is not perfect yet but you're supposed to work with that to make it work.

From the UI perspective, we changed two areas of the UI:

Here are the details of the requirements:

Search

  • When user clicks on the search textbox, a popup should show up with a list of all column names of the current view
  • User can start typing into the textbox and the list will shrink based on user input
  • At the end user either pick an item from the list or press enter to confirm his input
  • If user picks an item from the list or the entered text matches a column, the app will navigate the user to that column in the view. This includes data in the current row that is not visible horizontally, but is "loaded" in your view.
  • If the entered text doesn't match any column, it means user is searching for this text inside the page. The app should highlight all matches in the view (just like browser search), and now user can use up/down arrows to go to the matches.

Filter

When you click the text box under Filter tab, it shows a dropdown with 2 sections of fields:

  • Quick Search: this will include the current list of values from the left sidebar dropdown + the new keyword described below. The current list of values will work the same as the current sidebar in terms of filtering, the keyword field will filter by keyword described below.
  • All: this will include all column headers from all views (no matter whether that view is visible or not), we need to prefix column names with view names. And for any column that supports a range of values (example: a numeric field), we allow them to input two values: min and max.
  • When user starts typing, the list of fields shrinks to match the entered keyword
  • If the field is not a "Range" field: once user confirms the field, we show the list of possible values just like aws search. User can also start typing to filter the list of values. Pressing enter will complete the search term but user can also click "+" to add another value to the search term (so this is multi-value search combined using "OR")
  • If the field is a "Range" field, we need to handle it like a function with 2 parameters, example: Cost(min,max). Cursor moves to the first parameter (min) so user can start typing to enter a value and then user can use tab to go to the next parameter (max), once user enters two parameters and hits enter, we complete this search term
  • Filtered results should be updated as soon as a search term is entered / updated
  • All these search terms are combined with "AND" to filter results
  • Search should be done for all data (including data outside of the current view)
  • Users can also save current filter using the "disk" icon or load filters from saved filters.

Keywords

We need to update the pop up to allow users to add keywords or remove keywords.

We'll have a new section below the "NGS:RUBI" textbox with a title named "Keywords", then below the title we'll have an auto complete text box dropdown (like the country input on login form). Users can pick a value from the list or enter a value not in the list to add a keyword to the project. New keywords should be automatically saved so other users / projects can use the new keywords as well.

Added keywords should be shown below the auto complete text box, each keyword will look like a button but with a "x" that can be used to remove it, something like the control below (without the lines at the top and bottom):

Sidebar

Sidebar will have two expandable sections:

  • Saved Filters: as you can see in the prototype, you can expand this and click a node to load the clicked filter into the filter text box, this is a quick way to use filters to filter results.
  • Keywords: this is missing from the prototype but it will look identical to Saved Filters. Clicking a keyword will load that keyword into the filter text box to filter results.

General

  • Make sure the new features work in offline mode as well!
  • The prototype is not perfect, but please try your best to make these function properly. We'll also provide prototype updates during the challenge.

Bonuses

Since we'll make some more changes to the prototype while this challenge is going on. The 1st place winner will be paid $600 bonus for addressing these changes and merging the code with another challenge, 2nd place winner will get $200 bonus for addressing these changes.

Technologies

Use the same technologies currently being used in the app.

Testing

If you make any changes to the backend code, you must make sure all unit tests still work, it's NOT acceptable to remove any existing unit tests from our code base.

Browsers

Offline mode must work on IE 10+, latest version of Firefox / Chrome / Safari.

Timeline

This challenge has shorter submission / screening / review / appeals timeline, make sure you don't miss any deadlines.

Technology Overview

  • Java
  • Postgres
  • Hibernate
  • Tomcat
  • HTML5
  • Spring MVC
  • AngularJS
  • CSS

Documentation Provided

Register to download documents from challenge forum.



Final Submission Guidelines

Submission Deliverables

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials 

Below is an overview of the deliverables:

  • Full code that covers all requirements
  • A complete and detailed deployment document explaining how to deploy the application including configuration information.
  • The maven build script to compile code and run unit tests.

Final Submission

For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30052478