Цель: Попытка создать приложение Rally для заполнения «PortFolioItem / features» на основе значения Project, выбранного из поля userSearchCombo.
Методология: 1Создание UserSearchComboBox на основе модели «Проект».2. В зависимости от значения, выбранного в поле со списком, создание TreeStore на основе модели «PortfolioItem / Feature».
Контекст в области дерева для хранилища основан на значении, выбранном из поля со списком поиска проекта.
app.portfoliotreeStore = Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: modelNames,
autoLoad: true,
enableHierarchy: true,
limit: 'Infinity',
remoteSort: true,
// sorters: app.appSorters,
//fetch: ['Name', 'FormattedID', 'ScheduleState', 'PlanEstimate', 'Owner', 'Project'],
//filters: filters,
// filters: this.getQueryFilter(),
context: {
project: app.selProjectRef,
projectScopeDown: true
}
}).then({
success: this._addGridboard,
failure: this.showErrorNotification,
scope: this
});
В методе Add Grid Board создали gridBoard с несколькими плагинами
_addGridboard: function(store) {
console.log("Entering _addGridBoard", store);
app.portfoliotreeStore = store;
var modelNames = ['portfolioitem/PPMFeature']
var filters = app.getStoreFilters(app.selProjectName);
console.log("the Grid", app.down('#gridContainer'));
if (app.down('#gridContainer')) {
app.down('#gridContainer').remove('gridBoard');
}
//this.gridBoardConfig = app._getGridBoardConfig(store);
var dataContext = app.getContext().getDataContext();
console.log("DATA CONTEXT ::::", dataContext);
gridStateString = this.statePrefix + "-treegrid";
gridStateId = this.getContext().getScopedStateId(gridStateString);
app.down('#gridContainer').add({
xtype: 'rallygridboard',
itemId: 'gridBoard',
// context: this.getContext(),
modelNames: ['portfolioitem/PPMFeature'],
toggleState: 'grid',
plugins: [
'rallygridboardaddnew', {
ptype: 'rallygridboardinlinefiltercontrol',
inlineFilterButtonConfig: {
//stateful: true,
//stateId: this.getContext().getScopedStateId('filters-1'),
//collapsed: true,
context: this.getContext(),
modelNames: ['portfolioitem/PPMFeature'],
inlineFilterPanelConfig: {
collapsed: true,
quickFilterPanelConfig: {
whiteListFields: [
'Tags',
'Milestones'
],
defaultFields: [
'ArtifactSearch',
'Owner',
'ModelType',
'Milestones'
]
}
}
}
},
{
ptype: 'rallygridboardfieldpicker',
headerPosition: 'left',
modelNames: this._getModelNames()
//stateful: true,
//stateId: this.getContext().getScopedStateId('columns-example')
}
],
stateful: true,
listeners: {
'staterestore': {
fn: this._onGridStateRestore,
single: true
},
'load': {
fn: this._onGridload,
single: true
},
scope: this
},
gridConfig: {
store: store,
storeConfig: {
filters: this.getQueryFilter()
},
columnCfgs: [
'Name',
'Project',
'ScheduleState',
'Owner',
'PlanEstimate'
]
// derivedColumns: this.getDerivedColumns()
},
/*
gridConfig: {
store: store,
storeConfig: {
filters: this.getQueryFilter()
},
columnCfgs: [
'Name',
'Project',
'ScheduleState',
'Owner',
'PlanEstimate'
],
// derivedColumns: this.getDerivedColumns()
},
*/
height: this.getHeight()
});
},
Обратите внимание на следующее
- Не передавая никакого контекста компоненту сетки - Причина :: если я передаю «this.getContext» в сетку, дубликаты записей первоначально загружаются в сетку, как только я нажимаю налюбой заголовок для сортировки сетки, дубликаты исчезают.
Проблема: поймать 22 Ситуация Единственный способ для меня, чтобы получитьизбавиться от дубликатов - это не передавать контекст на GridBoard, однако это влияет на мой плагин - "rallygridboardinlinefiltercontrol"
, если я прокручиваю свою кнопку InlinefilterButton, она выдает эту ошибку
Uncaught TypeError: Cannot read property 'collapsed' of undefined
at constructor._onBeforeShowToolTip (VM556 sdk.js:100)
at constructor.fire (VM556 sdk.js:5)
at constructor.continueFireEvent (VM556 sdk.js:6)
at constructor.fireEventArgs (VM556 sdk.js:6)
at constructor.prototype.fireEventArgs (VM556 sdk.js:18)
at constructor.fireEvent (VM556 sdk.js:6)
at constructor.show (VM556 sdk.js:15)
at constructor.callParent (VM556 sdk.js:2)
at constructor.show (VM556 sdk.js:25)
at constructor.showFromDelay (VM556 sdk.js:25)
икогда я нажимаю на него, он выдает эту ошибку
Uncaught TypeError: Cannot read property 'toggleCollapse' of undefined
at constructor._toggleFilterPanel (VM556 sdk.js:100)
at call (VM556 sdk.js:5)
Это не влияет на другие мои фильтры