{"version":3,"sources":["page/index.js"],"names":["VerifyHrefContent","params","sanitizedParams","URLSearchParams","key","value","IsValidInput","append","input","test","$","document","ready","column","async","checkWaste","val","text","fetch","then","res","json","waste","filter","d","click","fadeOut","on","e","fadeIn","css","valid","Type","length","url","toString","localStorage","removeItem","window","location","href","stopPropagation","this","type","data","removeClass","parent","addClass","attr","focus","blur","keyCode"],"mappings":"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","file":"index.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\n$(document).ready(() => {\r\n let column = \"FacilityName\";\r\n async function checkWaste(key, val) {\r\n $(\".modal_notification .text\").text(``);\r\n let data = await fetch(\"js/json/waste.json\").then((res) => res.json());\r\n let filter = data.waste.filter((d) => d[key] === val);\r\n return filter;\r\n }\r\n $(\"body\").click(function () {\r\n $(\".list_dropdown\").fadeOut();\r\n });\r\n $(\".search_btn\").on(\"click\", async function (e) {\r\n let val = $(\".input_button\").val();\r\n if (val == \"\") {\r\n $(\".modal_notification .title\").text(\"請輸入列管事業名稱或代碼\");\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n $(\"body\").css(\"overflow\", \"hidden\");\r\n } else {\r\n let valid = true;\r\n if (column === \"WasteItem\" || column === \"WasteItemCode\") {\r\n let Type = column === \"WasteItem\" ? \"Waste_no\" : \"Waste_name\";\r\n let check = await checkWaste(Type, val);\r\n if (check.length === 0) {\r\n valid = false;\r\n $(\".modal_notification .title\").text(`查無此${column === \"WasteItem\" ? \"廢棄物代碼\" : \"廢棄物名稱\"}`);\r\n if (column === \"WasteItem\") {\r\n $(\".modal_notification .text\").text(`依廢棄物代碼查詢範例:「D-1801」`);\r\n }\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n $(\"body\").css(\"overflow\", \"hidden\");\r\n }\r\n }\r\n if (valid) {\r\n const sanitizedParams = VerifyHrefContent([\r\n [\"type\", \"1\"],\r\n [\"keyword\", val],\r\n [\"column\", column],\r\n [\"PageNumber\", \"1\"],\r\n [\"PageSize\", \"5\"],\r\n ]);\r\n\r\n // const url = `./info.html?${sanitizedParams.toString()}`;\r\n const url = `./info.html?${sanitizedParams.toString()}`;\r\n localStorage.removeItem(\"selected_items\");\r\n window.location.href = url;\r\n }\r\n }\r\n });\r\n $(\".dropdown >button\").click(function (e) {\r\n e.stopPropagation();\r\n let show = $(\".select_input_block .list_dropdown\").css(\"display\");\r\n if (show === \"none\") {\r\n $(\".select_input_block .list_dropdown\").fadeIn();\r\n } else {\r\n $(\".select_input_block .list_dropdown\").fadeOut();\r\n }\r\n });\r\n $(\".list_dropdown li>button\").click(function (e) {\r\n e.stopPropagation();\r\n let text = $(this).text();\r\n let type = $(this).data(\"column\");\r\n $(\".list_dropdown li\").removeClass(\"selected\");\r\n $(this).parent(\"li\").addClass(\"selected\");\r\n $(\".dropdown .title\").text(text);\r\n $(\".list_dropdown\").fadeOut();\r\n $(\".input_button\").attr(\"placeholder\", text);\r\n column = type;\r\n });\r\n $(\".input_button\").focus(function () {\r\n $(\".select_input_block\").css(\"border\", \"2px solid #dd4e21\");\r\n });\r\n $(\".input_button\").blur(function () {\r\n $(\".select_input_block\").css(\"border\", \"1px solid #061d24\");\r\n });\r\n\r\n $(\".input_button\").on(\"keyup\", async function (e) {\r\n let val = $(this).val();\r\n if (e.keyCode === 13) {\r\n if (val == \"\") {\r\n $(\".modal_notification .title\").text(\"請輸入列管事業名稱或代碼\");\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n $(\"body\").css(\"overflow\", \"hidden\");\r\n } else {\r\n let valid = true;\r\n if (column === \"WasteItem\" || column === \"WasteItemCode\") {\r\n let Type = column === \"WasteItem\" ? \"Waste_no\" : \"Waste_name\";\r\n let check = await checkWaste(Type, val);\r\n if (check.length === 0) {\r\n valid = false;\r\n $(\".modal_notification .title\").text(`查無此${column === \"WasteItem\" ? \"廢棄物代碼\" : \"廢棄物名稱\"}`);\r\n if (column === \"WasteItem\") {\r\n $(\".modal_notification .text\").text(`依廢棄物代碼查詢範例:「D-1801」`);\r\n }\r\n $(\".modal_notification\").fadeIn();\r\n $(\".modal_notification\").css(\"display\", \"flex\");\r\n $(\"body\").css(\"overflow\", \"hidden\");\r\n }\r\n }\r\n if (valid) {\r\n const sanitizedParams = VerifyHrefContent([\r\n [\"type\", \"1\"],\r\n [\"keyword\", val],\r\n [\"column\", column],\r\n [\"PageNumber\", \"1\"],\r\n [\"PageSize\", \"5\"],\r\n ]);\r\n\r\n const url = `./info.html?${sanitizedParams.toString()}`;\r\n\r\n localStorage.removeItem(\"selected_items\");\r\n window.location.href = url;\r\n }\r\n }\r\n }\r\n });\r\n});\r\n"]}