I wanted to post an update to this thread regarding the above script Nik provided...
For some reason the CUSTOM HTML app isn't applying the filter correctly when it first loads the page. I've opened Case #831878 regarding this and current opinion from them is that is is a problem with the CUSTOM HTML app and not a problem with the script. I'll update this thread when a solution is available.
To force the correct filtering you can modify the number of rows displayed per page or click "Show Columns" and then click "Apply" without changing the columns displayed. I've also updated the script to allow you to Export the rows and flip between a List and Board display. Toggling between the LIst and Board views will also force correct filtering.
For those interested here is the updated script with Export and List/Board flipping...
<!DOCTYPE html>
<html>
<head>
<title>UserStory Defect List</title>
<script type="text/javascript" src="/apps/2.1/sdk.js"></script>
<script type="text/javascript">
Rally.onReady(function() {
Ext.define('UserStory.Defect.CustomizableColumnsGridBoard', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function() {
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['defect', 'userstory'],
autoLoad: true,
enableHierarchy: true
}).then({
success: this._onStoreBuilt,
scope: this
});
},
_onStoreBuilt: function(store) {
var modelNames = ['defect', 'userstory'],
context = this.getContext();
this.add({
xtype: 'rallygridboard',
context: context,
modelNames: modelNames,
toggleState: 'grid',
stateful: false,
plugins: [
'rallygridboardaddnew',
{
ptype: 'rallygridboardinlinefiltercontrol',
inlineFilterButtonConfig: {
stateful: true,
stateId: context.getScopedStateId('filters'),
modelNames: modelNames,
inlineFilterPanelConfig: {
quickFilterPanelConfig: {
defaultFields: [
'ArtifactSearch',
'Release',
'Project',
'ModelType'
]
}
}
}
},
{
ptype: 'rallygridboardfieldpicker',
headerPosition: 'left',
modelNames: modelNames,
stateful: true,
stateId: context.getScopedStateId('columns-example')
},
{
ptype: 'rallygridboardactionsmenu',
menuItems: [
{
text: 'Export...',
handler: function() {
window.location = Rally.ui.gridboard.Export.buildCsvExportUrl(
this.down('rallygridboard').getGridOrBoard()
);
},
scope: this
}
],
buttonConfig: {
iconCls: 'icon-export'
}
},
'rallygridboardtoggleable'
],
cardBoardConfig: {
attribute: 'ScheduleState'
},
gridConfig: {
store: store,
columnCfgs: [
'Name',
'ScheduleState',
'State',
'Iteration'
]
},
height: this.getHeight()
});
}
});
Rally.launchApp('UserStory.Defect.CustomizableColumnsGridBoard', {
name: 'UserStory Defect List'
});
});
</script>
<style type="text/css">
</style>
</head>
<body></body>
</html>
_____________
Support EDIT - Also see Development's response:
Hi Everyone,
When using the inline filter plugin you need to be sure create the store with autoload off. This is because the plugin will take over responsibility for loading the store the first time after it retrieves the saved preferences. So changing the TreeStoreBuilder to the following should resolve the issue.
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['defect', 'userstory'],
autoLoad: false,
enableHierarchy: true
}).then({
success: this._onStoreBuilt,
scope: this
});