拉力赛应用程序SDK:有没有办法为表设置变量列



使用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>

最新更新