拉力赛应用SDK : Is there a way to have variable columns for table?

标签 rally

使用 Rally App SDK,是否可以创建具有可变列数的表格?例如,对于选定的版本,列是该版本日期范围内的迭代,行是每个项目。

我拥有想要显示的所有数据,但不确定如何创建表格。

最佳答案

这是一个示例应用程序,它动态构建一个表配置,其中迭代名称作为列,然后向其中添加一些虚拟数据。不太令人兴奋,但它说明了这个想法。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <!-- Copyright (c) 2002-2011  Rally Software Development Corp. All rights reserved. -->

    <html>
    <head>
        <title>Iterations as Table Columns</title>
        <meta name="Name"    content="App: Iterations as Table Columns"/>
        <script type="text/javascript" src="https://rally1.rallydev.com/apps/1.29/sdk.js"></script>


        <script type="text/javascript">
            function iterationsAsTableColumns(rallyDataSource)
                {

                    var wait = null;
                    var table = null;
                    var tableHolder = null;

                    // private method the builds the table of Iteration columns and your info
                    function showResults(results)
                    {
                        if (wait) {
                            wait.hide();
                            wait = null;
                        }
                        if (table) {
                            table.destroy();
                        }

                        var myIterations = results.iterations;

                        if (myIterations.length === 0) {
                            tableHolder.innerHTML = "No iterations were found";
                            return;
                        }

                        var columnKeys = new Array();
                        var columnHeaders = new Array();
                        var columnWidths = new Array();
                        var columnWidthValue = '80px';
                        var keyName;

                        // Dynamically build column config arrays for table config
                        for (i=0; i<myIterations.length;i++){
                            keyName = "Column"+i;
                            columnKeys.push(keyName);
                            columnHeaders.push("'" + myIterations[i].Name + "'");
                            columnWidths.push("'" + columnWidthValue + "'");
                        }

                        var config = { 'columnKeys'    : columnKeys,
                                       'columnHeaders' : columnHeaders,
                                       'columnWidths'  : columnWidths
                                     };

                        table = new rally.sdk.ui.Table(config);

                        var cellValue;
                        var propertyAttributeStatement;
                        var rowData = new Array();

                        for (i=0;i<10;i++){

                            // create Object for row data
                            rowItem = new Object();

                            for (j=0; j<columnKeys.length;j++){

                                cellValue = "Cell[" + i + "][" + j + "] = Your Data Here";
                                propertyAttributeStatement = "rowItem." + columnKeys[j] + " = '"+cellValue+"';";
                                eval(propertyAttributeStatement);
                            }

                            rowData.push(rowItem);
                        }

                        table.addRows(rowData);
                        table.display(tableHolder);
                    }


                    //private method to query for iterations that get listed as columns
                    function runMainQuery(sender, eventArgs) {

                        var queryCriteria = '(Project.Name = "Avalanche Hazard Mapping"")';

                        var queryConfig =
                            {
                             key   : "iterations",
                             type  : "Iteration",
                             fetch : "FormattedID,Name,Project,StartDate,EndDate,CreationDate",
                             order : "CreationDate desc",
                            };

                        tableHolder.innerHTML = "";
                        wait = new rally.sdk.ui.basic.Wait({});
                        wait.display(tableHolder);

                        rallyDataSource.findAll(queryConfig, showResults);
                    }

                    //private method to start building controls on page
                    function initPage() {

                        buttonSpan = document.getElementById('buttonSpan');
                        tableHolder   = document.getElementById('table');

                        var buttonConfig = {
                               text: "Show Table",
                               value: "myValue"
                        };

                        var showTableButton = new rally.sdk.ui.basic.Button(buttonConfig);
                        showTableButton.display(buttonSpan, runMainQuery);

                    }

                    // only public method
                    this.display = function() {
                        rally.sdk.ui.AppHeader.showPageTools(true);

                        initPage();
                    };

                }


        </script>
        <script type="text/javascript">
            rally.addOnLoad(function() {
                var rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__',
                                                                         '__PROJECT_OID__',
                                                                         '__PROJECT_SCOPING_UP__',
                                                                         '__PROJECT_SCOPING_DOWN__');
                var iterationsAsTableColumnsExample = new iterationsAsTableColumns(rallyDataSource);
                iterationsAsTableColumnsExample.display();
            });
        </script>
    </head>

    <body>
      <div>
          <span id="buttonSpan"></span>
       </div>
      <div style="height: 15px;">&nbsp;</div>
      <div id="table"></div>
    </body>

    </html>

关于拉力赛应用SDK : Is there a way to have variable columns for table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130254/

相关文章:

java - 无法通过 Java API 在 Rally 中更新用户故事

extjs - Rally App SDK 2.0:初始创建后无法修改QueryFilter对象

java - 使用 Java Rally Rest API 在 rally 中将测试用例添加到 TestSets

testing - Rally 项目中每个测试集的详细 View

java - 如何使用 API 通过看板或 Scrum 板列出所有 RALLY 项目?

excel - "Cannot parse object reference from", 拉力赛

javascript - 未知 Rally 查询大小的进度条

rally - 通过WSAPI在服务器端发挥作用吗?

c# - 如何使用 rally rest API 和 C# 在功能中添加/更新里程碑?

node.js - 使用 Rally API 通过迭代获取用户故事