javascript - 通过 Confluence HTML 传递标准报告的 API key

标签 javascript rally confluence confluence-rest-api code-rally

我已经能够获取可用于迭代 TreeGrid 和迭代燃尽图/发布燃尽图的 Java API 代码。我们一直在尝试让它在 Confluence 上运行,但在尝试仅传递 iframe 时出现了问题,而且 IT 部门在某些旁路选项方面也存在问题。我们已经能够通过下面的脚本获得一些类似的效果。事实上,迭代树网格每次都能成功运行,但大多数时候标准报告仅显示 Rally 登录屏幕。这并不一致,有时这在 Chrome 中适用,但在 Firefox/IE 等中不起作用。如果通过链接以及脚本中的内容输入,我们已将 API 附加到汇合页面的路径。是否有另一种方法可以传递 key 以生成标准报告?

谢谢! 标记

在此处输入代码 {html}

<script type="text/javascript">
    var field = 'apiKey';
    var url = window.location.href;
    if(
        (url.indexOf('?' + field + '=') != -1) ||
        (url.indexOf('&' + field + '=') != -1)
    ){
        //alert("**** 001");
    } else {        
        var myURL = document.location;
        if(window.location.href.indexOf('?') > 0){
            document.location = myURL + "&apiKey=_1OS4fhAQBi101VTZ4PytkQXb9jYEt0qYx79WXJacc";
        } else {
            document.location = myURL + "?apiKey=_1OS4fhAQBi101VTZ4PytkQXb9jYEt0qYx79WXJacc";
        }
    }

</script>


<div id="div-iterationburndown"></div>

    <script type="text/javascript">
        Rally.onReady(function() {
            Ext.create("Ext.Container", {
                context: {},
                items: [{
                    xtype: "rallystandardreport",
                    width: 750,
                    height: 500,
                    reportConfig: {
                        report: "IterationBurndown",
                        iteration: "April",
                        subchart: "hide",
                        title: "Iteration Burndown"
                    },
                    project: "https://rally1.rallydev.com/slm/webservice/v2.0/project/51186094804",
                    projectScopeUp: !1,
                    projectScopeDown: !0
                }],
                renderTo: Ext.get("div-iterationburndown")
            });


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


<div id="div-releaseburnup"></div>

    <script type="text/javascript">
        Rally.onReady(function() {
            Ext.create("Ext.Container", {
                context: {},
                items: [{
                    xtype: "rallystandardreport",
                    width: 750,
                    height: 500,
                    reportConfig: {
                        report: "ReleaseBurnup",
                        subchart: "hide",
                        title: "Release Burnup"
                    },
                    project: "https://rally1.rallydev.com/slm/webservice/v2.0/project/51186094804",
                    projectScopeUp: !1,
                    projectScopeDown: !0
                }],
                renderTo: Ext.get("div-releaseburnup")
            });
            Rally.launchApp('CustomApp', {
                name: "releaseburnup",
                parentRepos: ""
            });
        });
    </script>

<div id="div-RallyGrid" style="border-width:5px 5px 5px 5px;width:300px;height:150px;"></div>

 <script type="text/javascript">
        Rally.onReady(function() {
            Ext.create("Rally.data.wsapi.TreeStoreBuilder").build({
                models: ["userstory"],
                autoLoad: !0,
                context: {
                    workspace: "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/50876644101",
                    project: "https://rally1.rallydev.com/slm/webservice/v2.0/project/50891172431"
                },
                enableHierarchy: !0,
                filters: [{
                    property: "Iteration.Name",
                    operator: "=",
                    value: "April"
                }, {
                    property: "Project.Name",
                    operator: "=",
                    value: "Harrier"
                }]
            }).then({
                success: function(store) {
                    Ext.create("Ext.Container", {
                        width: 1e3,
                        height: 1e3,
                        border: 5,
                        items: [{
                            xtype: "rallytreegrid",
                            columnCfgs: ["DisplayColor", "Name", "ScheduleState", "Blocked", "TaskEstimateTotal", "TaskRemainingTotal", "Owner", "Notes"],
                            store: store
                        }],
                        renderTo: Ext.get("div-RallyGrid")
                    })
                }
            });
            Rally.launchApp('CustomApp', {
                name: "RallyGrid",
                parentRepos: ""
            });
        });
    </script>





{html}

最佳答案

StandardReport component AppSDK2 中的 AppSDK2 是 ApiKey 之前的第一代分析服务的包装器。这与在“报告”>“报告”页面上为您提供报告的分析服务相同。这些报告也可通过 StandardReport 获取。 AppSDK1 中的组件。

第一代图表不支持 ApiKey。 AppSDK2 支持 ApiKey,如 Embedding Apps 中所述。指导。 AppSDK2应用程序可以使用ApiKey进行身份验证。但是,如果 AppSDK2 应用程序使用 StandardReport 组件,则报告背后的分析服务将提示您登录 - 它不适用于 ApiKey。在您的场景中,不幸的是,它违背了将报告嵌入到其他 Web 内容中以供不一定拥有 Rally 凭据的利益相关者查看的目的。

我怀疑,如果它偶尔有效,可能是因为您已经在同一浏览器窗口的另一个选项卡中登录 Rally。如果您在隐身模式下打开新窗口,系统将提示您登录。<​​/p>

关于javascript - 通过 Confluence HTML 传递标准报告的 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36556247/

相关文章:

linux - vmlinuz 进程在 100% CPU 上运行

.net - 如何将我的 .NET XML 文档注释添加到 Confluence 中

Javascript 监听两个事件并触发一个函数

javascript - 在 Express 中 res.render() 和 res.redirect() 的正确用法是什么?

javascript - Rally:来自多个表的字段

vba - Confluence:使用 VBA 更新现有页面

javascript - 获取 omdb api 前 100 部电影?

javascript - Node.js JavaScript : Simulate Keypress on Server (Like a Macro)

security - RallyRestApi 使用 HTTP GET 或 POST 方法吗?

javascript - 获取缺陷而不是跨用户、迭代和项目获取