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