[Slots] Define new platform data structure for Curbs/Slots
Aplicar los cambios en las plataformas según lo definido en conjunto con equipo de la controller api. (https://discord.com/channels/1042462799772782613/1128734789302755338)
Un "curb" es un tope para platforms, y un "slot" es una posición dentro de una platform donde puede ir un content.
Resumen:
-
Reunirnos a definir cómo agregar "platform curbs"/"platform slots" al workspace: discusion abajo, #34 y #118 (closed) -
Armar un issue para implementarlo.
-
-
Reunirnos a definir como agregar "content slots" a las platforms: discusion abajo. -
Armar un issue para implementarlo.
-
Slots para platforms (curbs/topes)
- Agregar un atributo a las platforms que sea una lista de "topes"/"slots"/"curbs" (que ya están calibrados).
- Cada "slot" tiene un "ID" y un "offset" en XYZ para cada plataforma que puede acomodar.
- Cada "slot item" tiene un ID y una posiicón en el workspace (pero no va a tener contents).
- Un slot item se "ancla" a un platform item en dos pasos: (1) definiendo el ID del slot como position del platform, y (2) insertando el ID de la platform en la definición del tope, con el offset del tope respecto a esa platform (si es que no existe).
- Del lado de la GUI esto implica agregar al menos funciones para:
- Dibujar topes existentes (buscar topes en los platform items del workspace).
- Botón para crear y asociar un nuevo tope a una plataforma seleccionada (haciendo click en un botón que diga "anclar plataforma").
- Asociar un tope existente a la platform seleccionada (haciendo click en un botón que diga "anclar plataforma" similar al anterior) y hacer "snapping" de la plataforma al tope (actualizando su posición).
- Agregar el editor de slots al platform editor.
- Dibujar slots agrupados abajo en la lista de platforms.
- Agregar boton de lock position: #47
Slots para contents
Agregar explícitamente las ubicaciones ("slots") posibles para los contents en una lista, cuyo index sea el index que un content tenga en la platform.
-
La idea es copiar la estructura de topes<->platforms, y reusarla para platforms<->slots.
-
Esto no aplicaría a los petri dish en principio (porque no tienen slots predeterminados).
-
Agregar un atributo a las platforms que sea una lista de "slots".
- En el caso de las plataformas tipo grid (e.g. racks de tips) no aplica.
- Los "content slots" son una definción explícita de la posición en la que se pueden insertar contents.
- Esta manera adicional de definir las posiciones y cantidad de "wells" en una platform.
- La idea de esto es empezar a soportar plataformas con slots en lugares arbitrarios (e.g. custom platforms) y diferentes tipos de slots en una platform (e.g. para diferentes tamaños de tubos).
- Cada slot tiene un atributo "index", "content type" (tip, tube, colony, bucket, well, etc.) y uno "posicion" con un valor similar al par "col-row" (que puede representar columnas y filas, o bien una posición XY como las colonias en las placas de petri).
- Los atributos en el slot "overridean" a los atributos por defecto en la platform (e.g. diametro, default load bottom, etc.).
- Algunos de los atributos que están ahora en platform pueden pasar a estar en estos slots.
-
Falta definir.
-
- Del lado de la GUI esto implica al menos:
- Agregar un editor de slots al platform editor.
- Además los contents tienen que poder extraer su posición XYZ a partir de estar asociados a un slot (de manera análoga a como funcionan los topes para platforms). Ver #102
Edited by naikymen