import $ from "jquery"; import 'bootstrap'; import { setAxiosXMLHttpRequest } from "@util/setAxiosXMLHttpRequest"; import axios from "axios"; import type { InvalidResponse } from "@/defs"; import { JQValidateForm, type NamedRules } from "@util/jqValidateForm"; import { convertFormData } from "@util/convertFormData"; import { exportWindow } from "@util/exportWindow"; type ResponseScenarioItem = { year?: number, title: string, npc_cnt: number, npcEx_cnt: number, npcNeutral_cnt: number, nation: Record } type ExpandedScenarioItem = ResponseScenarioItem & { category: string, idx: string, year: number, } type ResponseScenario = { result: true, scenario: Record } async function loadScenarios() { let result: InvalidResponse | ResponseScenario; try { const response = await axios({ url: 'j_load_scenarios.php', method: 'post', responseType: 'json' }); result = response.data; } catch (e) { alert(`시나리오를 불러오는데 실패했습니다.: ${e}`); return; } if (!result.result) { alert(result.reason); return; } const list: Record> = {}; const pat = /【(.*?)[0-9\-_.a-zA-Z]*】/; for (const [idx, value] of Object.entries(result.scenario)) { const title = value.title || "-"; const categoryRes = pat.exec(title); const category = categoryRes ? categoryRes[1] : '-'; if (!(category in list)) { list[category] = {}; } list[category][idx] = { ...value, title: title, category: category, idx: idx, year: value.year ?? 180 }; } const $select = $('#scenario_sel'); for (const [category, items] of Object.entries(list)) { const $optgroup = $('').attr('label', category); for (const [idx, scenario] of Object.entries(items)) { const $option = $('