tobydragon / metafora-project

Automatically exported from code.google.com/p/metafora-project
1 stars 0 forks source link

Tab widget contents mysteriously disappear, repaint and/or have their coordinates changed #131

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Not sure whether the lasad map "reloads" or why but it certainly happens. 

Do we know why? It seems like a platform rather than a lasad issue but why it 
happens? Does the platform do something specific? 

Original issue reported on code.google.com by mavrikis@gmail.com on 28 Jun 2012 at 9:14

GoogleCodeExporter commented 9 years ago
Can someone give a detailed descrption what happens? 
The platform isn't able to reload lasad. Lasad is shown in an iframe like all 
other tools, and we can not change that fact. If it happens if the lasad tab 
was invisible when the object was shared and become visible afterwards this 
issue can be connected to the hide method for tabs 
(http://dev.sencha.com/deploy/gxt-3.0.0/javadoc/gxt/com/sencha/gxt/core/client/S
tyle.HideMode.html). We use at the moment the hide mode HideMode.VISIBILITY and 
this is necessary to avoid reloading of the other microworlds after the tab is 
changed.

Original comment by irgang...@googlemail.com on 3 Jul 2012 at 12:54

GoogleCodeExporter commented 9 years ago
TD any thoughts what to do here?

Original comment by mavrikis@gmail.com on 3 Jul 2012 at 2:45

GoogleCodeExporter commented 9 years ago
Not sure I understand the problem but one can Override the GWT onLoad method to 
have any code run when a widget is finally displayed.

Original comment by ToonT...@gmail.com on 4 Jul 2012 at 2:08

GoogleCodeExporter commented 9 years ago
Could this be related to Issue 139? Regardless, from what Ken says above we 
could call some code to re-center the map or something because the current 
situation is quite problematic and cognitively overloading for the students. 

Not sure who should be the owner here.

Original comment by mavrikis@gmail.com on 5 Jul 2012 at 6:36

GoogleCodeExporter commented 9 years ago
Sorry I haven't gotten to investigate this yet, I will today. I could imagine 
that it is related to issue 139, since some XMPP message makes the server put a 
loaded tool into a strange state (this doesn't happen when loading LASAD 
outside the platform and sharing an object). 

 However, I don't think the issue is that the onLoad method is getting called again, as, from my understanding, that would show the loading bar and look as if you're restarting LASAD, not just shift your view.

I will look into this more today and report anything I find.

Original comment by tdragon1...@gmail.com on 5 Jul 2012 at 6:46

GoogleCodeExporter commented 9 years ago
I wasn't suggesting it was getting re-loaded.

onLoad() 
          This method is called immediately after a widget becomes attached to the browser's document.

http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/
client/ui/Widget.html#onLoad()

This will be called when the widget or its container is for example made 
visible or added to a visible container. onAttach is better name but the 
documentation for that suggests one use onLoad.

Original comment by ToonT...@gmail.com on 5 Jul 2012 at 7:34

GoogleCodeExporter commented 9 years ago
Sorry, I was confusing this with 'onModuleLoad' which is called only when 
loading the first time (I believe).

This onLoad method, does it have some default behavior?  Is your theory that it 
is called each time the user switches tabs to display LASAD again within 
Metafora? 

I don't think it solves the bug, but it could be a solution that I call to 
re-center the map each time with this onLoad method, if it is automactially 
called at the appropriate time.  The question remains, what happens from 
outside LASAD (in Metafora) that makes the map scroll-bars reset? I'm 
investigating now.

Original comment by tdragon1...@gmail.com on 5 Jul 2012 at 7:45

GoogleCodeExporter commented 9 years ago
I believe it is called when tabs are selected. Try adding this to an 
appropriate extension of the Widget class:

@Override
public void onLoad() {
super.onLoad();
System.out.println("onLoad called.");
}

Original comment by ToonT...@gmail.com on 5 Jul 2012 at 8:20

GoogleCodeExporter commented 9 years ago
I have a feeling (but not well tested) that this may happen only in Firefox 
(similar to the juggler issue that requires chrome). I couldn't test now nor am 
I sure that this changes anything really as should work in Firefox.

It doesn't happen outside the platform (so this is something to do then with 
the Metafora tab widget?)

Original comment by mavrikis@gmail.com on 6 Jul 2012 at 11:45

GoogleCodeExporter commented 9 years ago
Here's my possibly incorrect understanding. When a tab is selected all the 
widgets of that tab are attached to the DOM. When another tab is selected those 
widgets become detached. If, while detached, some JavaScript code runs (e.g. 
generated by GWT) that asks for coordinates or dimensions of detached widgets 
they get zero for a reply.

If this is right, then the two most obvious workaround are to store the 
coordinates when attached (onLoad) and use those rather than getAbsoluteLeft() 
and the like. Alternatively fix or delay the layout when onLoad is called.

Just my guess...

Original comment by ToonT...@gmail.com on 7 Jul 2012 at 1:08

GoogleCodeExporter commented 9 years ago
This issue happens more often than just when obejct is shared, and seems to 
happen to other tools as well (Planning tool map disaapears each time an object 
is shared, or accessed. Combining here with another issue about the same 
problem:

- Open a discussion resource card first time
- Takes you to lasad in the centre
- Go back to planning tool 
- Click on the card again (without closing lasad) 
- It takes you to top left of the screen.

Original comment by tdragon1...@gmail.com on 10 Jul 2012 at 7:37

GoogleCodeExporter commented 9 years ago
Changed the title then from "Sharing an object from expresser shifts lasad map 
to top corner." to a more general one (feel free to change again)

Original comment by mavrikis@gmail.com on 10 Jul 2012 at 7:49

GoogleCodeExporter commented 9 years ago
Issue 105 has been merged into this issue.

Original comment by mavrikis@gmail.com on 10 Jul 2012 at 7:50

GoogleCodeExporter commented 9 years ago
So we can't do much for the current period so I removed the critical label and 
the LKL mileston.

That's a more general issue so passing to KUEI.

Original comment by mavrikis@gmail.com on 10 Jul 2012 at 2:14

GoogleCodeExporter commented 9 years ago
From a technical view this Issue is the same as Issue 139 and Issue 125. The 
problem is caused by the hide method. At the moment we use hide mode visibility 
which uses the visibility css style attribute. The hide mode display is no 
option because this one cause a reload of the Unity Microworlds. I think the 
offsets hide mode also caused some problems.
We will test the offset hide mode next week and I hope we will find a solution 
for this problems.

Original comment by irgang...@googlemail.com on 12 Jul 2012 at 3:52

GoogleCodeExporter commented 9 years ago
Issue 125 has been merged into this issue.

Original comment by mavrikis@gmail.com on 12 Jul 2012 at 4:28

GoogleCodeExporter commented 9 years ago
Issue 139 has been merged into this issue.

Original comment by mavrikis@gmail.com on 12 Jul 2012 at 4:28

GoogleCodeExporter commented 9 years ago
I added a milestone and raised this to critical (it means it is critical for 
that milestone --- in this case the conference presentations). This makes it 
easier (I think) to manage issues (happy to talk if you prefer another way of 
managing them)

Original comment by mavrikis@gmail.com on 16 Jul 2012 at 1:03

GoogleCodeExporter commented 9 years ago
We have tested all GXT hide modes and no one solved the issue, but this issue 
only affects planningtool and lasad with the firefox browser.

Original comment by irgang...@googlemail.com on 26 Jul 2012 at 5:12

GoogleCodeExporter commented 9 years ago
I also experience this problem with chrome, when moving to Juggler, saving 
state, and then returning to the planning tool.

Original comment by tdragon1...@gmail.com on 29 Aug 2012 at 9:39

GoogleCodeExporter commented 9 years ago
Since this problem is prevelant (happens often) and problematic (difficult for 
users, looks bad for demos), and we dont' seem to have any pending solutions, I 
wonnder if it's not time to consider workarounds.

One suggestion (from me) is to add a small "reload frame" button somewhere, 
maybe just blow the tabs in the top-left corner.  Then, at least you could 
quickly click it rather than needing to: right-click->this frame->reload frame.

Original comment by tdragon1...@gmail.com on 29 Aug 2012 at 9:42

GoogleCodeExporter commented 9 years ago
This issue is not related only to hide / show functions, because it happens to 
others' computers when one person changes something.  For example:

-user 1 and 2 are looking at the planning tool
-user 1 opens a juggler resource card
-user 2 loses their plan view, has to reload frame.

I just produced this twice in a row, using both chrome and firefox (one user 
each) on the same computer.

Original comment by tdragon1...@gmail.com on 29 Aug 2012 at 9:50

GoogleCodeExporter commented 9 years ago
Also to note, reloading effects others as well.

-user 1 and 2 are looking at the planning tool, both blank due to eralier loss
-user 1 reloads frame
-user 2 also has their frame refreshed

Again working in chrome and firefox on the same machine

Original comment by tdragon1...@gmail.com on 29 Aug 2012 at 10:30

GoogleCodeExporter commented 9 years ago
As of 2012.09.07, I now have to reload twice to bring the planning map back.  
In firefox on mac

Original comment by tdragon1...@gmail.com on 7 Sep 2012 at 12:02