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

Refactor InlineEdit so that it uses a model component idiom



    • Task
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • Inline Edit
    • None


      Our InlineEdit component is very crusty and has received no substantial reworking since it stabilised around 2009 as part of the Infusion 1.2 release - apart from being lightly dusted over during 2015 to ensure that it continued to function as before after the major framework upgrade.

      We need to substantially rewrite this component to being it in line with expectations for modern framework components. Although it has a model and stores its value in it, it makes no use of the ChangeApplier idiom for coordinating updates, but instead relies on a raft of custom events and methods such as "updateModelValue". This makes it useless when cooperating in a tree with other components using modern features such as model relay etc.

      We should deprecate and remove these methods, and ensure that the component is at least basically usable when addressed directly via its model, and update all of its implementation (and that of the "undo decorator") to work in terms of modelListeners.

      We can also take the opportunity to rework its event binding to function using modern priority and namespace-driven primitives.

      We should also correct a horrifying bug caused by its use of a "free constructor" for its tooltips, that will then survive after the destruction of the overall component (we didn't really go in for destroying components back in the old days).

      A further useful refactoring would be to establish a "very lazy" instantiation idiom - we should factor off the basic hover and invitation actions into a "component-free" package such that the actual component construction can be deferred until the point the user has started to interact with the editable value.

      Finally, we should take the opportunity to assess any interaction paths that were inserted to work around the oddities of ancient browsers which no longer exist, and remove them.


        Issue Links



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