2014-02-11 3 views
1

Я показываю записи хранилища снимков в компоненте rallygrid и хотел бы сделать так, чтобы поле ID было доступно для кликов и отобразило страницу подробностей для этого рабочего элемента. Поскольку записи снимков включают в себя «_UnformattedID», а не «FormattedID», я пытался сделать это с помощью столбца визуализатор, который добавляет текст в виде ссылки:Ссылка на пользователей SSO на страницу детализации

renderer: function(val, meta, record) { 
    return '<a href="https://rally1.rallydev.com/#/detail/userstory/' + record.get('ObjectID') + '" target="_blank">US' + record.get('_UnformattedID') + '</a>'; 
} 

Это прекрасно работает для меня, как не- Пользователь SSO, но пользователи в нашей рабочей области, которые используют SSO, сообщили, что ссылка просто приводит их к стартовой странице по умолчанию. Не та страница, которую они ожидали.

Есть ли лучший способ, которым я мог бы добиться этого, что позволило бы всем пользователям использовать функциональность?

ответ

2

Реализация единого входа по всей организации, но этот трюк работал для меня. я обнаружить хост:

this._host = window.location.hostname; 

, а затем я использую хозяин при построении возвращаемого значения renderer, так как в результате URL в SSO и не-SSO сценариях в моей среде различается только в принимающей части.

{ 
    text: 'Formatted ID', dataIndex: 'UnformattedID', 
     renderer: function(val, meta, record) { 
      return '<a href="https://' + that._host + '/#/detail/userstory/' + record.get('ObjectID') + '" target="_blank">US' + record.get('UnformattedID') + '</a>'; 
    } 
} 

.

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    launch: function() { 
    this._host = window.location.hostname; 
    console.log('host', this._host); 
     var iterationComboBox = Ext.create('Rally.ui.combobox.IterationComboBox',{ 
        listeners:{ 
          ready: function(combobox){ 
           this._iterationOid = combobox.getRecord().get('ObjectID'); 
           this._loadStories(this._iterationOid); 
          }, 
          select: function(combobox){ 
           this._iterationOid = combobox.getRecord().get('ObjectID'); 
           this._loadStories(this._iterationOid); 
          }, 
          scope: this 
        } 
      }); 
     this.add(iterationComboBox); 
    }, 


    _loadStories:function(iterationOid){ 
     console.log('loading stories for ', iterationOid); 
     var myStore = Ext.create('Rally.data.lookback.SnapshotStore', { 
       autoLoad:true, 
       fetch : ['Name','_UnformattedID','ScheduleState','_TypeHierarchy'], 

       filters : [{ 
        property : '__At', 
        value : 'current' 
       }, 
       { 
        property : '_TypeHierarchy', 
        value : 'HierarchicalRequirement' 
       }, 
       { 
        property : 'Iteration', 
        value : iterationOid 
       } 
       ], 
     hydrate: ['_TypeHierarchy'], 
       listeners: { 
          load: function(store,records,success){ 
            console.log("loaded %i records", records.length); 
           this._onDataLoaded(myStore, records); 
          }, 
          scope:this 
        } 
     });   
    }, 

    _onDataLoaded: function(store,data){ 
       console.log('count',store.getCount()); 
     var that = this; 
     var records = []; 
        Ext.Array.each(data, function(record) { 
         records.push({ 
          Name: record.get('Name'), 
          ObjectID: record.get('ObjectID'), 
       UnformattedID: record.get('_UnformattedID') 
         }); 
        }); 
      var myStore = Ext.create('Rally.data.custom.Store', { 
       data: records 
      }); 
        if (!this.down('#grid')) { 
      this.add({ 
       xtype: 'rallygrid', 
       id: 'grid', 
       store: myStore, 
       columnCfgs: [ 
       { 
        text: 'Name', dataIndex: 'Name', flex: 1 
       }, 
       { 
        text: 'Formatted ID', dataIndex: 'UnformattedID', 
        renderer: function(val, meta, record) { 
         return '<a href="https://' + that._host + '/#/detail/userstory/' + record.get('ObjectID') + '" target="_blank">US' + record.get('UnformattedID') + '</a>'; 
        } 
       } 
       ] 
      }); 
      } 
      else{ 
      console.log(store); 
      this.down('#grid').reconfigure(myStore); 
      } 
    } 
}); 
+0

Отлично работает Ник, спасибо вам за помощь! –

+0

Коннер, вас больше всего приветствуют. – nickm