2015-11-13 16 views
7

Vấn đề:tiết kiệm và khôi phục trạng thái xem hiện tại của một đồ thị về Tableau qua javascript API

Làm thế nào tôi có thể lưu trữ - và sau đó lấy - trạng thái tùy chỉnh của một cái nhìn về Tableau qua javascript-API?

Mô tả:

tôi đang làm việc trên trang web mà chúng tôi hiện đang cho phép bất kỳ người sử dụng để phối hợp một tập hợp các quan điểm về Tableau thành một bài thuyết trình trực tuyến PowerPoint giống như để sử dụng sau. Trong triển khai hiện tại của chúng tôi, trạng thái của biểu đồ Tableau không được lưu trữ và do đó người dùng phải áp dụng bộ lọc mong muốn của mình hoặc của mình, chọn trang tính, v.v. trong khi giữ bản trình bày - mọi lúc. Đây là những gì chúng tôi muốn tránh.

Giải pháp dễ nhất cho việc này là lưu trữ và truy xuất một trong các liên kết "Chia sẻ" được truy cập thông qua giao diện thanh dưới cùng; các liên kết này chứa trạng thái của chế độ xem hiện tại, nhưng cho đến nay, chúng tôi không thể thực hiện điều này: trước tiên, do các vấn đề về miền, chúng tôi không thể tìm nạp các liên kết Chia sẻ từ khung nội tuyến mã nhúng; và thứ hai, phương thức API workbook.getUrl() dường như không bao gồm trạng thái của chế độ xem hiện tại.

Tôi currenty nhìn vào workbook.rememberCustomViewAsync (tên)workbook.showCustomViewAsync (tên) phương pháp, mà có vẻ như một giải pháp khả thi. Tuy nhiên, tôi dường như không thể nhận được bất kỳ kết quả hợp lý nào từ một trong hai phương pháp này vì cả hai phương pháp này đều cho ra 500 lỗi không rõ ràng, không có nhiều thông tin khi chạy.

Một ví dụ tập tin, và các lỗi:

Để minh hoạ rõ hơn vấn đề này, tôi đã tạo ra một tối thiểu demo (đoạn dưới đây) mà cố gắng để sử dụng phương pháp thứ hai mô tả ở trên. Khi được mở trong Google Chrome, cả hai nút ('trạng thái lưu' và 'truy xuất trạng thái') đều không hoạt động đối với tôi và có thể thấy các lỗi sau trong Công cụ dành cho nhà phát triển (thông báo phản hồi http và đầu ra của bảng điều khiển dành cho nhà phát triển): phản ứng

Http:

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

điều khiển lỗi:

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

có ai biết làm thế nào tôi có thể giải quyết vấn đề này, bằng cách maki ng công việc ví dụ mã được cung cấp (phương pháp thứ hai được mô tả), hoặc thông qua bất kỳ phương tiện nào khác? Bất kỳ trợ giúp sẽ được đánh giá cao!

PS: Trình mô phỏng đoạn mã ở đây sẽ gây ra lỗi Access-Control-Allow-Origin. Tệp cũng đã được xuất bản here.

<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>

Trả lời

2

Okey, vì vậy tôi đã tiếp xúc với hỗ trợ về Tableau khách hàng, và họ dường như đã tìm thấy vấn đề này.

Rõ ràng, một số yếu tố của javascript-API chỉ có sẵn cho về Tableau trực tuyến và về Tableau Server - không về Tableau Public.

Nói cách khác, hàm workbook.rememberCustomViewAsync('customViewName') không được hỗ trợ cho biểu đồ được Tableau công khai lưu trữ - chẳng hạn như biểu đồ được sử dụng trong ví dụ trên (https://public.tableau.com/views/...).

+1

Xin chào, tôi có một câu hỏi. Tôi biết, chế độ xem tùy chỉnh được chia sẻ trên tất cả Trang tổng quan trong một Sổ làm việc. Có cách nào chúng tôi có thể áp dụng chế độ xem tùy chỉnh từ trang tổng quan1 của sổ làm việc1 đến trang tổng quan2 của bảng tính2 với cùng bộ lọc không? –

+0

@DeepanshuKalra, tôi sợ tôi không thể giúp bạn với điều đó. Tôi khuyên bạn nên đăng câu hỏi lên diễn đàn hỗ trợ chính thức. Cuối cùng họ đã giúp tôi! –

Các vấn đề liên quan