是否可以通过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>