//アプリケーションキャッシュの取得確認
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("データを削除しました。");
};