ページの先頭行へ戻る
Interstage AR Processing Server V1.1 開発ガイド
FUJITSU Software

2.5.2.2 onloadの処理

カメラの停止やWebストレージに保存したデータを取得した後、動作モードを判定
Apl.onloadIndex = function(){
  // ネイティブカメラを停止させます。
  AR.Camera.stopCameraView(Apl.noop, Apl.stopCameraViewError);
  //オフラインストレージをONに設定します。
  AR.Data.useOfflineStorage(true, Apl.noop,Apl.useOfflineStorageError);
  //Webストレージに保存した全てのデータを取得します。
  Apl.getLocalStorageData();
  Apl.scenarioId = Apl.useScenarioId;
  //動作モードを取得してApl.operationModeに保存します。 
  AR.OS.getOperationMode(Apl.getOperationModeSuccess ,Apl.getOperationModeError);
};
動作モード判定成功時の処理
Apl.getOperationModeSuccess = function (_result) {
  Apl.operationMode = _result.getValue();
  localStorage.setItem("operationMode", Apl.operationMode);
  //動作モードに応じてhtml表示を変更します。
  Apl.showOperationMode();
  if (Apl.operationMode == "serverMode") { //サーバ通信モードの場合
    //AR実行サーバからシナリオリストを取得します。
    Apl.getScenario();
  } else { //スタンドアローンモードの場合
    //シナリオボタンを表示します。
    Apl.showScenarioButton();
  }
};
シナリオ取得の検索クエリを生成し、AR実行サーバからシナリオリストを取得
Apl.getScenario = function () {
  //quads検索用クエリオブジェクトを作成します。
  var query = new Apl.QuadQuery();
  query.type = "RECORDSANDCOUNT";
  query.limitRange = new Apl.Range(1, 10);
  query.qattributeOrderIndexRange = new Apl.Range(1, 10);
  //シナリオが登録されているqtypeを指定します。
  query.qtypeNameRanges = new Apl.Range("arscn_scenario");
  //シナリオIDを指定します。
  query.whereExpressions = new Apl.QuadQueryExpression(new Apl.Range("ar_id"), new Apl.Range(Apl.useScenarioId), "LONG");

  //文字列に変換します。
  query = Apl.makeQuadQuery(query);

  //AR実行サーバからシナリオリストを取得します。
  AR.Data.getArServerData(query, true, Apl.getScenarioSuccess, Apl.getArServerDataError);
};
AR実行サーバからシナリオ取得に成功した場合の処理
Apl.getScenarioSuccess = function (_result) {

  //初期化します
  Apl.scenarioList = null;
  //結果からシナリオを抽出してApl.scenarioListに格納します。
  Apl.extractScenario(_result.getValue());
  //シナリオIDをWebストレージに保存します
  localStorage.setItem("scenarioId", Apl.scenarioId);
  //シナリオが登録されていた場合Webストレージに保存します。
  if (Apl.scenarioList != null)
    localStorage.setItem("scenarioList", JSON.stringify(Apl.scenarioList));

  //取得したシナリオからボタンを表示させます。
  Apl.showScenarioButton();
};
JSONオブジェクトからシナリオを抽出
Apl.extractScenario = function (_data) {
  //取得したレコード数です。
  var recordLength = _data.records.length;

  for (var recordIndex = 0; recordIndex < recordLength; recordIndex++) {
    //レコードを一つずつ調べます。
    var record = _data.records[recordIndex];
    var valueLength = record.qvalues.length;
    var scenarioId;
    var value = new Object();

    //使用するqvalueの値だけ取得します。attributeNameで判断します。
    for (var valueIndex = 0; valueIndex < valueLength; valueIndex++) {
      var qvalue = record.qvalues[valueIndex];
      if (qvalue.qattributeName == "ar_name") { // シナリオ名
        value.name = qvalue.stringValue;
      }
      if (qvalue.qattributeName == "ar_description") { // シナリオの説明
        value.description = qvalue.stringValue;
      }
      if (qvalue.qattributeName == "ar_id") { // シナリオID
        scenarioId = qvalue.longValue;
      }
    }
    if (value.name != null) {
      //Apl.scenarioListに格納します。
      if (Apl.scenarioList == null) Apl.scenarioList = new Array();
      Apl.scenarioList[Apl.scenarioId] = value;
    }
  }
};
取得済みのシナリオ名をボタンに印字
Apl.showScenarioButton = function () {
  if (Apl.scenarioList != null && Apl.scenarioList[Apl.scenarioId] != null) {
    document.getElementById("scenario_select").value = Apl.scenarioList[Apl.scenarioId].name;
    document.getElementById("scenario_select").style.visibility = "visible";
    document.getElementById("scenario_select").onclick = Apl.changePreWork;
  } else {
    alert("シナリオを取得できていません。動作モードとネットワーク状態を確認してもう一度お試しください。");
  }
};