Hello, I opened a jira issue OFBIZ-12292 [1] and a linked Pull Request 318 [2] for give a good vision of this work.
All remarks are welcome :) Nicolas [1] https://issues.apache.org/jira/browse/OFBIZ-12292 [2] https://github.com/apache/ofbiz-framework/pull/318 On 12/07/2021 18:20, Nicolas Malin wrote: > Hi all, > > We would like to share with you a thinking that we try at Nereide, to > reorganize some widget screen with compound widget associated with the > work about screen dynamism [1]. > > After the proposal by Xin Wang to improve the FindWorkEffort screen and > our suggestion to dynamism at the same time, it occured to us that codes > are spread in many places. To avoid that, we refactored using compound > widget introduced in OFBIZ-4090, that is not really used yet through > standard Apache OFBiz applications. > > We wanted to share the idea since we weren't convinced at that time > about the compound feature [2]. With that usecase as a basis, we would > like to reconsider using it, and discuss with the community. > > We did experiment to convert each tab in workeffort menu (rate, party, > note) to implement dynamism, gathering every element used by each menu > within one compound file. > > The benefits of this are : > * Everything in one sufficient and coherent file > * Ease the integration of dynamic compound screen in application level. > * Help detect screen complexity looking at compound file size. > > As shown below, we created suffixed files with Cpd to quickly identify > the type of xml. We wonder about alternative like subfolder for compound > or other. WDYT ? > > Some example on WorkEffortRate : > > controller.xml : > <include location="component://workeffort/widget/WorkEffortRateCpd.xml"/> > > WorkEffortScreens.xml : > ########### > <screen name="EditWorkEffortRates"> > <section>... > <widgets> > <decorator-screen name="CommonWorkEffortDecorator" > location="${parameters.mainDecoratorLocation}"> > <decorator-section name="body"> > <include-screen name="ListWorkEffortRates" > location="component://workeffort/widget/WorkEffortRateCpd.xml"/> > </decorator-section> > </decorator-screen> > </widgets> > </section> > </screen> > ########### > > WorkEffortRateAssignCpd.xml : > ########### > <sc:site-conf> > <sc:request-map uri="WorkEffortRate/List">... > <sc:request-map uri="WorkEffortRate/Edit">... > <sc:request-map uri="WorkEffortRate/update">... > <sc:event type="service" invoke="updateRateAmount"/> > <sc:response name="success" type="request" value="json"/> > <sc:response name="error" type="request" value="json"/> > </sc:request-map> > <sc:request-map uri="WorkEffortRate/delete">... > <sc:view-map name="WorkEffortRate/List" type="screen" > page="component://workeffort/widget/WorkEffortRateCpd.xml#ListWorkEffortRates"/> > <sc:view-map name="WorkEffortRate/Edit" type="screen" > page="component://workeffort/widget/WorkEffortRateCpd.xml#EditWorkEffortRate"/> > </sc:site-conf> > > <ws:screens> > <ws:screen name="ListWorkEffortRates">... > <ws:widgets> > <ws:decorator-screen name="CommonEmbeddedDecorator" > location="component://workeffort/widget/CommonScreens.xml">... > <ws:include-grid name="ListWorkEffortRates" > location="component://workeffort/widget/WorkEffortRateCpd.xml"/>... > </ws:screen> > <ws:screen name="EditWorkEffortRate">... > <ws:widgets> > <ws:decorator-screen name="CommonEmbeddedDecorator" > location="component://workeffort/widget/CommonScreens.xml">... > <ws:include-form name="EditWorkEffortRate" > location="component://workeffort/widget/WorkEffortRateCpd.xml"/>... > </ws:screens> > > <wm:menus> > <wm:menu name="WorkEffortRateTabBar" extends="CommonTabBarMenu" > extends-resource="component://common/widget/CommonMenus.xml"> > <wm:menu-item name="AddWorkEffortRate" ... > <wm:link target="WorkEffortRate/Edit" > link-type="layered-modal">... > <wm:set-callback area-target="WorkEffortRate/List">... > </wm:menu> > <wm:menu name="ListWorkEffortRatesInLineBar" > extends="CommonInlineBarMenu" > extends-resource="component://common/widget/CommonMenus.xml"> > <wm:menu-item name="EditWorkEffortRate"... > <wm:menu-item name="DeleteWorkEffortRate" ...> > <wm:link target="WorkEffortRate/delete" > request-confirmation="true"> > <wm:auto-parameters-service > service-name="expireRateAmount"/> > <wm:set-callback area-target="WorkEffortRate/List"/>... > </wm:menus> > > <wf:forms> > <wf:grid name="ListWorkEffortRates" > paginate-target="WorkEffortRate/List" > extends="CommonDynamicGrid" > extends-resource="component://common/widget/CommonForms.xml">... > <wf:form name="EditWorkEffortRate" > default-map-name="workEffortRateAmount" target="WorkEffortRate/update" > extends="CommonBasicSingle" > extends-resource="component://common/widget/CommonForms.xml">... > </wf:forms> > ########### > > We understand that it's hard to read :) you can find the current work on > our labs [3] > > Thanks for taking time to read this and any suggests are welcome > > Cheers, > Gil, Leila, Nicolas > > [1] https://issues.apache.org/jira/browse/OFBIZ-11808 > [2] > https://lists.apache.org/thread.html/r729c22dcba0b7c4e29979f5e65230ab140427addb3af8844f33108f5%40%3Cdev.ofbiz.apache.org%3E > [3] > https://labs.nereide.fr/10031/Communautaire/-/compare/trunk...DynamismWorkEffort >