Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First iteration of a PyNM GUI for easy feature extraction and visualization #361

Open
wants to merge 35 commits into
base: main
Choose a base branch
from

Conversation

toni-neurosc
Copy link
Collaborator

This PR intends to track the progress of the GUI branch, comment on the current state of this part of the project, perhaps propose features or changes, and add review comments to the code if necessary.

The progress of the GUI is also tracked in issue #351

toni-neurosc and others added 30 commits September 19, 2024 18:34
* add routing and dummy pages

* added toolbar, changed styling

* updated channels gui

* Add multiple simultaneous websocket connections

* Fix backend dependencies

* Detect if app running in WebView

* Fix some websocket issues

* update deps

* Unify TitleBar and AppToolbar into AppBar, use UserAgent to detect PyWebView

* Add App Info modal dialog when clicking on Title

* Fix handling of keyboard interrupt events, add parameter to make PyWebView optional

* hide resize handle for normal browsers

* Delete test data, add test folder to .gitignore

* Remove npm lock file, add to .gitignore

* Delete ThemedApp

* Delete and ignore uv.lock

* Undo reset.css changes

---------

Co-authored-by: Samed Rouven Vossberg <57455873+SamedVossberg@users.noreply.github.com>
* nm channels connected to backend and fix in backend

* debugging backend connection, adding POST to Channels

* add fastAPI call for LSL

* add LSL Stream search

* add LSL Stream setup

* Remove hardcoded backend port from websocket store and add ws proxy to vite

* Divide file and source selection into separate components and routes

* add offline Stream setup and modularize SourceSelectionSettings

* minor change: replace navigate with react-router Link

* add test file for LSL stream setup

* minor: fix routes

* Add FileBrowser component and API endpoints to access local computer file system

* debug backend and chanels

* LSLOfflineStream: run in a separate subprocess, add blocking and non-blocking modes, add context manager

* Made channels component scrollable

* Update StreamSelector, change some components to MUI, add immer to sessionStore

* Add jsconfig and Eslint jsdoc plugin

* fix option to setup LSL stream

* set port to 50001

* Filter out React 19 warnings for MUI components

* Fix JSDoc linting style

* - Update to Zustand 5, add utility functions to create stores with middleware and devtools
- Make sessionStore and uiStore persistent
- Refactor Channels page
- Add FileManager class
- Start adding JSDoc documentation and configs
- Add TitledBox component
- Remove mock data generation
- Fix backend hot-reloading (hack)
- Add dev parameter to AppManager (enables hot reloading)
- Other fixes and changes

---------

Co-authored-by: Samed Rouven Vossberg <57455873+SamedVossberg@users.noreply.github.com>
Co-authored-by: Toni M. Brotons <10654467+toni-neurosc@users.noreply.github.com>
elizaveta-terek and others added 5 commits September 22, 2024 14:14
* Set up development environment

* Add PyWebView window API, create basic app UI, add Zustand stores, add SocketIO, add PyPlot graphing

* Changed accordion to collapsible box

* Create drag and drop sortable list

* Add switches and conditional texfields to preprocessing section, fixed DnD

* fixed switches to work for all levels of settings

* Made preprocessing section display options based on selected options

* Added frequency settings

* fixed frequencies component

* Change from Flask to FastAPI, add loggers

* Add websockets with FastAPI, defer imports, fix Graph component

* Improve sidebar

* Layout redesign: new App bar, and other improvements (#356)

* add routing and dummy pages

* added toolbar, changed styling

* updated channels gui

* Add multiple simultaneous websocket connections

* Fix backend dependencies

* Detect if app running in WebView

* Fix some websocket issues

* update deps

* Unify TitleBar and AppToolbar into AppBar, use UserAgent to detect PyWebView

* Add App Info modal dialog when clicking on Title

* Fix handling of keyboard interrupt events, add parameter to make PyWebView optional

* hide resize handle for normal browsers

* Delete test data, add test folder to .gitignore

* Remove npm lock file, add to .gitignore

* Delete ThemedApp

* Delete and ignore uv.lock

* Undo reset.css changes

---------

Co-authored-by: Samed Rouven Vossberg <57455873+SamedVossberg@users.noreply.github.com>

* Remove SettingsPanel component

* Change toml to tomllib (python 3.11 required)

* Changed accordion to collapsible box

* Create drag and drop sortable list

* Add switches and conditional texfields to preprocessing section, fixed DnD

* prevent title word wrap

* save

* save2

* fixed frequencies component

* Massive changes to Settings page

* temporarily ignore frontend build files

* Change toml to tomllib (python 3.11 required)

* Change from Flask to FastAPI, add loggers

* Add websockets with FastAPI, defer imports, fix Graph component

* Layout redesign: new App bar, and other improvements (#356)

* add routing and dummy pages

* added toolbar, changed styling

* updated channels gui

* Add multiple simultaneous websocket connections

* Fix backend dependencies

* Detect if app running in WebView

* Fix some websocket issues

* update deps

* Unify TitleBar and AppToolbar into AppBar, use UserAgent to detect PyWebView

* Add App Info modal dialog when clicking on Title

* Fix handling of keyboard interrupt events, add parameter to make PyWebView optional

* hide resize handle for normal browsers

* Delete test data, add test folder to .gitignore

* Remove npm lock file, add to .gitignore

* Delete ThemedApp

* Delete and ignore uv.lock

* Undo reset.css changes

---------

Co-authored-by: Samed Rouven Vossberg <57455873+SamedVossberg@users.noreply.github.com>

* Add backend stream init and frontend setup page (#358)

* nm channels connected to backend and fix in backend

* debugging backend connection, adding POST to Channels

* add fastAPI call for LSL

* add LSL Stream search

* add LSL Stream setup

* Remove hardcoded backend port from websocket store and add ws proxy to vite

* Divide file and source selection into separate components and routes

* add offline Stream setup and modularize SourceSelectionSettings

* minor change: replace navigate with react-router Link

* add test file for LSL stream setup

* minor: fix routes

* Add FileBrowser component and API endpoints to access local computer file system

* debug backend and chanels

* LSLOfflineStream: run in a separate subprocess, add blocking and non-blocking modes, add context manager

* Made channels component scrollable

* Update StreamSelector, change some components to MUI, add immer to sessionStore

* Add jsconfig and Eslint jsdoc plugin

* fix option to setup LSL stream

* set port to 50001

* Filter out React 19 warnings for MUI components

* Fix JSDoc linting style

* - Update to Zustand 5, add utility functions to create stores with middleware and devtools
- Make sessionStore and uiStore persistent
- Refactor Channels page
- Add FileManager class
- Start adding JSDoc documentation and configs
- Add TitledBox component
- Remove mock data generation
- Fix backend hot-reloading (hack)
- Add dev parameter to AppManager (enables hot reloading)
- Other fixes and changes

---------

Co-authored-by: Samed Rouven Vossberg <57455873+SamedVossberg@users.noreply.github.com>
Co-authored-by: Toni M. Brotons <10654467+toni-neurosc@users.noreply.github.com>

* - Migrate many components to MUI
- Remove most module.css files
- Add recursively rendering Settings component
- Temporarily emove Sidebar from layout (component remains in codebase)
- Reorganize component and page file structure with less subfolders

* add backend stream run process

* fix imports

* fix additional imports

* add debugging file and fix another import

* WIP calling run function and setting up websocket connetion

* fix rebase errors

* add backend stream run process

* add debugging file and fix another import

---------

Co-authored-by: Antonio Martinez Brotons <10654467+toni-neurosc@users.noreply.github.com>
Co-authored-by: elizametno <elizametno@yandex.ru>
Co-authored-by: Samed Rouven Vossberg <57455873+SamedVossberg@users.noreply.github.com>
Co-authored-by: timonmerk <timon.merk@charite.de>
Co-authored-by: timonmerk <timon.merk95@gmail.com>
@timonmerk
Copy link
Contributor

@toni-neurosc Are there any changes here that we need to keep track of?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants