Samuel,

thanks a lot for your offer re. TeamViewer.

I was finally able to make things work with all the replies and the help of a 
collegue as sparring partner for discussion. AjaxFramework is really great just 
lacking in conceptual documentation. I intend to write up something eventually, 
maybe update the examples with conceptual info.

Again thanks to all who responded. Be assured there will be more questions to 
come 😇.

And it shows that as small as our community has become, it still is a great 
community!

---markus---


> On 13 Dec 2017, at 15:05, Samuel Pelletier <sam...@samkar.com> wrote:
> 
> Hi Markus,
> 
> If you are willing, we may try a short TeamViewer or screen sharing session 
> on your projet.
> 
> You can iMessage me at [removed Samuel's iMessage address] 
> 
> I am in Eastern Canada timezone so 6 hour behind you based on your email 
> header.
> 
> Regards,
> 
> Samuel
> 
>> Le 13 déc. 2017 à 03:43, Markus Ruggiero <mailingli...@kataputt.com 
>> <mailto:mailingli...@kataputt.com>> a écrit :
>> 
>> Ok, textfield vs. string, no issue here. If I know how to "get back the 
>> selected values" I can certainly do something with it. Of course I would 
>> prefer to update things right on the server. So when the user picks an 
>> address an action on the server should fire. This action needs to know the 
>> context (e.g. the currentObject) and at the end remove the dialog and 
>> refresh the display. That's my problem right now. I can show the dialog, but 
>> I cannot trigger the pickAction and clean up afterwards. Knowing the 
>> currentObject is possible when the dialog stuff is part of the main page. 
>> How could I pass this information to a separate component that renders the 
>> contents of the dialog?
>> 
>> AjaxUpdateContainer and AjaxObserveField are know to me and I use them often 
>> for "cascading" hierarchical popups.
>> 
>> I am lacking the grand picture and the concepts of the Ajax Framework.
>> 
>> Thanks for enlightening me.
>> 
>> ---markus---
>> 
>>> On 12 Dec 2017, at 21:27, Samuel Pelletier <sam...@samkar.com 
>>> <mailto:sam...@samkar.com>> wrote:
>>> 
>>> Markus,
>>> 
>>> I think you just stick too much on the textfield part... Suppose you just 
>>> want to display the selected address in a string instead (and then replace 
>>> the string by a textfield).
>>> 
>>> The tricky part is to refresh the form with the selected address 
>>> information added to it. You could do some javascript or update the server 
>>> state and refresh the form. I prefer to update the server and refresh. Are 
>>> you familiar with AjaxUpdateContainer and AjaxObserveField ? In my recent 
>>> apps, I tend to autosave almost everything on each field update so users 
>>> never loose change because a save button was forgot.
>>> 
>>> Samuel
>>> 
>>> 
>>>> Le 12 déc. 2017 à 12:22, Markus Ruggiero <mailingli...@kataputt.com 
>>>> <mailto:mailingli...@kataputt.com>> a écrit :
>>>> 
>>>> Samuel,
>>>> 
>>>> can you imagine? I am even more confused right now because I think I 
>>>> understand what you're telling me --- but then I am not able to make sense 
>>>> of it and adapt it to my problem.
>>>> 
>>>> Can you/someone else create a minimalistic complete demo that shows 
>>>> exactly how to do the following:
>>>> 
>>>> in html:
>>>> 
>>>> <... wo form ... >
>>>> .....
>>>> <webobject name = "shippingAddressTextfield" /> [button or link here to 
>>>> open a modal dialog]
>>>> ....
>>>> <... end wo form ... >
>>>> 
>>>> 
>>>> in wod:
>>>> shippingAddressTextfield : WOTextField { value = currentObject.address; }
>>>> 
>>>> 
>>>> The modal dialog shows a tablular list of ShippingAddresses, each 
>>>> ShippingAddress has additional fields to help the user pick the right one. 
>>>> There is a button or link besides each row to pick that particular one.
>>>> The contents of the dialog should preferably be generated by a separate 
>>>> component, but I can also do it right inside the main component if that 
>>>> was simpler to do.
>>>> 
>>>> When the user picks one of the address rows the dialog should close and 
>>>> the address string should be put into the text field (possibly just 
>>>> putting it there as if the user had typed it himself)
>>>> There should be a way to dismiss the dialog without picking anything.
>>>> When the user selects a ShippingAddress the textfiels should not be 
>>>> editable anymore
>>>> Particularly great would be to not only show the selected address but do a 
>>>> currentObject.addObjectToBothSidesOfRelationshipWithKey(selectedShippingAddress,
>>>>  CustomerRequest.SHIPPING_ADDRESS_KEY); This would require the dialog 
>>>> component to have the currentObject passed to it somehow. How to do this?
>>>> 
>>>> I know how to do some of these things with plain javascript but then I 
>>>> have no idea how to integrate with WO. So I started to look into 
>>>> Ajax.framework and studied the AjaxExamples. This didn't help but confuses 
>>>> me even more as the examples just show how some components are being used 
>>>> but there is no explanation of the underlying concepts and how to solve a 
>>>> problem with these things.
>>>> 
>>>> Thanks a lot
>>>> ---markus---
>>>> 
>>>> 
>>>>> On 12 Dec 2017, at 13:32, Samuel Pelletier <sam...@samkar.com 
>>>>> <mailto:sam...@samkar.com>> wrote:
>>>>> 
>>>>> Markus,
>>>>> 
>>>>> I have a very similar implementation is an app where a new user is added 
>>>>> by selecting a contact.
>>>>> 
>>>>> In my UsagerList component where I have the new user function I have this 
>>>>> in my html file:
>>>>> 
>>>>> <wo:AjaxModalDialog label = "$localizer.UsagerList.button.ajouterUsager" 
>>>>> width = "800" title = "$localizer.UsagerList.button.ajouterUsager" class 
>>>>> = "tiny button" style = "margin-bottom:0;">
>>>>>   <wo:ContactSelector selectedContact = "$selectedContact" selectAction = 
>>>>> "$addUsager"/>
>>>>> </wo:AjaxModalDialog>
>>>>> ....
>>>>> <wo:AjaxModalDialogOpener class="tiny button" title = "Édition d'un 
>>>>> usager" action = "$editItem" dialogId = "usagerEditor" 
>>>>> >Éditer</wo:AjaxModalDialogOpener>
>>>>> 
>>>>> The add button open the modal that display my ContactSelector component 
>>>>> with 2 bindings. The selectedContact will contain the selected contact 
>>>>> (an object of my Contact entity) and the selectAction will be performed 
>>>>> upon selection.
>>>>> 
>>>>> In my UsagerList java class, I have a     public WOActionResults 
>>>>> addUsager() method that create or edit a user for this contact in a modal 
>>>>> dialog. In your case, just put the value in the desired attribute of your 
>>>>> edited object and close the displayed modal dialog by calling 
>>>>> AjaxModalDialog.close(context()); For your situation, I would add the to 
>>>>> the closeUpdateContainerID = "editor" AjaxModalDialog bindings to refresh 
>>>>> the form and show the selection to the user.
>>>>> 
>>>>> 
>>>>> public WOActionResults addUsager() {
>>>>>   EOEditingContext ec = ERXEC.newEditingContext();
>>>>>   Usager usager = Usager.fetchUsager(ec, 
>>>>> Usager.CONTACT.eq(selectedContact().localInstanceIn(ec)));
>>>>>   if (usager != null) {
>>>>>           setEditedItem(usager);
>>>>>           AjaxModalDialog.open(context(), "usagerEditor", 
>>>>> localizer().localizedStringForKeyWithDefault("UsagerList.text.editerUsager"));
>>>>>   }
>>>>>   else {
>>>>>           Usager newUsager = Usager.createUsager(ec);
>>>>>           
>>>>> newUsager.setContact(newUsager.localInstanceOf(selectedContact()));
>>>>>           newUsager.setUserName(selectedContact().email());
>>>>>           setEditedItem(newUsager);
>>>>>           AjaxModalDialog.open(context(), "usagerEditor");
>>>>>   }
>>>>>   return null;
>>>>> }
>>>>> 
>>>>> The ContactSelector component needs to be non synchronizing, either by 
>>>>> extending ERXNonSynchronizingComponent or by overriding the 
>>>>> synchronizesVariablesWithBindings method.
>>>>> 
>>>>> Here is the selectContact method in ContactSelector:
>>>>> public WOActionResults selectContact() {
>>>>>   EOEditingContext ec = (EOEditingContext) 
>>>>> valueForBinding(EditingContextBindingName);
>>>>>   if (ec == null) {
>>>>>           setValueForBinding(item(), SelectedContactBindingName);
>>>>>   }
>>>>>   else {
>>>>>           setValueForBinding(item().localInstanceIn(ec), 
>>>>> SelectedContactBindingName);
>>>>>   }
>>>>>   return (WOActionResults) valueForBinding(SelectActionBindingName);
>>>>> }
>>>>> 
>>>>> Samuel
>>>>> 
>>>>> 
>>>>> 
>>>>>> Le 12 déc. 2017 à 05:59, Markus Ruggiero <mailingli...@kataputt.com 
>>>>>> <mailto:mailingli...@kataputt.com>> a écrit :
>>>>>> 
>>>>>> Hi Samuel,
>>>>>> 
>>>>>> thanks for your help, but there are some things still not clear.
>>>>>> 
>>>>>> I have that WOTextField I want to populate. Next to the text field I 
>>>>>> need a clickable element (link, button, whatever) that the user user can 
>>>>>> use to call up an overlay modal dialog. This dialog gets a list of 
>>>>>> addresss from the database. The user can then click one of the addresses 
>>>>>> (a link or a button) to pick the one he needs. This selection action 
>>>>>> should close the dialog and put the selected address string into the 
>>>>>> text field.
>>>>>> 
>>>>>> I already have a component that retrieves the possible addresses and 
>>>>>> lists them in tabular form. It also shows a [pick this] link. 
>>>>>> 
>>>>>> That's as far as I got. Currently the dialog opener displays the "Select 
>>>>>> Address" link (should eventually replace the Address Index button. What 
>>>>>> do I do in that yellow component when the user clicks one of the select 
>>>>>> buttons? And how can I pass values to the ShippingAddressSelection 
>>>>>> component? It ought to know the object being edited on the main form, 
>>>>>> but it is called up by the componentName binding on the dialog, no way 
>>>>>> to bind anything.
>>>>>> 
>>>>>> I must miss something very simple. The Ajax Examples are not of help 
>>>>>> here (or I just don't get it), as they show some things but actually do 
>>>>>> not give an answer to a "how do I do this..." type of question.
>>>>>> 
>>>>>> Thanks for bearing with me.
>>>>>> ---markus---
>>>>>> 
>>>>>> addressSelectionDialogOpener : AjaxModalDialogOpener {
>>>>>>  dialogId = "selectAddressDialog";
>>>>>>  linkTitle = "Select Address";
>>>>>>  label = "Select Address";
>>>>>> }
>>>>>> 
>>>>>> selectAddressDialog : AjaxModalDialog {
>>>>>>  pageName = "ShippingAddressSelection";
>>>>>>  id = "selectAddressDialog";
>>>>>>  title = "Select Shipping Address";
>>>>>>  centerVertically = true;
>>>>>>  locked = true;
>>>>>>  width = 630;
>>>>>>  height = 320;
>>>>>>  overlayOpacity = "0.5";
>>>>>>  overlayDuration = "0.1";
>>>>>>  slideDownDuration = "0.1";
>>>>>>  slideUpDuration = "0.1";
>>>>>>  closeUpdateContainerID = "shippingAddressUpdateContainer";
>>>>>> }
>>>>>> 
>>>>>> 
>>>>>> <addresspanel.jpeg>
>>>>>>> On 11 Dec 2017, at 21:59, Samuel Pelletier <sam...@samkar.com 
>>>>>>> <mailto:sam...@samkar.com>> wrote:
>>>>>>> 
>>>>>>> Hi Markus,
>>>>>>> 
>>>>>>> If I understand your requirement correctly, you want a modal that 
>>>>>>> allows selecting some value(s) for a form field and want the selection 
>>>>>>> be visible in the displayed form after the modal close.
>>>>>>> 
>>>>>>> The trick is to define an AjaxUpdateContainer around the zone to be 
>>>>>>> updated after the modal close. If you use AjaxObserveFields on your 
>>>>>>> form, you can have a large section refreshed safely.
>>>>>>> 
>>>>>>> You also need to define the AjaxModalDialog with it's id and add the 
>>>>>>> closeUpdateContainerID binding to specify the AjaxUpdateContainer to 
>>>>>>> update when the dialog close.
>>>>>>> 
>>>>>>> <wo:AjaxModalDialog closeUpdateContainerID = "formContainerId" id = 
>>>>>>> "selectValueDialogId" ...
>>>>>>> 
>>>>>>> And lastly, put the link to open the dialog on your form...
>>>>>>> <wo:AjaxModalDialogOpener dialogId = "selectValueDialogId" class = 
>>>>>>> "tiny button" label = "$localizer.button.selectionner"/>
>>>>>>> 
>>>>>>> 
>>>>>>> Samuel
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> Le 11 déc. 2017 à 11:41, Markus Ruggiero <mailingli...@kataputt.com 
>>>>>>>> <mailto:mailingli...@kataputt.com>> a écrit :
>>>>>>>> 
>>>>>>>> it always the same ... not using these things often results in utter 
>>>>>>>> confusion when finally I need to do this.
>>>>>>>> 
>>>>>>>> I have a standard page with a large form.
>>>>>>>> On that page there is a text field that the user can ...
>>>>>>>>        - enter an value directly
>>>>>>>>        - depending on previously made selections further up in the 
>>>>>>>> form the value is already set and cannot be changed
>>>>>>>>        - depending on previously made selections further up in the 
>>>>>>>> form there is a button/link next to the text field that should open a 
>>>>>>>> modal dialog with a list of strings to pick from (the field is not 
>>>>>>>> editable direcly).
>>>>>>>> My problem is that 3rd option.
>>>>>>>> 
>>>>>>>> I already have a small component that loads the available strings from 
>>>>>>>> the database and shows them in a table. The user can then click a 
>>>>>>>> [pick this] - hyperlink next to an entry (or close the selection box 
>>>>>>>> without picking anything. The picked 
>>>>>>>> value should be put into the text field.
>>>>>>>> 
>>>>>>>> I succeeded partially with the help of the Ajax Examples. Tried 
>>>>>>>> AjaxModalDialog as well as AjaxModalUpdate. I can show a dialog with 
>>>>>>>> both elements and the correct data, but from there? ..... I am lost.
>>>>>>>> 
>>>>>>>> Which one to use, AjaxModalDialog or AjaxModalUpdate?
>>>>>>>> How do I get the selected String back / put it into the underlying 
>>>>>>>> object-to-be-edited, update the display and close the dialog.
>>>>>>>> 
>>>>>>>> Can anyone provide me with a simple example? 
>>>>>>>> 
>>>>>>>> Thanks a lot
>>>>>>>> ---markus---
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com 
>>>>>>>> <mailto:Webobjects-dev@lists.apple.com>)
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
>>>>>>>>  
>>>>>>>> <https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com>
>>>>>>>> 
>>>>>>>> This email sent to sam...@samkar.com <mailto:sam...@samkar.com>
>>>>> 
>>>> 
>>> 
>> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to