レコードを選択するヒューリスティックを実装するには、フィルタ関数を使用する必要があります。単純なフィールド/値チェックだけでは、私たちの目的には不十分です。CA Agile Centralでフィルタ機能を有効にするにはどうすればよいですか?
私は関数フィルタの例に従おうとしていますが、何らかの理由でallowFunctionsフラグがfalseに設定されています。
私はstoreConfig trueにallowFunctionsプロパティを設定しよう:
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;
}
}
}]
},
グリッドビューは、私はそれを店の構成とそのフィルタを点検し、レンダリング後:
listeners: {
afterrender: {
fn: function (_myVar, eOpts) {
console.log("Arg to afterrender: ", _myVar, " and ", eOpts);
var _myStore = _myVar.getStore();
console.log("Store filters: ", _myStore.filters);
}
}
},
何私は、allowFunctionsプロパティがfalseに設定されていることがわかりました。私が指定したフィルタ関数は決して起動されません。
だから、どちらか私は間違った場所にtrueにallowFunctionsを設定、またはラリーグリッドビューに組み込まれた何か、そのデータストアは、フィルタ機能を禁止し、バックfalseにフラグを反転させています。
または私の操作理論がいかに悪いかを裏切る3番目の選択肢があります。
ああ、賢明な退役軍人、助言してください。あなたはまだあなたのサーバーフィルタを適用すると、あなたはさらに、クライアント側で下りデータをフィルタリングするため、これはトリッキーなものです
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'
});
});
カイル、男、ありがとうございました。 単純な値の画面を保持したい理由は、関数が適用されている結果セットを絞り込むためです。私はクライアント側の関数ですべてのフィルタリングを実行しようとすると恐ろしいパフォーマンスが起こることを恐れています。 このRallyインスタンスにはおそらく15年のデータがあります。私はプロジェクトのコンテキストが多くのことをノックダウンすることは分かっていますが、依然としてプロジェクトにも多くの歴史があります。したがって、日付範囲と単純な値の基準は、結果セットを可能な限り小さくする必要があります。 –