{"version":3,"sources":["page/declaration.js"],"names":["VerifyHrefContent","params","sanitizedParams","URLSearchParams","key","value","IsValidInput","append","input","test","fetchData","ReportItem","ReportValue","ReportStartDate","ReportEndDate","PageNumber","PageSize","$","document","ready","customCalendar","mobileMediaQuery","matches","attr","click","this","prev","trigger","hasClass","removeClass","next","slideUp","addClass","slideDown","each","val","delegate","e","type","parents","children","data","parent","selectedValue","on","id","change","target","text","fadeIn","css","isNaN","parseFloat","link","i","localStorage","removeItem","window","location","href","toString"],"mappings":"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","file":"declaration.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 fetchData = {\r\n ReportItem: \"\",\r\n ReportValue: 0,\r\n ReportStartDate: \"\",\r\n ReportEndDate: \"\",\r\n PageNumber: 1,\r\n PageSize: 5,\r\n};\r\n\r\n$(document).ready(() => {\r\n customCalendar();\r\n if (mobileMediaQuery.matches) {\r\n $(\".calendar_input\").attr(\"placeholder\", \"起 - 迄\");\r\n $(\".declaration_amt\").attr(\"placeholder\", \"半形數字可含小數點\");\r\n }\r\n $(\".icon\").click(function () {\r\n $(this).prev(\"input\").trigger(\"click\");\r\n });\r\n\r\n $(\".calendar_icon\").click(function () {\r\n let open = $(this).hasClass(\"open\");\r\n if (open) {\r\n $(this).removeClass(\"open\");\r\n $(this).next(\".calendar\").slideUp();\r\n } else {\r\n $(this).addClass(\"open\");\r\n $(this).next(\".calendar\").slideDown();\r\n }\r\n });\r\n let selected_start = fetchData.ReportStartDate;\r\n let selected_end = fetchData.ReportEndDate;\r\n $(\"input\").each(function () {\r\n if ($(this).hasClass(\"declaration_amt\")) {\r\n $(this).val(0);\r\n } else {\r\n $(this).val(\"\");\r\n }\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 $(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 === \"ReportStartDate\") {\r\n customCalendar(selectedValue, fetchData.ReportEndDate ? fetchData.ReportEndDate : \"\", selectedValue);\r\n }\r\n });\r\n});\r\n\r\n$(\"input\").on(\"keyup\", function () {\r\n let id = $(this).attr(\"id\");\r\n let val = $(this).val();\r\n if (id) fetchData[id] = val;\r\n});\r\n$(\".clear_btn\").click(function () {\r\n fetchData.ReportStartDate = \"\";\r\n fetchData.ReportEndDate = \"\";\r\n fetchData.ReportItem = \"\";\r\n fetchData.ReportValue = 0;\r\n $(\".calendar_input\").children(\"input\").val(\"\");\r\n $(\"#ReportItem\").val(\"\");\r\n $(\"#ReportValue\").val(0);\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 fetchData.ReportItem = $(\"#ReportItem\").val();\r\n if (fetchData.ReportItem === \"\") {\r\n $(\".modal_notification .title\").text(\"請輸入污染物名稱或代碼\");\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n } else {\r\n if (fetchData.ReportValue === \"\") {\r\n $(\".modal_notification .title\").text(\"請輸入申報量\");\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n } else {\r\n if (isNaN(parseFloat(fetchData.ReportValue))) {\r\n $(\".modal_notification .title\").text(\"申報量欄位僅接受半形數字輸入,可包含小數點。請勿使用中文字符,請重新輸入。\");\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n } else {\r\n if (fetchData.ReportStartDate === \"\") {\r\n $(\".modal_notification .title\").text(\"請輸入申報日期\");\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n } else {\r\n let link = \"\";\r\n for (let i in fetchData) {\r\n if (i === \"PageSize\") {\r\n link += `${i}=${fetchData[i]}`;\r\n } else {\r\n link += `${i}=${fetchData[i]}&`;\r\n }\r\n }\r\n const sanitizedParams = VerifyHrefContent(new URLSearchParams(link));\r\n\r\n localStorage.removeItem(\"selected_items\");\r\n window.location.href = `./info.html?type=3&${sanitizedParams.toString()}`;\r\n }\r\n }\r\n }\r\n }\r\n});\r\n"]}