Hi Nicolas and Taher

here's the solution that worked:

       <field name="calcTest" title="Calculate cost:"
widget-style="buttontext">
            <hyperlink
                 target="javascript:ajaxUpdateArea(
                        'calcContainer',
                        'testGroovyCalc',
                        'message=${productId}');"
                 target-type="plain"
                 description=""
                 image-location="/images/mini-calculator.png"
                 image-title="Calculate">
            </hyperlink>
        </field>

        <field name="calcContainer" title=" "
id-name="DisplayCalcContainer" ><container/></field>

I also found an example in the codebase under Catalog -> Stores -> facility
that was useful

thanks for the pointers

kind regards

Ernest

On Tue, Jan 24, 2023 at 3:00 PM Ernest Hocking <[email protected]>
wrote:

> Thanks Nicolas and Taher,
>
> I'll  give that a try,
>
> I'm currently on 18.12.05 to set up a proof of concept.   Hopefully 22.01
> will be out soon and I can implement on that
>
> thanks and kind regards
>
> Ernest
>
> On Tue, Jan 24, 2023 at 2:49 PM Nicolas Malin <[email protected]>
> wrote:
>
>> To complete
>>
>> You can define a request-map
>>
>>          <request-map uri="DisplayTastCalc">
>>
>>              <security https="true" auth="true"/>
>>
>>              <event type="service" invoke="testCalc"/>
>>
>>              <response name="success" type="view" value="DisplayTestCalc">
>>
>>          </request-map>
>>
>>
>>
>>          <view-map name="DisplayTestCalc" type="screen"
>> page="component://myCompo/MyScreens.xml#DisplayTestCalc"/>
>>
>>
>> on
>>
>>         <field name="calcTest" title=" " widget-style="buttontext">
>>                 <hyperlink description="Calculate C"
>> target="DisplayTestCalc" also-hidden="false" link-type="update-area"
>> target-window="DisplayTestCalcContainer">
>>                         <parameter param-name="scale-factror"/>
>> <!-- e.g add an allowance for packing material -->
>>                 </hyperlink>
>>          </field>
>>         <field name="calcTestContainer" title=" "
>> id-name="DisplayTestCalcContainer" title=" "><container/></field>
>>
>> This works only on OFBiz 22.01, on previous version you need to use
>> javascript call directly
>>
>>        <hyperlink description="Calculate C"
>> also-hidden="false" target="javascript:ajaxUpdateArea('DisplayTestCalc',
>> 'DisplayTestCalcContainer', 'scale-factror =${scale-factror}');"
>> target-type="plain" />
>>
>>
>> Don't forget to define your screen DisplayTestCal with the simple
>> decorator to minimize the html code return on the response
>>
>> Nicolas
>>
>> On 24/01/2023 08:23, Taher Alkhateeb wrote:
>> > Hello,
>> >
>> > So you cannot call groovy, or any other programming language for that
>> matter, from your browser. The only thing you can call from the browser is
>> javascript and the DOM.
>> >
>> > So if you want to wire a button to some piece of code that you would
>> like to execute, then this is simply a good-old http-request /
>> http-response thing just like in any other technology / programming
>> language / framework.
>> >
>> > So what you want to do, is to call an end-point that is defined in
>> Controller.xml and pass whatever parameters you need to it, and from there
>> now you're in server-land and you can do whatever you're used to in OFBiz.
>> Note that it's quite different to call an HTTP end-point by submitting a
>> form (the browser does it) vs calling it from Javascript (you do it)
>> because in the latter case you are not redirected to another page.
>> >
>> > In other words, perhaps the problem is simply not differentiating
>> between what is server-side code and client-side code. If you make the
>> distinction clear then you just realize it's a matter of HTTP communication
>> between the two.
>> >
>> > I hope this helps!
>> >
>> > Cheers,
>> >
>> > Taher Alkhateeb
>> >
>> > On Tuesday, January 24, 2023 04:09 +03, Ernest Hocking<
>> [email protected]>  wrote:
>> >   Hi everyone
>> >
>> > I'd like to use groovy to implement some business logic and call that
>> logic
>> > from a button in a form.
>> >
>> > E.g Add a button on the product measures form to calculate the volume
>> > given a product's dimensions.. I've tried
>> >
>> > <field name="calcTest" title=" " widget-style="buttontext">
>> > <hyperlink description="Calculate C" target="testCalc"
>> > also-hidden="false">
>> > <parameter param-name="scale-factror"/>
>> > <!-- e.g add an allowance for packing material -->
>> > </hyperlink>
>> > </field>
>> > I can call/test the service "testCalc" from webtools etc but not use the
>> > button.
>> >
>> > Can anyone point me to an example in the existing code base that I can
>> use
>> > as a reference model.
>> >
>> > thanks in advance
>> >
>> > Ernest
>> >
>>
>

Reply via email to