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();
}
};
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);
};
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();
};
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("シナリオを取得できていません。動作モードとネットワーク状態を確認してもう一度お試しください。");
}
};