This is the HTML DOM from Chrome for the Add Next (Scheduled Activity)
button.
<div class="btn-group">
<div id="id1b2">
<ul class="additionalLinkList additionalLinkListInline
list-unstyled list-inline" id="id1b3">
<li class="additionalLinkItem" title="Adds another child
Activity">
<a href="javascript:;" class="btn btn-sm btn-default
noVeil RecurringActivity-addNextScheduledActivity" id="id1a1">
<span class="fa fa-fw fa-plus-square
fontAwesomeIcon"></span><span class="additionalLinkItem add-next">Add
Next</span>
</a>
</li>
</ul>
</div>
</div>
This is what is present for the single arg Action
<div class="entityActions" id="id1ad">
<ul class="additionalLinkList additionalLinkListInline
list-unstyled list-inline" id="id1ae">
<li class="additionalLinkItem" title="">
<a href="javascript:;" class="btn btn-sm btn-default
noVeil RecurringActivity-addMany" id="id195">
<span class="fa fa-fw fa-plus-square
fontAwesomeIcon"></span><span class="additionalLinkItem add-many">Add
Many</span>
</a>
</li>
</ul>
</div>
There is no difference. The href="javascript:;" is maybe just a place
holder to make the markup legal and the actual javascript routine executed
is updated after page load. So, I need to see that enhance DOM to know
where to start I guess.
However, that the no-args 'Add Next' button works on one system and not on
another, might suggest something to someone.
It maybe suggests that something important is not getting to the client?
I now have a work-around, so urgency is not so great, I can work on
resolving this as time allows.
Regards
Steve C
On Wed, Sep 14, 2016 at 10:20 AM, Stephen Cameron <
[email protected]> wrote:
> Network activity with no args Action: none!
>
> Network activity with 1-parameter Action: some, see request below
>
> GET /chats/wicket/entity?14-1.IBehaviorListener.0-theme-
> entityPageContainer-entity-rows-1-rowContents-1-col-entityHeaderPanel-
> entityActions-additionalLinkList-additionalLinkItem-0-additionalLink&_=1473812104907
> HTTP/1.1
> Host: lifechatsdb
> Connection: keep-alive
> Wicket-FocusedElementId: id195
> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
> (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
> Accept: application/xml, text/xml, */*; q=0.01
> X-Requested-With: XMLHttpRequest
> Wicket-Ajax: true
> Wicket-Ajax-BaseURL: entity?14
> Referer: http://lifechatsdb/chats/wicket/entity?14
> Accept-Encoding: gzip, deflate, sdch
> Accept-Language: en-US,en;q=0.8
> Cookie: LoggedIn=PjpOK6Pku8mL27old8t-DA;
> isis..viewer..wicket..themes..selected=Flatly;
> isisWicketRememberMe=VQ_ElYTPZMrqNSoiJsEZ2G0ktvE5ArT4; JSESSIONID=
> wdt3bnexk6vx16c6cmh9g57mf
>
>
>
> The
>
> On Wed, Sep 14, 2016 at 10:04 AM, Stephen Cameron <
> [email protected]> wrote:
>
>> Hi Oscar,
>>
>> I am setting both sides, setParentActivity(this); is where the
>> child->parent object reference is created.
>>
>> I added the code simply to show its just a very simple method (that works
>> just fine on my laptop).
>>
>> It seems that the problem does in fact relate to the action having no
>> parameters(arguments)!
>>
>> I show this I created another action as below
>>
>> @Action
>> public RecurrentActivity addMany(Integer count){
>> for(int i = 0; i<count; i++){
>> addNextScheduledActivity()
>> }
>> return this;
>> }
>>
>> This works, it just calls the 'problematic' no-args action in a loop
>> depending on how many times you pass as an Integer parameter.
>>
>> I'll try to snoop on the requests using Chrome as Jeroen suggested.
>>
>> Steve
>>
>>
>>
>>
>>
>> On Tue, Sep 13, 2016 at 10:22 PM, Óscar Bou - GOVERTIS <
>> [email protected]> wrote:
>>
>>> Hi, Steve.
>>>
>>> You’re not setting both sides of the relationship (only adding to the
>>> collection, but not setting the property on the other side, assuming it’s a
>>> 1-n relationship).
>>>
>>> This is managed through 2 DN properties:
>>> - datanucleus.manageRelationships
>>> - datanucleus.manageRelationshipsChecks
>>>
>>> Have you introduced any changes on the “persistor_datanucleus.properties”
>>> file?
>>>
>>> Usually you will find something like:
>>>
>>> # Manage Relationships
>>> isis.persistor.datanucleus.impl.datanucleus.manageRelationships=true
>>> isis.persistor.datanucleus.impl.datanucleus.manageRelationshipsChecks=true
>>>
>>>
>>>
>>> Cheers,
>>>
>>> Oscar
>>>
>>>
>>>
>>>
>>> [1] http://www.datanucleus.org/products/datanucleus/jdo/orm/
>>> relationships.html
>>>
>>>
>>> El 13 sept 2016, a las 14:14, Jeroen van der Wal <[email protected]>
>>> escribió:
>>>
>>> My first step would be to watch the network activity in Chrome developer
>>> tools [1]. Secondly you can set up remote debugging of your app [2].
>>>
>>> [1] https://developer.chrome.com/devtools
>>> [2]
>>> http://blog.trifork.com/2014/07/14/how-to-remotely-debug-app
>>> lication-running-on-tomcat-from-within-intellij-idea/
>>>
>>> On 13 September 2016 at 13:38, Stephen Cameron <
>>> [email protected]>
>>> wrote:
>>>
>>> Hi,
>>>
>>> I have an unusual situation where the behaviour of what is apparently the
>>> same configuration of my app differs on two different systems. When I
>>> deploy my app to a clients server there is one action that produces no
>>> effects whereas on my development machine it works as expected.
>>>
>>> The norma; effect is to add new objects to a collection, each click of
>>> the
>>> action should create a new collection member.
>>>
>>> At the client site all other action buttons work as expected, only one
>>> has
>>> the problem. All I can think that is unusual about this one compared to
>>> all the others is that it has no parameters.
>>>
>>> I've made a copy of the database as the clients sit'e, imported that at
>>> home and everything works.
>>>
>>> I am using the Isis security module, but I don't think that is causing a
>>> problem, the action button is not greyed out as inactivated.
>>>
>>> I've used three different browsers at the client's site, all have the
>>> same
>>> issue.
>>>
>>> The action is simple
>>>
>>> @Action
>>> public RecurringActivity addNextScheduledActivity() {
>>> if (getChildActivities().size() == 0) {
>>> if (getStartDateTime() == null) {
>>> container.warnUser("Please set 'Start date time' for this
>>> Recurring Activity (as starting time from which to schedule more activity
>>> events)");
>>> } else {
>>> ActivityEvent obj =
>>> container.newTransientInstance(ActivityEvent.class);
>>> obj.setParentActivity(this);
>>> obj.setName(getName());
>>> obj.setAbbreviatedName(getAbbreviatedName());
>>> //set time one second ahead for comparison inequality
>>> obj.setStartDateTime(getStartDateTime().plusSeconds(1));
>>> getChildActivities().add(obj);
>>> container.persistIfNotAlready(obj);
>>> container.flush();
>>> }
>>> } else {
>>> // find last event from which to schedule next
>>> // first should be last in chronological order
>>> DateTime origin =
>>> getChildActivities().first().getStartDateTime();
>>> ActivityEvent obj =
>>> container.newTransientInstance(ActivityEvent.class);
>>> obj.setParentActivity(this);
>>> obj.setName(getName());
>>> obj.setAbbreviatedName(getAbbreviatedName());
>>> switch (getPeriodicity()) {
>>> case DAILY:
>>> obj.setStartDateTime(origin.plusDays(1));
>>> break;
>>> case WEEKLY:
>>> obj.setStartDateTime(origin.plusDays(7));
>>> break;
>>> case FORTNIGHTLY:
>>> obj.setStartDateTime(origin.plusDays(14));
>>> break;
>>> case MONTHLY:
>>> obj.setStartDateTime(origin.plusDays(28));
>>> break;
>>> case BIMONTHLY:
>>> obj.setStartDateTime(origin.plusDays(56));
>>> break;
>>> }
>>> getChildActivities().add(obj);
>>> container.persistIfNotAlready(obj);
>>> container.flush();
>>> }
>>> return this;
>>> }
>>>
>>> I can start adding some debug messages to this code, but is there a
>>> smarter
>>> way to find out happens at the client and server sides?
>>>
>>> I guess one distinct difference is that in my development environment the
>>> client and server are on the same machine, but in deployment they aren't.
>>>
>>> Thanks for any advice.
>>>
>>> Steve Cameron
>>>
>>>
>>>
>>> Óscar Bou Bou
>>> Socio - IT & GRC Management Services Director
>>> m: +34 620 267 520
>>> s: <http://www.govertis.com>www.govertis.com e: [email protected]
>>>
>>> LinkedIn: https://www.linkedin.com/in/oscarbou
>>> Twitter: @oscarbou <https://twitter.com/oscarbou>
>>>
>>>
>>>
>>> Este mensaje y los ficheros anexos son confidenciales. Los mismos
>>> contienen información reservada que no puede ser difundida. Si usted ha
>>> recibido este correo por error, tenga la amabilidad de eliminarlo de su
>>> sistema y avisar al remitente mediante reenvío a su dirección electrónica;
>>> no deberá copiar el mensaje ni divulgar su contenido a ninguna persona.
>>>
>>> Su dirección de correo electrónico junto a sus datos personales constan
>>> en un fichero titularidad de GOVERTIS ADVISORY SERVICES, S.L. cuya
>>> finalidad es la de mantener el contacto con Ud. Si quiere saber de qué
>>> información disponemos de Ud., modificarla, y en su caso, cancelarla, puede
>>> hacerlo enviando un escrito al efecto, acompañado de una fotocopia de su
>>> D.N.I. a la siguiente dirección: GOVERTIS ADVISORY SERVICES, S.L. Avda
>>> Cortes Valencianas, 58 – 8º - 6ª. 46015 - Valencia, y Paseo de la
>>> Castellana, 153, 28045 - MADRID. Asimismo, es su responsabilidad comprobar
>>> que este mensaje o sus archivos adjuntos no contengan virus informáticos, y
>>> en caso que los tuvieran eliminarlos.
>>>
>>>
>>
>