2016-10-17 2 views
2

私は、カスタムワークフローのCustomHTML Appのリファレンスを入手し、プロジェクトワークスペースのカスタムレポートページに追加しました。 UIは機能しましたが、何らかの単純なクエリを入力しても何の結果も表示されません。私が何か間違っていたら私を見直してください。 は、特定の日付既存のカスタムラリーアプリケーションは、期待どおりに結果をプロデュースしています

<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', 
layout: { 
type: 'vbox', 
align: 'stretch' 
}, 
items:[ 
{ 
xtype: 'panel', 
layout: 'anchor', 
border: true, 
fieldDefaults: { 
labelWidth: 40 
}, 
defaultType: 'textfield', 
bodyPadding: 5, 
items: [ 
{ 
fieldLabel: 'Query', 
itemId: 'queryField', 
anchor:'100%', 
width: 700, 
height: 100, 
xtype: 'textarea', 
value: '{\n'+ 
' "_TypeHierarchy": "Defect",\n'+     
'"__At": "2016-10-14T00:00:00Z"'+ 
'}' 
}, 
{ 
fieldLabel: 'Fields', 
itemId: 'fieldsField', 
anchor: '100%', 
width: 700, 
value: "ObjectID, _ValidFrom, Name, State, Resolution" 
}, 
{ 
fieldLabel: 'Sort', 
itemId: 'sortField', 
anchor: '100%', 
width: 700, 
value: "{'ObjectID' : -1, '_ValidFrom': 1}" 
}, 
{ 
fieldLabel: 'Page Size', 
itemId: 'pageSizeField', 
anchor: '100%', 
width: 700, 
value: '10' 
    }, 
{ 
fieldLabel: 'Hydrate', 
itemId: 'hydrate', 
anchor: '100%', 
width: 700, 
value: "State, Resolution" 
    }, 
], 

buttons: [ 
    { 
xtype: 'rallybutton', 
text: 'Search', 
itemId: 'searchButton' 
    } 
] 
    }, 
    { 
xtype: 'panel', 
itemId: 'gridHolder', 
layout: 'fit', 
height: 400 
    } 
], 
launch: function() { 
    var button = this.down('#searchButton'); 
    button.on('click', this.searchClicked, this); 
}, 

searchClicked: function(){ 
    var queryField = this.down('#queryField'); 
    var query = queryField.getValue(); 

    var selectedFields = this.down('#fieldsField').getValue(); 
    if(selectedFields){ 
if(selectedFields === 'true'){ 
    selectedFields = true; 
} 
else{ 
    selectedFields = selectedFields.split(', '); 
} 
    } 

    var sort = this.down('#sortField').getValue(); 

    var pageSize = this.down('#pageSizeField').getValue(); 
    var parsedPageSize = parseInt(pageSize, 10); 
    // don't allow empty or 0 pagesize 
    pageSize = (parsedPageSize) ? parsedPageSize : 10; 

    var callback = Ext.bind(this.processSnapshots, this); 
    this.doSearch(query, selectedFields, sort, pageSize, callback); 
}, 

createSortMap: function(csvFields){ 
    var fields = csvFields.split(', '); 
    var sortMap = {}; 
    for(var field in fields){ 
if(fields.hasOwnProperty(field)){ 
    sortMap[field] = 1; 
} 
    } 

    return sortMap; 
}, 

doSearch: function(query, fields, sort, pageSize, callback){ 
    var transformStore = Ext.create('Rally.data.lookback.SnapshotStore', { 
context: { 
    workspace: this.context.getWorkspace(), 
    project: this.context.getProject() 
}, 
fetch: fields, 
find: query, 
autoLoad: true, 
    hydrate: ["State","Resolution"], 
listeners: { 
    scope: this, 
    load: this.processSnapshots 
} 
    }); 
}, 

processSnapshots: function(store, records){ 
    var snapshotGrid = Ext.create('Rally.ui.grid.Grid', { 
title: 'Snapshots', 
store: store, 
columnCfgs: [ 
    { 
text: 'ObjectID', 
dataIndex: 'ObjectID' 
    }, 
    { 
text: 'Name', 
dataIndex: 'Name' 
    }, 
    { 
text: 'Project', 
dataIndex: 'Project' 
    }, 
    { 
text: '_ValidFrom', 
dataIndex: '_ValidFrom' 
    }, 
    { 
text: '_ValidTo', 
dataIndex: '_ValidTo' 
    }, 
{ 
text: 'State', 
dataIndex: 'State' 
    }, 
{ 
text: 'Resolution', 
dataIndex: 'Resolution' 
    }, 
], 
height: 400 
    }); 
var gridHolder = this.down('#gridHolder'); 
} 
gridHolder.removeAll(true); 
gridHolder.add(snapshotGrid); 
}); 

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

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

答えて

0

上記掲載のコードではカップルの構文エラーがありました内の欠陥を固定見つけます。それはまた、SDDのスーパー古いバージョンを使用して書かれました。私は最新の2.1に更新し、それは今かなりうまくいくようだ。古いアプリの問題のほとんどは、ルックバックAPIのリクエストがタイムアウトしたことがあります。新しいSDKではデフォルトのタイムアウトが長くなります。

<!DOCTYPE html> 
<html> 

<head> 
    <title>Lookback API Query</title> 

    <script type="text/javascript" src="/apps/2.1/sdk.js"></script> 
    <script type="text/javascript"> 
     Rally.onReady(function() { 
      Ext.define('CustomApp', { 
       extend: 'Rally.app.App', 
       componentCls: 'app', 
       layout: { 
        type: 'vbox', 
        align: 'stretch' 
       }, 
       items: [{ 
        xtype: 'panel', 
        layout: 'anchor', 
        border: true, 
        fieldDefaults: { 
         labelWidth: 40 
        }, 
        defaultType: 'textfield', 
        bodyPadding: 5, 
        items: [{ 
         fieldLabel: 'Query', 
         itemId: 'queryField', 
         anchor: '100%', 
         width: 700, 
         height: 100, 
         xtype: 'textarea', 
         value: '{\n' + 
          ' "_TypeHierarchy": "Defect",\n' + 
          '"__At": "2016-10-14T00:00:00Z"\n' + 
          '}' 
        }, { 
         fieldLabel: 'Fields', 
         itemId: 'fieldsField', 
         anchor: '100%', 
         width: 700, 
         value: "ObjectID, _ValidFrom, Name, State, Resolution" 
        }, { 
         fieldLabel: 'Sort', 
         itemId: 'sortField', 
         anchor: '100%', 
         width: 700, 
         value: "{'ObjectID' : -1, '_ValidFrom': 1}" 
        }, { 
         fieldLabel: 'Page Size', 
         itemId: 'pageSizeField', 
         anchor: '100%', 
         width: 700, 
         value: '10' 
        }, { 
         fieldLabel: 'Hydrate', 
         itemId: 'hydrate', 
         anchor: '100%', 
         width: 700, 
         value: "State, Resolution" 
        }, ], 

        buttons: [{ 
         xtype: 'rallybutton', 
         text: 'Search', 
         itemId: 'searchButton' 
        }] 
       }, { 
        xtype: 'panel', 
        itemId: 'gridHolder', 
        layout: 'fit', 
        height: 400 
       }], 
       launch: function() { 
        var button = this.down('#searchButton'); 
        button.on('click', this.searchClicked, this); 
       }, 

       searchClicked: function() { 
        var queryField = this.down('#queryField'); 
        var query = queryField.getValue(); 

        var selectedFields = this.down('#fieldsField').getValue(); 
        if (selectedFields) { 
         if (selectedFields === 'true') { 
          selectedFields = true; 
         } else { 
          selectedFields = selectedFields.split(', '); 
         } 
        } 

        var sort = this.down('#sortField').getValue(); 

        var pageSize = this.down('#pageSizeField').getValue(); 
        var parsedPageSize = parseInt(pageSize, 10); 
        // don't allow empty or 0 pagesize 
        pageSize = (parsedPageSize) ? parsedPageSize : 10; 

        var callback = Ext.bind(this.processSnapshots, this); 
        this.doSearch(query, selectedFields, sort, pageSize, callback); 
       }, 

       createSortMap: function(csvFields) { 
        var fields = csvFields.split(', '); 
        var sortMap = {}; 
        for (var field in fields) { 
         if (fields.hasOwnProperty(field)) { 
          sortMap[field] = 1; 
         } 
        } 

        return sortMap; 
       }, 

       doSearch: function(query, fields, sort, pageSize, callback) { 
        var transformStore = Ext.create('Rally.data.lookback.SnapshotStore', { 
         context: { 
          workspace: this.context.getWorkspace(), 
          project: this.context.getProject() 
         }, 
         fetch: fields, 
         pageSize: pageSize, 
         find: query, 
         autoLoad: true, 
         hydrate: ["State", "Resolution"], 
         listeners: { 
          scope: this, 
          load: this.processSnapshots 
         } 
        }); 
       }, 

       processSnapshots: function(store, records) { 
        var snapshotGrid = Ext.create('Rally.ui.grid.Grid', { 
         title: 'Snapshots', 
         store: store, 
         columnCfgs: [{ 
          text: 'ObjectID', 
          dataIndex: 'ObjectID' 
         }, { 
          text: 'Name', 
          dataIndex: 'Name' 
         }, { 
          text: 'Project', 
          dataIndex: 'Project' 
         }, { 
          text: '_ValidFrom', 
          dataIndex: '_ValidFrom' 
         }, { 
          text: '_ValidTo', 
          dataIndex: '_ValidTo' 
         }, { 
          text: 'State', 
          dataIndex: 'State' 
         }, { 
          text: 'Resolution', 
          dataIndex: 'Resolution' 
         }, ], 
         height: 400 
        }); 
        var gridHolder = this.down('#gridHolder'); 
        gridHolder.removeAll(true); 
        gridHolder.add(snapshotGrid); 
       } 
      }); 

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

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

<body></body> 

</html> 
関連する問題