//アプリケーションキャッシュの取得確認 window.applicationCache.addEventListener("cached", function(){ localStorage.setItem("cacheError","0"); alert("Webキャッシュの取得に成功しました"); }, false); window.applicationCache.addEventListener("updateready", function(){ window.applicationCache.swapCache(); if(confirm("アプリケーションに更新があります。今すぐ更新しますか?")){ location.reload(); } }, false); window.applicationCache.addEventListener("error", function(){ if(window.applicationCache.status == window.applicationCache.UNCACHED){ if(localStorage.getItem("cacheError")) var cacheError = parseInt(localStorage.getItem("cacheError"),10)+1; else var cacheError = 1; if(cacheError>=20){ //20回リロードしてもキャッシュが取得できない場合は失敗にします alert("Webキャッシュの取得に失敗しました。起動しなおしてください。"); localStorage.setItem("cacheError","0"); } else { localStorage.setItem("cacheError",cacheError); location.reload(); } } }, false);
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("シナリオを取得できていません。動作モードとネットワーク状態を確認してもう一度お試しください。"); } };
Apl.changePreWork = function () { //prework.htmlへ遷移します。 location.href = "prework.html"; };
Apl.clearCache = function () { //Webストレージを全て削除します。 localStorage.clear(); if (Apl.scenarioList != null) //シナリオを再度Webストレージに保存します。 localStorage.setItem("scenarioList", JSON.stringify(Apl.scenarioList)); if (Apl.operationMode != null) //動作モードを再度Webストレージに保存します。 localStorage.setItem("operationMode", JSON.stringify(Apl.operationMode)); //オフラインストレージのデータを削除します。 AR.Data.clearResourceStorage(Apl.clearStorageSuccess, Apl.clearResourceStorageError); }; // オフラインストレージの削除に成功した場合のコールバック関数です。 Apl.clearStorageSuccess = function (_result) { alert("データを削除しました。"); };