From b89644864cdcb73075ed28d1c5c0bedd98ff00c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 17 Aug 2023 09:03:32 +0200 Subject: [PATCH] adds components section to readme --- README.md | 81 ++++++++++++++++++++++++++++++++ docs/images/Image_component.png | Bin 0 -> 53729 bytes 2 files changed, 81 insertions(+) create mode 100644 docs/images/Image_component.png diff --git a/README.md b/README.md index 4c2f9ee..884d429 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ - [Understanding Service Persistence](#understanding-service-persistence) - [Understanding Tasks in pydase](#understanding-tasks-in-pydase) - [Understanding Units in pydase](#understanding-units-in-pydase) +- [Understanding the Component System](#understanding-the-component-system) + - [Available Components](#available-components) + - [Extending with New Components](#extending-with-new-components) - [Documentation](#documentation) - [Contributing](#contributing) - [License](#license) @@ -283,6 +286,84 @@ if __name__ == "__main__": For more information about what you can do with the units, please consult the documentation of [`pint`](https://pint.readthedocs.io/en/stable/). +## Understanding the Component System +In `pydase`, components are fundamental building blocks that bridge the Python backend logic with frontend visual representation and interactions. This system can be understood based on the following categories: + +1. **Built-in Type and Enum Components:** + + `pydase` automatically maps standard Python data types to corresponding frontend components. + - `str`: rendered as a `StringComponent` in the frontend. + - `int` and `float`: Represented by the `NumberComponent`. + - `bool`: displayed as a `ButtonComponent`. + - `list`: each entry of the list is rendered separately. Its name corresponds to the list attribute name and the element index. + - `enum.Enum`: rendered as an `EnumComponent` which provides a dropdown selection. + +2. **Method Components:** + + Methods within the `DataService` class can also have visual representation and interactivity in the frontend. + - Regular Methods: Rendered as a `MethodComponent` with an execute button. + - Asynchronous Methods: Displayed with a start/stop button in lieu of the standard execute button. + +3. **DataService Instances (Nested Classes):** + + Nested `DataService` instances allow for a hierarchy of components and more complex applications. Each nested instance can have its attributes and methods, which also get corresponding frontend components. + +4. **`pydase.components` and Custom Components:** + + Beyond built-in types and methods, `pydase` provides specialized components, such as `Image` and `NumberSlider`. These can be found in the `pydase.components` module. + + +### Available Components + +As of the current version, pydase includes the following components: + +- `ButtonComponent`: This component corresponds to attributes of type `bool` in your `DataService` class + +- `NumberComponent`: this component corresponds to attribute of type `int` or `float` in your `DataService` class + +- `StringComponent`: this component corresponds to attribute of type `str` in your `DataService` class + +- `MethodComponent`: this component corresponds to methods in your `DataService` class. If the method is asynchronous (see [tasks in `pydase`](#understanding-tasks-in-pydase)), the frontend will render a start / stop button instead of the execute button of synchronous functions. + +- `Image`: This component allows users to display and update images within the application. It comprises an Image backend class and a frontend React component for rendering. + + ```python + import matplotlib.pyplot as plt + import numpy as np + + import pydase + from pydase.components.image import Image + + + class MyDataService(pydase.DataService): + my_image = Image() + + + if __name__ == "__main__": + service = MyDataService() + # loading from local path + service.my_image.load_from_path("/your/image/path/") + + # loading from a URL + service.my_image.load_from_url("https://cataas.com/cat") + + # loading a matplotlib figure + fig = plt.figure() + x = np.linspace(0, 2 * np.pi) + plt.plot(x, np.sin(x)) + plt.grid() + service.my_image.load_from_matplotlib_figure(fig) + + pydase.Server(service).run() + ``` + + ![Image Component](docs/images/Image_component.png) + +- `NumberSlider`: An interactive slider component to adjust numerical values, including floats and integers, on the frontend while synchronizing the data with the backend in real-time. + +### Extending with New Components + +Users can also extend the library by creating custom components. This involves defining the behavior on the Python backend and the visual representation on the frontend. For those looking to introduce new components, the [guide on adding components](./docs/dev-guide/Adding_Components.md) provides detailed steps on achieving this. ## Documentation The full documentation provides more detailed information about `pydase`, including advanced usage examples, API references, and tips for troubleshooting common issues. See the [full documentation](URL_TO_YOUR_DOCUMENTATION) for more information. diff --git a/docs/images/Image_component.png b/docs/images/Image_component.png new file mode 100644 index 0000000000000000000000000000000000000000..5c5866a418d4baf7ebe5d98c6d64a93192bcf485 GIT binary patch literal 53729 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

snqzlb0|Kb063xp?M^#uX!8yI;83M8mjc@yEzt7 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