Передача ключа API через Confluence HTML для стандартных отчетов

Мне удалось заставить код API Java работать для диаграмм Iteration TreeGrid и Iteration Burndown / Release Burnup. Мы пытались заставить это работать на Confluence, и есть проблемы, пытающиеся передать только iframes, и у ИТ есть проблемы с некоторыми из вариантов обхода. Мы смогли получить некоторое подобие для работы через скрипт ниже. Фактически, Iteration TreeGrid работает успешно каждый раз, но в большинстве случаев стандартные отчеты просто представляют экран входа в Rally. Это не согласуется, и иногда это работает для меня в Chrome, но не в Firefox/IE и т. Д. Мы прикрепили API к пути страницы слияния, если он введен по ссылке, а также к тому, что в сценарии. Существует ли другой способ передачи ключа для стандартного отчета, который можно создать?

Спасибо! отметка

enter code here {} 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}

2 ответа

Хорошие новости! Компонент StandardReport в AppSDK 2.1 и вспомогательный сервис A1 Analytics теперь полностью поддерживают ключи Api, поэтому вы сможете сделать это довольно легко.

Несколько полезных ссылок:

Компонент StandardReport: https://help.rallydev.com/apps/2.1/doc/

Внешнее внедрение приложений: https://help.rallydev.com/apps/2.1/doc/

Компонент StandardReport в AppSDK2 является оболочкой для аналитического сервиса первого поколения, предшествующего ApiKey. Это та же аналитическая служба, которая предоставляет вам отчеты на странице Отчеты> Отчеты. Эти отчеты также были доступны через компонент StandardReport в AppSDK1.

ApiKey не поддерживается в диаграммах первого поколения. AppSDK2 поддерживает ApiKey, как описано в руководстве по встраиванию приложений. Приложения AppSDK2 можно аутентифицировать с помощью ApiKey. Но если приложение AppSDK2 использует компонент StandardReport, аналитическая служба, стоящая за отчетом, предложит вам войти в систему - она ​​не работает с ApiKey. В вашем сценарии это, к сожалению, не соответствует цели встраивания отчета в другой веб-контент для просмотра заинтересованными сторонами, которые могут не обязательно иметь учетные данные Rally.

Я подозреваю, что если кажется, что это иногда срабатывает, возможно, это потому, что вы уже вошли в Rally на другой вкладке того же окна браузера. Если вы откроете новое окно в режиме инкогнито, вам будет предложено войти в систему.

Другие вопросы по тегам