-
+
${data.name}
${data.player_count}/${data.max_players}
${data.human_name}
@@ -92,6 +111,169 @@ function generate_server_card_div(data){
`
}
+function bind_ServerAboutClose(){
+ $('#Modal_ServerAbout_Close').click(async function (ev) {
+ ev.preventDefault();
+ $('#Modal_ServerAbout').modal('hide');
+ });
+}
+
+function bind_ServerAboutReportPlayer_Close(){
+ $('#Modal_ServerAboutReportPlayer_Close').click(async function (ev) {
+ ev.preventDefault();
+ $('#Modal_ServerAboutReportPlayer').modal('hide');
+ });
+
+ $("#Modal_ServerAboutReportPlayer_send").click(async function (ev) {
+ ev.preventDefault();
+ $("#Modal_ServerAboutReportPlayer_error").html("");
+ if($('#Modal_ServerAboutReportPlayer_reason').val().length < 32){
+ $("#Modal_ServerAboutReportPlayer_error").html("У тебя причина говно, сделай ее более красочной. Опиши подробнее где тебя трогали.");
+ }
+ //$("#Modal_ServerAboutReportPlayer_error").html("ЛОХ");
+ });
+}
+
+function bind_ServerAboutReportPlayerButton(id){
+ console.log(id);
+ $(id).click(async function (ev) {
+ ev.preventDefault();
+ $('#Modal_ServerAbout').modal('hide');
+ let data = ev.currentTarget.dataset.id.replaceAll("_",".").split("|", 2);
+ console.log(data);
+ Modal_Fill_Report(data[0], data[1]);
+ $('#Modal_ServerAboutReportPlayer').modal('show');
+ });
+}
+
+function Modal_Fill_Report(srv, player_id){
+ $(`#Modal_ServerAboutReportPlayer_name`).html(api_response.servers[srv].players[player_id].name);
+}
+
+function bind_ServerAboutButton(srv_name){
+ $(`#ChoiceServerButton_${srv_name.replaceAll(".","_")}`).click(async function (ev) {
+ ev.preventDefault();
+ let srv = ev.currentTarget.dataset.id.replaceAll("_",".");
+ Modal_Fill_Choiced(srv);
+ $('#Modal_ServerAbout').modal('show');
+ });
+}
+
+function Modal_Fill_Choiced(srv){
+ $("#Modal_ServerAboutBody").empty();
+ $("#Modal_ServerAbout_Label").html(api_response.servers[srv].name);
+ let modal_body = `
+
+
+
+
${api_response.servers[srv].description}
+
+
+
+
`;
+
+ if (api_response.servers[srv].status) {
+ modal_body += `
+
+
+

+
+
+
Подключиться
+
+`;
+ if (api_response.servers[srv].workshop.length != 0) {
+ modal_body += `
+
+
+

+
+
+
Workshop
+
+ `;} else {
+ modal_body += `
+
+
+

+
+
+
Скачать карту
+
`
+ }
+} else {
+ modal_body += `
Сервер в отключке...
`
+}
+ modal_body += "
";
+
+ let allow_report = check_cookie_name("steam64");
+ if (api_response.servers[srv].status) {
+ if(api_response.servers[srv].player_count > 0) {
+ modal_body += `
+
+
+
Сейчас играет ${api_response.servers[srv].player_count}/${api_response.servers[srv].max_players}
+
+
`;
+ modal_body += `
+
+
+
+
+
+ Имя игрока |
+ Очки |
+ Время игры |
+ ${allow_report?'Репорт | ':''}
+
+
+ `;
+ ///////////////////////////////////////////////////////////
+ let sorted_players = Object.keys(api_response.servers[srv].players).sort((a, b) => {
+ return api_response.servers[srv].players[b].score - api_response.servers[srv].players[a].score;
+ });
+ for (const player_id in sorted_players) {
+ let player = api_response.servers[srv].players[sorted_players[player_id]];
+ modal_body += `
+
+ ${player.name} |
+ ${player.score ? player.score : 0} |
+ ${player.duration} |
+ ${allow_report?` | `:''}
+
+ `;
+ }
+ ///////////////////////////////////////////////////////////
+ modal_body += `
+
+
+
`
+ } else {
+ modal_body += `
+
+
+
Сейчас никто не играет
+
+
`;
+ }
+}
+
+ $(modal_body).appendTo("#Modal_ServerAboutBody");
+
+ if(allow_report && api_response.servers[srv].status && api_response.servers[srv].player_count > 0) {
+ for (const player_id in api_response.servers[srv].players) {
+ player = api_response.servers[srv].players[player_id];
+ bind_ServerAboutReportPlayerButton(`#Modal_ReportButton_${srv.replaceAll(".","_")}_${player.id}`);
+ }
+ }
+}
+
async function CheckApi() {
let api_request_time = (new Date).getTime();
await fetch("https://tf2.pblr-nyk.pro/api", {headers: {'Cache-Control':'no-cache'}})
@@ -114,6 +296,7 @@ async function RequestAPI() {
await fetch("https://tf2.pblr-nyk.pro/api/stats", {headers: {'Cache-Control':'no-cache'}})
.then(res => res.json())
.then(res => {
+ api_response = res;
FillServices(res);
// $('#current_players').text(res.servers.statistic.player_now)
$("#current_players").html(res.servers.statistic.player_now);
@@ -139,6 +322,7 @@ async function RequestAPI() {
for (let sort_id in sorted_servers) {
let server = sorted_servers[sort_id];
if (server == `statistic`) {continue;}
+ res.servers[server].selfname = server;
if(res.servers[server].status == true && res.servers[server].player_count > 0) {
if(!active) {
$(servers_active).appendTo("#servers_list_v2");
@@ -152,6 +336,7 @@ async function RequestAPI() {
}
}
$(generate_server_card_div(res.servers[server])).appendTo("#servers_list_v2");
+ bind_ServerAboutButton(server);
}
for (let sort_id in sorted_servers) {
@@ -162,8 +347,12 @@ async function RequestAPI() {
dead = true;
}
$(generate_server_card_div(res.servers[server])).appendTo("#servers_list_v2");
+ bind_ServerAboutButton(server);
}
}
+ ////////////////
+ bind_ServerAboutClose();
+ bind_ServerAboutReportPlayer_Close();
}).catch((err) => {
console.log(err);
//FillFooter("", 0, 0);
@@ -273,4 +462,5 @@ function FillRules() {
}
}
+
\ No newline at end of file
diff --git a/site_content/js/Player_API.js b/site_content/js/Player_API.js
index 7cd32d6..d6524c4 100644
--- a/site_content/js/Player_API.js
+++ b/site_content/js/Player_API.js
@@ -1,11 +1,45 @@
-$(async function () {
- await CheckCurrentUser();
-})
+class CurrentUser {
+ constructor() {
+ document.getElementById("Header_CurrentUser").innerHTML = `Получение данных профиля с сервера... ПОДОЖДИ`;
+ this.fill_user();
+ }
+
+ fill_user() {
+ fetch("https://tf2.pblr-nyk.pro/player_api/v1/current_user", { credentials: "same-origin", headers: { 'Cache-Control': 'no-cache' } })
+ .then(response => response.json())
+ .then(response => {
+ if ("error" in response) {
+ console.log("Cannot fetch current user");
+ return;
+ }
+ document.getElementById("Header_CurrentUser").href = "#";
+ this.check_ban_in_header(response);
+ document.getElementById("Header_Logout").innerHTML = " (нажми чтоб выйти)";
+ //
+ document.getElementById("profile_list").remove();
+ document.getElementById("profile_stats").insertAdjacentHTML("beforeend", FillPlayerInfo(response));
+ ReconstructVipSection(response);
+ });
+ }
+ check_ban_in_header(response) {
+ if (response.ban) {
+ document.getElementById("Header_CurrentUser").innerHTML = `Привет ${response.steam_data.nickname}! У меня хорошие новости!`;
+ document.getElementById("Header_CurrentBan").innerHTML = "У тебя БАН! (нажми чтоб посмотреть его)";
+ } else {
+ document.getElementById("Header_CurrentUser").innerHTML = `Привет ${response.steam_data.nickname}!`;
+ }
+ }
+}
+
+if (check_cookie_name("steam64")) {
+ var current_user = new CurrentUser();
+}
+/*
async function CheckCurrentUser() {
if (!check_cookie_name("steam64")) { return; }
- $("#Header_CurrentUser").html(`Получение данных профиля с сервера... ПОДОЖДИ`);
- await fetch("https://tf2.pblr-nyk.pro/player_api/v1/current_user", { credentials: "same-origin", headers: { 'Cache-Control': 'no-cache' } })
+ //$("#Header_CurrentUser").html(`Получение данных профиля с сервера... ПОДОЖДИ`);
+ /*await fetch("https://tf2.pblr-nyk.pro/player_api/v1/current_user", { credentials: "same-origin", headers: { 'Cache-Control': 'no-cache' } })
.then(response => response.json())
.then(response => {
if ("error" in response) {
@@ -24,7 +58,7 @@ async function CheckCurrentUser() {
ReconstructVipSection(response);
}
})
-}
+}*/
function check_cookie_name(name) {
var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
@@ -313,8 +347,8 @@ let konami_code = "";
let activated = false;
//$().keypress(function (event) {
-//document.addEventListener('keypress', (event) => {
-$(":root").keypress(function (event) {
+document.addEventListener('keypress', (event) => {
+//$(":root").keypress(function (event) {
if (activated) { return; }
konami_code += event.key;