2016-08-23 5 views
1

Привет, я пытаюсь объединить США/Дефекты по вехам, которым они назначены. Кто-нибудь знает, как это сделать? Я могу сгруппировать по собственнику или проекту, но с группировкой вопросов по вехи.Группа Rallygrid по вехам

this.add({ 
 
         xtype: 'rallygrid', 
 
         columnCfgs: [ 
 
          'FormattedID', 
 
          'Name', 
 
          'State', 
 
          'Owner', 
 
          'Milestones' 
 
         ], 
 
         context: this.getContext(), 
 
         features: [{ 
 
          ftype: 'groupingsummary', 
 
          groupHeaderTpl: '{name} ({rows.length})' 
 
         }], 
 
         storeConfig: { 
 
          models: ['User Story', 'Defect'], 
 
          groupField: 'Milestones', 
 
          groupDir: 'ASC', 
 
         /* filters : [ 
 
           { 
 
            property : 'State', 
 
            operator : '!=', 
 
            value : 'Closed' 
 
           } 
 
          ],*/ 
 
          fetch: ['Milestones'], 
 
          getGroupString: function(record) { 
 
           var Milestones = record.get('Milestones'); 
 
           return (Milestones && Milestones._refObjectName) || 'No Milestones'; 
 
          } 
 
         } 
 
        });

Спасибо!

ответ

1

Это было сложно. Это то, что я придумал:

this.add({ 
    xtype: 'rallygrid', 
    columnCfgs: [ 
     'FormattedID', 
     'Name', 
     'State', 
     'Owner', 
     'Milestones' 
    ], 
    context: this.getContext(), 
    features: [{ 
     ftype: 'groupingsummary', 
     groupHeaderTpl: '{name} ({rows.length})' 
    }], 
    storeConfig: { 
     model: 'userstory', 
     groupField: 'Milestones', 
     listeners: { 
      beforeload: function(store) { 
       //remove the Milestones sorter, since Milestones 
       //is not a sortable field 
       var sorter = store.sorters.first(); 
       if (sorter && sorter.property === store.groupField) { 
        store.sorters.remove(sorter); 
       } 
      } 
     }, 
     getGroupString: function(record) { 
      var milestones = record.get('Milestones'); 

      //grab the Name field from each object in the _tagsNameArray 
      return _.pluck(milestones._tagsNameArray, 'Name').join(',') || 'None'; 
     } 
    } 
}); 

Существует два основных отличия от вашего кода. Первый - обработчик beforeload в storeConfig. Поведение магазинов по умолчанию состоит в том, чтобы добавить групповой фильтр в массив сортировщиков. Обычно это то, что мы хотим, но в этом случае Milestones не является сортируемым полем WSAPI, поэтому запрос не выполняется. Поэтому мы просто удалим этот сортировщик.

Второе изменение - в функции getGroupString. Вехи - это коллекция, поэтому вы не можете напрямую использовать _refObjectName, как и для группы объектов, таких как Owner или Parent.

Надеюсь, что это поможет!

+0

Отлично, спасибо, много помогли! – arf