js2ts-fix: install

This commit is contained in:
2021-08-20 01:31:18 +09:00
parent 17c83f8db9
commit 15037edbde
3 changed files with 62 additions and 61 deletions
+13 -13
View File
@@ -45,7 +45,7 @@ if($session->userGrade < 5 && !$allowReset){
<h3 class="card-header"> <h3 class="card-header">
설치(환경 설정) 설치(환경 설정)
<!--턴시간, 시간동기화, 시나리오, 상성, 확장장수, NPC유저, 이미지설정--> <!--턴시간, 시간동기화, 시나리오, 상성, 확장장수, NPC유저, 이미지설정-->
</h3> </h3>
<div class="card-body"> <div class="card-body">
<form id="game_form" method="post" action="#"> <form id="game_form" method="post" action="#">
<div class="form-group row"> <div class="form-group row">
@@ -80,7 +80,7 @@ if($session->userGrade < 5 && !$allowReset){
</div> </div>
</div> </div>
<div class="form-group row"> <div class="form-group row">
<label for="sync" class="col-sm-3 col-form-label">시간 동기화</label> <label for="sync" class="col-sm-3 col-form-label">시간 동기화</label>
<div class="col-sm-9" style="display: inline-flex;"> <div class="col-sm-9" style="display: inline-flex;">
@@ -91,7 +91,7 @@ if($session->userGrade < 5 && !$allowReset){
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="radio" name="sync" value="0">N <input type="radio" name="sync" value="0">N
</label> </label>
</div> </div>
<small class="text-muted"> <small class="text-muted">
시간 단위에 맞게 년/월이 설정됩니다. <br>예: 120분(오전1시=1월), 60분(오전/오후 1시=1월) 시간 단위에 맞게 년/월이 설정됩니다. <br>예: 120분(오전1시=1월), 60분(오전/오후 1시=1월)
@@ -104,7 +104,7 @@ if($session->userGrade < 5 && !$allowReset){
<div class="col-sm-9"> <div class="col-sm-9">
<select class="form-control" name="scenario" size="1" id="scenario_sel"> <select class="form-control" name="scenario" size="1" id="scenario_sel">
</select> </select>
</div> </div>
</div> </div>
@@ -168,30 +168,30 @@ if($session->userGrade < 5 && !$allowReset){
</div> </div>
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-3 col-form-label">휴식 턴 시 장수 턴</label> <label class="col-sm-3 col-form-label" id="autorun_set_label">휴식 턴 시 장수 턴</label>
<div class="col-sm-9"> <div class="col-sm-9">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend btn-group btn-group-toggle" data-toggle="buttons"> <div class="input-group-prepend btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="develop" name="autorun_develop" id="autorun_develop">내정 <input type="checkbox" class="autorun_user_chk" data-key="develop" name="autorun_user[]" value="develop">내정
</label> </label>
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="warp" name="autorun_warp" id="autorun_warp">순간이동 <input type="checkbox" class="autorun_user_chk" data-key="warp" name="autorun_user[]" value="warp">순간이동
</label> </label>
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="recruit" name="autorun_recruit" id="autorun_recruit">징병 <input type="checkbox" class="autorun_user_chk" data-key="recruit" name="autorun_user[]" value="recruit">징병
</label> </label>
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="recruit_high" name="autorun_recruit_high" id="autorun_recruit_high">모병 <input type="checkbox" class="autorun_user_chk" data-key="recruit_high" name="autorun_user[]" value="recruit_high">모병
</label> </label>
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="train" name="autorun_train" id="autorun_train">훈사 <input type="checkbox" class="autorun_user_chk" data-key="train" name="autorun_user[]" value="train">훈사
</label> </label>
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="battle" name="autorun_battle" id="autorun_battle">출병 <input type="checkbox" class="autorun_user_chk" data-key="battle" name="autorun_user[]" value="battle">출병
</label> </label>
<label class="btn btn-secondary"> <label class="btn btn-secondary">
<input type="checkbox" class="autorun_user_chk" data-key="chief" name="autorun_chief" id="autorun_chief">기본 사령턴 <input type="checkbox" class="autorun_user_chk" data-key="chief" name="autorun_user[]" value="chief">기본 사령턴
</label> </label>
</div> </div>
<div class="input-group-append"> <div class="input-group-append">
@@ -366,7 +366,7 @@ if($session->userGrade < 5 && !$allowReset){
</tbody> </tbody>
<tfoot> <tfoot>
<tr><td colspan="2"> <tr><td colspan="2">
</td></tr> </td></tr>
</tfoot> </tfoot>
</table> </table>
+46 -43
View File
@@ -4,9 +4,7 @@ import { setAxiosXMLHttpRequest } from "./util/setAxiosXMLHttpRequest";
import axios from "axios"; import axios from "axios";
import { InvalidResponse } from "./defs"; import { InvalidResponse } from "./defs";
import { Rules } from "async-validator"; import { Rules } from "async-validator";
import { isArray } from "lodash";
import { JQValidateForm } from "./util/jqValidateForm"; import { JQValidateForm } from "./util/jqValidateForm";
import { unwrap } from "./util";
import { convertFormData } from "./util/convertFormData"; import { convertFormData } from "./util/convertFormData";
type ResponseScenarioItem = { type ResponseScenarioItem = {
@@ -121,95 +119,97 @@ function scenarioPreview() {
if (scenario.npcEx_cnt == 0) { if (scenario.npcEx_cnt == 0) {
$npcEx.html(''); $npcEx.html('');
} else { } else {
$npcEx.html('+{0}명'.format(scenario.npcEx_cnt)); $npcEx.html(`+${scenario.npcEx_cnt}`);
} }
$nation.html(''); $nation.html('');
$.each(scenario.nation, function (idx, nation) { $.each(scenario.nation, function (idx, nation) {
$nation.append('<span style="color:{0}">{1}</span> {2}명. {3}<br>'.format( $nation.append(`<span style="color:${nation.color}">${nation.name}</span> ${nation.generals}명. ${nation.cities.join(', ')}<br>`);
nation.color, nation.name, nation.generals, nation.cities.join(', ')
));
}); });
} }
const descriptor: Rules = { const descriptor: Rules = {
turnterm: { turnterm: {
required: true, required: true,
type: "enum",
enum: [1, 2, 5, 10, 20, 30, 60, 120],
transform: parseInt,
}, },
sync: { sync: {
required: true, required: true,
type: "enum",
enum: [1, 0],
transform: parseInt,
}, },
scenario: { scenario: {
required: true, required: true,
}, },
fiction: { fiction: {
required: true, required: true,
type: "integer",
transform: parseInt,
}, },
extend: { extend: {
required: true, required: true,
type: "integer",
transform: parseInt,
}, },
npcmode: { npcmode: {
required: true, required: true,
type: "integer",
transform: parseInt,
}, },
show_img_level: { show_img_level: {
required: true, required: true,
type: "integer",
transform: parseInt,
}, },
tournament_trig: { tournament_trig: {
required: true, required: true,
type: "integer",
transform: parseInt,
}, },
join_mode: { join_mode: {
required: true, required: true,
type: "enum",
enum: ["full", "onlyRandom"]
}, },
autorun_user: { autorun_user: {
type: 'array', type: 'array',
required: false,
defaultField: { defaultField: {
type: 'enum', type: 'enum',
enum: ['develop', 'warp', 'recruit', 'recruit-high', 'train', 'battle'] enum: ['develop', 'warp', 'recruit', 'recruit_high', 'train', 'battle']
}, },
}, },
autorun_user_minutes: { autorun_user_minutes: {
type: 'number', type: 'integer',
required: true, required: true,
transform: parseInt,
min: 0, min: 0,
validator: (rule, value, _callback, source) => { validator: (rule, value, _callback, source) => {
if (!isArray(source.autorun_user)) { if(value == 0 && !source.autorun_user?.length){
return new Error('옵션이 올바른 타입이 아닙니다.'); return true;
} }
if (source.autorun_user.length == 0 && parseInt(value) > 0) { if(value != 0 && source.autorun_user?.length){
return new Error('유효 시간과 옵션은 동시에 설정해야합니다.'); return true;
} }
return new Error('유효 시간과 옵션은 동시에 설정해야합니다.');
} }
},
reserve_open: {
type: 'pattern',
pattern: new RegExp(/\d{4,4}-\d{2,2}-\d{2,2} \d{2,2}:\d{2,2}/)
},
pre_reserve_open: {
type: 'pattern',
pattern: new RegExp(/\d{4,4}-\d{2,2}-\d{2,2} \d{2,2}:\d{2,2}/)
} }
}; };
function formSetup() { function formSetup() {
const validator = new JQValidateForm($('#game_form'), descriptor);
const autorunMap: Map<string, string> = new Map([ validator.installChangeHandler();
['autorun_develop', 'develop'],
['autorun_warp', 'warp'],
['autorun_recruit', 'recruit'],
['autorun_recruit_high', 'recruit_high'],
['autorun_train', 'train'],
['autorun_battle', 'battle'],
['autorun_chief', 'chief'],
]);
const validator = new JQValidateForm($('#game_form'), descriptor, {
postParse: (values) => {
const newValues: Record<string, string | string[]> & { autorun_user: string[] } = {
autorun_user: []
};
for (const [key, value] of Object.entries(values)) {
if (!autorunMap.has(key)) {
newValues[key] = value;
continue;
}
const convValue = unwrap(autorunMap.get(key));
newValues.autorun_user.push(convValue);
}
return newValues;
}
});
$('#game_form').on('submit', async function (e) { $('#game_form').on('submit', async function (e) {
e.preventDefault(); e.preventDefault();
@@ -219,7 +219,7 @@ function formSetup() {
} }
let result: InvalidResponse; let result: InvalidResponse;
try{ try {
const response = await axios({ const response = await axios({
url: 'j_install.php', url: 'j_install.php',
method: 'post', method: 'post',
@@ -228,12 +228,12 @@ function formSetup() {
}); });
result = response.data; result = response.data;
} }
catch(e){ catch (e) {
alert(`알수 없는 에러: ${e}`); alert(`알수 없는 에러: ${e}`);
return; return;
} }
if(!result.result){ if (!result.result) {
alert(result.reason); alert(result.reason);
return; return;
} }
@@ -248,4 +248,7 @@ $(async function () {
void loadScenarios(); void loadScenarios();
$('#scenario_sel').on('change', scenarioPreview); $('#scenario_sel').on('change', scenarioPreview);
formSetup(); formSetup();
})
})
window.$ = $;
+3 -5
View File
@@ -20,9 +20,9 @@ jQuery(async function ($) {
}, },
db_port: { db_port: {
type: 'integer', type: 'integer',
validator: (rule, value: string) => { transform: parseInt,
const num = parseInt(value); validator: (rule, value: number) => {
if (num <= 0 || num >= 65535) { if (value <= 0 || value >= 65535) {
return new Error('올바른 포트 범위가 아닙니다.'); return new Error('올바른 포트 범위가 아닙니다.');
} }
return true; return true;
@@ -43,7 +43,6 @@ jQuery(async function ($) {
}; };
const validator = new JQValidateForm($('#db_form'), descriptor); const validator = new JQValidateForm($('#db_form'), descriptor);
validator.installChangeHandler(); validator.installChangeHandler();
$('#db_form').on('submit', async function (e) { $('#db_form').on('submit', async function (e) {
e.preventDefault(); e.preventDefault();
@@ -67,7 +66,6 @@ jQuery(async function ($) {
alert(e); alert(e);
return false; return false;
} }
if(!data.result){ if(!data.result){
alert(`에러: ${data.reason}`); alert(`에러: ${data.reason}`);
return false; return false;