From 6aa89a5db474ae69299c0f597ce484f5765e0aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Sat, 10 Aug 2019 23:12:43 +0900 Subject: [PATCH] Add: get appData for writing (typing exam) --- src/web/php/db/menu_collection.php | 123 ++++++++++------- src/web/php/db/writing_collection.php | 81 +++++++++++ src/web/php/menu/menu_list.php | 52 ++----- test/tdd.js | 188 ++++++++++++-------------- 4 files changed, 251 insertions(+), 193 deletions(-) diff --git a/src/web/php/db/menu_collection.php b/src/web/php/db/menu_collection.php index c81a199..b53e9a2 100644 --- a/src/web/php/db/menu_collection.php +++ b/src/web/php/db/menu_collection.php @@ -1,6 +1,8 @@ getTypingAppList($maestroID, $playerID, $appGroup, $language); case 2: - // return $this->getTypingExamWritingList($maestroID, $playerID, $appGroup, $language); + if($writingCollection === null) + $writingCollection = new WritingCollection($this->mysqli); + $systemWritingList = $writingCollection->getSystemList($language); + return $systemWritingList; case 4: // mouse play - // return $this->getMouseAppList($maestroID, $playerID, $appGroup); + return $this->getMouseAppList(); } } public function getTypingAppList($maestroID, $playerID, $appGroup, $language) { - /* $query = " - SELECT A.AppID, A.AppName, A.KoreanName, A.AppType - FROM app AS A - INNER JOIN active_app AS AA ON A.AppID = AA.AppID AND A.AppType = ? AND AA.MaestroID=?"; - $stmt = $this->mysqli->prepare($query); - $stmt->bind_param("ii", $this->getTypingAppType($appGroup, $language), $maestroID); - $stmt->execute(); - $stmt->bind_result($app_id, $app_name, $korean_name, $app_type); - - $resultArray = array(); - while($stmt->fetch()) { - $rowArray = array(); - $rowArray["AppID"] = $app_id; - $rowArray["AppName"] = $app_name; - $rowArray["KoreanName"] = $korean_name; - $rowArray["AppType"] = $app_type; - array_push($resultArray, $rowArray); - } - $stmt->close(); - */ - - $query = " - SELECT A.AppID, A.KoreanName - FROM app AS A - WHERE A.AppType=? AND A.Status=1"; + SELECT AppID, KoreanName + FROM app + WHERE AppType=? AND Status=1"; $stmt = $this->mysqli->prepare($query); $stmt->bind_param("i", $this->getTypingAppType($appGroup, $language)); $stmt->execute(); @@ -123,12 +106,26 @@ class MenuCollection extends DBMethodContainer return $resultArray; } - public function getMouseAppList($maestroID, $playerID, $appGroup, $language) + public function getMouseAppList() { - } + $query = " + SELECT AppID, KoreanName + FROM app + WHERE AppType=100 AND Status=1"; + $stmt = $this->mysqli->prepare($query); + $stmt->execute(); + $stmt->bind_result($appID, $koreanName); - public function getTypingExamWritingList($maestroID, $playerID, $appGroup, $language) - { + $resultArray = array(); + while($stmt->fetch()) { + $rowArray = array(); + $rowArray["appID"] = $appID; + $rowArray["koreanName"] = $koreanName; + array_push($resultArray, $rowArray); + } + $stmt->close(); + + return $resultArray; } @@ -143,11 +140,13 @@ class MenuCollection extends DBMethodContainer return $this->getTypingActiveAppList($maestroID, $playerID, $appGroup, $language); case 2: - // return $this->getTypingExamWritingList($maestroID, $playerID, $appGroup, $language); - break; + if($writingCollection === null) + $writingCollection = new WritingCollection($this->mysqli); + $activeSystemWritingList = $writingCollection->getActiveSystemList($maestroID, $language); + return $activeSystemWritingList; case 4: // mouse play - // return $this->getMouseActiveAppList($maestroID, $playerID, $appGroup); + return $this->getMouseActiveAppList($maestroID, $playerID, $appGroup); } } @@ -156,7 +155,7 @@ class MenuCollection extends DBMethodContainer $query = " SELECT A.AppID FROM app AS A - INNER JOIN active_app AS AA ON A.AppID = AA.AppID AND A.AppType = ? AND AA.MaestroID=?"; + INNER JOIN active_app AS AA ON A.AppID = AA.AppID AND A.AppType=? AND AA.MaestroID=?"; $stmt = $this->mysqli->prepare($query); $stmt->bind_param("ii", $this->getTypingAppType($appGroup, $language), $maestroID); $stmt->execute(); @@ -173,9 +172,26 @@ class MenuCollection extends DBMethodContainer return $resultArray; } - public function getMouseActiveAppList($maestroID, $playerID, $appGroup, $language) + public function getMouseActiveAppList($maestroID) { - return null; + $query = " + SELECT A.AppID + FROM app AS A + INNER JOIN active_app AS AA ON A.AppID = AA.AppID AND A.AppType=100 AND AA.MaestroID=?"; + $stmt = $this->mysqli->prepare($query); + $stmt->bind_param("i", $maestroID); + $stmt->execute(); + $stmt->bind_result($appID); + + $resultArray = array(); + while($stmt->fetch()) { + $rowArray = array(); + $rowArray["appID"] = $appID; + array_push($resultArray, $rowArray); + } + $stmt->close(); + + return $resultArray; } @@ -186,18 +202,32 @@ class MenuCollection extends DBMethodContainer switch($appGroup) { case 0: // typing practice case 1: // typing test - return $this->getTypingHighestRecordList($maestroID, $playerID, $appList); - - case 2: - // return $this->getTypingExamHighestRecordWritingList($maestroID, $playerID, $appGroup, $language); - case 3: // typing play case 4: // mouse play - return null; - break; + return $this->getTypingHighestRecordList($maestroID, $playerID, $appList); + + // case 2: + // return $this->getWritingHighestRecordList($maestroID, $playerID, $appList); } } + public function getWritingHighestRecordList($maestroID, $playerID, $appList) + { + if($writingCollection === null) + $writingCollection = new WritingCollection($this->mysqli); + + $highestRecordArray = array(); + $count = count($appList); + for($i = 0; $i < $count; $i++) { + $writingID = $appList[$i]["writingID"]; + $highestRecord["writingID"] = $writingID; + $highestRecord["HighestRecord"] = $writingCollection->getWritingHighestRecord($maestroID, $playerID, $writingID); + array_push($highestRecordArray, $highestRecord); + } + + return $highestRecordArray; + } + public function getTypingHighestRecordList($maestroID, $playerID, $appList) { $highestRecordArray = array(); @@ -231,11 +261,6 @@ class MenuCollection extends DBMethodContainer return $highestRecord; } - public function getTypingExamHighestRecordWritingList($maestroID, $playerID, $appGroup, $language) - { - return null; - } - diff --git a/src/web/php/db/writing_collection.php b/src/web/php/db/writing_collection.php index 38f36d3..53dab7a 100644 --- a/src/web/php/db/writing_collection.php +++ b/src/web/php/db/writing_collection.php @@ -1,6 +1,87 @@ getLanguage($languageCode); + + $query = " + SELECT WritingID, Name, Filename, LetterCount + FROM writing + WHERE Language=?"; + $stmt = $this->mysqli->prepare($query); + $stmt->bind_param("s", $language); + $stmt->execute(); + $stmt->bind_result($writingID, $name, $filename, $letterCount); + + $writingList = array(); + while($stmt->fetch()) { + $writingData = array(); + $writingData["writingID"] = $writingID; + $writingData["name"] = $name; + $writingData["filename"] = $filename; + $writingData["letterCount"] = $letterCount; + array_push($writingList, $writingData); + } + $stmt->close(); + + return $writingList; + } + + public function getActiveSystemList($maestroID, $languageCode) + { + $language = $this->getLanguage($languageCode); + + $query = " + SELECT WritingID + FROM writing + WHERE Language=?"; + $stmt = $this->mysqli->prepare($query); + $stmt->bind_param("s", $language); + $stmt->execute(); + $stmt->bind_result($writingID); + + $writingList = array(); + while($stmt->fetch()) { + $writingData = array(); + $writingData["writingID"] = $writingID; + array_push($writingList, $writingData); + } + $stmt->close(); + + return $writingList; + } + + public function getWritingHighestRecord($maestroID, $playerID, $writingID) + { + $query = " + SELECT WritingID, HighestRecord + FROM typing_exam_highest_record + WHERE MaestroID=? AND PlayerID=? AND WritingID=?"; + $stmt = $this->mysqli->prepare($query); + $stmt->bind_param("iii", $maestroID, $playerID, $writingID); + $stmt->execute(); + $stmt->bind_result($writingID, $highestRecord); + $returnValue = $stmt->fetch(); + $stmt->close(); + + if($returnValue === NULL || $returnValue === FALSE) + return 0; + + return $highestRecord; + } + + + + public function getSystemWritingList() { diff --git a/src/web/php/menu/menu_list.php b/src/web/php/menu/menu_list.php index 790b234..1d4b547 100644 --- a/src/web/php/menu/menu_list.php +++ b/src/web/php/menu/menu_list.php @@ -23,17 +23,24 @@ if (!$isConnected) { include "./../db/db_method_container.php"; +include "./../db/writing_collection.php"; include "./../db/menu_collection.php"; -$menuCollection = new MenuCollection($dbConnector->getMysqli()); -$appList = $menuCollection->getAppList($maestroID, $playerID, $appGroup, $language); -$activeAppList = $menuCollection->getActiveAppList($maestroID, $playerID, $appGroup, $language); -$highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList); +$jsonBuilder->setData("appGroup", $appGroup); +$menuCollection = new MenuCollection($dbConnector->getMysqli()); +$jsonBuilder->setData("appGroup", $appGroup); $jsonBuilder->setData("appGroupName", $menuCollection->getAppGroupName($appGroup)); $jsonBuilder->setData("languageName", $menuCollection->getLanguageName($language)); -$jsonBuilder->setData("appGroup", $appGroup); +$appList = $menuCollection->getAppList($maestroID, $playerID, $appGroup, $language); +$activeAppList = $menuCollection->getActiveAppList($maestroID, $playerID, $appGroup, $language); +if($appGroup === "2") // typing exam + $highestRecordList = $menuCollection->getWritingHighestRecordList($maestroID, $playerID, $appList); +else + $highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList); +// $highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList); + $appData["appList"] = $appList; $appData["activeAppList"] = $activeAppList; @@ -44,39 +51,4 @@ $appData["highestRecordList"] = $highestRecordList; $jsonBuilder->setData("appData", $appData); $jsonBuilder->sendResultSuccess(); - -/* -function activate_app($maestroID, $appID) { - global $db_conn; - - $query = " - INSERT INTO active_app (MaestroID, AppID) - VALUES (?, ?); - "; - $stmt = $db_conn->prepare($query); - $stmt->bind_param('ii', $maestroID, $appID); - $stmt->execute(); - $stmt->bind_result(); -} - -function get_app_name($appID) { - global $db_conn; - - $query = " - SELECT AppName, KoreanName - FROM app - WHERE AppID = ? - "; - $stmt = $db_conn->prepare($query); - $stmt->bind_param('i', $appID); - $stmt->execute(); - $stmt->bind_result($appName, $koreanName); - $stmt->fetch(); - - $result["AppName"] = $appName; - $result["KoreanName"] = $koreanName; - return $result; -} -*/ - ?> \ No newline at end of file diff --git a/test/tdd.js b/test/tdd.js index d4b7e24..75efc8a 100644 --- a/test/tdd.js +++ b/test/tdd.js @@ -9,102 +9,60 @@ QUnit.test( "AppList", function( assert ) { dbService.setMaestroID(MAESTRO_ID); dbService.setPlayerID(PLAYER_ID); - var asyncFingerPositionKorean = assert.async(); + var asyncTypingPracticeKorean = assert.async(); setTimeout(function() { - var appGroup = 0; // finger position + var appGroup = 0; // typing practice var language = 0; // Korean dbService.requestMainMenuAppData( appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "appGroup : finger position, Korean"); - assert.equal(jsonData.appList.length, 8, "appList"); - assert.equal(jsonData.activeAppList.length, 8, "activeAppList"); - assert.equal(jsonData.highestRecordList.length, 8, "highestRecordList"); - asyncFingerPositionKorean(); + assert.equal(jsonData.appGroup, appGroup, "#0 appGroup : typing practice, Korean"); + assert.equal(jsonData.appData.appList.length, 8, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 8, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 8, "highestRecordList"); + asyncTypingPracticeKorean(); }).bind(this), (function(jsonData) { console.log(replyJSON); - asyncFingerPositionKorean(); + asyncTypingPracticeKorean(); }).bind(this) ); }); - var asyncFingerPositionEnglish = assert.async(); + var asyncTypingPracticeEnglish = assert.async(); setTimeout(function() { - var appGroup = 0; // finger position + var appGroup = 0; // typing practice var language = 1; // English dbService.requestMainMenuAppData( appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : finger position, English"); - assert.equal(jsonData.appList.length, 7, "appList"); - assert.equal(jsonData.activeAppList.length, 5, "activeAppList"); - assert.equal(jsonData.highestRecordList.length, 7, "highestRecordList"); - asyncFingerPositionEnglish(); + assert.equal(jsonData.appGroup, appGroup, "#0 appGroup : typing practice, English"); + assert.equal(jsonData.appData.appList.length, 7, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 5, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 7, "highestRecordList"); + asyncTypingPracticeEnglish(); }).bind(this), (function(jsonData) { console.log(replyJSON); - asyncFingerPositionEnglish(); - }).bind(this) - ); - }); - - var asyncPracticeKorean = assert.async(); - setTimeout(function() { - var appGroup = 1; // typing practice - var language = 0; // Korean - dbService.requestMainMenuAppData( - appGroup, - language, - (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing practice, Korean"); - assert.equal(jsonData.appList.length, 10, "appList"); - assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); - asyncPracticeKorean(); - }).bind(this), - (function(jsonData) { - console.log(replyJSON); - asyncPracticeKorean(); - }).bind(this) - ); - }); - - var asyncPracticeEnglish = assert.async(); - setTimeout(function() { - var appGroup = 1; // typing practice - var language = 1; // English - dbService.requestMainMenuAppData( - appGroup, - language, - (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing practice, English"); - assert.equal(jsonData.appList.length, 8, "appList"); - assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); - asyncPracticeEnglish(); - }).bind(this), - (function(jsonData) { - console.log(replyJSON); - asyncPracticeEnglish(); + asyncTypingPracticeEnglish(); }).bind(this) ); }); var asyncTestKorean = assert.async(); setTimeout(function() { - var appGroup = 2; // typing test + var appGroup = 1; // typing test var language = 0; // Korean dbService.requestMainMenuAppData( appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing test, Korean"); - assert.equal(jsonData.appList.length, 10, "appList"); - assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); + assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : typing test, Korean"); + assert.equal(jsonData.appData.appList.length, 10, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 10, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 10, "highestRecordList"); asyncTestKorean(); }).bind(this), (function(jsonData) { @@ -116,16 +74,16 @@ QUnit.test( "AppList", function( assert ) { var asyncTestEnglish = assert.async(); setTimeout(function() { - var appGroup = 2; // typing test + var appGroup = 1; // typing test var language = 1; // English dbService.requestMainMenuAppData( appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing test, English"); - assert.equal(jsonData.appList, 10, "appList"); - assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); + assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : typing test, English"); + assert.equal(jsonData.appData.appList.length, 8, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 2, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 8, "highestRecordList"); asyncTestEnglish(); }).bind(this), (function(jsonData) { @@ -135,6 +93,49 @@ QUnit.test( "AppList", function( assert ) { ); }); + var asyncExamKorean = assert.async(); + setTimeout(function() { + var appGroup = 2; // typing exam + var language = 0; // Korean + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing exam, Korean"); + assert.equal(jsonData.appData.appList.length, 4, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 4, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 4, "highestRecordList"); + asyncExamKorean(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncExamKorean(); + }).bind(this) + ); + }); + + var asyncExamEnglish = assert.async(); + setTimeout(function() { + var appGroup = 2; // typing exam + var language = 1; // English + dbService.requestMainMenuAppData( + appGroup, + language, + (function(jsonData) { + assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing exam, English"); + console.log(jsonData.appData); + assert.equal(jsonData.appData.appList.length, 4, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 4, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 4, "highestRecordList"); + asyncExamEnglish(); + }).bind(this), + (function(jsonData) { + console.log(replyJSON); + asyncExamEnglish(); + }).bind(this) + ); + }); + var asyncTypingPlayKorean = assert.async(); setTimeout(function() { var appGroup = 3; // typing play @@ -143,10 +144,10 @@ QUnit.test( "AppList", function( assert ) { appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : typing play, Korean"); - assert.equal(jsonData.appList.length, 2, "appList"); - assert.equal(jsonData.activeAppList.length, 2, "activeAppList"); - assert.equal(jsonData.highestRecordList, null, "highestRecordList"); + assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing play, Korean"); + assert.equal(jsonData.appData.appList.length, 2, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 2, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 2, "highestRecordList"); asyncTypingPlayKorean(); }).bind(this), (function(jsonData) { @@ -164,10 +165,10 @@ QUnit.test( "AppList", function( assert ) { appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : typing play, English"); - assert.equal(jsonData.appList.length, 2, "appList"); - assert.equal(jsonData.activeAppList.length, 2, "activeAppList"); - assert.equal(jsonData.highestRecordList, null, "highestRecordList"); + assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing play, English"); + assert.equal(jsonData.appData.appList.length, 2, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 2, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 2, "highestRecordList"); asyncTypingPlayEnglish(); }).bind(this), (function(jsonData) { @@ -177,7 +178,7 @@ QUnit.test( "AppList", function( assert ) { ); }); - var asyncMousePlayKorean = assert.async(); + var asyncMousePlay = assert.async(); setTimeout(function() { var appGroup = 4; // mouse play var language = 0; // Korean @@ -185,36 +186,15 @@ QUnit.test( "AppList", function( assert ) { appGroup, language, (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#5 appGroup : mouse play, Korean"); - assert.equal(jsonData.appList.length, 10, "appList"); - assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList, null, "highestRecordList"); - asyncMousePlayKorean(); + assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : mouse play"); + assert.equal(jsonData.appData.appList.length, 5, "appList"); + assert.equal(jsonData.appData.activeAppList.length, 5, "activeAppList"); + assert.equal(jsonData.appData.highestRecordList.length, 5, "highestRecordList"); + asyncMousePlay(); }).bind(this), (function(jsonData) { console.log(replyJSON); - asyncMousePlayKorean(); - }).bind(this) - ); - }); - - var asyncMousePlayEnglish = assert.async(); - setTimeout(function() { - var appGroup = 4; // mouse play - var language = 1; // English - dbService.requestMainMenuAppData( - appGroup, - language, - (function(jsonData) { - assert.equal(jsonData.appGroup, appGroup, "#5 appGroup : mouse play, English"); - assert.equal(jsonData.appList.length, 10, "appList"); - assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); - assert.equal(jsonData.highestRecordList, null, "highestRecordList"); - asyncMousePlayEnglish(); - }).bind(this), - (function(jsonData) { - console.log(replyJSON); - asyncMousePlayEnglish(); + asyncMousePlay(); }).bind(this) ); });