Rally - контекст данных и проблема InlineFilter в RallyGridBoard - PullRequest
0 голосов
/ 17 сентября 2018

Цель: Попытка создать приложение 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)

Это не влияет на другие мои фильтры

1 Ответ

0 голосов
/ 17 сентября 2018

Хорошо, я наконец нашел проблему ... Кажется, мне нужно передать контекст в сетку, но мне также нужно переключить автозагрузку на TreeGrid на false, это потому, что плагин отвечает за загрузкумагазин .... ууу !!Eureka Eureaka Я получил это ... Может ли кто-нибудь предложить любую хорошую книгу по ралли ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...