Hi, we are seeing an issue with ListGrid context menus disappearing with the 6/16 nightly. If you drop the following code into your SDK, you can recreate the issue.
Instructions:
1. Load Page. Right-click on only record in main grid. Context Menu appears
2. Click on record and details section opens up.
3. Click Add button on Games tab.
4. Enter text into the editable row on Games tab
5. Try to right-click again on record in main grid again like step 1. Context Menu has disappeared.
Instructions:
1. Load Page. Right-click on only record in main grid. Context Menu appears
2. Click on record and details section opens up.
3. Click Add button on Games tab.
4. Enter text into the editable row on Games tab
5. Try to right-click again on record in main grid again like step 1. Context Menu has disappeared.
Code:
<%@ taglib uri="/WEB-INF/iscTaglib.xml" prefix="isomorphic" %> <HEAD><TITLE> SmartClient SDK - Animal Data Binding example </TITLE> <style> input.file { position: relative; text-align: right; -moz-opacity:0 ; filter:alpha(opacity: 0); opacity: 0; z-index: 2; color:#CCCCCC; } .uploadControl{ width:500px; color:#CCCCCC; } </style> </HEAD><isomorphic:loadISC skin="SmartClient"/> <BODY BGCOLOR=#D3D3D3> <SCRIPT> <isomorphic:XML> <jsp:include page="../shared/ds/animals.ds.xml"></jsp:include> </isomorphic:XML> var faDS = isc.DataSource.getDataSource("animals"); faDS.addMethods({ fetchData : function (record, callback, requestProperties) { if (requestProperties == null) requestProperties = {}; //do not use this short fetch below here for FundAsset //if (requestProperties.timeout == null) requestProperties.timeout = 1000; if (requestProperties.prompt == null) requestProperties.prompt = "fetching1_test"; return this.Super("fetchData", [record, callback, requestProperties]); }, updateData : function (record, callback, requestProperties) { if (requestProperties == null) requestProperties = {}; if (requestProperties.prompt == null) requestProperties.prompt = "saving_test"; if (requestProperties.timeout == null) requestProperties.timeout = 2000 return this.Super("updateData", [record, callback, requestProperties]); }, addData : function (record, callback, requestProperties) { if (requestProperties == null) requestProperties = {}; if (requestProperties.prompt == null) requestProperties.prompt = "adding_test"; if (requestProperties.timeout == null) requestProperties.timeout = 2500; return this.Super("addData", [record, callback, requestProperties]); }, transformRequest : function (dsRequest) { dsRequest.data = stripDSFields(dsRequest.data, faDS.fields,true,true,false); dsRequest.oldValues = stripDSFields(dsRequest.oldValues, faDS.fields,true,true,false); var params = { cvsTag : "cvsTag_1", browser:"Firefox", browserVersion:"3.6", browserOS:"Windows", requestUserID: 1, departmentID: 2, companyID:3 }; if(isc.getValueForKey("test1ID",dsRequest.data)=="test1ID" ){ params.test1ID=14; } if(isc.getValueForKey("test2ID",dsRequest.data)=="test2ID" ){ params.test2ID=28; } if(isc.getValueForKey("test3ID",dsRequest.data)=="test3ID" ){ if(at.initialLayoutComplete){ params.test3ID=28; }else{ params.test3ID=null; } } return isc.addProperties({}, dsRequest.data, params); } }) var at={}; isc.setAutoDraw(false); isc.Window.addProperties({ showHeaderBackground:false, //canDragResize:true, //showFooter:true, //showResizer:true, autoDraw: false, autoCenter: true, autoSize: true, dismissOnEscape: true, showCloseButton: true, showMinimizeButton: true }) var demoApp={}; isc.HTMLFlow.create({ ID:"animalMessage", padding:10, width:650, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage2", padding:10, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage3", padding:10, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage4", padding:10, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage5", padding:10, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage6", padding:10, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage7", padding:10, contents:"Animal Details<br/><a style='display:inline' href='#' onclick='showAssetNotesWindow(null,true,null);' title='add notes'>add notes</a>" }); isc.DynamicForm.create({ID:"assetNotesEditor", overflow: "auto", fields:[{name:"assetID", type:"select",width:150,allowEmptyValue:false,colSpan:3, title:"asset",prompt:"prompt"},{name:"subject", cellStyle:"uploadControl",colSpan:3,width:150, prompt:"subject"},{name:"source", colSpan:3,width:150, prompt:"source"},{name:"attachedFile",title:"attachment",type:"binary",cellStyle:"uploadControl", prompt:"attachment test"},{name:"notes", showTitle:true, colSpan:3,height:375,width:"*", prompt:"notes"}],itemHoverAlign:"left",itemHoverHeight:100,itemHoverWidth:200,height:465,numCols:4,width:700,colWidths:[100,80,80,"*"]}); isc.DynamicForm.create({ID: "assetNotesWindowSave",numCols:4,width:"650",height:"25",itemHoverAlign:"left",itemHoverHeight:100,itemHoverWidth:200,colWidths:[100,120,80,"*"]}); function showAssetNotesWindow(record,add,assetID){ if(at.assetNotesWindow==null || !at.assetNotesWindow.isVisible() || !at.assetNotesWindow.isDrawn()){ if(at.assetNotesWindow==null){ var windowTitle = "notes"; at.assetNotesWindow = isc.Window.create({ title: windowTitle, items: [ assetNotesEditor,assetNotesWindowSave ] }); } } assetNotesEditor.markForRedraw(); at.assetNotesWindow.show(); at.assetNotesWindow.bringToFront(); } isc.HTMLFlow.create({ ID:"animalMessage8", padding:10, contents:"Animal Details" }); isc.HTMLFlow.create({ ID:"animalMessage9", padding:10, contents:"Animal Details" }); isc.DynamicForm.create({ ID: "animalGamesSummary", itemHoverAlign:"left", itemHoverHeight:100, itemHoverWidth:200, editEvent:"click", overflow: "auto", emptyMessage:"empty" }); function updateAnimalGamesSummary() { animalGamesSummaryFields = [ {type:"rowSpacer", height:10}, {name:"animalSummary"} ]; animalGamesSummary.setFields(animalGamesSummaryFields); } isc.DynamicForm.create({ title:"Games Editor", ID:"animalGamesEditor", overflow: "auto", itemHoverAlign:"left", itemHoverHeight:100, itemHoverWidth:200, emptyMessage:"empty" }); function updateAnimalGamesEditor() { animalGamesEditorFields = [ {type:"rowSpacer", height:10}, {name:"animalGamesEditor"} ]; animalGamesEditor.setFields(animalGamesEditorFields); } isc.DynamicForm.create({ title:"Data", ID:"animalDataEditor", overflow: "auto", itemHoverAlign:"left", itemHoverHeight:100, itemHoverWidth:200, emptyMessage:"empty" }); function updateAnimalDataEditor() { animalDataEditorFields = [ {type:"rowSpacer", height:10}, {name:"attachedFile",type:"binary"}, {name:"animalDataEditor"} ]; animalDataEditor.setFields(animalDataEditorFields); } isc.HLayout.create({ ID:"animalGamesSummaryLayout", members:[ animalGamesSummary, animalGamesEditor, animalDataEditor ] }); isc.DynamicForm.create({ ID: "animalGamesSave", autoDraw:false, numCols:5, width:"100%", itemHoverAlign:"left", itemHoverHeight:100, itemHoverWidth:200, colWidths:[80,80,80,80,"*"] }); function updateAnimalGamesSave(){ animalGamesSaveFields=[ {type:"button", cellPadding:0, startRow:false,endRow: false,prompt:"edit",title:"Edit", showTitle:false, showLabel:false}, {type:"button", cellPadding:0, startRow:false,endRow: false,prompt:"edit",title:"Add", showTitle:false, showLabel:false, click:"animalGamesGrid.startEditingNew();"} ]; animalGamesSave.setFields(animalGamesSaveFields); } isc.ListGrid.create({ ID:"animalGamesGrid", headerHeight:36, height:125, canHover:true, hoverWidth:150, hoverHeight:50, hoverAlign:"left", hoverVAlign:"center", canSort:false, stopOnErrors:true, headerButtonProperties:{ hoverWidth:200, hoverHeight:100, hoverAlign:"left", hoverVAlign:"center" }, listEndEditAction:"next", autoSaveEdits:false, editEvent:"click", emptyMessage:"empty", alternateRecordStyles: true, fields:[ {name:"lifeSpan", width:50,canEdit:true,formatCellValue:"if(grid == animalGamesGrid) return formatNumber(value,0,'years','after',false)" }, {name:"gameName", canEdit:true, prompt:"Game"} ] }) isc.SectionStack.create({ ID:"animalGamesSections", className:"borderBR", visibilityMode:"multiple", backgroundColor:"white", sections:[ { expanded:true, items:[animalGamesGrid],showHeader:false}, { expanded:true, items:[animalGamesSave],showHeader:false}, { expanded:true, items:[animalGamesSummaryLayout],showHeader:false} ] }); isc.SearchForm.create({ cellPadding:4, numCols:8, itemHoverAlign:"left", itemHoverHeight:100, itemHoverWidth:200, ID:"findAnimalsForm" }) function showQuickAddGrid(){ updateQuickAddGrid(); if(demoApp.quickAddWindow==null || !demoApp.quickAddWindow.isVisible() || !demoApp.quickAddWindow.isDrawn()){ demoApp.quickAddWindow = isc.Window.create({ title: "quick add", items: [ quickAddGrid ] }); quickAddGrid.setData([]); demoApp.quickAddWindow.show(); demoApp.quickAddWindow.bringToFront(); quickAddGrid.cancelEditing(); quickAddGrid.discardAllEdits(); quickAddGrid.markForRedraw(); quickAddGrid.delayCall("focus"); quickAddGrid.delayCall("startEditingNew"); } } //handles getting the grid's data whether the grid is grouped or ungrouped function getGridDataSet(grid,invalidateCache, useOriginalData, checkIfAllDataLoaded){ if(grid==null){ return null; } var dataSet=grid.data; if( ( useOriginalData==null ||useOriginalData) && grid.isGrouped && grid.originalData!=null){ dataSet=grid.originalData; } var dataLoaded = false; var allDataLoaded=false; var dataSetLength; if(grid.isGrouped){ if(grid.originalData!=null){ dataLoaded = isA.Function(grid.originalData.lengthIsKnown) && grid.originalData.lengthIsKnown(); if(dataLoaded){ //isc.Log.logInfo("in getGridDataSet, checking dataSetLength and rangeIsLoaded on grid.originalData"); dataSetLength = grid.originalData.getLength(); allDataLoaded = isA.Function(grid.originalData.rangeIsLoaded) && grid.originalData.rangeIsLoaded(0, dataSetLength); } } }else{ if(grid.data!=null){ dataLoaded = isA.Function(grid.data.lengthIsKnown) && grid.data.lengthIsKnown(); if(dataLoaded){ //isc.Log.logInfo("in getGridDataSet, checking dataSetLength and rangeIsLoaded on grid.data"); dataSetLength = grid.data.getLength(); allDataLoaded = isA.Function(grid.data.rangeIsLoaded) && grid.data.rangeIsLoaded(0, dataSetLength); } } } if(invalidateCache && dataSet!=null && dataSet!=''){ if(allDataLoaded){ //data is loaded, now we check whether the entire range is loaded to determine //if we can safely invalidate if(grid.isGrouped){ //isc.Log.logInfo("in getGridDataSet invalidating cache, calling ungroup"); grid.ungroup(); } //isc.Log.logInfo("in getGridDataSet, calling invalidateCache"); dataSet.invalidateCache(); //isc.Log.logInfo("in getGridDataSet invalidating cache done"); } } if((checkIfAllDataLoaded==null || checkIfAllDataLoaded) && !allDataLoaded){ //isc.Log.logInfo("all data not loaded, returning null"); dataSet=null; } return dataSet; } isc.Menu.create({ ID:"animalMenu", showKeys:true, data:[ {title:"Add", click:function () {showQuickAddGrid();}} ] }); ListGrid.create({ ID:"animalsGrid", dataSource:"animals", canEdit:false, contextMenu:animalMenu, virtualScrolling:false, selectionType:"none", recordClick : function (viewer, record, recordNum, field, fieldNum, value, rawValue) { nextRecord=record; showDetails(); }, headerHeight: 36 }) isc.ListGrid.create({ ID: "quickAddGrid", headerHeight: 36, height:400, width:400, listEndEditAction:"next", canSort:false, canHover:true, hoverWidth:150, hoverHeight:50, hoverAlign:"left", hoverVAlign:"center", stopOnErrors:true, canEdit:false, headerButtonProperties:{ hoverWidth:200, hoverHeight:100, hoverAlign:"left", hoverVAlign:"center" }, canEdit:true, autoSize: true, autoSaveEdits:true, alternateRecordStyles: true, editComplete:function(rowNum,colNum,newValues,oldValues,editCompletionEvent,dsResponse){ var dataSet = getGridDataSet(animalsGrid); isc.Timer.setTimeout("quickAddGrid.startEditingNew();",0); }, dataSource:animals }); isc.TabSet.create({ ID:"animalTabs", height:380, tabs:[ {title:"Games", pane:animalMessage, ID:"animalGamesTab", width:70}, {title:"Notes", pane:animalMessage, ID:"animalNotesTab", width:70}, {title:"Food", pane:animalMessage, ID:"animalFoodTab", width:70}, {title:"Details", pane:animalMessage, ID:"animalDetailsTab", width:70} ] }); <%-- right-side layout--%> isc.SectionStack.create({ ID:"rightSections", overflow:"auto", className:"borderBR", visibilityMode:"multiple", backgroundColor:"white", sections:[ {title:"View Options", expanded:true,resizeable:false, items:[{children:[findAnimalsForm],height:30}]}, {title:"Grid", canCollapse:false, expanded:true, items:[animalsGrid]}, {title:"Detail", resizeable:false, expanded:true, items:[animalTabs]} , {title:"Welcome", canCollapse:false,expanded:true, items:[animalMessage6]} ] }); <%-- fund sections--%> isc.SectionStack.create({ID:"animalProfileSections", className:"borderBR", visibilityMode:"multiple", backgroundColor:"white", sections:[ { expanded:true, items:[animalMessage2],showHeader:false}, { expanded:true, items:[animalMessage3],showHeader:false} ] }) <%-- left-side layout--%> isc.SectionStack.create({ID:"leftSections", showResizeBar:true, visibilityMode:"multiple", width:250, className:"borderBL", sections:[ {title:"Left", canCollapse:false, expanded:true, items:[animalProfileSections]} ] }) <%-- **************overall page layout ************************--%> isc.VLayout.create({ ID:"pageLayout", width:"100%", height:"100%", members:[ animalMessage4, isc.HLayout.create({ ID:"mainLayout", layoutMargin:5, members:[ leftSections, rightSections ] }) ] }); function showDetails() { var record = nextRecord; if(!rightSections.sectionIsExpanded(2) ){ isc.Timer.setTimeout( "rightSections.expandSection(2);", 0 ); } animalTabs.updateTab(animalTabs.getTabObject("animalGamesTab"),animalGamesSections); animalTabs.updateTab(animalTabs.getTabObject("animalNotesTab"),animalMessage7); animalTabs.updateTab(animalTabs.getTabObject("animalFoodTab"),animalMessage8); animalTabs.updateTab(animalTabs.getTabObject("animalDetailsTab"),animalMessage9); isc.Timer.setTimeout( "animalsGrid.scrollRecordIntoView(" + animalsGrid.getRecordIndex(record) + ")", 0 ); } //helper method to copy object properties from one object to another--%> function copyObjectProperties(originObj,destObj, dataSourceName){ if(destObj==null){ destObj={}; } var originKeys = isc.getKeys(originObj); var j = originKeys.length; for (var i = 0; i < j; i++){ var key = originKeys[i]; //append test to cause value to change destObj[key] = originObj[key] + " test" } } function updateGridData(){ var record = animalsGrid.getRecord(1); record.continent1="test data"; record.continent2="test data"; record.continent3="test data"; record.continent4="test data"; record.continent5="test data"; record.continent6="test data"; record.continent7="test data"; record.continent8="test data"; record.continent9="test data"; record.continent10="test data"; record.continent11="test data"; record.continent12="test data"; record.continent13="test data"; record.continent14="test data"; record.continent15="test data"; record.continent16="test data"; record.continent17="test data"; record.continent18="test data"; record.continent19="test data"; record.continent20="test data"; record.continent21="test data"; record.continent22="test data"; record.continent23="test data"; record.continent24="test data"; record.continent25="test data"; record.continent26="test data"; record.continent27="test data"; record.continent28="test data"; record.continent29="test data"; record.continent30="test data"; record.continent31="test data"; record.continent32="test data"; record.continent33="test data"; record.continent34="test data"; record.continent35="test data"; record.continent36="test data"; record.continent37="test data"; record.continent38="test data"; record.continent39="test data"; record.continent40="test data"; record.continent41="test data"; record.continent42="test data"; record.continent43="test data"; record.continent44="test data"; record.continent45="test data"; record.continent46="test data"; record.continent47="test data"; record.continent48="test data"; record.continent49="test data"; record.continent50="test data"; record.continent51="test data"; record.continent52="test data"; record.continent53="test data"; record.continent54="test data"; record.continent55="test data"; record.continent56="test data"; record.continent57="test data"; record.continent58="test data"; record.continent59="test data"; record.continent60="test data"; record.continent61="test data"; record.continent62="test data"; record.continent63="test data"; record.continent64="test data"; record.continent65="test data"; record.continent66="test data"; record.continent67="test data"; record.continent68="test data"; record.continent69="test data"; record.continent70="test data"; record.continent71="test data"; record.continent72="test data"; record.continent73="test data"; record.continent74="test data"; record.continent75="test data"; record.continent76="test data"; record.continent77="test data"; record.continent78="test data"; record.continent79="test data"; record.continent80="test data"; record.continent81="test data"; record.continent82="test data"; record.continent83="test data"; record.continent84="test data"; record.continent85="test data"; record.continent86="test data"; record.continent87="test data"; record.continent88="test data"; record.continent89="test data"; record.continent90="test data"; record.continent91="test data"; record.continent92="test data"; record.continent93="test data"; record.continent94="test data"; record.continent95="test data"; record.continent96="test data"; record.continent97="test data"; record.continent98="test data"; record.continent99="test data"; record.continent90="test data"; record.continent91="test data"; record.continent92="test data"; record.continent93="test data"; record.continent94="test data"; record.continent95="test data"; record.continent96="test data"; record.continent97="test data"; record.continent98="test data"; record.continent99="test data"; record.continent100="test data"; record.continent101="test data"; record.continent102="test data"; record.continent103="test data"; record.continent104="test data"; record.continent105="test data"; record.continent106="test data"; record.continent107="test data"; record.continent108="test data"; record.continent109="test data"; record.continent110="test data"; record.continent111="test data"; record.continent112="test data"; record.continent113="test data"; record.continent114="test data"; record.continent115="test data"; record.continent116="test data"; record.continent117="test data"; record.continent118="test data"; record.continent119="test data"; record.continent120="test data"; record.continent121="test data"; record.continent122="test data"; record.continent123="test data"; record.continent124="test data"; record.continent125="test data"; record.continent126="test data"; record.continent127="test data"; record.continent128="test data"; record.continent129="test data"; record.continent130="test data"; record.continent131="test data"; record.continent132="test data"; record.continent133="test data"; record.continent134="test data"; record.continent135="test data"; record.continent136="test data"; record.continent137="test data"; record.continent138="test data"; record.continent139="test data"; record.continent140="test data"; record.continent141="test data"; record.continent142="test data"; record.continent143="test data"; record.continent144="test data"; record.continent145="test data"; record.continent146="test data"; record.continent147="test data"; record.continent148="test data"; record.continent149="test data"; record.continent150="test data"; record.continent151="test data"; record.continent152="test data"; record.continent153="test data"; record.continent154="test data"; record.continent155="test data"; record.continent156="test data"; record.continent157="test data"; record.continent158="test data"; record.continent159="test data"; var record2 = isc.clone(record); copyObjectProperties(record2,record); } function updateFindAnimalsForm(){ findAnimalsForm.setFields( [ {type:"staticText", showIf:" return false;",shouldSaveValue:false}, {name:"search"}, {type: "button", showIf:" return false;",width:200, title:"Ungroup, No Update, Redraw",click:function(){ isc.say("redrawing..."); if(animalsGrid.isGrouped){ animalsGrid.ungroup(); } //do not call updateGridData here //updateGridData(); animalsGrid.redraw(); isc.say('redraw complete'); } }, {type: "button", showIf:" return false;",width:200, title:"Ungroup, Update, and Redraw",click:function(){ isc.say("updating data and redrawing..."); if(animalsGrid.isGrouped){ animalsGrid.ungroup(); } //call updateGridData here which causes updateGridData(); animalsGrid.redraw(); isc.say('updating data and redraw complete'); } }, {type: "button", showIf:" return false;", width:200, title:"Group, Update, Redraw",click:function(){ isc.say("grouping, updating data, and redrawing..."); if(!animalsGrid.isGrouped){ animalsGrid.groupBy("information"); } //call updateGridData here which causes updateGridData(); animalsGrid.redraw(); isc.say('group, updating data, and redraw complete'); } } ] ); } function updateAnimalsGrid(){ animalsGrid.setFields([ {name:"commonName"}, {name:"scientificName"}, {name:"lifeSpan"}, {name:"information"}, {name:"information2", showIf:"return false;"}, {name:"continent1", showIf:"return false;"}, {name:"continent2", showIf:"return false;"}, {name:"continent3", showIf:"return false;"}, {name:"continent4", showIf:"return false;"}, {name:"continent5", showIf:"return false;"}, {name:"continent6", showIf:"return false;"}, {name:"continent7", showIf:"return false;"}, {name:"continent8", showIf:"return false;"}, {name:"continent9", showIf:"return false;"}, {name:"continent10", showIf:"return false;"} ] ) } function updateQuickAddGrid(){ quickAddGrid.cancelEditing(); quickAddGrid.discardAllEdits(); quickAddGrid.markForRedraw(); var animalResultSet = isc.ResultSet.create({ dataSource: animals, initialData: [], criteria: {} }); quickAddGrid.setData(animalResultSet); quickAddGrid.setFields([ {name:"scientificName",required:true}, {name:"commonName"}, {name:"lifeSpan"}, {name:"status"} ] ) } function stripTags(str) { if(str!=null && isA.Function(str.split)){ //add logic to preserve <br> by converting to \n charcters and then back str=str.replaceAll("<br/>","\n"); str=str.replaceAll("<br>", "\n"); //convert other representations of open and close tag //to their text equivalents first str=str.replaceAll("<","<"); str.replaceAll(">",">"); str=str.replaceAll("<","<"); str.replaceAll(">",">"); str=str.replaceAll("<","<"); str.replaceAll(">",">"); str=str.replaceAll("<","<"); str.replaceAll(">",">"); } if(str!=null && isA.Function(str.replace)){ var returnString = str.replace(/<\/?[^>]+>/gi, ''); //comment out logic that preserves breaks until iso fixed fixedRecordHeight issue with Firefox //returnString = returnString.replaceAll("\n","<br/>"); return returnString; }else{ return str; } } function stripDSFields(data,dsFields,deleteNullFields,deleteDisplayOnly, keepExportFieldsOnly){ //remove any Datasource fields from data object for DSRequest --%> var keys = isc.getKeys(data); var j = keys.length; for (var i = 0; i < j; i++){ var key = keys[i]; var dsField = dsFields[key]; //strip out html tags so they don't get into db if(dsField!=null && dsField.type!=null && ( dsField.type.toLowerCase()=="text")){ var value = isc.getValueForKey(key,data); if(value!=null && value!=key){ value = stripTags(value,true); data[key]=value; } } //if we are keeping export fields and this is one, continue without removing if(keepExportFieldsOnly){ if(dsField!=null && dsField.exportField){ continue; }else{ delete data[key]; } } //delete all fields that are not defined as datasource fields if((deleteNullFields==null || deleteNullFields) && dsField==null){ delete data[key]; continue; } //remove any client-side or display only //attributes and any fields that are part of another datasource--%> if(dsField!=null && (isc.DataSource.getDataSource(dsField.type)!=null || ((deleteDisplayOnly==null || deleteDisplayOnly) && dsField.displayOnly))){ delete data[key]; } } return data; } function initPageLayout(){ updateAnimalGamesSave() updateAnimalGamesSummary(); updateAnimalGamesEditor(); updateAnimalDataEditor(); updateFindAnimalsForm() updateAnimalsGrid(); pageLayout.draw(); //rightSections.showSection(0); rightSections.showSection(1); rightSections.showSection(2); rightSections.hideSection(3); rightSections.collapseSection(2); at.initialLayoutComplete=true; //isc.Timer.setTimeout("animalsGrid.groupBy('information');",4000); } function initialDataLoad(data,dsRequest){ createAnimalResultSet(data,dsRequest,data,true); initPageLayout(); } function createAnimalResultSet(data,dsRequest,data,initialLoad){ var animalResultSet = isc.ResultSet.create({ dataSource: animals, initialData: data, criteria: dsRequest.data ,neverDropUpdatedRows:true }); animalsGrid.setData(animalResultSet); } animals.fetchData({status:"Threatened",lifeSpan:10},"initialDataLoad(data,dsRequest);"); function formatNumber (anynum, decimal,label,labelPosition,adjustDecimal, divideBy) { if(anynum == null || !isNumber(anynum)){ //4/28/11.try to convert to number before failing anynum = Number(anynum); if(!isNumber(anynum)){ return LABEL_NA; } } if(divideBy!=null){ anynum = anynum/divideBy; } var divider =10; switch(decimal){ case 0: divider =1; break; case 1: divider =10; break; case 2: divider =100; break; case 3: divider =1000; break; case 4: divider =10000; break; case 5: divider =100000; break; case 6: divider =1000000; break; case 7: divider =10000000; break; case 8: divider =100000000; break; default: //for 3 decimal places--%> divider =1000; } var workNum=Math.abs((Math.round(anynum*divider)/divider)); var workStr=""+workNum if (workStr.indexOf(".")==-1){workStr+="."} var dStr=workStr.substr(0,workStr.indexOf(".")); var dNum=dStr-0; var pStr=workStr.substr(workStr.indexOf(".")); //only fix the decimals if the adjustDecimal param is set to false--%> if(adjustDecimal!=null && !adjustDecimal){ while (pStr.length-1< decimal){pStr+="0"} } if(pStr =='.') pStr =''; // Adds a comma in the thousands place.--%> if (dNum>=1000) { var dLen=dStr.length dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen) } // Adds a comma in the millions place.--%> if (dNum>=1000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen) } // Adds a comma in the billions place--%> if (dNum>=1000000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000000))+","+dStr.substring(dLen-11,dLen) } // Adds a comma in the trillions place.--%> if (dNum>=1000000000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000000000))+","+dStr.substring(dLen-15,dLen) } if (dNum>=1000000000000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000000000000))+","+dStr.substring(dLen-19,dLen) } if (dNum>=1000000000000000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000000000000000))+","+dStr.substring(dLen-23,dLen) } if (dNum>=1000000000000000000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000000000000000000))+","+dStr.substring(dLen-27,dLen) } var retval = dStr + pStr if(labelPosition != null && label != null && label!=""){ if(labelPosition == "before"){ retval = label + retval; } else { retval = retval + " " + label; } } // Put numbers in parentheses if negative.--%> if (anynum<0) { retval="("+retval+")"; } return retval; } function isNumber(value) { isc.Log.logInfo("typeof value=" + typeof value); return typeof value === 'number' && isFinite(value); } </SCRIPT> </BODY></HTML>
Comment