The code below is trying to populate 3 nested grids. My current problem is that I get ALL the project issue records after applying applyFilter criteria when I should only get one or two.
You can see in the developer console below that a record count of 9 is returned for { ImpactID: 101}. Problem: the very first record returned (i.e. issueResults[zero]) has "ImpactID: 104,".
Ironically, my complicated method of removing duplicate records is working. And, my command of a simple applyFilter call is not. Could the problem be with DataSource.fieldMatchesFilter?
Bummer. Any ideas?
Thanks,
Rick
P.S. I am running SmartClient Version: v8.2p_2013-01-14/EVAL Development Only on Mozilla Firefox 12.0 with Firebug using Windows XP Pro 32 bit.
Code:
Log.setPriority("Log", 5); Log.logDebug("**** ProjectIssue version****************** OnlineMeetingButton.Click"); OnlineMeetingWindow.autoDraw = false; OnlineAgendaGrid.autoDraw = false; var issueArray = []; issueArray = ProjectIssue.cacheData; Log.logDebug("************ ProjectIssue.cacheData record count: " + issueArray.length); if (!OnlineAgendaGrid) {Log.logDebug("************ OnlineAgendaGrid is undefined.");} MeetingTopic.fetchData( { "MeetingTypeID" : Application.currentMeetingTypeID }, function (dsResponse, data, dsRequest) { Log.logDebug("************meeting topic records fetched: " + this.echo(dsResponse)); if (dsResponse.status >= 0) { if (dsResponse.totalRows > 0) { var totalTopics = dsResponse.totalRows; for (var currentTopic = 0; currentTopic < totalTopics; currentTopic++) { var currentTopicRecord = {}; currentTopicRecord = data[currentTopic]; //var currentTopicMember = OnlineAgendaGrid.getMember(currentTopic); Log.logDebug("************ currentTopicRecord: " + this.echo(currentTopicRecord)); if (currentTopicRecord.SearchEnabled) { var issueCriteria = ""; if (!(typeof currentTopicRecord.IssueTypeID === "undefined")) { issueCriteria = "IssueTypeID: " + String(currentTopicRecord.IssueTypeID); } if (!(typeof currentTopicRecord.CategoryID === "undefined")) { if (issueCriteria !== "") { issueCriteria = issueCriteria + ", "; } issueCriteria = issueCriteria + "CategoryID: " + String(currentTopicRecord.CategoryID) ; } if (!(typeof currentTopicRecord.ImpactID === "undefined")) { if (issueCriteria !== "") { issueCriteria = issueCriteria + ", "; } issueCriteria = issueCriteria + "ImpactID: " + String(currentTopicRecord.ImpactID) ; } var issueResults = ProjectIssue.applyFilter(issueArray, issueCriteria); Log.logDebug("************ ProjectIssue.applyFilter record count: " + issueResults.length + " for { " + issueCriteria + "}"); var issueCount = issueResults.length; if (issueCount > 0) { Log.logDebug("************ ProjectIssue.applyFilter issueResults[zero]: " + this.echo(issueResults[0])); Log.logDebug("************ issueResults[zero]: " + this.echo(issueResults[0])); //currentTopicRecord.canExpand(true); Log.logDebug("************ working with currentTopicRecord: " + this.echo(currentTopicRecord)); var issueSubGrid = OnlineAgendaGrid.getExpansionComponent(currentTopicRecord); if (issueSubGrid === null) {Log.logDebug("************ issueSubGrid is null.");} issueSubGrid.canExpandRecords=true; issueSubGrid.canExpandMultipleRecords=false; issueSubGrid.expansionMode="related"; issueSubGrid.setData(issueResults); for (currentIssueIndex = 0; currentIssueIndex < issueCount; currentIssueIndex++) { var currentIssueRecord = {}; currentIssueRecord = issueResults[currentIssueIndex]; Log.logDebug("************ currentIssueIndex = " + currentIssueIndex + " of " + issueCount); Log.logDebug("************ currentIssueRecord = issueResults[" + currentIssueIndex + "]: " + this.echo(currentIssueRecord)); if (issueArray.remove(currentIssueRecord)) { Log.logDebug("************ IssueNumber: " + currentIssueRecord.IssueNumber + " removed from issueArray"); } else { Log.logDebug("************ Error removing issue: " + this.echo(currentIssueRecord)); } currentIssueGridRecord = issueSubGrid.getRecord(currentIssueIndex); currentIssueGridRecord.detailDS = "IncompleteTask"; } // end for loop } else { Log.logDebug("************ issueCount is zero"); //currentTopicRecord.setProperty("canExpand", false); } // end if issueCount is zero } else { Log.logDebug("************ searchEnabled is false"); // currentTopicRecord.setProperty("canExpand", false); } // end if currentTopicRecord.SearchEnabled } // end for currentTopic } else { Log.logDebug("*********** No meeting topic records fetched for MeetingTypeID: " + Application.currentMeetingTypeID); isc.say("No meeting topic records fetched for MeetingTypeID: " + Application.currentMeetingTypeID); } // end if MeetingTopic.fetchData dsResponse.totalRows > 0 } else { Log.logDebug("*********** Error fetching meeting topic records for MeetingTypeID: " + Application.currentMeetingTypeID); isc.say("Error fetching meeting topic records for MeetingTypeID: " + Application.currentMeetingTypeID); } // end if MeetingTopic.fetchData dsResponse.status >= 0 } // end MeetingTopic.fetchData function ); // end MeetingTopic.fetchData call Log.logDebug("************ done with MeetingTopic.fetchData call"); if (!window.OnlineMeetingForm) { var message = "Component ID \"OnlineMeetingForm\", target of action \"Edit rec\" does not exist"; isc.Log.logWarn(message); if (isc.designTime) { isc.say(message); } } OnlineMeetingForm.setValue("MeetingName", Application.currentMeetingName); OnlineMeetingForm.setValue("TeleconferenceInfo", Application.currentTeleconferenceInfo); OnlineAgendaGrid.canExpandRecords=true; OnlineAgendaGrid.canExpandMultipleRecords=false; OnlineAgendaGrid.expansionMode="related"; OnlineAgendaGrid.childExpansionMode="related"; OnlineAgendaGrid.detailDS="ProjectIssue"; OnlineAgendaGrid.expansionRelatedProperties = { autoFetchData:true, autoFetchTextMatchStyle:"exact", canExpandRecords:true, canExpandMultipleRecords:false, detailDS:"IncompleteTask", height:"200", overflow:"visible"}; OnlineAgendaGrid.markForRedraw("grids populated"); OnlineMeetingWindow.setTitle("Project:" + Application.currentProjectNumber + " " + Application.currentMeetingName); OnlineMeetingWindow.markForRedraw("grids populated"); OnlineMeetingWindow.show(); Log.logDebug("****END***END***END*** OnlineMeetingButton.Click");
Ironically, my complicated method of removing duplicate records is working. And, my command of a simple applyFilter call is not. Could the problem be with DataSource.fieldMatchesFilter?
Code:
17:47:05.718:TMR9:DEBUG:Log:************ ProjectIssue.applyFilter record count: 9 for { ImpactID: 101} 17:47:05.719:TMR9:DEBUG:Log:************ ProjectIssue.applyFilter issueResults[zero]: {ProjectTitle: "SSN Suppression on checks for Universal ..."[54], Description: "A made up issue with category Cost, impa..."[64], CategoryName: "Schedule", CommunityID: 101, IssueTypeName: "Problem", ImpactName: "2-Moderate", IssueStatus: "Open", LikelihoodID: 101, IssueID: 107, IssueTitle: "Schedule L2 problem", IssueNumber: 4, ProjectNumber: "7633", Created: Date(01/30/2013), GoalStatus: "Y", ImpactID: 104, Log: "2012-04-23 NOTE comment for testing.", Modified: Date(07/23/2012), IssueTypeID: 101, CategoryID: 103, LikelihoodTitle: "5-Very Likely", OriginatorID: 101, ProjectID: 101, Private: false} 17:47:05.722:TMR9:DEBUG:Log:************ issueResults[zero]: {ProjectTitle: "SSN Suppression on checks for Universal ..."[54], Description: "A made up issue with category Cost, impa..."[64], CategoryName: "Schedule", CommunityID: 101, IssueTypeName: "Problem", ImpactName: "2-Moderate", IssueStatus: "Open", LikelihoodID: 101, IssueID: 107, IssueTitle: "Schedule L2 problem", IssueNumber: 4, ProjectNumber: "7633", Created: Date(01/30/2013), GoalStatus: "Y", ImpactID: 104, Log: "2012-04-23 NOTE comment for testing.", Modified: Date(07/23/2012), IssueTypeID: 101, CategoryID: 103, LikelihoodTitle: "5-Very Likely", OriginatorID: 101, ProjectID: 101, Private: false}
Thanks,
Rick
P.S. I am running SmartClient Version: v8.2p_2013-01-14/EVAL Development Only on Mozilla Firefox 12.0 with Firebug using Windows XP Pro 32 bit.
Comment