Opened 10 years ago

Closed 7 years ago

#9547 closed defect (invalid)

[PATCH][CCLA] Editor: IE Horizontal scrollbar calc in view returns incorrectly.

Reported by: Jared Jurkiewicz Owned by: Jared Jurkiewicz
Priority: high Milestone: future
Component: DojoX Grid Version: 1.3.0
Keywords: Cc:
Blocked By: Blocking:

Description

Editor: IE Horizontal scrollbar calc in view returns incorrectly.

This problem was reported by a co-worker of mine. the problem he described is as follows:

When the contents of a cell become word wrapped, and one or more columns are locked from scrolling horizontally -- the bottom most rows become mis-aligned.

This can easily be seen using the following nightly test: http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_grid_column_display.html

Open that testcase in IE and resize the Climate header to the right until the horizontal scrollbar appeats for the right view. Notice the left view doesn't rescale itself to account for the horizontal scrollbar in the right. This cases rpbolems when you scroll to the bottom. It makes the alignment go off.

See attached screenshot for details.

This is caused by IE returning bad values for scrollBoxNode.offsetWidth in the function:

dojox.grid._Views.js (Function hasHScrollbar)

If you compare that value to what dojo.contentBox returns, you will see that the offsetWidth value is bigger than its actual size. Ugh.

We shouldn't use dojo.contentBox as it's very expensive, but there is a simpler solution (Thanks DougHays?!):

this._hasHScroll = (this.scrollboxNode.scrollWidth > this.scrollboxNode.clientWidth);

Instead of: this._hasHScroll = (this.scrollboxNode.offsetWidth > this.contentBoxNode.offsetWidth);

It's cross-browser save and actually does the right thing on IE!

Patch forthcoming.

Attachments (8)

GridScroll_IE_PROBLEM.jpg (45.4 KB) - added by Jared Jurkiewicz 10 years ago.
Screenshot showing issue.
GridScroll_IE_PROBLEM_SCROLL.jpg (66.7 KB) - added by Jared Jurkiewicz 10 years ago.
What happens when you scroll.
IE_Scroller_issue.patch (756 bytes) - added by Jared Jurkiewicz 10 years ago.
Patch for the issue.
gridRowAlignmentFix.txt (1.6 KB) - added by jfirebau 10 years ago.
Alternative suggested fix
testScroller.html (2.6 KB) - added by Jared Jurkiewicz 10 years ago.
Testcase showing the issue with grid.update()
IE_improved.patch (1.4 KB) - added by Jared Jurkiewicz 10 years ago.
Improved IE patch for scroll alignment issues.
REST_WIDGETS_TOGETHER.php (9.3 KB) - added by vlad 10 years ago.
(vlad_dojo) 3 grids and a filtering select connected to same store
json_rest_store_backend_some_itms.php (428 bytes) - added by vlad 10 years ago.
(vlad_dojo) backed for 3 grids and filtering select

Download all attachments as: .zip

Change History (24)

Changed 10 years ago by Jared Jurkiewicz

Attachment: GridScroll_IE_PROBLEM.jpg added

Screenshot showing issue.

Changed 10 years ago by Jared Jurkiewicz

What happens when you scroll.

Changed 10 years ago by Jared Jurkiewicz

Attachment: IE_Scroller_issue.patch added

Patch for the issue.

comment:1 Changed 10 years ago by Jared Jurkiewicz

Summary: Editor: IE Horizontal scrollbar calc in view returns incorrectly.[PATCH][CCLA] Editor: IE Horizontal scrollbar calc in view returns incorrectly.

the vertical scrollbar could also have the same problem, so I adapted it to use the same logic (Just checking scrollHeight and clientHeight instead of width).

See patch for details.

Test results coming soon. The good thing is this avoids dojo.contentBox(), which is expensive.

comment:2 Changed 10 years ago by Jared Jurkiewicz

Tested in:

IE 8, IE 7, IE 6, FF 2, FF 3, Safari 3.2.3, and Google Chrome 1.0 without problem.

Tested in co-workers application and also verified for complex app, the fix worked.

comment:3 Changed 10 years ago by Jared Jurkiewicz

Nathan Toone replied to review request (g-mail), that this looked to be the right fix for the issue. So ... I'll commit it.

comment:4 Changed 10 years ago by Nathan Toone

(In [18804]) Refs #9547 - replace one of the timeouts and take out the updates for a working hscroll and vscroll check !strict

Changed 10 years ago by jfirebau

Attachment: gridRowAlignmentFix.txt added

Alternative suggested fix

comment:5 Changed 10 years ago by jfirebau

This fix didn't solve all my row alignment issues. I had additional issues in IE when the data model would update and the grid refreshed. I had to modify

adaptHeight: function( minusScroll )

because it wasn't removing the height of the scrollbar from views that were set to noScroll but were obviously being affected by views that did have a scrollbar.

comment:6 Changed 10 years ago by Jared Jurkiewicz

Okay, so combined with some fixes from Nathan he checked in last night, I have a followon patch that seems to make IE behave fine now in this case. I also have a testcase showing the grid.update() issue on IE and that this patch fixes it. I'll attach both.

Changed 10 years ago by Jared Jurkiewicz

Attachment: testScroller.html added

Testcase showing the issue with grid.update()

comment:7 Changed 10 years ago by Jared Jurkiewicz

Owner: changed from Bryan Forbes to Nathan Toone

Nathan,

The last two attachments are the testcase and another slight patch to fix the final issue (so far) with IE and scrolling (with fixed views).

To see the bug, put the testcase in the root of your trunk extract so it's a peer to dojo/ dijit/, etc.

Run it in IE (6 or 7), scroll to the bottom.

Click the 'update' button (which calls grid.update()).

The rows will misalign.

Apply the IE_Improved.patch to the tree, then clear cache and rerun test. Problem should be gone. It required tweaking the hasHScrollbar again (probably due to a timing issue), but it's not a substantial change. The check I had put in didn't work in this case (and again, likely due to timing of IE rendering).

Changed 10 years ago by Jared Jurkiewicz

Attachment: IE_improved.patch added

Improved IE patch for scroll alignment issues.

comment:8 Changed 10 years ago by Nathan Toone

Resolution: fixed
Status: newclosed

(In [18824]) Fixes #9547 - thanks for the patch. This fix, when applied to FF as well (not just IE) avoids the need for the timeout hack. !strict

comment:9 Changed 10 years ago by vlad

Resolution: fixed
Status: closedreopened

The modification 18824 does not work for me on FF 3.0.12 or IE8 XP/32 (no problems on Opera 10b2)

The error I am getting is on line _View.js 536

if(v !== self && v.hasHScrollbar()){

The error is v.hasHScrollbar is not a function

on IE8 I get the error on the same line, saying "Object does not support this property or method"

It works on opera 10b2 though

Something is wrong now with my pages on Safari 4.0 (but I could not pinpoint safari problems yet).


on that line I mad a modification

if(v !== self && dojo.isFunction(v.hasHScrollbar) && v.hasHScrollbar()){

(that is added dojo.isFunction)

and now IE8 and FF 3.0.12 work

I am not quite sure if my fix has any meaning to you guys. As it simply disables something you appear to want to use.

My grids are nothing special, elasticView is 2 using JsonRestStore?, no autoheight or any other parameters

They sit within a resizible border container content pane.

comment:10 Changed 10 years ago by Nathan Toone

would you be able to sanitize your code to an attachable test case? I'm wondering if the problem is actually something else, because for any value of "v" in this code, it *should* be a dojox.grid._View object...which has a "hasHScrollbar" function....so I'd like to investigate why it's coming in like that...

comment:11 Changed 10 years ago by vlad

I am having difficulties replicating this in an independent test case. I coded the layout to be the same (but different column/and col values -- those are difficult to replicate in test case)

Also in my real page, every grid is connected to a different store, but in the test, they are connected to the same rest store.

I put a delay of 1 second in my PHP backend simulator, and disabled caching on every grid (so that the query is not cached by the store). Just to see see if loading the grids at different times can cause a problem. But that did not replicate it for me either...

I have 3 grids in my page I put a console.log every time adaptHeight is 'entered' and with the for loop in that function for every view

Every time I run it happens on a 'different' view (or so it appears)

can you spot may be something in those logs that would help me to figure out what exactly to replicate

In the mean time, I am attaching my 'test replication program' that consists of two php files (one is just a HTML) and the other is a backend for reststore (very simple one no, db access/etc).

Unfortunately it does not replicate it though....


entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] GET http://192.168.0.106/codeigniter/index.php/rest_cr...service/services?action=query&query=&queryOptions= GET http://192.168.0.106/codeigniter/index.php/rest_crmd_service/services?action=query&query=&queryOptions= 200 OK

204ms bootstrap.js (line 1298)

entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] GET http://192.168.0.106/codeigniter/index.php/rest_cr...d_tariff/tariffs?action=query&query=&queryOptions= GET http://192.168.0.106/codeigniter/index.php/rest_crmd_tariff/tariffs?action=query&query=&queryOptions= 200 OK

160ms bootstrap.js (line 1298)

GET http://192.168.0.106/dojo-svn/dijit/layout/templates/_TabButton.html GET http://192.168.0.106/dojo-svn/dijit/layout/templates/_TabButton.html 304 Not Modified

26ms hostenv_...rowser.js (line 254)

entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_5] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_10] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_5] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_10] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_11] _connects=[14] _subscribes=[0] adaptHeight view is: function() v.hasHScrollbar is not a function [Break on this error] (986 out of range 496) bootstrap.js (line 986) entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0]


--- RUN 2 START ----

entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] GET http://192.168.0.106/codeigniter/index.php/rest_cr...service/services?action=query&query=&queryOptions= GET http://192.168.0.106/codeigniter/index.php/rest_crmd_service/services?action=query&query=&queryOptions= 200 OK

156ms bootstrap.js (line 1298)

entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] GET http://192.168.0.106/codeigniter/index.php/rest_cr...d_tariff/tariffs?action=query&query=&queryOptions= GET http://192.168.0.106/codeigniter/index.php/rest_crmd_tariff/tariffs?action=query&query=&queryOptions= 200 OK

237ms bootstrap.js (line 1298)

GET http://192.168.0.106/dojo-svn/dijit/layout/templates/_TabButton.html GET http://192.168.0.106/dojo-svn/dijit/layout/templates/_TabButton.html 304 Not Modified

25ms hostenv_...rowser.js (line 254)

entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_5] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_10] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_5] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_10] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_11] _connects=[14] _subscribes=[0] adaptHeight view is: function() entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_1] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_2] _connects=[14] _subscribes=[0] v.hasHScrollbar is not a function [Break on this error] (986 out of range 496) bootstrap.js (line 986) entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] adaptHeight view is: [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_7] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._RowSelector, dojox_gridRowSelector_3] _connects=[14] _subscribes=[0] entered adaptHeight for [Widget dojox.grid._View, dojox_gridView_6] _connects=[14] _subscribes=[0]

--- RUN 2 END ---

Changed 10 years ago by vlad

Attachment: REST_WIDGETS_TOGETHER.php added

(vlad_dojo) 3 grids and a filtering select connected to same store

Changed 10 years ago by vlad

(vlad_dojo) backed for 3 grids and filtering select

comment:12 Changed 10 years ago by vlad

I cleaned up my 'debugging code' in _View.js (sorry for the mess above)

And basically in FF 3.0.12 it is always erroring out on the same grid

afari 4.0 it is also erroring out on either the same grid as FF3 or another grid (if the first one is disabled)

There are 3 grids there in total and only those 2 sofar are erroring out (they have different stores and different layouts). idOffersGr sits within a content pane of a tab container while idServicesGr sits in the content pane of a border container

FF3.0.12

hasHScrollbar problem  TypeError: v.hasHScrollbar is not a function message=v.hasHScrollbar is not a function
self was: [Widget dojox.grid._View, dojox_grid__View_6] _connects=[14] _subscribes=[0]
grid id was idOffersGr
hasHScrollbar problem TypeError: v.hasHScrollbar is not a function message=v.hasHScrollbar is not a function
self was: [Widget dojox.grid._View, dojox_grid__View_6] _connects=[14] _subscribes=[0]
grid id was idOffersGr

Safari 4.0

hasHScrollbar problem [ Error: Result of expression 'v.hasHScrollbar' [undefined] is not a function. ]
self was: {dojox_grid__View_6}
grid id was idOffersGr
hasHScrollbar problem [ Error: Result of expression 'v.hasHScrollbar' [undefined] is not a function. ]
self was: {dojox_grid__View_6}
grid id was idOffersGr
THIS IS SAFARI

and if I disable that grid, (idOffersGr)

FF does not complain, but Safari 4.0 complains about another grid

hasHScrollbar problem [ Error: Result of expression 'v.hasHScrollbar' [undefined] is not a function. ]
self was: {dojox_grid__View_2}
grid id was idServicesGr
hasHScrollbar problem [ Error: Result of expression 'v.hasHScrollbar' [undefined] is not a function. ]
self was: {dojox_grid__View_2}
grid id was idServicesGr
hasHScrollbar problem [ Error: Result of expression 'v.hasHScrollbar' [undefined] is not a function. ]
self was: {dojox_grid__View_2}
grid id was idServicesGr
hasHScrollbar problem [ Error: Result of expression 'v.hasHScrollbar' [undefined] is not a function. ]
self was: {dojox_grid__View_2}
grid id was idServicesGr

Here is my code in _View.js that prints the above line

				var checkOtherViewScrollers = function(){
					var v;
					for(var i in self.grid.views.views){
						v = self.grid.views.views[i];

try
{
						
if(v !== self  && v.hasHScrollbar()){
			return true;
				}
}
catch (e)
{						
	console.log("hasHScrollbar problem ", e);
	console.log("self was: ", self);						
	console.log('grid id was ', self.grid.id);
	return false;
}	
	
					}
					return false;
				};


Opera 10B does not error out, and IE8 errors out on the idOffersGr

It feels like a timing/conflict problem but I just cannot replicate it separately.

The two grids in question are declared in markup and have the following

			<div id="idServicesGr" dojoType="dojox.grid.DataGrid" 
			    elasticView="2" 
				
				query="{ srvc_def_id: '*' }"
				queryOptions="{cache:true,VSPGRIDOPT:3333}"
				rowsPerPage="10"
			    store="crmServicesStore" 
				structure="layoutCRMServices" 
				rowSelector="20px"
				
				onRowDblClick="ServicesOrTarGrDblClk"				
				> 
			</div> 				


<div id="idOffersGr" dojoType="dojox.grid.DataGrid" 
	
elasticView="2" 
query="{ offr_def_id: '*' }"
queryOptions="{cache:true}"
rowsPerPage="10"
store="crmOffersStore" 
structure="layoutCRMOffers" 
							
rowSelector="20px"
onRowDblClick="OffrDblClk"											
> 
</div>

comment:13 Changed 10 years ago by Nathan Toone

Milestone: tbdfuture

comment:14 Changed 10 years ago by Nathan Toone

Owner: Nathan Toone deleted

Unassigning my tickets.

comment:15 Changed 7 years ago by dylan

Owner: set to Jared Jurkiewicz
Status: reopenedpending

Jared, is this still relevant? It would need to be updated to AMD and tested against 1.9.

comment:16 Changed 7 years ago by trac-o-bot

Resolution: invalid
Status: pendingclosed

Because we get so many tickets, we often need to return them to the initial reporter for more information. If that person does not reply within 14 days, the ticket will automatically be closed, and that has happened in this case. If you still are interested in pursuing this issue, feel free to add a comment with the requested information and we will be happy to reopen the ticket if it is still valid. Thanks!

Note: See TracTickets for help on using tickets.