SmartClient Version: v11.0p_2016-05-22/EVAL Development Only (expires 2016.07.21_04.37.11) Licensed to: Isomorphic Software (#ISC_EVAL_NIGHTLY)
Chrome on OSX
Hello, I've got a ListGrid (ID="movimentiGrid"), with allowFilterExpressions: true.
The grid is bound to a dataSource which has a field of type datetime (which actually is not shown in the grid):
The grid may be filtered (using a SelectItem) for specific dates, like this:
as you may see, I was using a simple criteria. When I typed something in the filterEditor grid, this additional criteria was combined with the previous criteria (as an AdvancedCriteria).
Now with 11.0, this is what is logged when I type something in the filterEditor:
As you may see, the AdvancedCriteria uses 'iContains' for the 'EXPORTED_TS' field which is of type datetime.
The framework warns me about that:
Now, to obtain the same behavior, I've got to use an AdvancedCriteria for the fetch, like this:
But I'm worried that I may have this kind of problem in many places, for several applications.
Also, If I set allowFilterExpressions: false in the grid, there aren't problems. Also allowFilterOperators: true causes the same problem if you actually make a filter using a specific operator.
So the question is: am I misusing something? Or is it a bug?
Chrome on OSX
Hello, I've got a ListGrid (ID="movimentiGrid"), with allowFilterExpressions: true.
The grid is bound to a dataSource which has a field of type datetime (which actually is not shown in the grid):
Code:
<field name="EXPORTED_TS" type="datetime" exportFormat="dd/MM/yyyy HH:mm:ss"/>
Code:
{ name: "selectLotto", type: "select", multiple: true, title: "Filtro per Lotto", required: true, width: 200, optionDataSource: jfLotti, displayField: "LOTTO_DESC", valueField: "LOTTO_DATE", allowEmptyValue: true, changed: function (form, item, value) { movimentiGrid.fetchData({EXPORTED_TS: value}); } }
Now with 11.0, this is what is logged when I type something in the filterEditor:
Code:
2016-05-25 14:39:10,752 DEBUG RPCManager Request #1 (DSRequest) payload: { criteria:{ operator:"and", _constructor:"AdvancedCriteria", criteria:[ { fieldName:"CAUSAL", operator:"iContainsPattern", value:"n02" }, { operator:"iContains", fieldName:"EXPORTED_TS", value:[ new Date(1438939656000) ] } ] }, operationConfig:{ dataSource:"JF_MOVIMENTI", repo:null, operationType:"fetch", textMatchStyle:"substring" }, startRow:0, endRow:75, sortBy:[ "NAME_LAST", "NAME_FIRST" ], componentId:"movimentiGrid", appID:"builtinApplication", operation:"movimentiNonScartati", oldValues:{ operator:"and", _constructor:"AdvancedCriteria", criteria:[ { fieldName:"CAUSAL", operator:"iContainsPattern", value:"n02" }, { operator:"iContains", fieldName:"EXPORTED_TS", value:[ new Date(1438939656000) ] } ] } } 2016-05-25 14:39:10,752 INFO IDACall Performing 1 operation(s) 2016-05-25 14:39:10,752 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 2016-05-25 14:39:10,752 DEBUG DeclarativeSecurity DataSource JF_MOVIMENTI is not in the pre-checked list, processing... 2016-05-25 14:39:10,753 DEBUG AppBase [builtinApplication.movimentiNonScartati] No userTypes defined, allowing anyone access to all operations for this application 2016-05-25 14:39:10,753 DEBUG AppBase [builtinApplication.movimentiNonScartati] No public zero-argument method named '_movimentiNonScartati' found, performing generic datasource operation 2016-05-25 14:39:10,753 INFO SQLDataSource [builtinApplication.movimentiNonScartati] Performing fetch operation with criteria: {criteria:[{fieldName:"CAUSAL",operator:"iContainsPattern",value:"n02"},{criteria:[{value:new Date(1438939656000),fieldName:"EXPORTED_TS",operator:"iContains"}],operator:"or"}],operator:"and",_constructor:"AdvancedCriteria"} values: {criteria:[{fieldName:"CAUSAL",operator:"iContainsPattern",value:"n02"},{criteria:[{value:new Date(1438939656000),fieldName:"EXPORTED_TS",operator:"iContains"}],operator:"or"}],operator:"and",_constructor:"AdvancedCriteria"} 2016-05-25 14:39:10,754 WARN SQLWhereClause [builtinApplication.movimentiNonScartati] Attempt to compare a Date as String, testing value Fri Aug 07 11:27:36 CEST 2015 with operator iContains. This is an invalid comparison, so we are returning FALSE. 2016-05-25 14:39:10,754 INFO SQLDataSource [builtinApplication.movimentiNonScartati] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause AND JF_MOVIMENTI.FL_SCART = 'F' ORDER BY $defaultOrderClause 2016-05-25 14:39:10,754 DEBUG SQLDataSource [builtinApplication.movimentiNonScartati] Executing row count query: SELECT COUNT(*) FROM $defaultTableClause WHERE $defaultWhereClause AND JF_MOVIMENTI.FL_SCART = 'F' 2016-05-25 14:39:10,754 DEBUG SQLDataSource [builtinApplication.movimentiNonScartati] Eval'd row count query: SELECT COUNT(*) FROM DBSALES.JF_MOVIMENTI WHERE ((LOWER(JF_MOVIMENTI.CAUSAL) LIKE LOWER('%n02%') ESCAPE'\' AND JF_MOVIMENTI.CAUSAL IS NOT NULL) AND ('0'='1')) AND JF_MOVIMENTI.FL_SCART = 'F' 2016-05-25 14:39:10,755 DEBUG PoolableSQLConnectionFactory [builtinApplication.movimentiNonScartati] makeObject() created an unpooled Connection '254276716' 2016-05-25 14:39:10,755 DEBUG SQLConnectionManager [builtinApplication.movimentiNonScartati] Borrowed connection '254276716' 2016-05-25 14:39:10,755 DEBUG SQLTransaction [builtinApplication.movimentiNonScartati] Started new dbJpcEP transaction "254276716" 2016-05-25 14:39:10,755 DEBUG SQLDataSource [builtinApplication.movimentiNonScartati] Setting DSRequest as being part of a transaction 2016-05-25 14:39:10,755 INFO SQLDriver [builtinApplication.movimentiNonScartati] Executing SQL query on 'dbJpcEP' using connection '254276716': SELECT COUNT(*) FROM DBSALES.JF_MOVIMENTI WHERE ((LOWER(JF_MOVIMENTI.CAUSAL) LIKE LOWER('%n02%') ESCAPE'\' AND JF_MOVIMENTI.CAUSAL IS NOT NULL) AND ('0'='1')) AND JF_MOVIMENTI.FL_SCART = 'F' 2016-05-25 14:39:10,765 INFO DSResponse DSResponse: List with 0 items
The framework warns me about that:
Code:
2016-05-25 14:39:10,754 WARN SQLWhereClause [builtinApplication.movimentiNonScartati] Attempt to compare a Date as String, testing value Fri Aug 07 11:27:36 CEST 2015 with operator iContains. This is an invalid comparison, so we are returning FALSE.
Code:
movimentiGrid.fetchData( { _constructor: "AdvancedCriteria", operator: "and", criteria: [ {fieldName: "EXPORTED_TS", operator: "equals", value: value} ] } );
Also, If I set allowFilterExpressions: false in the grid, there aren't problems. Also allowFilterOperators: true causes the same problem if you actually make a filter using a specific operator.
So the question is: am I misusing something? Or is it a bug?
Comment