Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Patch for ListGrid.getFieldState

    Hi there,

    The following ListGrid is causing problems when calling getFieldState in the process of calling getViewState(). So, I had to patch in an extra null check as follows below on the variable _2. Let me know if this fix will make it into 7.0. If not, I'll extend my patch. Thanks.

    ListGrid definition:
    Code:
    	isc.ATListGrid.create({
    		ID:"fundAssetSectorGrid",
    		height:250,
    		cellHoverHTML:function (record, rowNum, colNum){ 
    				var returnText="";
    				var cellHoverHTML = this.Super("cellHoverHTML",arguments);
    				if(cellHoverHTML!=null){
    					returnText += cellHoverHTML;
    				}
    				//make this editable now with pctAllocation so this text no longer applies
    				//returnText += addFASGridHoverText(record, colNum);
    				return  returnText;			
    		},
    		canEdit:true,
    		editEvent:"doubleClick",
    	    canEditCell : function (rowNum, colNum) {
    	        var record = this.getRecord(rowNum);
    	        var fieldName = this.getFieldName(colNum);
    
    	        //allow editing fundSectorID on an Add
    	        if(record==null && fieldName=="fundSectorID"){
    	        	return true;
    	        }
    	        if (record!=null && record.analystGroup ) 
    	        {
    	            return false;   
    	        }
    
    	        return this.Super("canEditCell", arguments);
    	    },
    		recordDoubleClick:  function (viewer, record, recordNum, field, fieldNum, value, rawValue) {
    	    	if(record!=null){
    	    		if(record.analystGroup && !this.canEditCell(recordNum,fieldNum)){
    	    			isc.warn(PROMPT_CANTEDIT_SECTOR);
    	    		}
    	    	}
    	    },
    		canSort:true,
    		autoSaveEdits:false,
    		cellContextClick:function(record,rowNum,colNum){
    			this.currentRowNum = rowNum;
    			return this.Super("cellContextClick",arguments);
    		},
    		listEndEditAction:"next",
    		contextMenu: fundAssetSectorMenu,
    		emptyMessage:"<spring:message code="label.emptygrid"/>",
    		editPendingBaseStyle: 'editedCell',
    		editorEnter : function (record, value, rowNum, colNum) {
    			if(detailFundAssetRecord==null){
    				//if a detail record is not selected, something
    				//went wrong, deselect and start over
    			      deselectFundAssetsGrid();
    			      return;
    			}
    			this.currentEditRowNum = rowNum;
    			if(record==null){
    				this.deselectAllRecords();
    			}
    	        var editValues = this.getEditValues(rowNum);
    			if (editValues.fundAssetID == null && detailFundAssetRecord!=null){ 
    				this.setEditValue(rowNum, "fundAssetID", detailFundAssetRecord.fundAssetID);
    			}
    			if (record==null && editValues.fundSectorID == null) 
    				this.setEditValue(rowNum, "fundSectorID", null);
    
    	    },
    		fields:[
    			{name:"fundSectorID", editorType:"selectItem", width:125, canEdit:false, align:"left",editorValueMap:fundSectorEditorValueMap,valueMap:fundSectorValueMap, prompt:"<spring:message code="desc.fas.sector"/>"},
    			{name:"pctAllocation", defaultValue:100,canEdit:true,canFilter:false,width:"10%", align:"right",
    				 prompt:"<spring:message code="desc.fas.pctallocation"/>"   },
    
    			{name:"maxGrossExposure", canEdit:false,width:125,  
    				prompt:"<spring:message code="desc.fas.maxgrossexposure"/>"},
    			{name:"maxNetExposure",canEdit:false, width:125,
    				prompt:"<spring:message code="desc.fas.maxnetexposure"/>"},
    
    			{name:"optimalGrossExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.optimalgrossexposure"/>"},
    			{name:"currentGrossExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.currentgrossexposure"/>"},
    			{name:"optimalNetExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.optimalnetexposure"/>"},
    			{name:"currentNetExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.currentnetexposure"/>"},		
    			<%-- We don't show these by default --%>
    			{name:"optimalBetaAdjNetExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.optimalbetanetexposure"/>",showIf:"return false;"},
    			{name:"optimalBetaAdjGrossExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.optimalbetagrossexposure"/>",showIf:"return false;"},
    			{name:"optimalDeltaAdjNetExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.optimaldeltanetexposure"/>",showIf:"return false;"},
    			{name:"optimalDeltaAdjGrossExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.optimaldeltagrossexposure"/>",showIf:"return false;"},
    			{name:"currentBetaAdjNetExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.currentbetanetexposure"/>",showIf:"return true;"},
    			{name:"currentBetaAdjGrossExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.currentbetagrossexposure"/>",showIf:"return true;"},
    			{name:"currentDeltaAdjNetExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.currentdeltanetexposure"/>",showIf:"return true;"},
    			{name:"currentDeltaAdjGrossExposure", canEdit:false,  
    				prompt:"<spring:message code="desc.sector.currentdeltagrossexposure"/>",showIf:"return true;"},			
    			{name:"created", canEdit:false,width:75,canFilter:false, showIf:"return false;", prompt:"<spring:message code="desc.created"/>"},
    			{name:"createdUserName", canEdit:false,width:75,canFilter:false, showIf:"return false;", prompt:"<spring:message code="desc.createdby"/>"},
    			{name:"modified", showIf:"return false;",canEdit:false,width:75,canFilter:false, prompt:"<spring:message code="desc.modified"/>"},
    			{name:"modifiedUserName", canEdit:false,width:75,canFilter:false, showIf:"return false;", prompt:"<spring:message code="desc.modifiedby"/>"}
    
    		],
    		dataSource:FundAssetSector
    	})

    Patch

    Code:
    if (window.isc && isc.version.startsWith("6.5.1/")) {
    	
    	isc.ListGrid.addProperties({
    		getFieldState:function(){
    		var _1=[];
    		if(this.completeFields){
    			var _2=null;
    			if(this.header!=null && this.header.members!=null){
    				_2=this.header.members;
    			}
    			for(var i=0;i<this.completeFields.length;i++){
    				var _4=this.completeFields[i],_5=_4[this.fieldIdProperty],_6={name:_5};
    				if(!this.fieldIsVisible(_4))_6.visible=false;
    				if(_2!=null){
    					var _7=_2.find(this.fieldIdProperty,_5);
    					if(_7&&_7.$pn&&isc.isA.Number(_7.$pn)){
    						_6.width=_7.$pn;
    					}
    				}
    				_1.add(_6);
    			}
    		}	
    		return isc.Comm.serialize(_1);
    	} 
    
    		
    	});
    	
    }

    #2
    The method is quite different in 7.0 (it's been generalized for other DataBoundComponents) but it looks like the condition you were fixing (header not existing yet) is fixed in 7.0 already.

    Comment

    Working...
    X