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 > > >>>> > > >>>> > > >