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