The way the main page is served (where you can select the instrument you want to interact with) has not been decided yet, even if its code is in this repository.

### Initialization

For a selected instrument, there is a single HTML file that holds the application : the `SEAWebClient.html` file, which is served as the main route. It includes all the JS files needed, meaning all the JS files located in the `client/jsFiles` folder excepted `SeaWebClientStart.js`, plus the external librairies (`client/externalFiles/`) and the components (`client/components/`).

The entry point is the `SEAWebClientMain.js`, which has a `window.onload` function and which initiates all the content of the page, plus the responsitivity.

### About updating graphics

- When the server is pushing data, the newly received data is appened to the current curves (on livemode).
- When zooming in the x direction, when the zoom is complete (for e.g. meaning that there are no longer enough mouse wheel step in a certain range of time), then the resolution is computed, the client asks for the data within the new viewing window with the given resolution, and then sets (overwrites) the data for the curves.

### About livemode

A user is in livemode when the "now" date is in the viewing window. When the last point gets more recent than the right most value, the viewing window is shrinked, keeping the left mose value.

Every plain minute, all the curves are synchronized. For the curve that have not receive any new data, their last known point is retreived at the "now" date.


### External libraries

| Name                       | Version | Website                                |
| -------------------------- | ------- | -------------------------------------- |
| AlertifyJS                 | v1.8.0  | http://alertifyjs.com                  |
| ChartJS                    | v2.9.4  | https://www.chartjs.org                |
| \+ Zoom plugin for ChartJS | v0.7.3  | https://www.chartjs.org                |
| EventSource                | unknown | https://github.com/Yaffle/EventSource/ |
| Hammer.JS                  | v2.0.7  | http://hammerjs.github.io/             |
| Swipper                    | v4.5.0  | http://www.idangero.us/swiper/         |
