# [graph](https://git.tek.govt.hu/dowerx/graph)
## Moduláris grafikon megjelenítő

Dinamikusan betöltött könyvtárok segítségével adható meg a megjelenített adat.\
Példaként egy HTTP szerver plugint készítettem hozzá.

![demo gif](doc/demo.gif)

## Fordítás
A projekt a CMake buildrendszert használja és Debian 12 (Bookworm) rendszeren volt tesztelve.
Nem tartalmaz platformspecifikus kódot. POSIX kompatibilis környezetben elméletileg lefordítható.

Fuggőségei:
- C++ 20 vagy nagyobb
- Qt 6
- [flags-cpp](https://git.tek.govt.hu/dowerx/flags-cpp), C++ parancssori paraméter feldolgozó könyvtár
- [rum](https://git.tek.govt.hu/dowerx/rum), C++ web API könyvtár
- [nlohmann::json](https://github.com/nlohmann/json), C++ JSON könyvtár

Fordítási parancsok:
```sh
mkdir -p build && cd build
cmake .. && make -j $(nproc)
```

Elkészült fájlok:
- *server*: a program grafikus része, a pluginok betöltője
- *plugins/libhttp.so*: HTTP szerver plugin

## Használat
- *server* futtatása: `./server`, a megadott paramétereket a betöltött pluginek később megkapják
- *Ctrl+A*: grafikon hozzáadása
- *Ctrl+L*: plugin betöltése
- *grafikonra jobbklikk*
  - *Clear*: grafikon tartalmának törlése
  - *Remove*: grafikon törélse
- *pluginra duplaklikk*: plugin eltávolítása

## HTTP plugin
A plugin a kapott paraméterek felhasználva indít egy HTTP szervert és az arra érkezett kérések alapján ad adatokat a grafikonokhoz.
```sh
$ ./server --help
Help:
        --help: print help
        --port: http port
        --workers: number of worker threads
```

## Példa
A *test* mappában található egy Python script, ez használható a HTTP plugin tesztelésére:
```sh
$ ./test.py --help                        
usage: test.py [-h] [-t {sine,cosine,sine_array,star}] [-n NUM] [-d DELAY] -c CHART -s SERIES [-p PORT] [-a ADDRESS]

options:
  -h, --help            show this help message and exit
  -t {sine,cosine,sine_array,star}
                        test type
  -n NUM                sin_array size/iteration
  -d DELAY              delay between iteration
  -c CHART              chart id
  -s SERIES             series name
  -p PORT               server port
  -a ADDRESS            server address
```