2014-02-07 48 views
1

我編寫了一個應用程序,它在treePanel中顯示testCases。在該面板中,我有一個特定的列,其中包含用戶可以在測試用例上執行的操作的圖標(顯示詳細信息,編輯,添加錯誤...)。在列配置,渲染器調用這個函數,其中data是一個_ref attribut像/testcase/123456/對象:用sdk 2.0在應用程序中創建缺陷的自定義鏈接

_gridDataFormatTestCaseIcons:function(data) 
{ 
    var IconsString = Ext.String.format('<a href="{0}" target="_blank"><span class="icon-testCase"></span></a>', Rally.nav.Manager.getDetailUrl(data)); 
    IconsString+= '&nbsp;'; 
    IconsString+= '<a href="#" onclick="Rally.nav.Manager.edit(\''+data._ref+'\')"><span class="icon-edit"></span></a>'; 
    IconsString+= '&nbsp;'; 
    IconsString+= '<a href="#" onclick="Rally.nav.Manager.create(\'defect\')"><span class="icon-defect"></span></a>'; 

    return IconsString ; 
} 

我的第一個圖標打開了大約TestCase的細節一個新的標籤:OK。我的第二個圖標打開一個彈出窗口,我可以編輯我的TestCase:OK。我的第三個圖標打開一個彈出窗口,我可以創建一個新的錯誤。好的,但是...我需要填寫所有的文件,包括那些我想它可以自動填充的文件。

所以我的問題是關於第三個圖標和功能Rally.nav.Manager.create('defect')的參數:SDK 2.0rc2 docs here說,它可以採取另一種說法args但不給任何關於它的細節。我是否可以用它來指定「所有者」和「測試用例」字段以及如何實現?

回答

1

你是對的,args參數可以是一個包含默認屬性的對象,以填充到創建對話框中。只有字段的有限子集但接受:

Allowed args keys 
User Story: 
defaultName 
rank 
iteration 
release 
parent 
dpyOid {dependency} 

Defect: 
defaultName 
defectSuiteOid {Defect Suites} 
testCaseResult 
testCase 
requirement 
iteration 

Defect Suite: 
defaultName 
rank 
iteration 

Portfolio Item: 
defaultName 
rank 
parent 

Task: 
workProduct 

Test Case: 
testfolderOid {Test Folder} 
artifactOid {Artifact} 

它看起來像文檔是有點誤導,即,因爲我們正在創造一個新的對象,而不是包括裁判現存缺陷:

//Launch the create dialog 
Rally.nav.Manager.create('/defect/12345'); 

該文檔應閱讀:

//Launch the create dialog 
Rally.nav.Manager.create('defect'); 

下面是一個簡單的例子,持久性有機污染物和編輯使用按鈕,並設置缺陷名稱和默認迭代。請注意,Rally.nav.Manager函數通常只在應用程序在Rally內部安裝並運行時起作用。

<!DOCTYPE html> 
<html> 
<head> 
    <title>Create Example</title> 

    <script type="text/javascript" src="https://rally1.rallydev.com/apps/2.0rc2/sdk.js"></script> 

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

       launch: function() { 
        var myButtonContainer = Ext.create('Ext.Container', { 
         items: [{ 
          xtype: 'rallybutton', 
          text: 'Click Here to Create a New Defect', 
          handler: function() { 
           //Launch the create dialog 
           var defectDefaults = { 
            defaultName: "My Defect", 
            iteration: "12345678910" 
           }; 

           Rally.nav.Manager.create('defect', defectDefaults); 
          } 
         }], 
        }); 
        this.add(myButtonContainer); 
       } 
      }); 


      Rally.launchApp('CustomApp', { 
       name: 'Create Example' 
      }); 
     }); 
    </script> 

    <style type="text/css"> 

    </style> 
</head> 
<body></body> 
</html> 
+1

感謝您的回答。我嘗試過:'Rally.nav.Manager.create('defect',{testCase:'/ testcase/12345',defaultName:'FooBar'})'/ testcase/12345 /'有效:defaultName ,但不適用於testCase,這是我需要的字段之一。 而且,在我可以創建的對象列表中,我看不到TestCaseResult。如果我嘗試'Rally.nav.Manager.create('testCaseResult')'',它會打開我一個提示,並顯示以下消息:「測試用例結果無法保存,因爲測試用例已被刪除。」。也許我需要傳遞一個或多個不在文檔中的參數? –

+2

我明白你的意思了。現在你提到它,我的迭代ref也沒有填充在那裏。我會做一些挖掘並讓你知道我找到了什麼。 – 2014-02-07 16:56:54

+1

對於testCase的創建,這條線的工作原理如下:'Rally.nav.Manager.create('defect',{testCase:'12345',defaultName:'FooB ar'})':字符串只能是objectID。在你的例子中進行迭代嘗試:'iteration:「12345678910」'而不是'iteration:「/ iteration/12345678910」'...... –

相關問題