Hi Jacques,

Found another JQuery friendly MVVM framework to consider:
 https://knockoutjs.com/. 
Support data-binding and computed properties etc.

Regards,
James

On 2020/01/11 12:56:24, James Yong <jamesy...@apache.org> wrote: 
> Hi Jacques,
> 
> Points taken. 
> 
> Thanks,
> James
> 
> On 2020/01/11 10:46:03, Jacques Le Roux <jacques.le.r...@les7arts.com> wrote: 
> > Also jquery.x is not much maintained, last changes are from June 2015...
> > 
> > Le 11/01/2020 à 11:44, Jacques Le Roux a écrit :
> > > Just noticed it needs Bower to install and at the moment Bowers says
> > >
> > >    "...psst! While Bower is maintained, we recommend using Yarn 
> > > <https://yarnpkg.com> and Webpack <https://webpack.js.org/> or Parcel
> > >    <https://parceljs.org/> for front-end projects read how to migrate 
> > > <https://bower.io/blog/2017/how-to-migrate-away-from-bower/>! "
> > >
> > > And npm warns about it
> > >
> > > Jacques
> > >
> > >
> > > Le 11/01/2020 à 10:32, Jacques Le Roux a écrit :
> > >> I remember having read about MVVM years ago, quite interesting, thanks 
> > >> James!
> > >>
> > >> Jacques
> > >>
> > >> Le 10/01/2020 à 16:50, James Yong a écrit :
> > >>> Hi Gil,
> > >>>
> > >>> I wonder if this library helps for a start:
> > >>> https://github.com/joshualjohnson/jquery.x
> > >>>
> > >>> Regards,
> > >>> James
> > >>>
> > >>> On 2019/12/13 15:52:38, Gil Portenseigne <gil.portensei...@nereide.fr> 
> > >>> wrote:
> > >>>> Chapter One: How to manage the updating area
> > >>>>
> > >>>> Hello,
> > >>>>
> > >>>> After different discussions already listed by Taher [1-9], Leila,
> > >>>> Nicolas and me tried another approach.
> > >>>> Instead of analyzing how to implement different functionalities offered
> > >>>> by modern js framework, we did analyzed how end user use, in general,
> > >>>> OFBiz and where we, as an integrator, waste more time to create a
> > >>>> screen.
> > >>>>
> > >>>> To help on this huge task, we set some basic rules :
> > >>>>      * Work only on screens supported by the theme, defined mainly in 
> > >>>> xml
> > >>>>      * This concerns only screens used for back-office applications,
> > >>>>        oriented to manage data
> > >>>>      * A developer does not have to know all of js language (or other)
> > >>>>        but can concentrate on the process/view with the end user to
> > >>>>        manage a data
> > >>>>
> > >>>>
> > >>>> After a first brainstorm, we have identified three major cases :
> > >>>>      1. Navigation and data display
> > >>>>      2. View event result (data modification, calculation service, ...)
> > >>>>      3. Update an area to refresh data (after data modification)
> > >>>>
> > >>>> Case 1 and 2 are easy and currently managed by OFBiz (and missing stuff
> > >>>> will be simple to add), we concentrate our attention on case 3.
> > >>>>
> > >>>> To update an area, we follow this pattern
> > >>>>
> > >>>>      1. We start from a context that display different information
> > >>>>
> > >>>>      2. That context display a submit form, use a link or another
> > >>>>      mechanism to call an OFBiz event
> > >>>>
> > >>>>      3. After receiving the event return, we refresh the desired area
> > >>>>      with parameters that can come from origin context or from event
> > >>>>      return.
> > >>>>
> > >>>>
> > >>>> Currently with the screen widget, we can use within a form the element
> > >>>> `<on-event-update-area event-type="submit" area-id="" 
> > >>>> area-target=""/>`.
> > >>>>
> > >>>> The problem with this use, is that your form needs to know the origin
> > >>>> context, to identify what are the areas to update and what are the
> > >>>> target to use for the refresh.
> > >>>>
> > >>>> So your form needs to know where it comes from, what information need 
> > >>>> to
> > >>>> be updated in OFBiz and what will be updated after.
> > >>>>
> > >>>> This increases complexity for the developer in the way that current 
> > >>>> form
> > >>>> implementation manages :
> > >>>>    * the data and target to communicate with the server
> > >>>>    * the behaviour (refreshment) to apply when receiving server 
> > >>>> response.
> > >>>>
> > >>>> Example :
> > >>>>      <form name="EditPartyRoleCustomScreen" type="single" 
> > >>>> target="createPartyRole">
> > >>>>          <field name="partyId"><hidden/></field>
> > >>>>          <field name="roleTypeId">...
> > >>>>          <on-event-update-area event-type="submit" 
> > >>>> area-id="PartyRoles_area"
> > >>>> area-target="PartyRolesCustom">
> > >>>>              <parameter param-name="partyId" 
> > >>>> from-field="parameters.partyId"/>
> > >>>>          </on-event-update-area>
> > >>>>      </form>
> > >>>>
> > >>>> If you want to reuse the same form, you need to create another screen
> > >>>> with a new form to redefine the on-event-update-area (for instance
> > >>>> create a PartyRole).
> > >>>>
> > >>>> We change the thinking, because since it is the starting context that
> > >>>> better knows itself, it's the starting context that will realize the
> > >>>> updating operation. The starting context is the screen/menu that call
> > >>>> this form.
> > >>>>
> > >>>> In general a form is contained in a screen (classic) that is called
> > >>>> through a link. So we move the idea on this link :
> > >>>>
> > >>>>              <link target="CreatePartyRole" link-type="layered-modal">
> > >>>>                  <parameter param-name="partyId" 
> > >>>> from-field="customerParty.partyId"/>
> > >>>>                  <update-area area-target="ResumeInfoCustomer" 
> > >>>> area-id="xxx">
> > >>>>                      <parameter param-name="partyId" 
> > >>>> from-field="customerParty.partyId"/>
> > >>>>                  </update-area>
> > >>>>              </link>
> > >>>>
> > >>>>          And the form :
> > >>>>
> > >>>>              <form name="EditPartyRole" type="single" 
> > >>>> target="createPartyRole">
> > >>>>                 <field name="partyId"><hidden/></field>
> > >>>>                 <field name="roleTypeId">...
> > >>>>              </form>
> > >>>>
> > >>>>          With this logic you can define a new usage of createPartyRole
> > >>>>          without redefining a form just :
> > >>>>
> > >>>>              <link target="CreatePartyRole" link-type="layered-modal">
> > >>>>                  <parameter param-name="partyId" 
> > >>>> from-field="partyRelationship.partyIdTo"/>
> > >>>>                  <update-area area-target="MyRelationAndDetail" 
> > >>>> area-id="xxx">
> > >>>>                      <parameter param-name="partyId" 
> > >>>> from-field="partyRelationship.partyIdTo"/>
> > >>>>                      <parameter param-name="partyRelationTypeId" 
> > >>>> value="IRL_LIKE"/>
> > >>>>                  </update-area>
> > >>>>              </link>
> > >>>>
> > >>>> After some use we identified as pro and con feedback :
> > >>>>      * updating form is reusable and contains only code related to the
> > >>>>        form action
> > >>>>      * link being in origin context, the developer knows where he is 
> > >>>> and
> > >>>>        where he wants to go
> > >>>>      * Menu oriented management offers a quick vision on how the 
> > >>>> screen will works
> > >>>>
> > >>>>      * update-area seems to be a too technical name
> > >>>>      * we always have to manage area to update manually
> > >>>>      * too many areas to update become a headache and not only for the 
> > >>>> developer
> > >>>>
> > >>>> We did not explain how we have done it, to try to focus the discussion
> > >>>> on the principles.
> > >>>>
> > >>>> It would be a pleasure to have some criticism of this approach, and we
> > >>>> would try, in a second chapter to introduce other concepts that 
> > >>>> appeared
> > >>>> after the screens were made more dynamic and others to lowers the
> > >>>> identified cons.
> > >>>>
> > >>>> Thanks,
> > >>>>
> > >>>> The Néréide Team
> > >>>>
> > >>>> [1] https://s.apache.org/rf94
> > >>>> [2] https://s.apache.org/g5zr
> > >>>> [3] https://s.apache.org/XpBO
> > >>>> [4] https://s.apache.org/YIL1
> > >>>> [5] https://s.apache.org/836D
> > >>>> [6] https://s.apache.org/DhyB
> > >>>> [7] https://s.apache.org/Lv9E
> > >>>> [8] https://s.apache.org/zKIo
> > >>>> [9] https://s.apache.org/D6jx
> > >>>>
> > >>>>
> > 
> 

Reply via email to