Uploaded image for project: 'Fluid Infusion'
  1. Fluid Infusion
  2. FLUID-5047

Implement "new Renderer" eliminating renderer component trees and protoTrees in favour of newly graded standard IoC component trees



    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 1.5
    • IoC System, Renderer
    • None


      The Fluid Renderer system, constructed by direct translation from Java code forming the "RSF Renderer", has increasingly come to be seen as a source of confusion and fragility. The JSON dialect(s) that it operates are hard to write, and increasingly we have come to see that facilities provided in the Renderer are more properly, powerfully and usably supplied within the JSON dialect operated by the IoC system and graded defaults scheme for standard Fluid components, which did not exist when the renderer was first written.

      We should eliminate the JSON dialects parsed by the Fluid Renderer entirely from direct use in client code, instead providing a facility where arbitrary rendering effect can be achieved by writing standard Fluid components in an IoC tree, some of which will be in direct correspondence with the old Fluid renderer types e.g. UIInput, UISelect etc.

      Initially this implementation will work by translation - as part of FLUID-4260, the framework will automatically construct a standard "renderer component tree" which will then be fed to a standard invocation of the old renderer. Over time, we plan to be able to remove the majority of implementation code from the "old renderer" entirely (e.g. primitives for looping and branching through templates, which can be seen as a limited and cumbersome implementation of the more powerful directives available in the IoC system itself - branching -> type/grade resolution for FLUID-4916, FLUID-4932, etc., looping -> FLUID-5022).

      This work will allow the resolution of a number of Renderer goals written up separately under various heads - e.g.

      FLUID-4260 "Renderer antigen" support
      FLUID-4261 "Tag singularity" problem caused by mismatches between component structure and template structure
      FLUID-2962 Arbitrary allocation of rendering work between server-side and client side
      FLUID-4189 Expanded renderer component workflow

      This work will also be assisted by FLUID-5045 which will allow Model Transformations material to appear in a general IoC tree, as well as enabled by FLUID-4982, the "asynchronous ginger world" which is required to allow template references to be freely interleaved amongst the component tree for FLUID-4260.




            antranig Antranig Basman
            antranig Antranig Basman
            0 Vote for this issue
            1 Start watching this issue