[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 - [ ] 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: https://gitlab.com/pipettin-bot/pipettin-gui/-/issues/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
issue