# Installation

create python virtual env (you might choose another name than 'myenv'):

    python3 -m venv myenv

aktivate this venv (to be repeated for each session):

    source myenv/bin/activate

clone seweb git repository (token is valid for one year only):

    git clone https://<token>@gitlab.psi.ch/samenv/seweb.git
    cd seweb

switch to your development branch:

    git switch daniel

instal needed packages (goes into myenv)

    pip3 install -r requirements.txt

# First Run

start demo frappy server

    frappy-server cryo,test -p 5000

this terminal should stay open, now open another terminal and type:

    source myenv/activate
    cd seweb

start dummy webserver, connects with above frappy server

    ./dummy-webserver port=8888 instrument=test hostport=localhost:5000

start webclient in browser with http://localhost:8888/

# git

show branches:

    git branch

switch to your branch, if not yet there:

    git switch daniel

## Aenderungen pushen

make a commit for each batch of coherent code changes:

    git add <new files>
    git commit -a -m "replace icons by nicer ones"

If the part starting by '-m' is omitted, the default editor opens,
this is helpful for create an extended commit message.
Keep the following format: first line summary, empty 2nd line,
then more lines may follow. Keep witdh within about 72 chars.

    git push

## Merge changes from other developers

Assume there are some changes in branch 'master' you want to
include in your branch.
If you have uncommitted chanes you do not want to commit yet,
you may save this changes temporarely on a stack:

    git stash

Change to master branch and pull the current version:

    git switch master
    git pull

Take over these changes in your branch:

    git switch daniel
    git rebase

If conflicts arise, read carefully the instructions and follow them.

After this, in case you did the git stash command above, you want get back your current modifications now:

    git stash pop


# Specifications

## Swiping

Remove swiper completely. Marek and me decied this after the meeting.
The benefit is not worth the effort to solve problems.

Problems:

- swiping is used in graphics for something else
- swiping is used in web pages also for going back in history


## Tile Layout

4 types of blocks/tiles:
- graphics
- moduleblock (list of modules with main values),
  (goodie: foldable groups, may need some changes in the server code)
- parblock (editable list of parameters) (goodie: foldable groups)
- logblock (log messages) placed in right bottom quarter

console is no longer used!

(x) means a button in the top right corner

for narrow windows < 2w:

- show moduleblock by default
- (x) on graphics: go to moduleblock
- (x) on modules: go to graphics
- clicking on moduleblock: open parblock
- (x) on parblock: go to moduleblock
- logblock is shown by clicking on right bottom icon
  (not available with graphics) and hidden with (x)

for broader windows:

- show graphics + moduleblock by default
- (x) not shown on graphics by default
- (x) on modules: full screen graphics
- click on a module row (or a 'details' icon): add parblock,
  do not overwrite moduleblock when window is broad enough (width > 3.5w)
- (x) on parblock (close parblock and reveal moduleblock if hidden)
- logblock is shown by clicking on right bottom icon and hidden with (x) 

## moduleblocks

on each row:
- colored indicator depending on status
  (yellow: busy, orange: warn, red: error)
- red also when value is in error
- edit icon for changing the target parameter of the module,
  if available
- 'details' icon for open the corresponding parblock
  (instead or in addittion to link on name)

## parblocks

orange when parameter is in error (update message with error
instead of value: show a little icon with hover revealing error text)

## logging

use logging feature of SECoP - needs some work on the server (Markus)

## resizing window

- hide parameters when size < 3.5w
- hide graphics when size  < 2w
- show graphics when size > 2w
- it is not needed to show the parblock again when width is increased 

## nicer icons

- replace the (x) in modules by an icon for the graphics (e.g. a sine wave)
- replcae the (x) on graphics by an icon for the modules
