From cb6d78eccb28cf66a3dbe83d4a2dd7e1c2aac113 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sun, 22 Aug 2021 15:45:10 +0900 Subject: [PATCH] =?UTF-8?q?js2ts:=20bossInfo,=20myPage=20-=20convertFormDa?= =?UTF-8?q?ta=EC=97=90=EC=84=9C=20null=20->=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/ts/bossInfo.ts | 3 + hwe/ts/myPage.ts | 199 +++++++++++++++++++++++++++++++++ hwe/ts/util/convertFormData.ts | 5 +- webpack.config.js | 1 + 4 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 hwe/ts/myPage.ts diff --git a/hwe/ts/bossInfo.ts b/hwe/ts/bossInfo.ts index 9cb77ffa..ebb9d0a9 100644 --- a/hwe/ts/bossInfo.ts +++ b/hwe/ts/bossInfo.ts @@ -3,6 +3,7 @@ import axios from 'axios'; import { convertFormData } from './util/convertFormData'; import { InvalidResponse } from './defs'; import { unwrap_any } from './util/unwrap_any'; +import { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest'; type GeneralSelectorItem = { id: string|number, @@ -52,6 +53,8 @@ async function changePermission(isAmbassador: boolean, rawGeneralList: GeneralSe } $(function () { + setAxiosXMLHttpRequest(); + $('#selectAmbassador').select2({ theme: 'bootstrap4', placeholder: "", diff --git a/hwe/ts/myPage.ts b/hwe/ts/myPage.ts new file mode 100644 index 00000000..0741976f --- /dev/null +++ b/hwe/ts/myPage.ts @@ -0,0 +1,199 @@ +import axios from 'axios'; +import $ from 'jquery'; +import { InvalidResponse } from './defs'; +import { convertFormData } from './util/convertFormData'; +import { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest'; +import { unwrap } from './util/unwrap'; +import { unwrap_any } from './util/unwrap_any'; + + +type LogResponse = { + result: true; + log: Record; +}; + +$(function ($) { + setAxiosXMLHttpRequest(); + + const initCustomCSSForm = function () { + let lastTimeOut: NodeJS.Timeout | undefined = undefined; + const $obj = $('#custom_css'); + const key = 'sam_customCSS'; + + let text = localStorage.getItem(key); + if (text) { + $obj.val(text); + console.log(text); + } + + $obj.on('change keyup paste', function () { + const newText = $obj.val(); + if (text == newText) { + return; + } + if (lastTimeOut) { + clearTimeout(unwrap(lastTimeOut)); + } + $obj.css('background-color', '#222222'); + lastTimeOut = setTimeout(function () { + text = unwrap_any($obj.val()); + localStorage.setItem(key, text); + $obj.css('background-color', 'black'); + }, 500); + }) + ; + }; + + $('.load_old_log').on('click', async function (e) { + e.preventDefault(); + + const $thisBtn = $(this); + const logType = $thisBtn.data('log_type'); + const $last = $(`.log_${logType}:last`); + let reqTo: number | null = null; + if ($last.length) { + reqTo = $last.data('seq'); + } + + let result: InvalidResponse | LogResponse; + + try { + const response = await axios({ + url: 'j_general_log_old.php', + method: 'post', + responseType: 'json', + data: convertFormData({ + to: reqTo, + type: logType + }) + }); + result = response.data; + } + catch (e) { + console.log(e); + alert(`실패했습니다: ${e}`); + return; + } + + if (!result.result) { + alert(`로그를 받아오지 못했습니다. : ${result.reason}`); + location.reload(); + return; + } + + const keys: string[] = Object.keys(result.log); + if (keys.length > 1 && keys[0] < keys[1]) { + keys.reverse(); + } + + if (keys.length == 0) { + $thisBtn.hide(); + return; + } + + const html: string[] = []; + for (const [key, item] of Object.entries(result.log)) { + if ($('#log_{0}_{1}'.format(logType, key)).length) { + return true; + } + html.push("
{2}
".format(logType, key, item)); + } + $(`#${logType}Plate`).append(html.join('')); + }) + + initCustomCSSForm(); + + + $('#die_immediately').on('click', async function (e) { + e.preventDefault(); + + if (!confirm('정말로 삭제하시겠습니까?')) { + return false; + } + + let result: InvalidResponse; + + try { + const response = await axios({ + url: 'j_die_immediately.php', + method: 'post', + responseType: 'json', + }); + result = response.data; + } + catch (e) { + console.log(e); + alert(`실패했습니다: ${e}`); + location.reload(); + return; + } + + if (!result.result) { + alert(`실패했습니다: ${result.reason}`); + location.reload(); + return; + } + + location.replace('..'); + }); + + $('#vacation').on('click', async function (e) { + e.preventDefault(); + if (!confirm('휴가 기능을 신청할까요?')) { + return false; + } + + let result: InvalidResponse; + + try { + const response = await axios({ + url: 'j_vacation.php', + method: 'post', + responseType: 'json', + }); + result = response.data; + } + catch (e) { + console.log(e); + alert(`실패했습니다: ${e}`); + location.reload(); + return; + } + + if (!result.result) { + alert(`실패했습니다: ${result.reason}`); + location.reload(); + return; + } + + location.reload(); + }); + + $('#set_my_setting').on('click', async function (e) { + let result: InvalidResponse; + + try { + const response = await axios({ + url: 'j_set_my_setting.php', + method: 'post', + responseType: 'json', + data: convertFormData({ + tnmt: unwrap_any($('.tnmt:checked').val()), + defence_train: parseInt(unwrap_any($('#defence_train').val())), + use_treatment: unwrap_any($('#use_treatment').val()), + use_auto_nation_turn: unwrap_any($('#use_auto_nation_turn').val()), + }) + }); + result = response.data; + } + catch (e) { + console.log(e); + alert(`실패했습니다: ${e}`); + location.reload(); + return; + } + + location.reload(); + + }); +}); \ No newline at end of file diff --git a/hwe/ts/util/convertFormData.ts b/hwe/ts/util/convertFormData.ts index 3b14803e..2c6d6a48 100644 --- a/hwe/ts/util/convertFormData.ts +++ b/hwe/ts/util/convertFormData.ts @@ -1,6 +1,6 @@ import { isArray, isString, isNumber, isBoolean } from "lodash"; -export function convertFormData(values: Record): FormData{ +export function convertFormData(values: Record): FormData{ const formData = new FormData(); const simpleConv = (v: unknown):string=>{ @@ -13,6 +13,9 @@ export function convertFormData(values: Record