function DBConnectManager() { this.path = this.getPath(); this.directoryName = this.getDirectoryName(this.path); this.phpPath = this.getPHPPath(this.directoryName); this.maestroID = 0; this.playerID = 0; this.appName = ""; this.dateAndTime = null; } DBConnectManager.prototype.setMaestroID = function(maestroID) { this.maestroID = maestroID; } DBConnectManager.prototype.setPlayerID = function(playerID) { this.playerID = playerID; } DBConnectManager.prototype.setAppName = function(appName) { this.appName = appName; } DBConnectManager.prototype.setDateTime = function(date, time) { this.dateAndTime = date + time; } DBConnectManager.prototype.resetDateTime = function() { this.dateAndTime = null; } DBConnectManager.prototype.getPath = function() { return window.location.pathname; } DBConnectManager.prototype.getDirectoryName = function(path) { var pathAndFileNames = path.split("/"); return pathAndFileNames[pathAndFileNames.length - 2]; } DBConnectManager.prototype.getPHPPath = function(directoryName) { if(directoryName === "test") // mouse_typing/test/ return "../src/web/"; else // mousetyping/src/web/client/ return "../"; } DBConnectManager.prototype.requestCheckPlayerLogin = function(maestroName, playerName, enterCode, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/player/login.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null && replyJSON["PlayerID"] != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("maestro_name=" + maestroName + "&name=" + playerName + "&enter_code=" + enterCode); } /* DBConnectManager.prototype.requestAppList = function(maestroID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/app/app_data.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("maestro_id=" + maestroID); } DBConnectManager.prototype.requestActiveAppList = function(maestroID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/app/active_app.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("maestro_id=" + maestroID); } */ DBConnectManager.prototype.requestMenuAppList = function(maestroID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/app/menu_active_app_list.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("maestro_id=" + maestroID); } DBConnectManager.prototype.requestTypingPracticeAppList = function(maestroID, playerID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/app/menu_active_typing_practice_app_list.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("maestro_id=" + maestroID + "&player_id=" + playerID); } DBConnectManager.prototype.requestTypingTestAppList = function(maestroID, playerID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/app/menu_active_typing_test_app_list.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("maestro_id=" + maestroID + "&player_id=" + playerID); } DBConnectManager.prototype.requestPlayerHistory = function(maestroID, date, listener) { var historyRecordManager = new HistoryRecordManager(); /* if(isDebugMode()) { this.loadTempPlayerHistory(historyRecordManager); if(listener !== null) listener(historyRecordManager); return; } */ var self = this; var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/record/history_record.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) listener(self.parseJSONtoHistoryRecord(replyJSON)); else onFailedListener(replyJSON); } }; var params = "MaestroID=" + sessionStorageManager.getMaestroID() + "&AppID=" + sessionStorageManager.getPlayingAppID() + "&PlayerID=" + sessionStorageManager.getPlayerID() + "&Date=" + date; xhr.send(params); } DBConnectManager.prototype.parseJSONtoHistoryRecord = function(json) { var historyRecordManager = new HistoryRecordManager(); if(typeof json === "undefined") return historyRecordManager; if(typeof json.history === "undefined") return historyRecordManager; var count = json.history.length; for(var i = 0; i < count; i++) { var record = new HistoryRecord( json.history[i]["Date"], json.history[i]["AppName"], json.history[i]["HighScore"] ); historyRecordManager.push(record); } return historyRecordManager; } DBConnectManager.prototype.requestRanking = function(type, maestroID, date, time, listener) { var rankingRecordManager = new RankingRecordManager(); /* if(isDebugMode()) { this.loadTempRanking(rankingRecordManager); if(listener !== null) listener(rankingRecordManager); return; } */ var self = this; var xhr = new XMLHttpRequest(); xhr.open("POST", this.getRankingRecordUrl(type), true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) { listener(type, self.parseJSONtoRankingRecord(type, replyJSON)); } else onFailedListener(replyJSON); } }; var params = "MaestroID=" + sessionStorageManager.getMaestroID() + "&AppID=" + sessionStorageManager.getPlayingAppID() + "&Date=" + date + "&Time=" + time; xhr.send(params); } DBConnectManager.prototype.getRankingRecordUrl = function(type) { var rankingRecordURL = this.phpPath; switch(type) { case DBConnectManager.TYPE_MY_RANKING_HOUR: case DBConnectManager.TYPE_ALL_RANKING_HOUR: rankingRecordURL += "server/record/ranking_record_hour.php"; break; case DBConnectManager.TYPE_MY_RANKING_DAY: case DBConnectManager.TYPE_ALL_RANKING_DAY: rankingRecordURL += "server/record/ranking_record_day.php"; break; case DBConnectManager.TYPE_MY_RANKING_MONTH: case DBConnectManager.TYPE_ALL_RANKING_MONTH: rankingRecordURL += "server/record/ranking_record_month.php"; break; } return rankingRecordURL; } DBConnectManager.prototype.parseJSONtoRankingRecord = function(type, json) { var rankingRecordManager = new RankingRecordManager(); if(typeof json === "undefined") return rankingRecordManager; var replyJSON = null; switch(type) { case DBConnectManager.TYPE_MY_RANKING_HOUR: case DBConnectManager.TYPE_ALL_RANKING_HOUR: replyJSON = json.rankingHour; break; case DBConnectManager.TYPE_MY_RANKING_DAY: case DBConnectManager.TYPE_ALL_RANKING_DAY: replyJSON = json.rankingDay; break; case DBConnectManager.TYPE_MY_RANKING_MONTH: case DBConnectManager.TYPE_ALL_RANKING_MONTH: replyJSON = json.rankingMonth; break; } if(replyJSON === null) return rankingRecordManager; var count = replyJSON.length; for(var i = 0; i < count; i++) { var record = new RankingRecord( i + 1, replyJSON[i]["PlayerID"], replyJSON[i]["Name"], replyJSON[i]["HighScore"] ); rankingRecordManager.push(record); } return rankingRecordManager; } DBConnectManager.prototype.onFailed = function(errorMessage) { console.log("failed : " + errorMessage); } DBConnectManager.prototype.makeXHRWithParam = function(url, param, onSucceededListener, onFailedListener) { xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null && replyJSON["PlayerID"] != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } } return xhr; } DBConnectManager.prototype.requestHowToPlay = function(appID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/app/how_to_play.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null && replyJSON["HowToPlay"] != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send("AppID=" + appID); } DBConnectManager.prototype.updateResultRecord = function(maestroID, playerID, appID, record) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/record/update_result_record.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send( "MaestroID=" + maestroID + "&PlayerID=" + playerID + "&AppID=" + appID + "&Record=" + record ); } DBConnectManager.prototype.requestAppHighestRecord = function(maestroID, playerID, appID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/record/request_app_highest_record.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null && replyJSON["AppHighestRecord"] != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send( "MaestroID=" + maestroID + "&PlayerID=" + playerID + "&AppID=" + appID ); } DBConnectManager.prototype.requestAppRanking = function(maestroID, appID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); xhr.open("POST", this.phpPath + "server/record/app_ranking.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { var replyJSON = JSON.parse(xhr.responseText); if(replyJSON != null) onSucceededListener(replyJSON); else onFailedListener(replyJSON); } }; xhr.send( "MaestroID=" + maestroID + "&AppID=" + appID ); } DBConnectManager.prototype.loadTempPlayerHistory = function(historyRecordManager) { historyRecordManager.push(new HistoryRecord("05/14", "space_invaders", 14460)); historyRecordManager.push(new HistoryRecord("05/13", "space_invaders", 12860)); historyRecordManager.push(new HistoryRecord("05/12", "typing_english_basic", 15460)); historyRecordManager.push(new HistoryRecord("05/11", "typing_korean_basic", 13040)); historyRecordManager.push(new HistoryRecord("05/10", "space_invaders", 15460)); historyRecordManager.push(new HistoryRecord("05/09", "typing_english_basic", 14607)); historyRecordManager.push(new HistoryRecord("05/08", "typing_korean_basic", 13058)); } DBConnectManager.prototype.loadTempRanking = function(rankingRecordManager) { rankingRecordManager.push(new RankingRecord(1, 7, "강경모", 4400)); rankingRecordManager.push(new RankingRecord(2, 2, "강성태", 3400)); rankingRecordManager.push(new RankingRecord(3, 3, "김기덕", 2400)); rankingRecordManager.push(new RankingRecord(4, 4, "김남희", 1400)); rankingRecordManager.push(new RankingRecord(5, 5, "고봉순", 900)); rankingRecordManager.push(new RankingRecord(6, 6, "파르마", 800)); rankingRecordManager.push(new RankingRecord(7, 1, "박지상", 700)); rankingRecordManager.push(new RankingRecord(8, 8, "신현주", 600)); rankingRecordManager.push(new RankingRecord(9, 9, "꼬봉이", 500)); rankingRecordManager.push(new RankingRecord(10, 10, "거북이", 400)); rankingRecordManager.push(new RankingRecord(11, 11, "다람쥐", 300)); rankingRecordManager.push(new RankingRecord(12, 12, "사시미", 200)); rankingRecordManager.push(new RankingRecord(13, 13, "태권도", 100)); rankingRecordManager.push(new RankingRecord(14, 14, "합기도", 40)); rankingRecordManager.push(new RankingRecord(15, 15, "우습지", 10)); rankingRecordManager.push(new RankingRecord(16, 16, "하하하", 4)); } DBConnectManager.TYPE_MY_RANKING_HOUR = 0; DBConnectManager.TYPE_MY_RANKING_DAY = 1; DBConnectManager.TYPE_MY_RANKING_MONTH = 2; DBConnectManager.TYPE_ALL_RANKING_HOUR = 3; DBConnectManager.TYPE_ALL_RANKING_DAY = 4; DBConnectManager.TYPE_ALL_RANKING_MONTH = 5;