автоматически запускать HTML, который включает в себя «API-код Tableau Javascript» через Phantomjs - PullRequest
0 голосов
/ 09 мая 2019

Можно ли запустить tableau-javascript-api код, который работает с html, над phantomjs ?

Я работаю над проектом, чтобы получитьДанные таблицы через tableau-javascript-API и затем проверяют их, если они показывают, исправляет данные.

Среди этого проекта мне нужно автоматически запускать все эти задания в Jenkins.Для них мне нужен какой-то инструмент, такой как maven / исполнитель командной строки, что-то вроде этого.

В данный момент я пытаюсь использовать Phantomjs.Но даже если я включил tableau-2.min.js, Phantomjs не распознает / не знает «новую таблицу.Виз (параметры)».

Кто-нибудь имеет опыт работы с моей ситуацией?Есть ли другие инструменты, которые вы мне предлагаете?

Здесь я добавляю свой код 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...