Spaces:
Running
Running
| from langflow.custom import Component | |
| from langflow.field_typing.range_spec import RangeSpec | |
| from langflow.inputs.inputs import DataInput, IntInput | |
| from langflow.io import Output | |
| from langflow.schema import Data | |
| class SelectDataComponent(Component): | |
| display_name: str = "Select Data" | |
| description: str = "Select a single data from a list of data." | |
| name: str = "SelectData" | |
| icon = "prototypes" | |
| legacy = True | |
| inputs = [ | |
| DataInput( | |
| name="data_list", | |
| display_name="Data List", | |
| info="List of data to select from.", | |
| is_list=True, # Specify that this input takes a list of Data objects | |
| ), | |
| IntInput( | |
| name="data_index", | |
| display_name="Data Index", | |
| info="Index of the data to select.", | |
| value=0, # Will be populated dynamically based on the length of data_list | |
| range_spec=RangeSpec(min=0, max=15, step=1, step_type="int"), | |
| ), | |
| ] | |
| outputs = [ | |
| Output(display_name="Selected Data", name="selected_data", method="select_data"), | |
| ] | |
| async def select_data(self) -> Data: | |
| # Retrieve the selected index from the dropdown | |
| selected_index = int(self.data_index) | |
| # Get the data list | |
| # Validate that the selected index is within bounds | |
| if selected_index < 0 or selected_index >= len(self.data_list): | |
| msg = f"Selected index {selected_index} is out of range." | |
| raise ValueError(msg) | |
| # Return the selected Data object | |
| selected_data = self.data_list[selected_index] | |
| self.status = selected_data # Update the component status to reflect the selected data | |
| return selected_data | |