Closed PalumboN closed 4 years ago
Hola! Me gustaría intentar colaborar en este proyecto y este issue creo que podría ser un buen punto de partida. De ser posible podrías ampliar el requerimiento o comentarme si ya tienen alguna idea sobre que colores utilizar? Saludos!
Hola @pablogassman,
Bueno, este issue ya fue resuelto en parte, aunque todavía se podría mejorar un poco más. Paso a comentar:
La asignación de colores es por tipo, eso se especifica en https://github.com/uqbar-project/function-laboratory/blob/master/src/colors.js, que se usa desde la definición de cada "objeto tipo", por ejemplos Un tipo básico (que solamente se representa por el nombre): https://github.com/uqbar-project/function-laboratory/blob/cf522087d2b49e8e3c2197e6dd2b15ff915aee3d/src/typeSystem.js#L164-L166 Pero el tipo función (que es un tipo compuesto y posee 2 tipos dentro: input y output): https://github.com/uqbar-project/function-laboratory/blob/cf522087d2b49e8e3c2197e6dd2b15ff915aee3d/src/typeSystem.js#L82-L84
Para la asignación de colores se utiliza el sistema HUE que permite 360 colores (y luego creo que repite): https://github.com/uqbar-project/function-laboratory/blob/cf522087d2b49e8e3c2197e6dd2b15ff915aee3d/src/colors.js#L1-L10
Entonces la estrategia usada es
Todo esto funciona para evitar colisiones: que dos tipos distintos tengan el mismo color, ya que queremos relacionar el tipo con el color por razones pedagógicas. Pero hay casos que se nos escapan (y acá nos podés ayudar):
String -> Boolean
es el mismo que Boolean -> String
.a -> a
colisiona con a -> b
. Acá la definición del tipo parámetrico:
https://github.com/uqbar-project/function-laboratory/blob/cf522087d2b49e8e3c2197e6dd2b15ff915aee3d/src/typeSystem.js#L207-L209Para el primer caso abría que agregar info del orden en el cálculo del color de las funciones, como por ejemplo agregando el index en la reducción de sumatoria de los colores.
El segundo es más complejo, se podría buscar un workaround agregando algunos colores para las variables más usadas, por lo gral no pasan de a
, b
, c
, d
.
Todo esto está testeado en el archivo https://github.com/uqbar-project/function-laboratory/blob/master/test/colorSpec.js.
Otro problema que se nos viene es que el sistema HUE es fácil de usar pero bastante acotado, en algún momento puede que se nos quede corto.
Blockly trae algunos utils para movernos a rgb o algo más cheto: https://developers.google.com/blockly/reference/js/Blockly.utils.colour
Para investigar...
Como lo charlamos anteriormente, lo más conveniente sea partir este issue en 3. Ahí abrí estos: https://github.com/uqbar-project/function-laboratory/issues/30 https://github.com/uqbar-project/function-laboratory/issues/31 https://github.com/uqbar-project/function-laboratory/issues/32
Y cierro este :)
... para evitar colisiones del mismo color entre tipos distintos.