0

是否可以通过phantomjs运行与 html 一起使用的 tableau-javascript-api代码?

我正在开展一个项目,通过 tableau-javascript-API 获取 Tableau 数据,然后测试它们是否显示正确的数据。

在这个项目中,我必须在 Jenkins 上自动运行所有这些工作。对于他们来说,我需要一些像 maven/command line executioner 这样的工具。

目前我尝试使用 Phantomjs。但即使我包括了tableau-2.min.js,Phantomjs 也不识别/知道“new tablea.Viz(parameters)”。

有人对我的情况有经验吗?你有什么其他工具推荐给我吗?

在这里,我添加了我的 javascript 代码:

var viz;

function initViz() {

    var container = document.getElementById("container");

    var url = "http://my_tableau_link";

    var options = {

        hideTabs: true,
        hideToolbar: true,
        onFirstInteractive: function () {
            getSummaryData(Timo_Live_Auswertung);
        }
    };
    viz = new tableau.Viz(container, url, options);
}

function getSummaryData(object){
    var worksheet = viz.getWorkbook().getActiveSheet().getWorksheets().get(object.SHEET);
    console.log(worksheet.getName());

    options = {
        maxRows: 0, 
        ignoreAliases: false,
        ignoreSelection: true,
        includeAllColumns: false
    };

    worksheet.getSummaryDataAsync(options, object).then(function(table) {
        var columns = table.getColumns();
        var data = table.getData();
        var niceData = reduceToObjects(columns, data);
        console.log(niceData);

        for (var i = 0; i < niceData.length; i++){
            if (niceData[i]["OFFER"] == "4044"){
                console.log(i + ": " + niceData[i]["OFFER"] == "4044");
                console.log(i + ": " + niceData[i]["Planstunden Kategorie"]);

            }
        }

    });
}

function reduceToObjects(cols,data) {

    var fieldNameMap = $.map(cols, function(col){
        var fieldName = col.getFieldName(); 
        return fieldName;
    });

    var dataToReturn = $.map(data, function(d) {
        return d.reduce(function(memo, value, idx) {
            memo[fieldNameMap[idx]] = value.formattedValue; 
            return memo;
        }, 
    {});
    });

    return dataToReturn;
}

var Timo_Live_Auswertung = {
    SHEET : "Timo Live Auswertung (%)", 
    Kennzahlnamen : "Kennzahlnamen",
    Kennzahlwerte : "Kennzahlwerte",
    Kunde: "Kunde",
    Label_list: "Label list",
    Laufzeit: "Laufzeit",
    OFFER: "OFFER",
    Planstunden_Kategorie: "Planstunden Kategorie",
};

initViz();

这是我的html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div id="container">
        </div>

        <script src="http://my_tableau_server/javascripts/api/tableau-2.min.js"></script>
        <script src="index.js"></script>
        <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    </body>
</html>
4

0 回答 0