Add: get_typing_exam_ranking_records
This commit is contained in:
+101
-2
@@ -193,7 +193,7 @@ DBService.prototype.getTypingExamHighestRecord = function(writingID, onSucceeded
|
||||
);
|
||||
}
|
||||
|
||||
DBService.prototype.requestWritingPlayerHistory = function(writingID, date, onSucceededListener, onFailedListener) {
|
||||
DBService.prototype.requestTypingExamPlayerHistory = function(writingID, date, onSucceededListener, onFailedListener) {
|
||||
/*
|
||||
var historyRecordManager = new HistoryRecordManager();
|
||||
this.loadTempPlayerHistory(historyRecordManager);
|
||||
@@ -224,7 +224,6 @@ DBService.prototype.requestWritingPlayerHistory = function(writingID, date, onSu
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
DBService.prototype.parseJSONtoHistoryRecord = function(jsonData) {
|
||||
var historyRecordManager = new HistoryRecordManager();
|
||||
|
||||
@@ -276,3 +275,103 @@ DBService.prototype.loadTempRanking = function(rankingRecordManager) {
|
||||
rankingRecordManager.push(new RankingRecord(15, 15, "우습지", 10));
|
||||
rankingRecordManager.push(new RankingRecord(16, 16, "하하하", 4));
|
||||
}
|
||||
|
||||
|
||||
DBService.prototype.requestTypingExamRanking = function(type, writingID, date, time, onSucceededListener, onFailedListener) {
|
||||
/*
|
||||
var rankingRecordManager = new RankingRecordManager();
|
||||
this.loadTempRanking(rankingRecordManager);
|
||||
if(listener !== null)
|
||||
listener(rankingRecordManager);
|
||||
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
var xhr = this.makeXhr(
|
||||
this.getRankingRecordUrl(type),
|
||||
(function() { // onreadystatechange
|
||||
if(xhr.readyState == 4 && xhr.status == 200) {
|
||||
var replyJSON = JSON.parse(xhr.responseText);
|
||||
|
||||
if(replyJSON != null && replyJSON.result == "success")
|
||||
onSucceededListener(type, this.parseJSONtoRankingRecord(type, replyJSON));
|
||||
else
|
||||
onFailedListener(replyJSON);
|
||||
}
|
||||
}).bind(this)
|
||||
);
|
||||
xhr.send(
|
||||
"maestroID=" + this.maestroID
|
||||
+ "&writingID=" + writingID
|
||||
+ "&date=" + date
|
||||
+ "&time=" + time
|
||||
);
|
||||
}
|
||||
|
||||
DBService.prototype.getRankingRecordUrl = function(type) {
|
||||
var rankingRecordURL = this.webPath + "web/php/record/";
|
||||
|
||||
switch(type) {
|
||||
case DBConnectManager.TYPE_MY_RANKING_HOUR:
|
||||
case DBConnectManager.TYPE_ALL_RANKING_HOUR:
|
||||
rankingRecordURL += "get_typing_exam_ranking_record_hour.php";
|
||||
break;
|
||||
|
||||
case DBConnectManager.TYPE_MY_RANKING_DAY:
|
||||
case DBConnectManager.TYPE_ALL_RANKING_DAY:
|
||||
rankingRecordURL += "get_typing_exam_ranking_record_day.php";
|
||||
break;
|
||||
|
||||
case DBConnectManager.TYPE_MY_RANKING_MONTH:
|
||||
case DBConnectManager.TYPE_ALL_RANKING_MONTH:
|
||||
rankingRecordURL += "get_typing_exam_ranking_record_month.php";
|
||||
break;
|
||||
}
|
||||
|
||||
return rankingRecordURL;
|
||||
}
|
||||
|
||||
DBService.prototype.parseJSONtoRankingRecord = function(type, jsonData) {
|
||||
var rankingRecordManager = new RankingRecordManager();
|
||||
|
||||
if(typeof jsonData === "undefined")
|
||||
return rankingRecordManager;
|
||||
|
||||
var replyJSON = null;
|
||||
switch(type) {
|
||||
case DBConnectManager.TYPE_MY_RANKING_HOUR:
|
||||
case DBConnectManager.TYPE_ALL_RANKING_HOUR:
|
||||
replyJSON = jsonData.rankingHour;
|
||||
break;
|
||||
|
||||
case DBConnectManager.TYPE_MY_RANKING_DAY:
|
||||
case DBConnectManager.TYPE_ALL_RANKING_DAY:
|
||||
replyJSON = jsonData.rankingDay;
|
||||
break;
|
||||
|
||||
case DBConnectManager.TYPE_MY_RANKING_MONTH:
|
||||
case DBConnectManager.TYPE_ALL_RANKING_MONTH:
|
||||
replyJSON = jsonData.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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ function HistoryBoard(dataType) {
|
||||
this.date = DateUtil.getYYYYMMDD(today);
|
||||
|
||||
if(isTypingExamApp()) {
|
||||
this.dbService.requestWritingPlayerHistory(
|
||||
this.dbService.requestTypingExamPlayerHistory(
|
||||
sessionStorageManager.getWritingID(),
|
||||
this.date,
|
||||
(function(historyRecordManager) {
|
||||
|
||||
@@ -20,6 +20,11 @@ function RankingBoard(type) {
|
||||
this.makeMedalSprites();
|
||||
|
||||
this.dbConnectManager = new DBConnectManager();
|
||||
|
||||
this.dbService = new DBService();
|
||||
this.dbService.setMaestroID(sessionStorageManager.getMaestroID());
|
||||
this.dbService.setPlayerID(sessionStorageManager.getPlayerID());
|
||||
|
||||
setTimeout(
|
||||
(function() {
|
||||
this.requestRanking(DBConnectManager.TYPE_MY_RANKING_HOUR);
|
||||
@@ -37,12 +42,33 @@ RankingBoard.prototype.requestRanking = function(type) {
|
||||
var date = DateUtil.getYYYYMMDD(today);
|
||||
var time = DateUtil.getHHMMSS(today);
|
||||
|
||||
if(isTypingExamApp()) {
|
||||
this.dbService.requestTypingExamRanking(
|
||||
type,
|
||||
sessionStorageManager.getWritingID(),
|
||||
date,
|
||||
time,
|
||||
(function(type, rankingRecordManager) {
|
||||
this.onReceiveRankingData(type, rankingRecordManager);
|
||||
}).bind(this),
|
||||
(function(jsonData) {
|
||||
console.log(jsonData);
|
||||
}).bind(this)
|
||||
);
|
||||
} else {
|
||||
this.dbConnectManager.requestRanking(
|
||||
type,
|
||||
sessionStorageManager.getMaestroID(),
|
||||
date,
|
||||
time,
|
||||
(function(type, rankingRecordManager) {
|
||||
this.onReceiveRankingData(type, rankingRecordManager);
|
||||
}).bind(this)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
RankingBoard.prototype.onReceiveRankingData = function(type, rankingRecordManager) {
|
||||
if(rankingRecordManager.getCount() == 0) {
|
||||
console.log("ranking board - no data");
|
||||
return;
|
||||
@@ -71,8 +97,6 @@ RankingBoard.prototype.requestRanking = function(type) {
|
||||
break;
|
||||
|
||||
}
|
||||
}).bind(this)
|
||||
);
|
||||
}
|
||||
|
||||
RankingBoard.prototype.getMyRank = function(rankingRecordManager) {
|
||||
|
||||
@@ -181,8 +181,84 @@ class TypingExamCollection extends DBMethodContainer
|
||||
$historyRecord['AppName'] = "TypingExam";
|
||||
array_push($historyRecordArray, $historyRecord);
|
||||
}
|
||||
$stmt->close();
|
||||
|
||||
return $historyRecordArray;
|
||||
}
|
||||
|
||||
function getRankingRecordHour($maestroID, $writingID, $date, $time) {
|
||||
$query = "
|
||||
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
|
||||
FROM typing_exam_record TER, player U
|
||||
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND HOUR(TER.RecordDateTime) = HOUR(?) AND TER.WritingID = ?
|
||||
GROUP BY TER.playerID
|
||||
ORDER BY MAX(TER.Record) DESC;
|
||||
";
|
||||
$stmt = $this->mysqli->prepare($query);
|
||||
$stmt->bind_param('issssi', $maestroID, $date, $date, $date, $time, $writingID);
|
||||
$stmt->execute();
|
||||
$stmt->bind_result($playerID, $name, $highScore);
|
||||
|
||||
$rankingRecordArray = array();
|
||||
while($stmt->fetch()) {
|
||||
$rankingRecord['PlayerID'] = $playerID;
|
||||
$rankingRecord['Name'] = $name;
|
||||
$rankingRecord['HighScore'] = $highScore;
|
||||
array_push($rankingRecordArray, $rankingRecord);
|
||||
}
|
||||
$stmt->close();
|
||||
|
||||
return $rankingRecordArray;
|
||||
}
|
||||
|
||||
function getRankingRecordDay($maestroID, $writingID, $date) {
|
||||
$query = "
|
||||
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
|
||||
FROM typing_exam_record TER, player U
|
||||
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND TER.WritingID = ?
|
||||
GROUP BY TER.playerID
|
||||
ORDER BY MAX(TER.Record) DESC;
|
||||
";
|
||||
$stmt = $this->mysqli->prepare($query);
|
||||
$stmt->bind_param('isssi', $maestroID, $date, $date, $date, $writingID);
|
||||
$stmt->execute();
|
||||
$stmt->bind_result($playerID, $name, $highScore);
|
||||
|
||||
$rankingRecordArray = array();
|
||||
while($stmt->fetch()) {
|
||||
$rankingRecord['PlayerID'] = $playerID;
|
||||
$rankingRecord['Name'] = $name;
|
||||
$rankingRecord['HighScore'] = $highScore;
|
||||
array_push($rankingRecordArray, $rankingRecord);
|
||||
}
|
||||
$stmt->close();
|
||||
|
||||
return $rankingRecordArray;
|
||||
}
|
||||
|
||||
function getRankingRecordMonth($maestroID, $writingID, $date) {
|
||||
$query = "
|
||||
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
|
||||
FROM typing_exam_record TER, player U
|
||||
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND TER.WritingID = ?
|
||||
GROUP BY TER.playerID
|
||||
ORDER BY MAX(TER.Record) DESC;
|
||||
";
|
||||
$stmt = $this->mysqli->prepare($query);
|
||||
$stmt->bind_param('issi', $maestroID, $date, $date, $writingID);
|
||||
$stmt->execute();
|
||||
$stmt->bind_result($playerID, $name, $highScore);
|
||||
|
||||
$rankingRecordArray = array();
|
||||
while($stmt->fetch()) {
|
||||
$rankingRecord['PlayerID'] = $playerID;
|
||||
$rankingRecord['Name'] = $name;
|
||||
$rankingRecord['HighScore'] = $highScore;
|
||||
array_push($rankingRecordArray, $rankingRecord);
|
||||
}
|
||||
$stmt->close();
|
||||
|
||||
return $rankingRecordArray;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$maestroID = $_POST["maestroID"];
|
||||
$playerID = $_POST["playerID"];
|
||||
$writingID = $_POST["writingID"];
|
||||
$date = $_POST["date"];
|
||||
$time = $_POST["time"];
|
||||
|
||||
include "./../lib/json_builder.php";
|
||||
include "./../lib/connect_db.php";
|
||||
|
||||
$jsonBuilder = new JsonBuilder();
|
||||
$dbConnector = new DBConnector();
|
||||
|
||||
$isConnected = $dbConnector->connectDB();
|
||||
if (!$isConnected) {
|
||||
$jsonBuilder->setErrorMessage("DB connection : failed");
|
||||
$jsonBuilder->sendResultFail();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
include "./../db/db_method_container.php";
|
||||
include "./../db/typing_exam_collection.php";
|
||||
|
||||
$typingExam = new TypingExamCollection($dbConnector->getMysqli());
|
||||
|
||||
$rankingRecordArray = $typingExam->getRankingRecordDay($maestroID, $writingID, $date);
|
||||
$jsonBuilder->setData("rankingDay", $rankingRecordArray);
|
||||
|
||||
if ($rankingRecordArray === null) {
|
||||
$jsonBuilder->sendResultFail();
|
||||
exit;
|
||||
}
|
||||
|
||||
$jsonBuilder->sendResultSuccess();
|
||||
?>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$maestroID = $_POST["maestroID"];
|
||||
$playerID = $_POST["playerID"];
|
||||
$writingID = $_POST["writingID"];
|
||||
$date = $_POST["date"];
|
||||
$time = $_POST["time"];
|
||||
|
||||
include "./../lib/json_builder.php";
|
||||
include "./../lib/connect_db.php";
|
||||
|
||||
$jsonBuilder = new JsonBuilder();
|
||||
$dbConnector = new DBConnector();
|
||||
|
||||
$isConnected = $dbConnector->connectDB();
|
||||
if (!$isConnected) {
|
||||
$jsonBuilder->setErrorMessage("DB connection : failed");
|
||||
$jsonBuilder->sendResultFail();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
include "./../db/db_method_container.php";
|
||||
include "./../db/typing_exam_collection.php";
|
||||
|
||||
$typingExam = new TypingExamCollection($dbConnector->getMysqli());
|
||||
|
||||
$rankingRecordArray = $typingExam->getRankingRecordHour($maestroID, $writingID, $date, $time);
|
||||
$jsonBuilder->setData("rankingHour", $rankingRecordArray);
|
||||
|
||||
if ($rankingRecordArray === null) {
|
||||
$jsonBuilder->sendResultFail();
|
||||
exit;
|
||||
}
|
||||
|
||||
$jsonBuilder->sendResultSuccess();
|
||||
?>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$maestroID = $_POST["maestroID"];
|
||||
$playerID = $_POST["playerID"];
|
||||
$writingID = $_POST["writingID"];
|
||||
$date = $_POST["date"];
|
||||
$time = $_POST["time"];
|
||||
|
||||
include "./../lib/json_builder.php";
|
||||
include "./../lib/connect_db.php";
|
||||
|
||||
$jsonBuilder = new JsonBuilder();
|
||||
$dbConnector = new DBConnector();
|
||||
|
||||
$isConnected = $dbConnector->connectDB();
|
||||
if (!$isConnected) {
|
||||
$jsonBuilder->setErrorMessage("DB connection : failed");
|
||||
$jsonBuilder->sendResultFail();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
include "./../db/db_method_container.php";
|
||||
include "./../db/typing_exam_collection.php";
|
||||
|
||||
$typingExam = new TypingExamCollection($dbConnector->getMysqli());
|
||||
|
||||
$rankingRecordArray = $typingExam->getRankingRecordMonth($maestroID, $writingID, $date);
|
||||
$jsonBuilder->setData("rankingMonth", $rankingRecordArray);
|
||||
|
||||
if ($rankingRecordArray === null) {
|
||||
$jsonBuilder->sendResultFail();
|
||||
exit;
|
||||
}
|
||||
|
||||
$jsonBuilder->sendResultSuccess();
|
||||
?>
|
||||
Reference in New Issue
Block a user