I participated in a discussion today in the Q&A forums about showing stories and defects commingled in a single custom list, the way that Plan > Backlog works except without the timebox exclusion. One of CA's outstanding folks, @Nik Antonelli instantly understood the problem and provided the code for a custom list-like app that queries both stories and defects and includes the advanced filtering feature. I found it so handy that I thought I'd share the code here and maybe if CA's product managers are listening in then they'll consider either adding it to the App Catalog or enhancing the Custom List app similarly. Thanks Nik!!!
<!DOCTYPE html>
<html>
<head>
<title>Customizable Columns Grid Board Example</title>
<script type="text/javascript" src="/apps/2.1/sdk.js"></script>
<script type="text/javascript">
Rally.onReady(function() {
Ext.define('Rally.example.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: 'rallygridboardfieldpicker',
headerPosition: 'left',
modelNames: modelNames,
stateful: true,
stateId: context.getScopedStateId('columns-example')
},{
ptype: 'rallygridboardinlinefiltercontrol',
inlineFilterButtonConfig: {
stateful: true,
stateId: context.getScopedStateId('filters'),
modelNames: modelNames,
inlineFilterPanelConfig: {
quickFilterPanelConfig: {
defaultFields: [
'ArtifactSearch',
'Owner',
'ModelType'
]
}
}
}
}
],
gridConfig: {
store: store,
columnCfgs: [
'Name',
'State',
'Release',
'Iteration'
]
},
height: this.getHeight()
});
}
});
Rally.launchApp('Rally.example.CustomizableColumnsGridBoard', {
name: 'Customizable Columns Grid Board Example'
});
});
</script>
<style type="text/css">
</style>
</head>
<body></body>
</html>