1

x軸ラベルとグラフに表示/スタックされる値を含むオブジェクトのリストを使用して、2軸スタック棒グラフ(ADFコンポーネント)を操作しています。

私はADFとEJBに比較的慣れていないので、この質問が皆さんにとって初歩的なものであると思われる場合は、事前に謝罪したいと思います。

JDeveloper11.1.1.5を使用していることに注意してください。

JSFページに表示しようとしている棒グラフのプロパティに割り当てられる変数から値を取得するのに苦労しています。

参考までに、以下のロジックを簡単に要約しました。

データ/リストは、次のクラスデータコントロールから取得されます。

public class ActivityChart {

 private Double axisScale;

 public ActivityChart() {
     super();
     axisScale = 0.0;
 }

 public List<ActivityDTO> getActivityDetail(List<String> businessUnits) {
     List<ActivityDTO> returnNewList = new ArrayList<ActivityDTO>();
     List<TransactionDTO> dataList = new ArrayList<TransactionDTO>();
     TransactionSessionBean transBean = lookupTransactionSessionBean();

     if (businessUnits != null && !businessUnits.isEmpty()){
         dataList = transBean.getActivityData(SystemUtil.getCurrentUser(), businessUnits);            
         returnNewList = processTransactions(dataList);
         axisScale = calcAxisScale(returnNewList);
     }

     return returnNewList;
 }
 ...

TransactionDTOオブジェクトは、基本的に、クエリされたdbトランザクションのフィールドを格納するエンティティオブジェクトのミラーです。ActivityDTOオブジェクトには、文字列値(x軸ラベル)と、棒グラフに必要な値の3つのDouble値が含まれています。

自動計算された値が整列されていないため、私がやろうとしているのは、2つのy軸のスケールを動的に設定することです(2軸の積み上げ棒グラフを使用しています)。

現在、特定の軸値でハードコーディングされた棒グラフの2つの関連要素があります。

<dvt:y1Axis axisMaxAutoScaled="false" axisMaxValue="100.0"/>
<dvt:y2Axis axisMaxAutoScaled="false" axisMaxValue="100.0"/>

Y軸に使用したい値が計算され、上記のクラスの「axisScale」変数に格納されます。

ここから先に進む方法が本当に途方に暮れています。

提供されたガイダンス/指示を非常に高く評価します。

ありがとう、カリム

4

1 に答える 1

0

axisScaleのゲッターを追加し、データコントロールを再生成します。axisScaleのバインディングをページに追加し、それを最大値として使用します。

pageDef:

<attributeValues IterBinding="ActivityChartIterator" id="axisScale">
  <AttrNames>
    <Item Value="axisScale"/>
  </AttrNames>
</attributeValues>

ページ:

<dvt:y1Axis axisMaxValue="#{bindings.axisScale.attributeValue}" axisMaxAutoScaled="false"/>
<dvt:y2Axis axisMaxValue="#{bindings.axisScale.attributeValue}" axisMaxAutoScaled="false"/>
于 2012-11-29T13:02:21.680 に答える