通过 javascript API 保存和恢复 Tableau 图形的当前视图状态

2024-04-08

问题:

如何通过 javascript-API 存储并随后检索 Tableau 视图的自定义状态?

描述:

我正在开发一个网站,目前允许任何用户将一组 Tableau 视图协作为类似 PowerPoint 的在线演示文稿以供以后使用。在我们当前的实现中,Tableau 图表的状态不会被存储,因此用户每次都必须在持有演示文稿的同时应用他或她所需的过滤器、选择工作表等。这是我们现在想要避免的。

最简单的解决方案是存储和检索通过底部栏界面访问的“共享”链接之一;这些链接包含当前视图的状态,但到目前为止,我们还无法做到这一点:首先,由于域问题,我们不能简单地从嵌入代码 iframe 中获取共享链接;其次,API方法工作簿.getUrl()似乎不包括当前视图的状态。

我目前正在调查工作簿.rememberCustomViewAsync(名称) and 工作簿.showCustomViewAsync(名称)方法,这似乎是一个可能的解决方案。然而,我似乎无法从这两种方法中获得任何明智的结果,因为它们最终都会在运行时给出模糊的、非信息性的 500 错误。

示例文件和错误:

为了更好地说明这个问题,我创建了一个最小的demo https://dl.dropboxusercontent.com/u/45929760/Webserver/web-api-demo.html(下面的片段)尝试使用上述第二种方法。当在 Google Chrome 中打开时,这两个按钮(“保存状态”和“检索状态”)对我来说都不起作用,并且可以在开发人员工具中看到以下错误(分别是 http 响应消息和开发人员控制台输出):

HTTP 响应:

<br>
2015-11-11 16&#x3a;14&#x3a;17.916
&#x28;VkNpWQrCQaIAACQo2YYAAAPi,0,0&#x29;

控制台错误:

POST http://public.tableau.com/vizql/w/Book6_426/v/YRKE/save_customized_view/sessions/208A699D34E14708A2268AA10A827C99-0:0 500 (Internal Server Error)

有谁知道我如何解决这个问题,无论是通过使提供的代码示例工作(描述的第二种方法),还是通过任何其他方式?任何帮助,将不胜感激!

PS:这里的代码片段模拟器会导致Access-Control-Allow-Origin错误。该文件也已发布here https://dl.dropboxusercontent.com/u/45929760/Webserver/web-api-demo.html.

<html>

<head>
  <title>A simple Tableau API demo</title>
  <!--script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script-->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  <!--script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau_v8.js"></script-->
  <script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau-2.min.js "></script>
</head>

<body>


  <H2>Custom view storage demo</H2>

  <button id="remember-button">
    Remember state 'test'
  </button>
  <button id="retrieve-button">
    Retrieve state 'test'
  </button>

  <div id="viz-placeholder" style="width: 1000px; height: 1000px; display: block;"></div>


  <script>
    
    // Render tableau graph
    function initializeViz() {
      var placeholderDiv = document.getElementById("viz-placeholder");
      var url = "https://public.tableau.com/views/Book6_426/YRKE";
      var options = {
        width: placeholderDiv.offsetWidth,
        height: placeholderDiv.offsetHeight,
        hideTabs: true,
        hideToolbar: true,
        onFirstInteractive: function() {
          workbook = viz.getWorkbook();
          activeSheet = workbook.getActiveSheet();
        }
      };
      viz = new tableau.Viz(placeholderDiv, url, options);
    }

    $(initializeViz)

    
     // Assign and set up button actions for storing and retrieving the custom view
    var customViewName = "test";

    $('#remember-button').click(function() {
      console.log("Remembering: ", customViewName);
      
      // Try to save state, or print error
      viz.getWorkbook().rememberCustomViewAsync(customViewName).otherwise(function(err) {
        console.log("An error occured:");
        console.log(err);
      });
      
    });

    $('#retrieve-button').click(function() {
      console.log("Retrieving: ", customViewName);
      
      // Try to retrieve state, or print error
      viz.getWorkbook().showCustomViewAsync(customViewName).otherwise(function(err) {
        console.log("An error occured:");
        console.log(err);
      });
      
    });
  </script>


</body>

</html>

好的,我已经联系了 Tableau 客户支持,他们似乎已经发现了这个问题。

显然,其中的某些要素javascript API http://onlinehelp.tableau.com/current/api/js_api/en-us/help.htm#JavaScriptAPI/js_api.htm仅适用于 Tableau Online 和 Tableau Server -not公共表格。

换句话说,函数workbook.rememberCustomViewAsync('customViewName')Tableau Public 托管的图表不支持 - 例如上例中使用的图表(https://public.tableau.com/views/...).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 javascript API 保存和恢复 Tableau 图形的当前视图状态 的相关文章

随机推荐

  • Java JProgressBar 使用图像

    我正在用 Java 制作一个游戏 并且我正在使用JProgressBar为了健康吧 我想使用图像 而不是颜色 JProgressBar 但我一直没能做到 我尝试过使用绘画方法 paintComponent方法 创建一个新类 但它不起作用 有
  • 将 ActionCable 发送给特定用户

    我有以下代码 它在我的 Rails 应用程序中发送 ActionCable 广播 ActionCable server broadcast notification channel notification Test message 连接如
  • 一个 Web 应用程序上具有多个域的 IIS

    我正在构建一个Web应用程序 on IIS 与 asp net 其概念如下 客户购买域名 然后从 20 30 个现成模板中选择一个模板 现在应用程序驻留在说www mywebappblabla com usersites 用户域是www m
  • 为什么要检查 if (*argv == NULL)? [复制]

    这个问题在这里已经有答案了 在我目前正在学习的数据结构课程中 我们的任务是用 C 编写一个网络爬虫 为了让我们抢占先机 教授为我们提供了一个从给定 URL 获取源代码的程序 以及一个简单的 HTML 解析器来剥离标签 该程序的 main 函
  • 使用 eulerr R 自定义欧拉图颜色

    我正在尝试使用 Johan Larsson 在 R 中的 eulerr 包绘制欧拉图 我正在关注这个例子 https cran r project org web packages eulerr index html开发人员在其中解释如何自
  • IntelliJ IDEA 中为 Tomcat 设置了哪个应用程序上下文?

    到目前为止 我在 Windows 命令中运行 Tomcat 服务器 v 7 0 26 catalina bat start脚本 如果我想部署我的 Web 应用程序 我必须通过 Maven 构建它并复制 WAR 到指定 Tomcat 部署目录
  • 检查互联网连接

    我需要我的应用程序来检查用户计算机上的互联网连接 如果有 则显示图像 如果没有 则显示不同的图像 这是我用来让它工作的代码 Private Sub Window Loaded ByVal sender As System Object By
  • HTML5 Canvas 实时绘图

    问题 我怎样才能使putImageData 随着图像各个部分的计算 实时更新画布 我正在开发一个 JavaScript TypeScript 应用程序来在 HTML5 上绘制 Mandelbrot 集
  • 使用“verticalScroll”修饰符时如何禁用水平拉伸/过度滚动?

    我想要一个可滚动视图 我正在使用verticalScroll列上的修饰符 Column modifier Modifier verticalScroll rememberScrollState I could provide more de
  • 将图像与噪声进行模板匹配的最佳方法是什么?

    我有一个大图像 5400x3600 其中有多个我需要检测的闭路电视 旋转检测需要花费大量时间 4 7 分钟 但它仍然无法解决某些闭路电视问题 匹配这样的模板的最佳方法是什么 我正在使用 skImage openCV 不适合我 但我也愿意接受
  • 使用 htaccess 屏蔽域名和文件夹名称

    我正在尝试使用 htaccess 和 mod rewrite 用另一个域屏蔽一个域及其两个子文件夹 例如 http example com sub sub sub to http example 2 com 以便http example 2
  • 将剪贴板中的代码粘贴到多个输入字段中

    我一直在寻找 Vanilla Javascript 解决方案 将代码复制粘贴到多个输入字段中 我在互联网上找到了解决方案 但都是基于 jQuery 的 这是 jQuery 解决方案 https stackoverflow com quest
  • C#中线程的合理使用?

    作为大型自动化流程的一部分 我们正在调用第三方 API 该 API 执行一些调用另一台计算机上的服务的工作 我们最近发现 当另一台计算机不可用时 API 调用在尝试连接到远程服务器时有时会中断长达 40 分钟 我们使用的 API 没有提供指
  • 带条件的数字序列[重复]

    这个问题在这里已经有答案了 我有一个大 data frame 我想生成一个新列 称为 Seq 其中有一个顺序值 每次不同列发生更改时都会重新启动 下面是 data frame 省略了列 和名为 Seq 的新列的示例 正如您所看到的 有一个连
  • Cypress:如何模拟键盘(CTRL/SHIFT)操作

    如图所示 我在树中有这些元素 如果我按键盘中的 CTRL 并单击这些文本 我可以选择多个元素 它会提供执行某些操作的链接 使用 cypress 有什么方法可以实现此目的吗 我知道如果它是选择 我可以使用选择 在我的情况下 这些只是 ul 另
  • 如何将现有的 Block Blob 转换为 PageBlob

    我使用 CloudBerry 资源管理器将 VM Iaas 磁盘文件复制到另一个存储 但是当我完成复制后 我发现新创建的Blob是一个Block Blob 而不是Page Blob 该工具不会复制源 Blob 类型 页面 Blob 有没有办
  • java.lang.SecurityException 与 javax.servlet.servlet-api jar 的两个冲突版本

    我正在努力解决我无法解决的 Java Maven Jetty 问题 我有一个正确启动的 Java Jetty 服务器 但一旦向它发送 HTTP 请求 它就会中止显示此堆栈跟踪 2013 09 30 08 40 24 534 qtp29724
  • 虚拟构造函数习惯和工厂设计

    在虚拟构造函数习惯用法中 有一些虚拟函数可以使用虚拟函数返回新对象或对象的副本 但是要以多态方式调用这些虚函数 您必须使用实际的构造函数创建该类的对象 在设计模式上下文中 这意味着客户端在使用多态对象创建方式之前知道对象的类型 客户端不必知
  • java数组对象的所有索引都具有相同的值

    我有一个错误 当我使用我在类中创建的打印方法时 我的数组返回所有相同的值 我不知道为什么 它一定是不同的值 有什么建议吗 这是代码 主要类别 public class KmeanES param args the command line
  • 通过 javascript API 保存和恢复 Tableau 图形的当前视图状态

    问题 如何通过 javascript API 存储并随后检索 Tableau 视图的自定义状态 描述 我正在开发一个网站 目前允许任何用户将一组 Tableau 视图协作为类似 PowerPoint 的在线演示文稿以供以后使用 在我们当前的