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();
|
var historyRecordManager = new HistoryRecordManager();
|
||||||
this.loadTempPlayerHistory(historyRecordManager);
|
this.loadTempPlayerHistory(historyRecordManager);
|
||||||
@@ -224,7 +224,6 @@ DBService.prototype.requestWritingPlayerHistory = function(writingID, date, onSu
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DBService.prototype.parseJSONtoHistoryRecord = function(jsonData) {
|
DBService.prototype.parseJSONtoHistoryRecord = function(jsonData) {
|
||||||
var historyRecordManager = new HistoryRecordManager();
|
var historyRecordManager = new HistoryRecordManager();
|
||||||
|
|
||||||
@@ -276,3 +275,103 @@ DBService.prototype.loadTempRanking = function(rankingRecordManager) {
|
|||||||
rankingRecordManager.push(new RankingRecord(15, 15, "우습지", 10));
|
rankingRecordManager.push(new RankingRecord(15, 15, "우습지", 10));
|
||||||
rankingRecordManager.push(new RankingRecord(16, 16, "하하하", 4));
|
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);
|
this.date = DateUtil.getYYYYMMDD(today);
|
||||||
|
|
||||||
if(isTypingExamApp()) {
|
if(isTypingExamApp()) {
|
||||||
this.dbService.requestWritingPlayerHistory(
|
this.dbService.requestTypingExamPlayerHistory(
|
||||||
sessionStorageManager.getWritingID(),
|
sessionStorageManager.getWritingID(),
|
||||||
this.date,
|
this.date,
|
||||||
(function(historyRecordManager) {
|
(function(historyRecordManager) {
|
||||||
|
|||||||
@@ -20,6 +20,11 @@ function RankingBoard(type) {
|
|||||||
this.makeMedalSprites();
|
this.makeMedalSprites();
|
||||||
|
|
||||||
this.dbConnectManager = new DBConnectManager();
|
this.dbConnectManager = new DBConnectManager();
|
||||||
|
|
||||||
|
this.dbService = new DBService();
|
||||||
|
this.dbService.setMaestroID(sessionStorageManager.getMaestroID());
|
||||||
|
this.dbService.setPlayerID(sessionStorageManager.getPlayerID());
|
||||||
|
|
||||||
setTimeout(
|
setTimeout(
|
||||||
(function() {
|
(function() {
|
||||||
this.requestRanking(DBConnectManager.TYPE_MY_RANKING_HOUR);
|
this.requestRanking(DBConnectManager.TYPE_MY_RANKING_HOUR);
|
||||||
@@ -37,42 +42,61 @@ RankingBoard.prototype.requestRanking = function(type) {
|
|||||||
var date = DateUtil.getYYYYMMDD(today);
|
var date = DateUtil.getYYYYMMDD(today);
|
||||||
var time = DateUtil.getHHMMSS(today);
|
var time = DateUtil.getHHMMSS(today);
|
||||||
|
|
||||||
this.dbConnectManager.requestRanking(
|
if(isTypingExamApp()) {
|
||||||
type,
|
this.dbService.requestTypingExamRanking(
|
||||||
sessionStorageManager.getMaestroID(),
|
type,
|
||||||
date,
|
sessionStorageManager.getWritingID(),
|
||||||
time,
|
date,
|
||||||
(function(type, rankingRecordManager) {
|
time,
|
||||||
if(rankingRecordManager.getCount() == 0) {
|
(function(type, rankingRecordManager) {
|
||||||
console.log("ranking board - no data");
|
this.onReceiveRankingData(type, rankingRecordManager);
|
||||||
return;
|
}).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)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var beginIndex = this.getBeginIndex(rankingRecordManager);
|
RankingBoard.prototype.onReceiveRankingData = function(type, rankingRecordManager) {
|
||||||
var endIndex = this.getEndIndex(rankingRecordManager);
|
if(rankingRecordManager.getCount() == 0) {
|
||||||
|
console.log("ranking board - no data");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for(var i = 0; i < endIndex - beginIndex; i++) {
|
var beginIndex = this.getBeginIndex(rankingRecordManager);
|
||||||
var index = beginIndex + i;
|
var endIndex = this.getEndIndex(rankingRecordManager);
|
||||||
var data = rankingRecordManager.getAt(index);
|
|
||||||
this.printRecord(type, i, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(type) {
|
for(var i = 0; i < endIndex - beginIndex; i++) {
|
||||||
case DBConnectManager.TYPE_MY_RANKING_HOUR:
|
var index = beginIndex + i;
|
||||||
this.showMedal(this.medalHour, this.getMyRank(rankingRecordManager));
|
var data = rankingRecordManager.getAt(index);
|
||||||
break;
|
this.printRecord(type, i, data);
|
||||||
|
}
|
||||||
|
|
||||||
case DBConnectManager.TYPE_MY_RANKING_DAY:
|
switch(type) {
|
||||||
this.showMedal(this.medalDay, this.getMyRank(rankingRecordManager));
|
case DBConnectManager.TYPE_MY_RANKING_HOUR:
|
||||||
break;
|
this.showMedal(this.medalHour, this.getMyRank(rankingRecordManager));
|
||||||
|
break;
|
||||||
|
|
||||||
case DBConnectManager.TYPE_MY_RANKING_MONTH:
|
case DBConnectManager.TYPE_MY_RANKING_DAY:
|
||||||
this.showMedal(this.medalMonth, this.getMyRank(rankingRecordManager));
|
this.showMedal(this.medalDay, this.getMyRank(rankingRecordManager));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
case DBConnectManager.TYPE_MY_RANKING_MONTH:
|
||||||
}).bind(this)
|
this.showMedal(this.medalMonth, this.getMyRank(rankingRecordManager));
|
||||||
);
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RankingBoard.prototype.getMyRank = function(rankingRecordManager) {
|
RankingBoard.prototype.getMyRank = function(rankingRecordManager) {
|
||||||
|
|||||||
@@ -181,8 +181,84 @@ class TypingExamCollection extends DBMethodContainer
|
|||||||
$historyRecord['AppName'] = "TypingExam";
|
$historyRecord['AppName'] = "TypingExam";
|
||||||
array_push($historyRecordArray, $historyRecord);
|
array_push($historyRecordArray, $historyRecord);
|
||||||
}
|
}
|
||||||
|
$stmt->close();
|
||||||
|
|
||||||
return $historyRecordArray;
|
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