Opened 4 years ago

Closed 3 years ago

#18844 closed defect (fixed)

Legacy build regression?

Reported by: babynus Owned by: dylan
Priority: high Milestone: 1.11.3
Component: DojoX Grid Version: 1.11.1
Keywords: Cc:
Blocked By: Blocking:

Description

I'm running large application using dojox.grid.datagrid in declarative mode for years (since 2009). All was working fine until 1.10.4. Since 1.10.5 and up to 1.11.1, my dataggrid is not rendered any more : store is correctly filled in, but no row is displayed in the grid, without any issue logged is the console. Was there any change in the datagrid and the way it is managed that could explain the behavior ?

Exemple of code :

<div dojoType="dojo.data.ItemFileReadStore" id="objectStore" jsId="objectStore" clearOnClose="true"
  url="../tool/jsonQuery.php?objectClass=Action" >
</div>
<table id="objectGrid" jsId="objectGrid" dojoType="dojox.grid.DataGrid"
  query="{ id: '*' }" store="objectStore"
  queryOptions="{ignoreCase:true}"
  rowPerPage="25"
  columnReordering="false"
  rowSelector="false"
  loadingMessage="loading..."
  fastScroll="false"
  onHeaderClick="unselectAllRows('objectGrid');selectGridRow();"
  onHeaderCellContextMenu="dijit.byId('listColumnSelector').toggleDropDown();"
  selectionMode="single" >
  <thead>
    <tr>
      <th field="id" formatter="numericFormatter" width="10%"># ${id}</th>
      <th field="name" width="60%">${name}</th>
      <th field="color" width="15%" formatter="colorFormatter">${color}</th>
      <th field="sortOrder" width="10%">${sortOrderShort}</th>  
      <th field="idle" width="5%" formatter="booleanFormatter">${idle}</th>
    </tr>
  </thead>
</table>

store objectStore contains correct values, but grid contains no row (the div with attchpoint="viewsNode" is empty. Any hind you help. Thanks in advance.

Attachments (1)

projeqtor.profile.js (2.2 KB) - added by babynus 4 years ago.
profile for packaging dojo

Download all attachments as: .zip

Change History (10)

comment:1 Changed 4 years ago by babynus

I just had few tests, and issue is not directly in Datagrid widget, but linked to dojo core. My tests : I installed full 1.11.1, and then copies parts from 1.10.4 until it works again. I found that full 1.11.1 with just /dojo/dojo.js of version 1.10.4 works fine, the grid is visible again. I continue my investigations, but if anyone has a clue...

Changed 4 years ago by babynus

Attachment: projeqtor.profile.js added

profile for packaging dojo

comment:2 Changed 4 years ago by babynus

Another hint : I tested with 1.11.1 source (all dojo / dijit / dojox) and all is working fine. So it is my packaging that sets an issue (compiling only required code). Attached is my profile.js script. I still don't understand why is was working fine on 1.10.4, and not any more on 1.10.5 and 1.11.1.

Last edited 4 years ago by babynus (previous) (diff)

comment:3 Changed 4 years ago by dylan

Milestone: tbd1.11.2
Summary: dojox.grid.dataGrid : no data displayed in Dojo 1.10.5 and 1.11.1Legacy build regression?

There were some regressions with 1.11, so it may help to try against master or the 1.11 or 1.10 branches since the last release. That said, I'm not sure if this will resolve the issue.

I've started to investigate this, and I'm noticing several odd things, and I'm not sure if something is off with my local setup or what, but namely:

  • Many dojox packages are complaining about missing a dependency on themes, which makes no sense given that dojox does not depend on the new themes package
  • When enabling source maps, dojo.js.uncompressed.js seems to be getting munged
  • With the built file, I'm getting an error of "Uncaught TypeError?: Cannot read property 'isBuild' of undefined"

I'll have to investigate further to decouple what I'm seeing on my machine vs. if/what the actual issue is.

For now, I'm going to rename this ticket as "legacy build regression?" as it's possible that the issue is more general than originally reported.

comment:4 Changed 4 years ago by dylan

Owner: changed from Evan to dylan
Status: newassigned

comment:5 Changed 4 years ago by dylan

The build problems I was seeing were being aggravated by a regression that has been fixed with https://github.com/dojo/dojo/commit/360075c5c9f707df644d02ccc8dbd69287756e5c . We will look into this more asap.

comment:6 Changed 4 years ago by dylan

Milestone: 1.11.21.11.3

comment:7 Changed 3 years ago by Michael J Van Sickle

I've pinned the issue down to commit 4c89d551d73649aac52c8ce3cb7e6edba1dcc4d9 in the dojo repo. Something about the change to isArray and/or isArrayLike is causing this regression.

comment:8 Changed 3 years ago by Michael J Van Sickle

It turns out that the dojox/grid/_Layout module was using dojo/_base/lang::isArray to determine if a layout structure is able to be iterated over. However, when defining a DataGrid? via HTML markup, a NodeList? is passed in. Since this is not a true array, the method was failing to process the column definitions properly.

Submitted PR 238 (https://github.com/dojo/dojox/pull/238) to correct this regression by changing the isArray call to isArrayLike

Note: See TracTickets for help on using tickets.