{"version":3,"sources":["page/deal.js"],"names":["VerifyHrefContent","params","sanitizedParams","URLSearchParams","key","value","IsValidInput","append","input","test","typeText","PenaltyAgencyList","Regulations","Law","fetchData","FacilityName","County","StartDate","EndDate","PageNumber","PageSize","UniformNo","$","document","ready","change","val","this","name","attr","mobileMediaQuery","matches","FETCHCODE","delegate","this_","type","parent","data","text","trim","children","removeClass","addClass","list_html","empty","indexOf","FetchPenaltyCode","click","select","prev","slideDown","each","hasClass","e","stopPropagation","options","next","open","slideUp","selected_start","selected_end","customCalendar","table_index","parents","selectedValue","target","final_variable","moment","subtract","format","push","urlParams","forEach","v","url","entries","toString","window","location","href","preventDefault","DownloadPenaltyFile","Data"],"mappings":"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","file":"deal.js","sourcesContent":["function VerifyHrefContent(params) {\r\n // 創建一個新的 URLSearchParams 來保存驗證後的參數\r\n const sanitizedParams = new URLSearchParams();\r\n\r\n // 迭代所有參數並進行驗證\r\n for (const [key, value] of params) {\r\n // 檢查鍵和值是否包含合法字符\r\n if (IsValidInput(key) && IsValidInput(value)) {\r\n // 將合法的參數加入到驗證後的參數中\r\n sanitizedParams.append(key, value);\r\n }\r\n }\r\n\r\n return sanitizedParams;\r\n}\r\n\r\n// 驗證輸入是否包含合法字符\r\nfunction IsValidInput(input) {\r\n // 排除特定字符,允許英文日文中文等其他符號,for路標名稱\r\n const disallowedCharsRegex = /[<>\\\"']/;\r\n return !disallowedCharsRegex.test(input);\r\n}\r\n\r\nlet typeText = {\r\n PenaltyAgencyList: \"裁處機關\",\r\n Regulations: \"法規\",\r\n Law: \"法條\",\r\n};\r\nlet fetchData = {\r\n FacilityName: \"\",\r\n County: \"\",\r\n PenaltyAgencyList: \"\",\r\n Regulations: \"\",\r\n Law: \"\",\r\n StartDate: null,\r\n EndDate: null,\r\n PageNumber: 1,\r\n PageSize: 5,\r\n UniformNo: \"\",\r\n};\r\n// StartDate: moment().subtract(180, 'd').format(\"YYYY-MM-DD\"),\r\n// \tEndDate: moment().format(\"YYYY-MM-DD\"),\r\n$(document).ready(() => {\r\n $(\"input[type=text]\").change(function () {\r\n let val = $(this).val();\r\n let name = $(this).attr(\"name\");\r\n fetchData[name] = val;\r\n });\r\n\r\n if (mobileMediaQuery.matches) {\r\n $(\".calendar_input\").attr(\"placeholder\", \"起 ─ 迄\");\r\n $(\".declaration_amt\").attr(\"placeholder\", \"半形數字可含小數點\");\r\n }\r\n\r\n FETCHCODE(fetchData);\r\n $(\".option_block\").delegate(\"li\", \"click\", function () {\r\n let this_ = $(this);\r\n let type = $(this_).parent(\".option_block\").data(\"type\");\r\n let text = $(this_).text().trim();\r\n $(this_).parent(\".option_block\").children(\"li\").removeClass(\"selected\");\r\n $(this_).parent(\".option_block\").parent(\".select_box\").children(\"input\").val(text);\r\n $(this_).addClass(\"selected\");\r\n if (type === \"Regulations\") {\r\n let list_html = '
';\r\n $(\".law_option_block\").empty();\r\n $(\"#penaltyLaw\").val(\"法條(全部)\");\r\n fetchData.Law = \"\";\r\n if (text.indexOf(\"全部\") === -1) {\r\n // --- 程式碼路徑:js/api/PenaltyCodeList.js ----- //\r\n FetchPenaltyCode(\"\", $(\".law_option_block\"), \"Law\", fetchData, text, \"\");\r\n } else {\r\n $(\".law_option_block\").append(list_html);\r\n }\r\n }\r\n if (type == \"PenaltyAgencyList\") {\r\n if (text == \"全部\") {\r\n fetchData[\"County\"] = \"\";\r\n } else {\r\n fetchData[\"County\"] = text;\r\n }\r\n } else {\r\n if (text == \"全部\") {\r\n fetchData[type] = \"\";\r\n } else {\r\n fetchData[type] = text;\r\n }\r\n }\r\n });\r\n $(\".down\").click(function () {\r\n let select = $(this).prev(\"select\");\r\n $(select).children(\"option\").slideDown();\r\n });\r\n $(\".select\").each(function () {\r\n let this_ = $(this);\r\n this_\r\n .children(\".select_box\")\r\n .children(\".option_block\")\r\n .children(\"li\")\r\n .each(function () {\r\n if ($(this).hasClass(\"selected\")) {\r\n this_.children(\".select_box\").children(\" input\").val($(this).text().trim());\r\n }\r\n });\r\n });\r\n\r\n $(\".select_down\").click(function (e) {\r\n e.stopPropagation();\r\n let options = $(this).next(\".option_block\");\r\n let open = $(this).hasClass(\"open\");\r\n $(\".select_down\").removeClass(\"open\");\r\n $(\".option_block\").slideUp();\r\n if (open) {\r\n $(this).removeClass(\"open\");\r\n options.slideUp();\r\n } else {\r\n $(this).addClass(\"open\");\r\n options.slideDown();\r\n }\r\n });\r\n let selected_start = fetchData.StartDate;\r\n let selected_end = fetchData.EndDate;\r\n let calendar_data = customCalendar(fetchData.StartDate, fetchData.EndDate);\r\n\r\n $(\".calendar > .calender_content\").delegate(\"table tbody td>button\", \"click\", function (e) {\r\n e.stopPropagation();\r\n if (selected_start === \"\") {\r\n selected_start = $(this).parent(\"td\").data(\"date\");\r\n } else if (selected_end === \"\") {\r\n selected_end = $(this).parent(\"td\").data(\"date\");\r\n } else if (selected_start !== \"\" && selected_end !== \"\") {\r\n selected_start = $(this).parent(\"td\").data(\"date\");\r\n selected_end = \"\";\r\n }\r\n let table_index = $(this).parent(\"td\").parent(\"tr\").parent(\"tbody\").parent(\"table\").data(\"index\");\r\n // --- 程式碼路徑:js/layout.js ----- //\r\n customCalendar(selected_start, selected_end, table_index);\r\n });\r\n $(\".clear_calendar\").click(function () {\r\n selected_start = fetchData.StartDate;\r\n selected_end = fetchData.EndDate;\r\n // --- 程式碼路徑:js/layout.js ----- //\r\n customCalendar(selected_start, selected_end);\r\n });\r\n $(\".confirm_calendar\").click(function (e) {\r\n e.stopPropagation();\r\n fetchData.StartDate = selected_start;\r\n fetchData.EndDate = selected_end;\r\n if (selected_start !== \"\" && selected_end !== \"\") {\r\n $(\".calendar_input\").val(`${selected_start} ─ ${selected_end}`);\r\n }\r\n $(\".calendar\").slideUp();\r\n $(\".calendar_icon\").removeClass(\"open\");\r\n });\r\n $(\".calendar\").delegate(\"table td>button\", \"click\", function (e) {\r\n let type = $(this).parents(\".calendar_input\").children(\"input\").data(\"type\");\r\n let value = $(this).parent(\"td\").data(\"date\");\r\n let selectedValue = fetchData[type] ? \"\" : value;\r\n\r\n $(this).parents(\".calendar\").slideUp(100);\r\n $(this).parents(\".calendar\").removeClass(\"open\");\r\n fetchData[type] = selectedValue;\r\n $(this).parents(\".calendar_input\").children(\"input\").val(selectedValue);\r\n if (type === \"StartDate\") {\r\n customCalendar(selectedValue, fetchData.EndDate ? fetchData.EndDate : \"\", selectedValue);\r\n }\r\n });\r\n $(\".input_calendar_range .input\").change(function (e) {\r\n let type = $(this).data(\"type\");\r\n if (type) {\r\n fetchData[type] = e.target.value;\r\n }\r\n });\r\n $(\".search_submit\").click(function () {\r\n let final_variable = [];\r\n fetchData.PageNumber = 1;\r\n fetchData.PageSize = 5;\r\n if (!fetchData.StartDate && !fetchData.EndDate) {\r\n fetchData.StartDate = moment().subtract(5, \"year\").format(\"YYYY-MM-DD\");\r\n fetchData.EndDate = moment().format(\"YYYY-MM-DD\");\r\n }\r\n\r\n if (fetchData.StartDate && fetchData.EndDate) {\r\n for (let data in fetchData) {\r\n if (fetchData[data] !== \"\") {\r\n let obj = {\r\n [data]: fetchData[data],\r\n };\r\n final_variable.push(data);\r\n }\r\n }\r\n const urlParams = new URLSearchParams();\r\n final_variable.forEach((v) => {\r\n urlParams.append(v, fetchData[v]);\r\n });\r\n\r\n const sanitizedParams = VerifyHrefContent(urlParams.entries());\r\n\r\n const url = `./sanctions.html?${sanitizedParams.toString()}`;\r\n window.location.href = url;\r\n } else {\r\n $(\".calendar_block\").append(`