sio2sio2 / lobaton

Iconos mutables con Leaflet y mapa de adjudicaciones y oferta educativa de cenros educativos andaluces
MIT License
5 stars 5 forks source link

Encadenamiento de correcciones #37

Closed sio2sio2 closed 5 years ago

sio2sio2 commented 5 years ago

El sistema de correcciones tiene la limitación de que cada corrección sólo puede aplicarse a una propiedad de los datos. Para soslayar esta limitación, se propone implementar lo siguiente. Al definir una corrección es posible definir una cadena de correcciones que se vayan aplicando sucesivamente. Por ejemplo:

Centro.register("a", {
   attr: "prop1",
   func: function(idx, adj, opts) { ... },
   chain: [
   {
      corr: "b",
      func: function(opts) { ...}
   },
   {
      corr: "c",
      func: function(opts) { ...}
   } ]
});

significa que se registra una corrección de nombre "a" que al acabar aplicará una corrección de nombre "b" seguida de una corrección de nombre "c". Ambas corrección deberán registrarse por separado, y no pueden ser de adición. La función que se provee con cada corrección de la cadena, se ejecuta antes de aplicar la corrección propiamente y sirve para transformar las opciones de corrección para "a" en opciones de correcciones para "b" (o "c", según el caso). Devuelve las opciones o null, si se decide que no procede aplicar la corrección.

Al aplicarse las correcciones en el sistema, el nombre de cada una incluirá el nombres de las que la desencadenaron separados por espacios. En el ejemplo, se registrarán las correcciones "a", "a b" y "a c".

Es necesario que durante la aplicación de las correcciones se pasen los nombres de las correcciones desencadenantes para evitar bucles.

sio2sio2 commented 5 years ago

Hecho