2015-11-13 8 views
7

JavaScriptのAPIを使用して問題をタブローグラフの現在のビューステートを復元:私は保存することができますどのように保存と

- し、後で検索 - タブローのカスタム状態はJavaScript APIを介して見ますか?

説明:

私たちは現在、すべてのユーザーが後で使用するためのパワーポイントのようなオンラインプレゼンテーションにタブロービューのセットをコラボレートすることができ、サイト上で働いています。現在の実装では、Tableauグラフの状態は保存されないので、ユーザはいつでもプレゼンテーションを保持しながら、必要なフィルタを適用したり、ワークシートを選択したりする必要があります。これは今私たちが避けたいものです。

これの最も簡単な解決策は、下部バーインターフェイスからアクセスされる「共有」リンクの1つを保存して取得することです。これらのリンクには現在のビューの状態が含まれていますが、これまでにはこれを行うことができませんでした。まず、ドメインの問題により、単純に埋め込みコードiframeから共有リンクを取得できません。第2に、APIメソッドworkbook.getUrl()には現在のビューの状態が含まれていないようです。

私はcurrenty workbook.rememberCustomViewAsync(名)に可能な解決策のように見えるworkbook.showCustomViewAsync(名)方法を探しています。しかし、これらの2つの方法のいずれかから賢明な結果を得ることはできません。両方を実行すると、あいまいで非有益な500のエラーが発生します。

例えば、ファイル、およびエラー:

良好この問題を例示するために、私は、上述した第2の方法を使用しようと最小demo(以下スニペット)を作成しました。 Google Chromeで開くと、2つのボタン(「保存状態」と「検索状態」)のどちらも私のために機能せず、開発者ツール(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) 

、誰もがいずれかのまきによって、私はこの問題を解決する方法を知っています提供されたコード例の作業(記述された第2の方法)、または他の手段を介してどんな助けもありがとう!

PS:ここでスニペットシミュレータは、Access-Control-Allow-Originエラーを引き起こします。このファイルは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>

答えて

2

オーケー、私はタブローカスタマサポートに接触していた、と彼らは問題を発見したように見えます。

明らかに、javascript-APIの特定の要素は、Tableau OnlineおよびTableau Serverでのみ利用可能です。 Tableau Public。

つまり、関数workbook.rememberCustomViewAsync('customViewName')は、上記の例(https://public.tableau.com/views/...)で使用されているようなTableau Publicによってホストされているグラフではサポートされていません。

+1

ねえ、質問があります。私は、カスタムビューが1つのワークブック内のすべてのダッシュボードで共有されていることを知っています。ワークブック1のダッシュボード1から同じフィルタを使用してワークブック2のダッシュボード2にカスタムビューを適用する方法はありますか? –

+0

@DeepanshuKalra、私はそれを手伝ってくれるのではないかと心配しています。公式サポートフォーラムに質問を投稿することをお勧めします。彼らは結局私を助けました! –