Highcharts + Laravel reports website enhancement

Job ID: 32573918

Budget: $3,000 – $5,000 USD

The FeedingEvaluator (FE) is an existing web application designed to provide insights into the data generated by data-collecting servers in several salmon farms. The FE gathers all data generated on a daily basis and aggregates it into customized reports and graphs which serve to evaluate the performance of each farm.
While the platform is already operational, it lacks a series of features requested by clients.
Once these requirements are fulfilled we seek to continue on future developments.

# Technical background
The FE consists of
* Laravel 7, laravel-admin 1.8
* Bootstrap 4,
* Highcharts/Highstock,
* MySQL (MariaDB),
* Linux (Ubuntu) server.

# General requirements
Any code should comply with PSR standards 1, 4, 5 and 12.
Code language is English even though the main interface language is Spanish. (Translations will be supplied)
No CDN usage or off-site code loading.

# Project Milestones
## UIX improvements
### Fix Graphs table
The page containing the graph table should not have any scrollbars, only the table body if necessary.
The table column and row headers should always be clearly visible and readable. (preferably CSS-only solution)
Only one series label may be visible at any time.

### Cages selector
By default select all cages
Reflect actual cages distribution

### Series selector
Group series by types (e.g. feeding, environment, other)

## Quick-access
### Graph series bookmarks
A user should be able to generate a quick-access to save a graph configuration for easy reuse at a different time and/or farm.

### Calendar quick access
Also the calendar should have quick access to frequently used ranges, for example
- Last 3/7 days
- Since same day of previous month
- Since start of data

The range selection should be done within a single calendar to be able to drag-select a range.

## Dynamic Graph Zoom
At present in order to switch from a low detail level (daily) to a high level (minute) it is necessary to load a new graph. The dynamic graph zoom allows users to zoom-in using the mouse to higher details like year, month, week, day, minute and second, without leaving the current view. Each zoom will dynamically load the higher detail data from the server as needed.

## New graph Series Types
At current only line and area graphs are supported in FE. However this is not sufficient for all applications.

### Direction Hooks
To display wind and water currents a direction hook is needed to visualize its direction and magnitude. This is possible in a newer version of Highcharts/Highstock

### Stacked Bar-chart
Show a series of values as stacked bars which compose a total:

### Bar-chart with Standard Deviation
Include standard deviation bars with bar charts

### Time-based series
Allow creation of series that have a time or duration as y-axis value, for example duration of a feeding interval, start and end of feeding each day.

### 3D graphs
Allow generating interactive 3D graphs that will either show days or cages on the z-Axis. It also provides a control to change the view/perspective of the graph for easier visual interpretation.

## Custom Notes
At present the user can visualise certain predefined notes as generated by the farms’ operators. This change will allow the user of the web application to add and customise notes and markers with different visibility within his company (private, hierarchical, public).

## Filter and Group by Notes
Allow the user to only include days in the graph evaluation which feature a specified list or set of note types.
It should also be possible to create graphs with grouped data according to one of the filtered conditions, for example one monthly feeding graph by cage, operator or event.
Also it should be possible to filter by certain value conditions, for example all days with >500W/m² solar radiation
Related categories: PHP MySQL Laravel Highcharts