Key Information

Register
Submit
The challenge is finished.

Challenge Overview

This is the second in a series of data structure Topcoder challenges relating to the timeline feature of the Estimates application. The app allows users to create an estimate for an upcoming project by defining the number of weeks, resources(people), and hours per week per resource.  Enhance the provided Estimates application data structure from resources being stored in a JSON blob to individual resource records.  Database insert, update, delete, and query functions are provided to make your task easier! The goal of refactoring is to allow more detailed reporting from our Salesforce system.

Background: We have an existing HTML/Bootstrap/AngularJS application, "Estimates", that allows the user to create an Estimate for a project they are scoping out.  It allows the user to enter Scope line items and build a Timeline using a resource list and rate-card.  The backend data storage used is Salesforce.com but we have implemented a library that intercepts all REST API calls and directs them to Firebase.com.

Review the previous assemby challenge: CMC Estimates - Timeline Refactor - Weeks

Video walk-through of functionality before the previous assembly challenge: Timeline data model walk-through video.

Video of requirements: http://screencast.com/t/e1sb7JTQtB

Requirements Text:

CRUD:

You should use the provided CRUD functions for querying, inserting, updating, deleting records. You may NOT directly modify firebase data using firebase calls as this app will have a Salesforce.com backend implemented later. You may modify the CRUD methods as needed as long as they still use the same underlying SalesforceService calls.

Data Format:

As seen in the video the fields on the new CMC_Estimate_Resource__c object have slightly different names. Here is a mapping between the old names and the new names for this object:  google spreadsheet

Additional Requirements:

split the resources json to multiple objects

adding resources will now have an Order__c field to determine the order displayed.

deleting resources - should delete all resource_weeks for that resource.  Handle the order__c field correctly (resources must be displayed in the order they are added).

deleting a week - should delete the resource_weeks for that week

modifying the rate card - should update all the resource's Rate values

Overview data - based on pricing service - will need to be modified to read the new data format correctly

cloning of records does NOT need to clone the new object records - we will handle on the server side at a later date.

How should feature XYZ work?

There is a great deal of functionality that is not specifically detailed above (pricing service related calculations).  You can assume that each of these items should function as they currently function in the application provided.  I suggest you keep an original copy (unchanged) of the app provided separately from the version with your changes for reference to how certain features should work.  For example, you might wonder how the "Fixed Fee Services Costs" value on the Summary page is calculated; just inspect the value in the old version of the app and compare against your changes on your app to make sure they are the same result!  Remember, this challenge is a refactor and should not remove any features of the old app.  Perhaps you find a bug in the old app and have questions about whether you should fix it?  Ask in the forums and I will provide details on how the feature should work.

What should I test to make sure it all works?

  • Timeline Tab
    • View Page
      • should show the number of resources in the order added on the "add/edit resource" page.
      • resources should have the correct rate displayed even if it is changed from the RateCard page.
      • Deleting resources should work
      • Using the sliders should function as adding hours just as it currently works. 
      • inline editing of hours on the view page should work as it currently does.
    • Add/Edit Resource
      • Adding a resource should work
      • Editing a resource should work
      • Selecting number of hours should work
    • Ratecard edit page
      • If the ratecard rates are changed and there are already resources added to the timeline, Each resource needs to be updated with the new Rate and Cost values.
  • Summary Tab
    • A great number of calculations on this page utilize the pricing service.  The pricing service needs to be updated to work with the new data model.  Please verify the below values are working:
      • T&M
        • Services Fees
        • Services Costs
        • Services Margin
      • Fixed Fee
        • Services Fees
        • Services Costs
        • Fixed Fee Cost Uplift
        • Services Uplifted Costs
        • Services Margin

 



Final Submission Guidelines

Setup:

Follow the included Readme.md file at the root of the included files.

Coding Guidelines:

Follow the coding-guidlines.md file at the root of the included files.

Solution is preferred to use Angular.js/javascript wherever possible and Twitter Bootstrap for styling elements.  Other libraries not already included in the client/src/wm/cmc-estimates/index.html file should request to be used via the forum.

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30045299