2013-07-23 55 views
1

我想通過比較AcceptedDate和Iteration.EndDate來過濾我的userStories。像AcceptedDate> Iteration.EndDate。可能嗎?Rally 2.0 SDK API - 比較過濾器查詢中的dateTime類型

我嘗試以下,但我認爲,它沒有工作:

var storiesQuery = Ext.create('Rally.data.WsapiDataStore', { 
    model: 'UserStory', 
    fetch: ['Iteration', 'AcceptedDate'], 
    filters: [ 
     { 
      property: 'Iteration.EndDate', 
      operator: '<', 
      value: 'AcceptedDate' 
     }, 
     { 
      property: 'ScheduleState', 
      operator: '=', 
      value: 'Accepted' 
     }, 
     { 
      property: 'DirectChildrenCount', 
      operator: '=', 
      value: '0' 
     }, 
     { 
      property: 'AcceptedDate', 
      operator: '<', 
      value: 'LastMonth' 
     } 
    ] 
}); 

感謝。

回答

1

不幸的是這不會在過濾器工作:

{ 
    property: 'Iteration.EndDate', 
    operator: '<', 
    value: 'AcceptedDate' 
} 

相反,我用這個條件

Ext.Array.each(data, function(record) { 
        iteration = record.get('Iteration'); 
        endDate = (iteration && iteration.EndDate) || 'None'; 
        acceptedDate = record.get('AcceptedDate'); 
        if (Rally.util.DateTime.fromIsoString(endDate) < acceptedDate) { 

這是建立迭代結束日期之後接受了故事的網格充分應用:

<!DOCTYPE html> 
<html> 
<head> 
    <title>AcceptedAfterEndDate</title> 

    <script type="text/javascript" src="/apps/2.0rc1/sdk.js"></script> 



    <script type="text/javascript"> 
     Rally.onReady(function() { 
Ext.define('CustomApp', { 
       extend: 'Rally.app.App', 
       componentCls: 'app', 

       launch: function() { 
        Ext.create('Rally.data.WsapiDataStore', { 
         model: 'UserStory', 
         fetch:['Name','Iteration','AcceptedDate','ScheduleState','EndDate'], 
         autoLoad: true, 
         listeners: { 
          load: this._onDataLoaded, 
          scope: this 
         } 
        }); 
       }, 

       _onDataLoaded: function(store, data) { 
        var records = []; 
        var iteration; 
        var endDate; 
        var acceptedDate; 
        Ext.Array.each(data, function(record) { 
         iteration = record.get('Iteration'); 
         endDate = (iteration && iteration.EndDate) || 'None'; 
         acceptedDate = record.get('AcceptedDate'); 
         if (Rally.util.DateTime.fromIsoString(endDate) < acceptedDate) { 
           records.push({ 
            ScheduleState: record.get('ScheduleState'), 
            Name: record.get('Name'), 
            AcceptedDate: record.get('AcceptedDate'), 
            Iteration: (iteration && iteration.Name) || 'None', 
            EndDate: (iteration && iteration.EndDate) || 'None', 
           }); 
         } 

        }); 

        this.add({ 
         xtype: 'rallygrid', 
         store: Ext.create('Rally.data.custom.Store', { 
          data: records, 
          filters:[ 
           {property: 'ScheduleState', 
           operator: '=', 
           value: 'Accepted'} 
           ] 

         }), 
         columnCfgs: [ 
          { 
           text: 'Name', dataIndex: 'Name' 
          }, 
          { 
           text: 'Schedule State', dataIndex: 'ScheduleState' 
          }, 
          { 
           text: 'Iteration', dataIndex: 'Iteration' 
          }, 
          { 
           text: 'Iteration End Date', dataIndex: 'EndDate' 
          }, 
          { 
           text: 'Accepted Date', dataIndex: 'AcceptedDate' 
          } 
         ] 
        }); 
       } 
      }); 

      Rally.launchApp('CustomApp', { 
       name:"AcceptedAfterEndDate", 
       //parentRepos:"" 
      }); 

     }); 
    </script> 




    <style type="text/css"> 
.app { 
    /* Add app styles here */ 
} 

    </style> 

</head> 
<body></body> 
</html>