- git clone https://github.com/dineshkumarrajaguru/interview-solution.git
- cd interview-solution/marketing-analytics-dashboard
- npm i
- ng s -o
NOTE: Clone this repository and build your application on this repository, then share it with me at the end of the process.
Our company wants to create a new product and make it available to our clients. The product will be a marketing analytics dashboard where the clients can see all of their marketing channels together along with their relevant metrics: spend, revenue, orders, etc.
In order to build the marketing analytics dashboard, the following has been provided:
- The design team has provided a high-fidelity mockup that Product wants to see turned into a functional prototype.
- The API team has provided response mockups from two API queries they are providing to the front-end.
- Layout Response: All configuration data required to build the layout of the dashboard
- Data Response: All data for each of the widgets
On the right-hand side of the design mockup there are names for each section.
The Mocked Data response is available in this repository here.
Each widget on the page is referenced in the layout response under the layout
property. the layout
property should be used to create the UI of all of the dashboard widgets.
fieldDefinitions
is a keyed object of all of the metrics and dimensions that are used throughout the dashboard. each definition includes:
label
: the display nameformat
: how the data should be formatted. options are none, currency, percenttype
: Determines if it is a 'number' field or a 'string' fieldaggFn
: used to determine if the metric should be "summed" or "averaged" in the total line in the tabledigitsInfo
: applies to number or currency formatted fields. See this for more info.
- Metrics Overview
- Metrics are grouped together. Each metric under the group has its own displayOrder that is used to determine how it should be displayed.
- The data for this is at
backendDataResponse.dataPoints
- Table
fields
: a list of objects, where each object contains a name of a field that should be shown for that column. the name points to the key in the data response- The data for this is at
backendDataResponse.dataSets[0]
- This must be built within Angular 13
- This must use typescript
- Use whatever you want to build the table
- The end result should be a functional Angular Application that can be run on localhost
You have 1 week from today for this challenge. Please reach out if you have any questions.