8

こんばんは、

現在、vaadinアプリケーションにd3の視覚化機能を追加しようとしています。d3が何であるかわからない場合は、ここにクイックリンクがあります:http://d3js.org/

それでも私はいくつかの問題で立ち往生しています:

  • d3で開発するために必要な「d3.v2.js」javascriptファイル/ライブラリを追加するにはどうすればよいですか?独自のテーマ(WebContent / VAADIN / themes / myOwnTheme / ..)に追加しようとしましたが、Eclipseで更新すると、「ビルド中にエラーが発生しました。プロジェクトでビルダー「JavaScriptValidator」を実行中にエラーが発生しました」というメッセージが表示されます。 VaadinD3Testproject'。14"。これは、jsファイルが8000行程度で大きすぎる可能性があるためだと思いますか?どういうわけかファイルをweb.xmlに追加することについて読みましたか?方法はありますか?

  • 次に、JavaScriptコードをvaadinアプリケーションに追加するにはどうすればよいですか?私の調査の結果、使用するオプションがあることがわかりました。

    • getMainWindow()。executeJavaScript( "alert('foo');")

    また

    • ラベルテスト=newLabel("マウスをここに移動します。。

      "、Label.CONTENT_XHTML);

-> javascriptコードを統合する他の方法はありますか?

誰かが一種の「ステップバイステップ」の説明、両方の方法を解決する方法を手伝ってくれませんか?私はこれについてそれほど経験がないので、ここで助けていただければ幸いです。

- - - - アップデート - - - - - -

d3で開発するために必要な「d3.v2.js」javascriptファイル/ライブラリを追加するにはどうすればよいですか?独自のテーマ(WebContent / VAADIN / themes / myOwnTheme / ..)に追加しようとしましたが、更新すると、「ビルド中にエラーが発生しました。プロジェクト「VaadinD3Testproject」でビルダー「JavaScriptValidator」を実行中にエラーが発生しました」というメッセージが表示されます。 。14"。これは、jsファイルが8000行程度で大きすぎる可能性があるためだと思いますか?どういうわけかファイルをweb.xmlに追加することについて読みましたか?方法はありますか?

表示されるこのエラーを修正しました。これは、Eclipseとinbuildjavascriptバリデーターの問題でした。ここでいくつかの投稿で説明されているように、独自のサーブレットでajaxクラスを上書きすることで、jsファイルをアプリケーションにロードできるようになりました。

私は今、いくつかの方法を試しました:

  • getMainWindow.executeJavaScript()は、 "d3.select(" body ").append(" svg ");"のようなd3コードを追加するとすぐに、d3を使用できる方法で機能しません。 、それは実行されません(タグを実行するかどうかは関係ありませんが、タグ内のコードは実行されないことに一般的に気づきました)

  • このフォーラムのいくつかの例で示されているように、CustimLayoutを使用してみましたが、これも上記のようです。ウェブサイトのソースコードを確認すると、コードが欠落しているか、解析されているだけです。

  • XHTMLモードかRAWモードかに関係なく、ラベルは機能しなくなり、例外が発生します

  • サーバーの起動時に本体がビルドされるときに呼び出される別のサーブレットメソッドを上書きすると、vaadinがデフォルトのウィジェットセットをロードできなくなったというエラーメッセージが表示されました。

それで、何が残っていますか?d3をvaadinと統合する方法は本当にありませんか?誰もこれを試したことがありませんか?昨日も来たるvaadin7についてたくさん読んだのですが、安定性がわからないアルファ版を使うのも一種の選択肢でしょうか(それがアルファと呼ばれる理由だと思います)。

あなたが私と共有しているすべての考えに感謝します

4

2 に答える 2

7

既存のjavascriptライブラリを組み込む最も包括的な方法は、独自のカスタムコンポーネントを開発することです。これ「通常の」Vaadin開発よりも少し複雑ですが、ブラウザーで(GWTを介して)javascriptメソッドとオブジェクトに完全にアクセスできるようになります。

外部のJavaScriptファイルをページに含めるには、ApplicationServletクラスを拡張し、writeAjaxPageHtmlVaadinScriptsメソッドをオーバーライドします。これは、いくつかの外部ライブラリを含む現在のプロジェクトからの抜粋です。

その後、「getMainWindow()。executeJavaScript(blah)」を使用してこれらのライブラリを利用できます。

それでも、d3について私が見ることができることから、カスタムVaadinコンポーネントを開発する方が理にかなっています。既存のGWTd3ウィジェットがあるかどうかを確認し、それをVaadinコンポーネントで利用する方が賢明な場合があります。

@Override
protected void writeAjaxPageHtmlVaadinScripts(Window window,
                                              String themeName, Application application, BufferedWriter page,
                                              String appUrl, String themeUri, String appId,
                                              HttpServletRequest request) throws ServletException, IOException {
  page.write("<script type=\"text/javascript\">\n");
  page.write("//<![CDATA[\n");
  page.write("document.write(\"<script language='javascript' src='" + appUrl + "/VAADIN/scripts/jquery/jquery-1.4.4.min.js'><\\/script>\");\n");
  page.write("document.write(\"<script language='javascript' src='" + appUrl + "/VAADIN/scripts/highcharts/highcharts.js'><\\/script>\");\n");
  page.write("document.write(\"<script language='javascript' src='" + appUrl + "/VAADIN/scripts/highcharts/modules/exporting.js'><\\/script>\");\n");
  page.write("//]]>\n</script>\n");
  super.writeAjaxPageHtmlVaadinScripts(window, themeName, application,
      page, appUrl, themeUri, appId, request);
}
于 2012-07-09T07:23:10.310 に答える
1

手遅れだとは思いますが、D3jsとVaadinの統合から始めました。私はいくつかのリソースを手に入れました。それはこのトラックにいる誰かを助けるかもしれませんまず第一にVaadinのためにそこにある最高の本はBookOfVaadinです この本はあなたがVaadinの完全な知識を得るのを助けるでしょうまたそれはVaadin認定のために推薦されました

Book Of Vaadinをダウンロードするには、ここをクリックしてください

1)フリーコードチャートとD3ラッパー

2)D3とVaadinの統合

このチュートリアルでエラーが発生した場合は、このリンクを参照してみてください-> Vaadinフォーラム

3)d3librarayの直接使用

于 2016-04-06T07:31:02.380 に答える