Javascript 提供穷人的仪表板应用程序通信

Javascript 提供穷人的仪表板应用程序通信,javascript,extjs,rally,Javascript,Extjs,Rally,我知道你正在想出一种小组交流的方式。在那之前,我一直在想,我可以与偏好对象进行一些基本的交流 但是如何为应用程序所在的仪表板找到唯一ID 如果有比通过首选项对象共享信息更好的解决方案,那么让我描述一下我们想要解决的具体问题:我们的项目结构中的某些项目代表我们想要显示度量仪表板的程序-该仪表板将由共享仪表板上的多个应用程序组成。但在拉力赛项目层次结构中,项目的级别并不一致,我们只有大约四个项目,尽管我们有很多拉力赛项目 因此,我希望这个代码度量仪表板是Rally中的一个页面,它可以轻松地在我们拥有

我知道你正在想出一种小组交流的方式。在那之前,我一直在想,我可以与偏好对象进行一些基本的交流

但是如何为应用程序所在的仪表板找到唯一ID

如果有比通过首选项对象共享信息更好的解决方案,那么让我描述一下我们想要解决的具体问题:我们的项目结构中的某些项目代表我们想要显示度量仪表板的程序-该仪表板将由共享仪表板上的多个应用程序组成。但在拉力赛项目层次结构中,项目的级别并不一致,我们只有大约四个项目,尽管我们有很多拉力赛项目


因此,我希望这个代码度量仪表板是Rally中的一个页面,它可以轻松地在我们拥有的各种程序之间切换。我不希望使用项目层次结构来实现这一点,因为我们有很多项目,查找和选择程序既耗时又棘手。

我对示例进行了黑客攻击,创建了一个可以在两个面板之间传递事件的应用程序示例。 这是非常不受支持的在这个时候,我们保留权利,打破它,无论何时,我们想没有任何警告

也就是说,您可以查看当前不受支持的获取应用程序ID的方式,如果您制作了此应用程序的两个副本,您可以在控制台中查看应用程序在全球拉力消息总线上通信的结果

你可以找到它的要点


你打算将此发送给Rally开发者吗?我们潜伏在这里,因此这是一个向我们提问的好方法。这太棒了-我能够用它组合一些不错的通信应用程序,其中我在一个应用程序中执行一些查询,创建一个数据存储,然后与多个应用程序共享同一数据存储。对我来说,我认为消息总线确实是Rally策略的关键技术,专注于应用程序以继续扩展平台我发现消息总线存在一些问题-如果我刷新整个页面,应用程序工作正常,但是如果我通过Rally菜单从另一个Rally页面移动到此页面,发布新邮件时出现异常。我可以通过捕获异常并刷新整个页面parent.location.reloadtrue来解决这个问题,但显然这并不理想。迫不及待地等待您支持的解决方案。是的,我们正在努力使其成为功能强大且易于使用的解决方案。现在会有一些问题,你对此无能为力。例外情况可能是,当应用程序被销毁时,事件未被注销。你可以用魔法让它工作。您是否能够共享正在使用的应用程序?我对你们的产品很感兴趣。用RallyApps标签在推特上发布,或者更好的方法是把它放在GitHub上,这样其他人就可以从中获取信息。这个应用程序尤其需要一些基础设施来支持它,所以我认为发布它是不现实的——我们正在为各种程序保存KLOC、静态分析、覆盖率和其他统计数据,以便在首选对象中聚合。没有这些,应用程序就没有什么可报告的。我有一个中心网格,查询显示摘要指标,其他面板显示各种趋势图。如果你有一个屏幕截图,没有显示任何敏感数据,也会震动:
<!DOCTYPE html>
<html>
<head>
    <title>My Custom App</title>

    <!--Include SDK-->
    <script type="text/javascript" src="/apps/2.0p/sdk.js"></script>

    <!--App code-->
    <script type="text/javascript">

        Rally.onReady(function() {

            Ext.define('CustomApp', {
                extend: 'Rally.app.App',
                componentCls: 'app',
                mixins:['Rally.Messageable'],
                launch: function() {
                    var brokenInTheFutureIdThatWillWorkForNow =   Ext.Object.fromQueryString(window.location.href);
                    window.parent.Rally.Messages.subscribe("test",function(){console.error(brokenInTheFutureIdThatWillWorkForNow.panelOid,arguments);});
                    window.parent.Rally.Messages.publish("test",brokenInTheFutureIdThatWillWorkForNow.panelOid);
                    //Write app code here
                }
            });

            Rally.launchApp('CustomApp', {
                name: 'My Custom App'
            });

        });

    </script>

    <!--App styles-->
    <style type="text/css">

        .app {
            /* Add app styles here */
        }

    </style>

</head>
<body class="myApp">
</body>
</html>