Files
core/hwe/ts/main.ts
T
Hide_D 97dfb02ab6 js2ts: dipcenter(WIP)
- summernote 이식
- summernote/imageFip plugin 이식
2021-08-29 01:39:03 +09:00

198 lines
5.7 KiB
TypeScript

import $ from 'jquery';
import Popper from 'popper.js';
(window as unknown as { Popper: unknown }).Popper = Popper;//XXX: 왜 popper를 이렇게 불러야 하는가?
import 'bootstrap';
import { parseTime } from './util/parseTime';
import { addMilliseconds, addMinutes, differenceInMilliseconds } from 'date-fns';
import { formatTime } from './util/formatTime';
import { unwrap_any } from './util/unwrap_any';
import { activateFlip, errUnknown } from './common_legacy';
import { unwrap } from './util/unwrap';
import { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';
import './msg.ts';
import './map.ts';
import { exportWindow } from './util/exportWindow';
import {stringifyUrl} from 'query-string';
exportWindow($, '$');
type TurnArg = {
//TODO: 채울것
}
type TurnItem = {
action: string,
brief: string,
arg: TurnArg,
}
type ReservedTurnResponse = {
result: true,
turnTime: string,
turnTerm: number,
year: number,
month: number,
date: string,
turn: TurnItem[],
}
$(function ($) {
setAxiosXMLHttpRequest();
$('#refreshPage').click(function () {
document.location.reload();
return false;
});
function reloadCommandList() {
void $.get({
url: 'j_get_reserved_command.php',
dataType: 'json',
cache: false,
}).then(function (data: ReservedTurnResponse) {
if (!data) {
return;
}
if (!data.result) {
return;
}
const game_clock = parseTime(data.date);
const now_clock = new Date();
const $clock = $('#clock');
$clock.data('time-diff', differenceInMilliseconds(game_clock, now_clock));
$clock.val(formatTime(game_clock));
const turnTime = parseTime(data.turnTime);
let nextTurnTime = new Date(turnTime);
let year = data.year;
let month = data.month;
for (const [turnIdx, turnInfo] of Object.entries(data.turn)) {
const $tr = $(`#command_${turnIdx}`);
$tr.find('.time_pad').text(formatTime(nextTurnTime, 'HH:mm'));
$tr.find('.month_pad').text(`${year}${month}月`);
const $turn_pad = $tr.find('.turn_pad');
const $turn_text = $turn_pad.find('.turn_text');
$turn_text.text(turnInfo.brief).css('font-size', '13px');
const oWidth = unwrap($turn_pad.innerWidth());
const iWidth = unwrap($turn_text.outerWidth());
if (iWidth > oWidth * 0.95) {
const newFontSize = 13 * oWidth / iWidth * 0.9;
$turn_text.css('font-size', `${newFontSize}px`);
}
nextTurnTime = addMinutes(nextTurnTime, data.turnTerm);
month += 1;
if (month >= 13) {
year += 1;
month -= 12;
}
}
console.log(data);
});
}
function myclock() {
const $clock = $('#clock');
const now_clock = new Date();
const rawTimeDiff = $clock.data('time-diff');
if (rawTimeDiff === null || rawTimeDiff === undefined) {
return;
}
const timeDiff = unwrap_any<number>(rawTimeDiff);
const gameClock = addMilliseconds(now_clock, timeDiff);
$('#clock').val(formatTime(gameClock));
}
function pushTurn(pushAmount: number) {
$.post({
url: 'j_general_turn.php',
dataType: 'json',
data: {
amount: pushAmount
}
}).then(function (data) {
if (!data.result) {
alert(data.reason);
}
reloadCommandList();
}, errUnknown);
}
function repeatTurn(repeatAmount: number) {
$.post({
url: 'j_general_turn.php',
dataType: 'json',
data: {
amount: repeatAmount,
is_repeat: true
}
}).then(function (data) {
if (!data.result) {
alert(data.reason);
}
reloadCommandList();
}, errUnknown);
}
$('#pullTurn').click(function () {
pushTurn(-parseInt(unwrap_any<string>($('#repeatAmount').val())));
});
$('#pushTurn').click(function () {
pushTurn(parseInt(unwrap_any<string>($('#repeatAmount').val())));
});
$('#repeatTurn').click(function () {
repeatTurn(parseInt(unwrap_any<string>($('#repeatAmount').val())));
});
function reserveTurn(turnList: number[], command: string) {
console.log(turnList, command);
$.post({
url: 'j_set_general_command.php',
dataType: 'json',
data: {
action: command,
turnList: turnList
}
}).then(function (data) {
if (!data.result) {
alert(data.reason);
}
reloadCommandList();
}, errUnknown);
}
$('#reserveTurn').click(function () {
const turnList = unwrap_any<string[]>($('#generalTurnSelector').val()).map(v => parseInt(v));
const $command = $('#generalCommandList option:selected');
if ($command.data('reqarg')) {
document.location.href = stringifyUrl({
url: 'b_processing.php',
query: {
command: unwrap_any<string>($command.val()),
turnList: turnList.join('_')
}
});
}
else {
reserveTurn(turnList, unwrap_any<string>($command.val()));
}
return false;
})
setInterval(myclock, 500);
reloadCommandList();
activateFlip();
});