Add: player_list.js

This commit is contained in:
2018-07-03 14:35:39 +09:00
parent c4edd7abe1
commit fa241a6ee0
9 changed files with 459 additions and 54 deletions
+31 -2
View File
@@ -51,12 +51,20 @@
text-align: center;
}
#registered_player_list .registered_player_list_name {
#registered_player_list > li > span {
line-height: normal;
}
#registered_player_list .player_id {
background-color: #ffffff;
}
#registered_player_list .player_name {
width: 200px;
background-color: #ffdddd;
}
#registered_player_list .registered_player_list_entercode {
#registered_player_list .player_entercode {
width: 200px;
background-color: #ddffdd;
}
@@ -74,4 +82,25 @@
cursor: pointer;
}
#search {
overflow: hidden;
}
#search_player {
float: left;
line-height: 2em;
width: 400px;
padding: 10px;
background-color: #aaaaff;
}
#search_result {
float: right;
line-height: 2em;
width: 600px;
padding: 10px;
background-color: #ffaaaa;
}
</style>
+27 -26
View File
@@ -3,6 +3,9 @@ let playerCount = 0;
let playerListPage = 0;
let lastPageNo = 0;
let addPlayerList;
let searchPlayerList
$(document).ready(function() {
maestroID = sessionStorage.getItem("maestroID");
@@ -44,7 +47,6 @@ function loadPlayerList() {
playerCount = replyJSON["Count"];
lastPageNo = Math.floor( (playerCount + 1) / 10 );
console.log("registered player count : " + playerCount);
loadPlayerListPage(1);
addPlayerListPages();
}
@@ -69,18 +71,21 @@ function onClickPlayerListPage(pageNo) {
playerListPage = 1;
loadPlayerListPage(playerListPage);
return;
case "prev":
if(playerListPage > 1)
playerListPage -= 1;
loadPlayerListPage(playerListPage);
return;
case "next":
console.log("playerListPage : " + playerListPage);
console.log("lastPageNo : " + lastPageNo);
if(playerListPage < lastPageNo)
playerListPage += 1;
loadPlayerListPage(playerListPage);
return;
case "last":
loadPlayerListPage(lastPageNo);
return;
@@ -90,13 +95,12 @@ function onClickPlayerListPage(pageNo) {
}
function loadPlayerListPage(pageNo) {
playerListPage = pageNo;
let pageIndex = pageNo - 1;
let startNo = pageIndex * 10;
let endNo = pageIndex * 10 + 9;
console.log("startNo : " + startNo);
console.log("endNo : " + endNo);
let xhr = new XMLHttpRequest(); //new로 생성.
xhr.open('POST', './../server/user/registered_player_list_page.php', true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
@@ -128,33 +132,26 @@ function loadPlayerListPage(pageNo) {
return;
}
console.log(replyJSON["PlayerList"]);
// console.log(replyJSON["PlayerList"]);
updatePlayerListPage(replyJSON["PlayerList"]);
}
}
}
function addPlayerListTitle() {
$("#registered_player_list").empty();
$("#registered_player_list").append(
'<li class="registered_player_list_name">이름</li><li class="registered_player_list_entercode">입장 코드</li>'
);
}
function updatePlayerListPage(playerList) {
$("#registered_player_list").empty();
addPlayerListTitle();
for(let i = 0; i < 10; i++) {
let listIndex = i + 1; // index 0 : list title
for(let i = 0; i < playerList.length; i++) {
$("#registered_player_list").append(
"<li>"
+ "" + playerList[i]["UserID"] + ""
+ "<input type='text' value='" + playerList[i]["Name"] + "' class='registered_player_list_name'>"
+ "<input type='text' value='" + playerList[i]["EnterCode"] + "' class='registered_player_list_entercode'>"
+ "<input type='button' value='수정'>"
+ "</li>"
);
if(i < playerList.length) {
$("#registered_player_list .player_id").filter(":eq(" + i + ")").empty();
$("#registered_player_list .player_id").filter(":eq(" + i + ")").append(playerList[i]["UserID"]);
$("#registered_player_list .player_name").filter(":eq(" + listIndex + ")").val(playerList[i]["Name"]);
$("#registered_player_list .player_entercode").filter(":eq(" + listIndex + ")").val(playerList[i]["EnterCode"]);
} else {
$("#registered_player_list .player_id").filter(":eq(" + i + ")").empty();
$("#registered_player_list .player_name").filter(":eq(" + listIndex + ")").val("");
$("#registered_player_list .player_entercode").filter(":eq(" + listIndex + ")").val("");
}
}
}
@@ -245,5 +242,9 @@ function addPlayer() {
loadPlayerListPage(1);
}
}
}
function deletePlayer(id) {
}
+99
View File
@@ -0,0 +1,99 @@
class PlayerContent {
constructor(playerID, playerName, enterCode) {
this.playerID = playerID;
this.playerName = playerName;
this.enterCode = enterCode;
}
}
class PlayerList {
constructor(parent) {
let self = this;
this.listParent = parent;
// console.log(parent);
let id_list = parent.find(".player_id");
// console.log(id_list);
this.playerContents = new Array();
for(let i = 0; i < id_list.length; i++) {
this.playerContents[i] = new PlayerContent(
id_list[i], // span
$(id_list[i]).siblings(".player_name"),
$(id_list[i]).siblings(".player_entercode")
// name_list[i + 1], // input
// entercode_list[i + 1] // input
);
$(id_list[i]).siblings(".player_edit").click(function() {
self.editPlayer(this);
})
$(id_list[i]).siblings(".player_delete").click(function() {
self.deletePlayer(this);
})
// console.log(this.playerContents[i].playerName.val());
}
}
editPlayer(inputButton) {
// console.log(inputButton);
let id = $(inputButton).siblings(".player_id");
// console.log(id);
let playerID = id.text();
console.log(playerID);
}
deletePlayer(inputButton) {
let id = $(inputButton).siblings(".player_id");
let playerID = id.text();
if(playerID === null || playerID === "")
return;
console.log(playerID);
let xhr = new XMLHttpRequest(); //new로 생성.
xhr.open('POST', './../server/user/delete_player.php', true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("maestro_id=" + maestroID + "&player_id=" + playerID);
xhr.onload = function() {
if(xhr.readyState === 4 && xhr.status === 200) {
// console.log(xhr.responseText);
// console.log(xhr.responseText.length);
if(xhr.responseText.length === 0 || xhr.responseText === null) {
console.log("no data from server");
return;
}
let replyJSON = JSON.parse(xhr.responseText);
// console.log(replyJSON);
if(replyJSON === null) {
console.log("no data from server");
return;
}
if(replyJSON["ERROR"] !== undefined || replyJSON["RESULT"] === undefined) {
console.log(replyJSON["ERROR"]);
return;
}
if(replyJSON["RESULT"] === "fail") {
console.log(replyJSON["RESULT"]);
return;
}
console.log("update player list");
loadPlayerListPage(1);
}
}
}
}
+1
View File
@@ -11,6 +11,7 @@
<script type="text/javascript" src="./../../../resources/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="./../js/maestro_main.js"></script>
<script type="text/javascript" src="./../js/player_list.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#header").load("./../module/maestro_header.html");
+89 -3
View File
@@ -1,4 +1,13 @@
<span id="add_player">
<script type="text/javascript">
$(document).ready(function() {
console.log("add_player loaded");
addPlayerList = new PlayerList($("#registered_player_list"));
});
</script>
<span id="add_player">
<h2>추가</h2>
<h3>1명 추가</h3>
@@ -15,6 +24,7 @@
</textarea>
<!--
<h3>단체 추가</h3>
<form action="/action_page.php" method="get" id="add_users">
@@ -31,12 +41,88 @@
학생 이름 : (한글) 10글자, (영문) 20글자까지 입력 가능
입장 코드 : 숫자 1~6자리 수
</textarea>
-->
</span>
<span id="player_list_result">
목록
<span id="search_result">
학생 목록
<div id="player_list_result_contents">
<ul id="registered_player_list">
<li>
<span class="player_name">이름</span>
<span class="player_entercode">입장 코드</span>
<input type='button' value='전체 삭제' onClick="deletePlayer('all')">
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name" value="test">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name" value="test">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
<li>
<span class="player_id"></span>
<input type='text' class="player_name">
<input type='text' class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' class="player_delete" value='삭제'>
</li>
</ul>
</div>
+1 -16
View File
@@ -1,8 +1,7 @@
<script type="text/javascript">
$(document).ready(function() {
console.log("ready");
$("#section_add_player").load("./../module/maestro_section_add_player.html");
$("#search").load("./../module/maestro_section_search.html");
loadPlayerList();
});
@@ -25,20 +24,6 @@ $(document).ready(function() {
</div>
<div id="search" class="hide">
<div>
검색
아이디
<input type="text" id="search_name"><button>찾기</button><br/>
<br/>
<h3>검색 결과</h3>
학생 이름
<input type="text" id="result_name"><button>삭제</button><br/>
입장 코드
<input type="text" id="result_entercode"><button>수정</button>
</div>
</div>
<div id="mouse_app_list" class="hide">
+113
View File
@@ -0,0 +1,113 @@
<script type="text/javascript">
$(document).ready(function() {
console.log("search loaded");
searchPlayerList = new PlayerList($("#search_player_list"));
});
</script>
<span id="search_player">
검색
아이디
<input type="text" id="search_name"><button>찾기</button><br/>
<br/>
<h3>검색 결과</h3>
학생 이름
<input type="text" id="result_name"><button>삭제</button><br/>
입장 코드
<input type="text" id="result_entercode"><button>수정</button>
</span>
<span id="search_result">
검색 결과
<div id="player_list_result_contents">
<ul id="search_player_list">
<li>
<span class="player_name">이름</span>
<span class="player_entercode">입장 코드</span>
<input type='button' value='전체 삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
<li class="search_result_list">
<span class="player_id"></span>
<input type='text' value="" class="player_name">
<input type='text' value="" class="player_entercode">
<input type='button' class="player_edit" value='수정'>
<input type='button' value='삭제'>
</li>
</ul>
</div>
<div id="player_list_navigator">
<span><a onClick="onClickPlayerListPage('first')"> << </a></span>
<span><a onClick="onClickPlayerListPage('prev')"> < </a></span>
<span id="player_list_pages"></span>
<span><a onClick="onClickPlayerListPage('next')"> > </a></span>
<span><a onClick="onClickPlayerListPage('last')"> >> </a></span>
</div>
</span>
+1 -7
View File
@@ -16,15 +16,9 @@ if(!is_numeric($enterCode)) {
include "./../setup/connect_db.php";
function send_error_message2($replyJSON, $error_message) {
$replyJSON["ERROR"] = $error_message;
echo json_encode($replyJSON, JSON_UNESCAPED_UNICODE);
// $db_conn->close();
}
$result = hasPlayerName($maestroID, $playerName, $enterCode);
if($result !== null) {
send_error_message2($replyJSON, "이미 등록된 학생과 입장 코드 정보입니다.");
send_error_message($replyJSON, "이미 등록된 학생과 입장 코드 정보입니다.");
// $db_conn->close();
exit;
}
+97
View File
@@ -0,0 +1,97 @@
<?php
header('Content-Type: application/json');
$maestroID = $_POST["maestro_id"];
$playerID = $_POST["player_id"];
/*
if(!is_numeric($enterCode)) {
send_error_code('생년월일이 숫자가 아닙니다. : '.$enterCode);
exit;
} else if(strlen($enterCode) != 6) {
send_error_code('6자리 숫자값을 정확히 입력하세요 : YYMMDD (예 : 120131) : '.$enterCode);
exit;
}
*/
include "./../setup/connect_db.php";
deletePlayer($maestroID, $playerID);
$result = hasPlayerID($maestroID, $playerID);
if($result === true) {
send_result_message($replyJSON, "학생 계정 삭제 실패");
exit;
}
$result = hasPlayerRecord($maestroID, $playerID);
if($result === true) {
send_result_message($replyJSON, "학생 플레이 기록 삭제 실패");
exit;
}
$replyJSON["RESULT"] = "success";
echo json_encode($replyJSON, JSON_UNESCAPED_UNICODE);
$db_conn->close();
function deletePlayer($maestroID, $playerID) {
global $db_conn;
$query = "DELETE FROM moty_best_record WHERE MaestroID = ? AND UserID = ?";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('ii', $maestroID, $playerID);
$result = $stmt->execute();
$stmt->close();
// if($result) {
// echo "deleted row count : ".$stmt->affected_rows;
// }
$query = "DELETE FROM moty_user WHERE MaestroID = ? AND UserID = ?";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('ii', $maestroID, $playerID);
$result = $stmt->execute();
$stmt->close();
// if($result) {
// echo "deleted row count : ".$stmt->affected_rows;
// }
}
function hasPlayerID($maestroID, $playerID) {
global $db_conn;
$query = "SELECT UserID FROM moty_user WHERE MaestroID=? AND UserID=?";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('ii', $maestroID, $playerID);
$stmt->execute();
$stmt->bind_result($userID);
// while($stmt->fetch())
$stmt->fetch();
$stmt->close();
if($userID !== null)
return true;
return false;
}
function hasPlayerRecord($maestroID, $playerID) {
global $db_conn;
$query = "SELECT UserID FROM moty_best_record WHERE MaestroID=? AND UserID=?";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('ii', $maestroID, $playerID);
$stmt->execute();
$stmt->bind_result($userID);
// while($stmt->fetch())
$stmt->fetch();
$stmt->close();
if($userID !== null)
return true;
return false;
}
?>