diff --git a/src/main/kotlin/com/ray650128/pcredive/plugins/HTTP.kt b/src/main/kotlin/com/ray650128/pcredive/plugins/HTTP.kt
index 2442116..4ba1d93 100644
--- a/src/main/kotlin/com/ray650128/pcredive/plugins/HTTP.kt
+++ b/src/main/kotlin/com/ray650128/pcredive/plugins/HTTP.kt
@@ -3,6 +3,9 @@ package com.ray650128.pcredive.plugins
import io.ktor.http.*
import io.ktor.server.plugins.cors.routing.*
import io.ktor.server.application.*
+import io.ktor.server.http.content.*
+import io.ktor.server.routing.*
+import java.io.File
fun Application.configureHTTP() {
install(CORS) {
@@ -18,4 +21,7 @@ fun Application.configureHTTP() {
allowCredentials = true
allowNonSimpleContentTypes = true
}
+ routing {
+ staticFiles("/", File("web"))
+ }
}
diff --git a/web/css/style.css b/web/css/style.css
new file mode 100644
index 0000000..d0bff18
--- /dev/null
+++ b/web/css/style.css
@@ -0,0 +1,175 @@
+html {
+ background-image: url("../img/background.jpg");
+}
+
+table {
+ background-color: #ffffffbb;
+ border-style: solid;
+ border-width: 2px;
+ border-collapse: collapse;
+ width: 100%;
+}
+
+th, td {
+ padding: 1px 2px;
+ border: 1px solid #000;
+}
+
+hr {
+ border: 1px solid #2c6a99;
+}
+
+/* 未訪問超連結 */
+a:link {
+ color: #000000;
+}
+
+/* 已訪問超連結 */
+a:visited {
+ color: #000000;
+}
+
+/* 滑鼠移動到超連結上 */
+a:hover {
+ color: #1070c4;
+ background-color: #ffffff;
+}
+
+/* 滑鼠點選時 */
+a:active {
+ color: #0d5da3;
+}
+
+
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, label {
+ font-family: 'Arial', system-ui;
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.centerText {
+ font-family: 'Arial', system-ui;
+ text-align: center;
+ font-weight: bold;
+}
+
+p {
+ text-align: center;
+ font-weight: bold;
+ font-family: 'Arial', system-ui
+}
+
+input[type="text"], input[type="number"] {
+ width: 100%;
+ max-width: 100%;
+ padding: 10px;
+ font-size: 16px;
+ border-width: 1px;
+ border-color: #07407d;
+ background-color: #ffffffe0;
+ color: #000000;
+ box-sizing: border-box;
+ border-style: solid;
+ border-radius: 5px;
+ font-family: 'Arial', system-ui
+}
+
+input[type="text"], input[type="number"] {
+ outline:none;
+}
+
+input[type="date"] {
+ padding: 5px;
+ font-size: 16px;
+ border-width: 1px;
+ border-color: #07407d;
+ background-color: #ffffffe0;
+ color: #000000;
+ border-style: solid;
+ border-radius: 5px;
+ font-family: 'Arial', system-ui
+}
+
+input[type="date"] {
+ outline:none;
+}
+
+button {
+ display: inline-block;
+ text-align: center;
+ vertical-align: middle;
+ padding: 8px 20px;
+ border: 1px solid #07407d;
+ border-radius: 8px;
+ background: #4ab1ff;
+ background: -webkit-gradient(linear, left top, left bottom, from(#4ab1ff), to(#0d5da3));
+ background: -moz-linear-gradient(top, #4ab1ff, #0d5da3);
+ background: linear-gradient(to bottom, #4ab1ff, #0d5da3);
+ text-shadow: #591717 1px 1px 1px;
+ font-family: 'Arial', system-ui;
+ color: #ffffff;
+ text-decoration: none;
+}
+button:hover,
+button:focus {
+ border: 1px solid #0b66c8;
+ background: #59d4ff;
+ background: -webkit-gradient(linear, left top, left bottom, from(#59d4ff), to(#1070c4));
+ background: -moz-linear-gradient(top, #59d4ff, #1070c4);
+ background: linear-gradient(to bottom, #59d4ff, #1070c4);
+ color: #ffffff;
+ text-decoration: none;
+}
+button:active {
+ background: #2c6a99;
+ background: -webkit-gradient(linear, left top, left bottom, from(#2c6a99), to(#0d5da3));
+ background: -moz-linear-gradient(top, #2c6a99, #0d5da3);
+ background: linear-gradient(to bottom, #2c6a99, #0d5da3);
+}
+
+.button_red {
+ display: inline-block;
+ text-align: center;
+ vertical-align: middle;
+ padding: 8px 20px;
+ border: 1px solid #7d0707;
+ border-radius: 8px;
+ background: #ff4a4a;
+ background: -webkit-gradient(linear, left top, left bottom, from(#ff4a4a), to(#a30d0d));
+ background: -moz-linear-gradient(top, #ff4a4a, #a30d0d);
+ background: linear-gradient(to bottom, #ff4a4a, #a30d0d);
+ text-shadow: #591717 1px 1px 1px;
+ font-family: 'Arial', system-ui;
+ color: #ffffff;
+ text-decoration: none;
+}
+.button_red:hover,
+.button_red:focus {
+ border: 1px solid #c80b0b;
+ background: #ff5959;
+ background: -webkit-gradient(linear, left top, left bottom, from(#ff5959), to(#c41010));
+ background: -moz-linear-gradient(top, #ff5959, #c41010);
+ background: linear-gradient(to bottom, #ff5959, #c41010);
+ color: #ffffff;
+ text-decoration: none;
+}
+.button_red:active {
+ background: #992c2c;
+ background: -webkit-gradient(linear, left top, left bottom, from(#992c2c), to(#a30d0d));
+ background: -moz-linear-gradient(top, #992c2c, #a30d0d);
+ background: linear-gradient(to bottom, #992c2c, #a30d0d);
+}
+
+.center {
+ width: fit-content;
+ margin: 0 auto;
+}
+
+.autosize-text {
+ font-size: 5vw;
+ font-family: 'Arial', system-ui;
+ text-align: center;
+ font-weight: bold;
+}
diff --git a/web/edit.html b/web/edit.html
new file mode 100644
index 0000000..84d996d
--- /dev/null
+++ b/web/edit.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+ 新增/修改紀錄
+
+
+
+
+ 新增/修改紀錄
+
+ 填寫方式:掉刀填0,正常出刀填X周-Y王。
+ 傷害依照幹部規定要不要填,如不填可留空
+
+
+
+
+
+
+
diff --git a/web/img/background.jpg b/web/img/background.jpg
new file mode 100644
index 0000000..db6a8fb
Binary files /dev/null and b/web/img/background.jpg differ
diff --git a/web/index.html b/web/index.html
new file mode 100644
index 0000000..4172647
--- /dev/null
+++ b/web/index.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+ 公主連結戰隊戰填表系統
+
+
+
+
+
+ 填表系統
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/js/edit.js b/web/js/edit.js
new file mode 100644
index 0000000..c5ab7d8
--- /dev/null
+++ b/web/js/edit.js
@@ -0,0 +1,149 @@
+var paramValue = "";
+var memberId = "";
+
+var title = document.getElementById("my_title");
+
+var knife1_boss = document.getElementById("knife1_boss");
+var knife1_damage = document.getElementById("knife1_damage");
+var knife1c_boss = document.getElementById("knife1c_boss");
+var knife1c_damage = document.getElementById("knife1c_damage");
+
+var knife2_boss = document.getElementById("knife2_boss");
+var knife2_damage = document.getElementById("knife2_damage");
+var knife2c_boss = document.getElementById("knife2c_boss");
+var knife2c_damage = document.getElementById("knife2c_damage");
+
+var knife3_boss = document.getElementById("knife3_boss");
+var knife3_damage = document.getElementById("knife3_damage");
+var knife3c_boss = document.getElementById("knife3c_boss");
+var knife3c_damage = document.getElementById("knife3c_damage");
+
+// 在頁面載入完成後,執行獲取參數的操作
+window.onload = function () {
+ // 取得參數
+ paramValue = getParameterByName('id');
+ console.log(paramValue);
+
+ axios.get("./api/record/" + paramValue)
+ .then(function (response) {
+ // 在這裡處理回傳的資料
+ var options = response.data;
+ console.log(options);
+ memberId = options.member._id;
+
+ title.innerHTML = options.member.playerName + " 新增/修改紀錄";
+
+ knife1_boss.value = options.record1.boss;
+ knife1_damage.value = options.record1.damage ?? "";
+ knife1c_boss.value = options.record1c.boss;
+ knife1c_damage.value = options.record1c.damage ?? "";
+
+ knife2_boss.value = options.record2.boss;
+ knife2_damage.value = options.record2.damage ?? "";
+ knife2c_boss.value = options.record2c.boss;
+ knife2c_damage.value = options.record2c.damage ?? "";
+
+ knife3_boss.value = options.record3.boss;
+ knife3_damage.value = options.record3.damage ?? "";
+ knife3c_boss.value = options.record3c.boss;
+ knife3c_damage.value = options.record3c.damage ?? "";
+ })
+ .catch(function (error) {
+ // 處理錯誤
+ console.error(error);
+ });
+};
+
+document.addEventListener('resize', adjustTextSize);
+
+document.getElementById("record-form").addEventListener("submit", function (event) {
+ event.preventDefault(); // 阻止表單預設提交行為
+
+ // 執行請求
+ fillRecord(
+ paramValue,
+ memberId,
+ knife1_boss.value,
+ knife1_damage.value,
+ knife1c_boss.value,
+ knife1c_damage.value,
+ knife2_boss.value,
+ knife2_damage.value,
+ knife2c_boss.value,
+ knife2c_damage.value,
+ knife3_boss.value,
+ knife3_damage.value,
+ knife3c_boss.value,
+ knife3c_damage.value
+ );
+});
+
+function adjustTextSize() {
+ var screenWidth = window.innerWidth;
+ var fontSize = screenWidth * 0.04;
+
+ title.fontSize = fontSize + 'px';
+}
+
+function getParameterByName(name) {
+ // 获取 URL 中的参数部分
+ var url = window.location.href;
+ // 对 URL 进行解析
+ var parsedUrl = new URL(url);
+ // 从解析后的 URL 中获取参数值
+ return parsedUrl.searchParams.get(name);
+}
+
+function fillRecord(
+ recordId,
+ memberId,
+ knife1_boss,
+ knife1_damage,
+ knife1c_boss,
+ knife1c_damage,
+ knife2_boss,
+ knife2_damage,
+ knife2c_boss,
+ knife2c_damage,
+ knife3_boss,
+ knife3_damage,
+ knife3c_boss,
+ knife3c_damage
+) {
+ // 发送登录请求
+ axios.put("./api/record/" + recordId, {
+ memberId: memberId,
+ record1: {
+ boss: knife1_boss,
+ damage: parseInt(knife1_damage),
+ },
+ record1c: {
+ boss: knife1c_boss,
+ damage: parseInt(knife1c_damage),
+ },
+ record2: {
+ boss: knife2_boss,
+ damage: parseInt(knife2_damage),
+ },
+ record2c: {
+ boss: knife2c_boss,
+ damage: parseInt(knife2c_damage),
+ },
+ record3: {
+ boss: knife3_boss,
+ damage: parseInt(knife3_damage),
+ },
+ record3c: {
+ boss: knife3c_boss,
+ damage: parseInt(knife3c_damage),
+ }
+ })
+ .then(function (response) {
+ window.location.href = "./index.html";
+ })
+ .catch(function (error) {
+ const message = error.response.data.message;
+ alert("更新失敗");
+ //console.error('登入失敗:', error);
+ });
+}
\ No newline at end of file
diff --git a/web/js/index.js b/web/js/index.js
new file mode 100644
index 0000000..eb13be5
--- /dev/null
+++ b/web/js/index.js
@@ -0,0 +1,146 @@
+// 日期選擇
+var dateInput = document.getElementById('queryDate');
+dateInput.addEventListener('change', function () {
+ //console.log("change" + dateInput.value);
+ localStorage.setItem('temp_date', dateInput.value);
+ getDateOfRecords();
+});
+
+// 載入日期
+if (localStorage.getItem('temp_date') !== null) {
+ dateInput.value = localStorage.getItem("temp_date");
+} else {
+ var today = new Date();
+ var formattedDate = today.toISOString().split('T')[0];
+ dateInput.value = formattedDate;
+}
+
+let table = document.createElement("table");
+let thead = document.createElement("thead");
+let tbody = document.createElement("tbody");
+generateTable();
+
+getDateOfRecords();
+
+setInterval(getDateOfRecords, 2000);
+
+function generateTable() {
+ table.appendChild(thead);
+ table.appendChild(tbody);
+
+ // Adding the entire table to the body tag
+ document.getElementById("body").appendChild(table);
+
+ // Creating and adding data to first row of the table
+ let row_1 = document.createElement("tr");
+ let heading_1 = document.createElement("th");
+ heading_1.setAttribute('style', 'width: 40%;')
+ let heading_2 = document.createElement("th");
+ heading_2.setAttribute('style', 'width: 10%;')
+ let heading_3 = document.createElement("th");
+ heading_3.setAttribute('style', 'width: 10%;')
+ let heading_4 = document.createElement("th");
+ heading_4.setAttribute('style', 'width: 10%;')
+ let heading_5 = document.createElement("th");
+ heading_5.setAttribute('style', 'width: 10%;')
+ let heading_6 = document.createElement("th");
+ heading_6.setAttribute('style', 'width: 10%;')
+ let heading_7 = document.createElement("th");
+ heading_7.setAttribute('style', 'width: 10%;')
+
+ let heading_1_text = document.createElement("h5");
+ heading_1_text.innerHTML = "成員名稱";
+ let heading_2_text = document.createElement("h5");
+ heading_2_text.innerHTML = "1
正刀";
+ let heading_3_text = document.createElement("h5");
+ heading_3_text.innerHTML = "2
正刀";
+ let heading_4_text = document.createElement("h5");
+ heading_4_text.innerHTML = "3
正刀";
+ let heading_5_text = document.createElement("h5");
+ heading_5_text.innerHTML = "1
殘刀";
+ let heading_6_text = document.createElement("h5");
+ heading_6_text.innerHTML = "2
殘刀";
+ let heading_7_text = document.createElement("h5");
+ heading_7_text.innerHTML = "3
殘刀";
+
+ heading_1.appendChild(heading_1_text);
+ heading_2.appendChild(heading_2_text);
+ heading_3.appendChild(heading_3_text);
+ heading_4.appendChild(heading_4_text);
+ heading_5.appendChild(heading_5_text);
+ heading_6.appendChild(heading_6_text);
+ heading_7.appendChild(heading_7_text);
+
+ row_1.appendChild(heading_1);
+ row_1.appendChild(heading_2);
+ row_1.appendChild(heading_3);
+ row_1.appendChild(heading_4);
+ row_1.appendChild(heading_5);
+ row_1.appendChild(heading_6);
+ row_1.appendChild(heading_7);
+ thead.appendChild(row_1);
+}
+
+// 取得刀表
+function getDateOfRecords() {
+ var dateSplit = dateInput.value.split("-");
+ console.log(dateSplit);
+ // 取得刀表
+ axios.get("./api/record/" + dateSplit[0] + "/" + dateSplit[1] + "/" + dateSplit[2], {
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ }
+ })
+ .then(function (response) {
+ const data = response.data;
+ //console.log(data);
+ // 清除原有的資料列
+ while (tbody.firstChild) {
+ tbody.removeChild(tbody.firstChild);
+ }
+ for (let i = 0; i < data.length; i++) {
+ // 建立新的資料列
+ let row_2 = document.createElement("tr");
+ let row_2_data_1 = document.createElement("td");
+ let row_2_data_2 = document.createElement("td");
+ let row_2_data_3 = document.createElement("td");
+ let row_2_data_4 = document.createElement("td");
+ let row_2_data_5 = document.createElement("td");
+ let row_2_data_6 = document.createElement("td");
+ let row_2_data_7 = document.createElement("td");
+
+ const item = data[i];
+
+ if (item.record !== null) {
+ row_2_data_1.innerHTML = "";
+ row_2_data_2.innerHTML = "" + item.record.record1.boss + "
";
+ row_2_data_3.innerHTML = "" + item.record.record2.boss + "
";
+ row_2_data_4.innerHTML = "" + item.record.record3.boss + "
";
+ row_2_data_5.innerHTML = "" + item.record.record1c.boss + "
";
+ row_2_data_6.innerHTML = "" + item.record.record2c.boss + "
";
+ row_2_data_7.innerHTML = "" + item.record.record3c.boss + "
";
+ } else {
+ row_2_data_1.innerHTML = "" + item.member.playerName + "
";
+ row_2_data_2.innerHTML = "---
";
+ row_2_data_3.innerHTML = "---
";
+ row_2_data_4.innerHTML = "---
";
+ row_2_data_5.innerHTML = "---
";
+ row_2_data_6.innerHTML = "---
";
+ row_2_data_7.innerHTML = "---
";
+ }
+
+ row_2.appendChild(row_2_data_1);
+ row_2.appendChild(row_2_data_2);
+ row_2.appendChild(row_2_data_3);
+ row_2.appendChild(row_2_data_4);
+ row_2.appendChild(row_2_data_5);
+ row_2.appendChild(row_2_data_6);
+ row_2.appendChild(row_2_data_7);
+ tbody.appendChild(row_2);
+ }
+ })
+ .catch(function (error) {
+ console.error('資料取得失敗:', error);
+ });
+}
\ No newline at end of file
diff --git a/web/js/new.js b/web/js/new.js
new file mode 100644
index 0000000..ff6f423
--- /dev/null
+++ b/web/js/new.js
@@ -0,0 +1,114 @@
+document
+ .getElementById("record-form")
+ .addEventListener("submit", function (event) {
+ event.preventDefault(); // 阻止表單預設提交行為
+
+ // 假設你有一個下拉式選單的 HTML 元素
+ var selectElement = document.getElementById("member_select");
+
+ var knife1_boss = document.getElementById("knife1_boss").value;
+ var knife1_damage = document.getElementById("knife1_damage").value;
+ var knife1c_boss = document.getElementById("knife1c_boss").value;
+ var knife1c_damage = document.getElementById("knife1c_damage").value;
+
+ var knife2_boss = document.getElementById("knife2_boss").value;
+ var knife2_damage = document.getElementById("knife2_damage").value;
+ var knife2c_boss = document.getElementById("knife2c_boss").value;
+ var knife2c_damage = document.getElementById("knife2c_damage").value;
+
+ var knife3_boss = document.getElementById("knife3_boss").value;
+ var knife3_damage = document.getElementById("knife3_damage").value;
+ var knife3c_boss = document.getElementById("knife3c_boss").value;
+ var knife3c_damage = document.getElementById("knife3c_damage").value;
+
+ // 執行請求
+ fillRecord(
+ selectElement.value,
+ knife1_boss,
+ knife1_damage,
+ knife1c_boss,
+ knife1c_damage,
+ knife2_boss,
+ knife2_damage,
+ knife2c_boss,
+ knife2c_damage,
+ knife3_boss,
+ knife3_damage,
+ knife3c_boss,
+ knife3c_damage
+ );
+ });
+
+axios
+ .get("./api/member/not_leave")
+ .then(function (response) {
+ // 在這裡處理回傳的資料
+ var options = response.data;
+
+ // 假設你有一個下拉式選單的 HTML 元素
+ var selectElement = document.getElementById("member_select");
+
+ // 將資料加入到下拉式選單中
+ options.forEach(function (option) {
+ var optionElement = document.createElement("option");
+ optionElement.value = option._id;
+ optionElement.textContent = option.playerName;
+ selectElement.appendChild(optionElement);
+ });
+ })
+ .catch(function (error) {
+ // 處理錯誤
+ console.error(error);
+ });
+
+function fillRecord(
+ memberId,
+ knife1_boss,
+ knife1_damage,
+ knife1c_boss,
+ knife1c_damage,
+ knife2_boss,
+ knife2_damage,
+ knife2c_boss,
+ knife2c_damage,
+ knife3_boss,
+ knife3_damage,
+ knife3c_boss,
+ knife3c_damage
+) {
+ // 发送登录请求
+ axios.post("./api/record/" + memberId, {
+ record1: {
+ boss: knife1_boss,
+ damage: parseInt(knife1_damage),
+ },
+ record1c: {
+ boss: knife1c_boss,
+ damage: parseInt(knife1c_damage),
+ },
+ record2: {
+ boss: knife2_boss,
+ damage: parseInt(knife2_damage),
+ },
+ record2c: {
+ boss: knife2c_boss,
+ damage: parseInt(knife2c_damage),
+ },
+ record3: {
+ boss: knife3_boss,
+ damage: parseInt(knife3_damage),
+ },
+ record3c: {
+ boss: knife3c_boss,
+ damage: parseInt(knife3c_damage),
+ }
+ })
+ .then(function (response) {
+ window.location.href = "./index.html";
+ })
+ .catch(function (error) {
+ const message = error.response.data.message;
+ alert("新增失敗");
+ //console.error('登入失敗:', error);
+ });
+}
\ No newline at end of file
diff --git a/web/member/edit.html b/web/member/edit.html
new file mode 100644
index 0000000..e42781f
--- /dev/null
+++ b/web/member/edit.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+ 修改成員
+
+
+
+
+ 修改成員
+
+
+
+
+
+
+
diff --git a/web/member/index.html b/web/member/index.html
new file mode 100644
index 0000000..4420bf0
--- /dev/null
+++ b/web/member/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+ 公主連結戰隊戰填表系統 - 成員管理
+
+
+
+
+
+ 成員管理
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/member/js/edit.js b/web/member/js/edit.js
new file mode 100644
index 0000000..48f2c75
--- /dev/null
+++ b/web/member/js/edit.js
@@ -0,0 +1,99 @@
+var paramValue = "";
+var memberId = "";
+
+var nickName = document.getElementById("nick_name");
+var playerName = document.getElementById("player_name");
+var gameUid = document.getElementById("game_uid");
+var discordId = document.getElementById("discord_id");
+
+// 在頁面載入完成後,執行獲取參數的操作
+window.onload = function () {
+ // 取得參數
+ paramValue = getParameterByName('id');
+ console.log(paramValue);
+
+ axios.get("./api/member/" + paramValue)
+ .then(function (response) {
+ // 在這裡處理回傳的資料
+ var options = response.data;
+ console.log(options);
+ nickName.value = options.nickName;
+ playerName.value = options.playerName;
+ gameUid.value = options.uid;
+ discordId.value = options.discordID;
+
+ if (options.leave) {
+ document.getElementById("leave_true").checked = true;
+ } else {
+ document.getElementById("leave_false").checked = true;
+ }
+ })
+ .catch(function (error) {
+ // 處理錯誤
+ console.error(error);
+ });
+};
+
+document.getElementById("submit").addEventListener("click", function (event) {
+ event.preventDefault(); // 阻止表單預設提交行為
+
+ // 執行請求
+ updateMember(paramValue, nickName.value, playerName.value, gameUid.value, discordId.value);
+});
+
+document.getElementById("delete").addEventListener("click", function (event) {
+ event.preventDefault(); // 阻止表單預設提交行為
+
+ // 執行請求
+ deleteMember(paramValue);
+});
+
+function getParameterByName(name) {
+ // 获取 URL 中的参数部分
+ var url = window.location.href;
+ // 对 URL 进行解析
+ var parsedUrl = new URL(url);
+ // 从解析后的 URL 中获取参数值
+ return parsedUrl.searchParams.get(name);
+}
+
+function updateMember(memberId, nickName, playerName, gameUid, discordId) {
+ var selected = document.querySelector('input[name="is_leave"]:checked')
+ console.log(selected.value);
+ var isLeave = false;
+ if (selected) {
+ if (selected.value == "true") {
+ isLeave = true;
+ } else {
+ isLeave = false;
+ }
+ }
+ // 发送登录请求
+ axios.put("./api/member/" + memberId, {
+ playerName: playerName,
+ nickName: nickName,
+ discordID: discordId,
+ uid: gameUid,
+ leave: isLeave
+ })
+ .then(function (response) {
+ window.location.href = "./index.html";
+ })
+ .catch(function (error) {
+ //const message = error.response.data.message;
+ alert("更新失敗");
+ //console.error('登入失敗:', error);
+ });
+}
+
+function deleteMember(memberId) {
+ axios.delete("./api/member/" + memberId)
+ .then(function (response) {
+ window.location.href = "./index.html";
+ })
+ .catch(function (error) {
+ //const message = error.response.data.message;
+ alert("刪除失敗");
+ //console.error('登入失敗:', error);
+ });
+}
diff --git a/web/member/js/index.js b/web/member/js/index.js
new file mode 100644
index 0000000..e546c57
--- /dev/null
+++ b/web/member/js/index.js
@@ -0,0 +1,78 @@
+var selectedDate = document.getElementById("queryDate");
+
+let table = document.createElement("table");
+let thead = document.createElement("thead");
+let tbody = document.createElement("tbody");
+
+table.appendChild(thead);
+table.appendChild(tbody);
+
+// Adding the entire table to the body tag
+document.getElementById("body").appendChild(table);
+
+// Creating and adding data to first row of the table
+let row_1 = document.createElement("tr");
+/*let heading_1 = document.createElement("th");
+heading_1.innerHTML = "成員名稱
";*/
+let heading_2 = document.createElement("th");
+heading_2.innerHTML = "角色暱稱
";
+heading_2.setAttribute('style', 'width: 54%;')
+let heading_3 = document.createElement("th");
+heading_3.innerHTML = "角色UID
";
+heading_3.setAttribute('style', 'width: 34%;')
+/*let heading_4 = document.createElement("th");
+heading_4.innerHTML = "DC ID
";*/
+let heading_5 = document.createElement("th");
+heading_5.innerHTML = "離開
";
+heading_5.setAttribute('style', 'width: 12%;')
+
+//row_1.appendChild(heading_1);
+row_1.appendChild(heading_2);
+row_1.appendChild(heading_3);
+//row_1.appendChild(heading_4);
+row_1.appendChild(heading_5);
+thead.appendChild(row_1);
+// 取得刀表
+axios.get("./api/member", {
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ }
+})
+ .then(function (response) {
+ const data = response.data;
+ console.log(data);
+ for (let i = 0; i < data.length; i++) {
+ // Creating and adding data to second row of the table
+ let row_2 = document.createElement("tr");
+ //let row_2_data_1 = document.createElement("td");
+ let row_2_data_2 = document.createElement("td");
+ let row_2_data_3 = document.createElement("td");
+ //let row_2_data_4 = document.createElement("td");
+ let row_2_data_5 = document.createElement("td");
+
+ const item = data[i];
+
+ //row_2_data_1.innerHTML = "" + item.nickName + "";
+ row_2_data_2.innerHTML = "";
+ row_2_data_3.innerHTML = "" + item.uid + "
";
+ //row_2_data_4.innerHTML = item.discordID;
+ if (item.leave) {
+ row_2_data_5.innerHTML = "O
";
+ } else {
+ row_2_data_5.innerHTML = "X
";
+ }
+
+ //row_2.appendChild(row_2_data_1);
+ row_2.appendChild(row_2_data_2);
+ row_2.appendChild(row_2_data_3);
+ //row_2.appendChild(row_2_data_4);
+ row_2.appendChild(row_2_data_5);
+ tbody.appendChild(row_2);
+ }
+ })
+ .catch(function (error) {
+ //const message = error.response.data.message;
+ //alert("資料取得失敗");
+ console.error('資料取得失敗:', error);
+ });
diff --git a/web/member/js/new.js b/web/member/js/new.js
new file mode 100644
index 0000000..57042a1
--- /dev/null
+++ b/web/member/js/new.js
@@ -0,0 +1,31 @@
+document
+ .getElementById("member-form")
+ .addEventListener("submit", function (event) {
+ event.preventDefault(); // 阻止表單預設提交行為
+
+ var nickName = document.getElementById("nick_name");
+ var playerName = document.getElementById("player_name");
+ var gameUid = document.getElementById("game_uid");
+ var discordId = document.getElementById("discord_id");
+
+ // 執行請求
+ newMember(nickName.value, playerName.value, gameUid.value, discordId.value);
+ });
+
+function newMember(nickName, playerName, gameUid, discordId) {
+ // 发送登录请求
+ axios.post("./api/member", {
+ playerName: playerName,
+ nickName: nickName,
+ discordID: discordId,
+ uid: gameUid
+ })
+ .then(function (response) {
+ window.location.href = "./index.html";
+ })
+ .catch(function (error) {
+ const message = error.response.data.message;
+ alert("新增失敗");
+ //console.error('登入失敗:', error);
+ });
+}
\ No newline at end of file
diff --git a/web/member/new.html b/web/member/new.html
new file mode 100644
index 0000000..bb05689
--- /dev/null
+++ b/web/member/new.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+ 新增成員
+
+
+
+
+ 新增成員
+
+
+
+
+
+
+
diff --git a/web/new.html b/web/new.html
new file mode 100644
index 0000000..c77d61c
--- /dev/null
+++ b/web/new.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+ 新增紀錄
+
+
+
+
+ 新增紀錄
+
+
+ 填寫方式:掉刀填0,正常出刀填X周-Y王。傷害依照幹部規定要不要填,如不填可留空
+
+
+
+
+
+
+
+