Ich muss eine Filterfunktion verwenden, um eine Heuristik für die Auswahl von Datensätzen zu implementieren. Einfache Feld-/Wertprüfungen allein reichen für unseren Zweck nicht aus.Wie aktiviere ich Filterfunktionen in CA Agile Central?
Ich versuche, den Beispielen für Funktionsfilter zu folgen, aber aus irgendeinem Grund wird das Flag "allowFunctions" immer auf false gesetzt.
ich versuche, die allowFunctions Eigenschaft auf true in der storeconfig zu setzen:
storeConfig: {
models: ['userstory', 'defect'],
allowFunctions: true,
filters: [{
// This did not work ...
property: 'Iteration.Name',
value: 'Sprint 3',
// Trying dynamic Filter Function. Update: Never called.
filterFn: function (item) {
console.log("Entered Filter Function!");
var iter = item.get("Iteration");
console.log("Iteration field: ", iter);
if (iter !== null && iter !== undefined) {
return (iter.name === "Sprint 3");
} else {
return false;
}
}
}]
},
Nachdem die Rasteransicht macht, ich inspizieren sie die Speicherkonfiguration und seine Filter:
listeners: {
afterrender: {
fn: function (_myVar, eOpts) {
console.log("Arg to afterrender: ", _myVar, " and ", eOpts);
var _myStore = _myVar.getStore();
console.log("Store filters: ", _myStore.filters);
}
}
},
Was Ich finde, dass die Eigenschaft allowFunctions auf false zurückgesetzt wurde und ich sehe, dass die angegebene Filterfunktion nie ausgelöst wurde.
Also entweder ich allowFunctions auf true an der falschen Stelle setze, oder gebaut etwas in die Rally der Grid-Ansicht und seinen Datenspeicher verbietet Filterfunktionen und dreht die Flagge zurück auf false gesetzt.
ODER es gibt eine dritte Möglichkeit zu verraten, wie schlecht von meiner Theorie der Operation ist.
Oh, weise Veteranen, bitte beraten.
Hier ist die gesamte Apps.js Datei:
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function() {
//Write app code here
console.log("Overall App Launch function entered");
//API Docs: https://help.rallydev.com/apps/2.1/doc/
}
});
Rally.onReady(function() {
Ext.define('BOA.AdoptedWork.MultiArtifactGrid', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function() {
console.log("onReady Launch function entered");
this.theGrid = {
xtype: 'rallygrid',
showPagingToolbar: true,
showRowActionsColumn: false,
editable: false,
columnCfgs: [
'FormattedID',
'Name',
'ScheduleState',
'Iteration',
'Release',
'PlanEstimate',
'TaskEstimateTotal',
'TaskActualTotal', // For some reason this does not display ?? :o(??
'TaskRemainingTotal'
],
listeners: {
afterrender: {
fn: function (_myVar, eOpts) {
console.log("Arg to afterrender: ", _myVar, " and ", eOpts);
var _myStore = _myVar.getStore();
console.log("Store filters: ", _myStore.filters);
}
}
},
storeConfig: {
models: ['userstory', 'defect'],
allowFunctions: true,
filters: [{
// This did not work ...
property: 'Iteration.Name',
value: 'Sprint 3',
// Trying dynamic Filter Function. Update: Never called.
filterFn: function (item) {
console.log("Entered Filter Function!");
var iter = item.get("Iteration");
console.log("Iteration field: ", iter);
if (iter !== null && iter !== undefined) {
return (iter.name === "Sprint 3");
} else {
return false;
}
}
}]
},
context: this.getContext(),
scope: this
};
this.add(this.theGrid);
console.log("The Grid Object: ", this.theGrid);
}
});
Rally.launchApp('BOA.AdoptedWork.MultiArtifactGrid', {
name: 'Multi-type Grid'
});
});
Kyle, Mann, vielen Dank. Ja, der Grund dafür, dass die einfachen Wertanzeigen beibehalten werden sollen, besteht darin, die Ergebnismenge einzuschränken, auf die die Funktion angewendet wird. Ich habe Angst vor schrecklichen Leistung, wenn ich nur versuche, alle Filterung in der Funktion auf der Client-Seite zu tun. Es gibt wahrscheinlich 15 Jahre Daten in dieser Rally-Instanz. Ich weiß, dass der Projektkontext das natürlich sehr viel abschwächen wird, aber selbst Projekte haben viel Geschichte. Daher müssen Datumsbereiche und einfache Wertkriterien das Ergebnis so klein wie möglich machen. –