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
>

Reply via email to