1(function() { 2 const logo = `\n <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 162.54 169.95">\n <g id="Layer_1-2" data-name="Layer 1">\n <g>\n <path class="cls-1" d="m3.28,40.88s43.43,3.68,77.03,35.24c5.06-3.01,35.24-29.09,79.9-36.87C143.03,28.51,117.86,10.14,80.31,0,54.14,4.74,22.08,25.55,3.28,40.88Z"/>\n <path class="cls-1" d="m0,52.36s38.56,4.27,75.39,34.42c0,6.15-.17,83.18-.17,83.18C18.87,152.97.41,130.2.41,130.2l-.41-77.85Z"/>\n <path class="cls-1" d="m162.54,52s-37.71,4.27-75.39,34.42c0,6.15.17,83.18.17,83.18,62.38-17.49,74.81-39.75,74.81-39.75l.41-77.84Z"/>\n </g>\n </g>\n </svg>\n `; 3 document.addEventListener("keydown", e => { 4 if (e.ctrlKey && e.altKey && e.key === "\uf8ff") { 5 localStorage.setItem("amplyEnabled", localStorage.getItem("amplyEnabled") === "true" ? false : true); 6 activateAmply(); 7 } 8 }); 9 let paramName = "amply"; 10 const urlParams = new URLSearchParams(window.location.search); 11 if (urlParams.has(paramName)) {
12 localStorage.setItem("amplyEnabled", urlParams.get(paramName) === "1" ? true : false); 13 } 14 let amplyWrapper; 15 const activateAmply = () => { 16 let amplyEnabled = localStorage.getItem("amplyEnabled") === "true"; 17 if (amplyEnabled) { 18 let amplyIsOpen = localStorage.getItem("amplyIsOpen"); 19 if (amplyIsOpen === null) { 20 amplyIsOpen = "true"; 21 localStorage.setItem("amplyIsOpen", amplyIsOpen); 22 } 23 amplyIsOpen = amplyIsOpen === "true"; 24 let isDragging = false; 25 let utokadInfo = localStorage.getItem("amplyMoreInfo") === "true"; 26 let amplyTheme = localStorage.getItem("amplyTheme"); 27 const themes = [ { 28 value: "Askas_Amply_origTheme", 29 label: "Original" 30 }, { 31 value: "Askas_Amply_darkTheme", 32 label: "M\xf6rkt" 33 }, { 34 value: "Askas_Amply_greenTheme", 35 label: "Slimegr\xf6n" 36 }, { 37 value: "Askas_Amply_julTheme", 38 label: "Jul" 39 }, { 40 value: "Askas_Amply_halloweenTheme", 41 label: "Halloween" 42 }, { 43 value: "Askas_Amply_easterTheme", 44 label: "P\xe5sk" 45 }, { 46 value: "Askas_Amply_brownTheme", 47 label: "Brun" 48 }, { 49 value: "Askas_Amply_calmBlueTheme", 50 label: "Lugn Bl\xe5" 51 }, { 52 value: "Askas_Amply_sunsetOrangeTheme", 53 label: "Solnedg\xe5ng" 54 }, { 55 value: "Askas_Amply_forestGreenTheme", 56 label: "Skog" 57 }, { 58 value: "Askas_Amply_oceanWaveTheme", 59 label: "Havsv\xe5g" 60 }, { 61 value: "Askas_Amply_sunnyYellowTheme", 62 label: "Solsken" 63 }, { 64 value: "Askas_Amply_pinkBlossomTheme", 65 label: "Rosa Blomma" 66 }, { 67 value: "Askas_Amply_midnightPurpleTheme", 68 label: "Midnatt" 69 }, { 70 value: "Askas_Amply_coffeeBrownTheme", 71 label: "Kaffe" 72 }, { 73 value: "Askas_Amply_svartGultLilaTheme", 74 label: "SvartGultLila" 75 }, { 76 value: "Askas_Amply_bubblegumTheme", 77 label: "Bubblegum" 78 }, { 79 value: "Askas_Amply_blackWeekTheme", 80 label: "Black Week" 81 } ]; 82 createAmply(); 83 async function loadAmplyData() { 84 try { 85 const sessionData = await fetchSessionData(); 86 const adminData = await fetchAdminData(sessionData.default_domain); 87 if (sessionData && adminData) { 88 displaySessionData(sessionData); 89 displayAdminData(adminData); 90 amplyWrapper.style.display = "inline"; 91 } else { 92 console.error("Failed to fetch session data or admin data."); 93 } 94 } catch (error) { 95 console.error("An error occurred:", error); 96 } 97 } 98 loadAmplyData(); 99 function createAmply() { 100 const style = document.createElement("style"); 101 style.innerHTML = `\n \n :root {\n --Askas_yellow: #fdbc52;\n --Askas_input-border-active: #0d79cb;\n --Askas_input-border-inactive: #C3C3C3;\n }\n \n .Askas_Amply_origTheme {\n --Askas_Amply_bg-color: #515380;\n --Askas_Amply_text-color: #F7F7F8;\n --Askas_Amply_border-color: #67699b;\n --Askas_Amply_logo-color: #fdbc52;\n }\n \n .Askas_Amply_darkTheme {\n --Askas_Amply_bg-color: #2a2b36;\n --Askas_Amply_text-color: #cccccc;\n --Askas_Amply_border-color: #434451;\n --Askas_Amply_logo-color: #fdbc52;\n }\n\n .Askas_Amply_greenTheme {\n --Askas_Amply_bg-color: #C2FFC7;\n --Askas_Amply_text-color: #62825D;\n --Askas_Amply_border-color: #526E48;\n --Askas_Amply_logo-color: #3b593f;\n }\n\n .Askas_Amply_julTheme {\n --Askas_Amply_bg-color: #a62323;
101\n --Askas_Amply_text-color: #ffffff;\n --Askas_Amply_border-color: #4fa14f;\n --Askas_Amply_logo-color: #ffcc00;\n }\n\n .Askas_Amply_halloweenTheme {\n --Askas_Amply_bg-color: #ff7518;\n --Askas_Amply_text-color: #000000;\n --Askas_Amply_border-color: #8b0000;\n --Askas_Amply_logo-color: #b5651d;\n }\n\n .Askas_Amply_easterTheme {\n --Askas_Amply_bg-color: #69397c;\n --Askas_Amply_text-color: #f1d907;\n --Askas_Amply_border-color: #c93cb2;\n --Askas_Amply_logo-color: #ff99ff;\n }\n\n .Askas_Amply_brownTheme {\n --Askas_Amply_bg-color: rgb(61, 42, 42);\n --Askas_Amply_text-color: #d8bd8a;\n --Askas_Amply_border-color: #b9610e;\n --Askas_Amply_logo-color: #e2b974;\n }\n\n .Askas_Amply_calmBlueTheme {\n --Askas_Amply_bg-color: #0077b6;\n --Askas_Amply_text-color: #ffffff;\n --Askas_Amply_border-color: #023e8a;\n --Askas_Amply_logo-color: #89c2d9;\n }\n\n .Askas_Amply_sunsetOrangeTheme {\n --Askas_Amply_bg-color: #ff6f61;\n --Askas_Amply_text-color: #ffffff;\n --Askas_Amply_border-color: #d84315;\n --Askas_Amply_logo-color: #ffd9c7;\n }\n\n .Askas_Amply_forestGreenTheme {\n --Askas_Amply_bg-color: rgb(62, 119, 62);\n --Askas_Amply_text-color: #f4f4f4;\n --Askas_Amply_border-color: #2e8b57;\n --Askas_Amply_logo-color: #aad4aa;\n }\n\n .Askas_Amply_oceanWaveTheme {\n --Askas_Amply_bg-color: #1e81b0;\n --Askas_Amply_text-color: #d1eef6;\n --Askas_Amply_border-color: #0a525e;\n --Askas_Amply_logo-color: #79d2de;\n }\n\n .Askas_Amply_sunnyYellowTheme {\n --Askas_Amply_bg-color: #ffd700;\n --Askas_Amply_text-color: #5a5a00;\n --Askas_Amply_border-color: #c7a400;\n --Askas_Amply_logo-color: #ffed9c;\n }\n\n .Askas_Amply_pinkBlossomTheme {\n --Askas_Amply_bg-color: #ffc1cc;\n --Askas_Amply_text-color: #5b2333;\n --Askas_Amply_border-color: #d490a7;\n --Askas_Amply_logo-color: #ff69b4;\n }\n\n .Askas_Amply_midnightPurpleTheme {\n --Askas_Amply_bg-color: #4b0082;\n --Askas_Amply_text-color: #e0e0e0;\n --Askas_Amply_border-color: #6a0dad;\n --Askas_Amply_logo-color: #9370db;\n }\n\n .Askas_Amply_coffeeBrownTheme {\n --Askas_Amply_bg-color: #6f4e37;\n --Askas_Amply_text-color: #ffffff;\n --Askas_Amply_border-color: #3d2b1f;\n --Askas_Amply_logo-color: #d2b48c;\n }\n\n .Askas_Amply_svartGultLilaTheme {\n --Askas_Amply_bg-color: #000000;\n --Askas_Amply_text-color: #f9e2af;\n --Askas_Amply_border-color: #cba6f7;\n --Askas_Amply_logo-color: #f9e2af;\n }\n\n .Askas_Amply_bubblegumTheme {\n --Askas_Amply_bg-color: #7BD3EA;\n --Askas_Amply_text-color: #fdffa5;\n --Askas_Amply_border-color: #A1EEBD;\n --Askas_Amply_logo-color: #F6D6D6;\n }\n \n .Askas_Amply_blackWeekTheme {\n --Askas_Amply_bg-color: #1a1a1a;\n --Askas_Amply_text-color: #ffffff;\n --Askas_Amply_border-color: #ffcc00;\n --Askas_Amply_logo-color: #ffcc00;\n }\n \n #Askas_Amply_AmplyWrapper * {\n font-family: Arial, Helvetica, sans-serif;\n }\n\n #Askas_Amply_AmplyWrapper {\n all: unset;\n position: fixed;\n z-index: 9999999999;\n user-select: none;\n bottom: 80px;\n left: 10px;\n display:none;\n font-size: 14px;\n }\n\n #Askas_Amply_AmplyWrapper #Askas_Amply_dataDisplay,\n #Askas_Amply_AmplyWrapper #Askas_Amply_mover_content {\n font-size: 14px;\n }\n\n\n #Askas_Amply_AmplyWrapper svg {\n all: unset;\n }\n \n #Askas_Amply_dataDisplay .Askas_Amply_closeBtn {\n background-color: var(--Askas_Amply_bg-color);\n display: flex;\n justify-content: center;\n align-items: center;\n padding-bottom: 4px;\n } \n \n #Askas_Amply_dataDisplay {\n display: flex;\n flex-direction: column;\n background-color: var(--Askas_Amply_bg-color);\n color: var(--Askas_Amply_text-color);\n padding: 8px 16px 24px 16px;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);\n z-index: 1000;\n font-family: Poppins, sans-serif;\n border-radius: 10px 10px 10px 0;\n min-width: 175px;\n max-width: 200px;\n min-height: 185px;\n scrollbar-width: none;\n white-space: nowrap;\n }\n #Askas_Amply_dataDisplay.settingsOpen {\n border-radius: 10px 0 0 0;\n }\n \n #Askas_Amply_dataDisplay::-webkit-scrollbar {\n display: none;\n }\n \n #Askas_Amply_dataDisplay.closed {\n display: none;\n }\n \n #Askas_Amply_output {\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n #Askas_Amply_output span {\n white-space: nowrap;\n font-weight: 500;\n }\n \n #Askas_Amply_output .request_info {\n margin-top: -8px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--Askas_Amply_border-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n \n #Askas_Amply_output .general_info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow: hidden;\n }\n \n #Askas_Amply_mover {\n position: absolute;\n background-color: var(--Askas_Amply_bg-color);\n color: var(--Askas_Amply_text-color);\n width: 50px;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);\n border-radius: 0 0 10px 10px;\n transition: width 0.2s ease-in-out, height 0.2s ease-in-out;\n max-height: 50px;\n min-height: 50px;\n overflow-y: hidden;\n scrollbar-width: none;\n white-space: nowrap;\n padding-bottom: 4px;\n }\n #Askas_Amply_mover::-webkit-scrollbar {\n display: none;\n }\n \n .Askas_Amply_logo {\n width: 37px;\n position: absolute;\n top: 6px;\n left: 6px;\n cursor: grab;\n transition: top 0.2s ease-in-out;\n }\n #Askas_Amply_AmplyWrapper.amplyMoreInfo #Askas_Amply_dataDisplay.closed + #Askas_Amply_mover:has(#Askas_Amply_mover_content > *:nth-child(2)) .Askas_Amply_logo {\n top: 16px;\n }\n\n .Askas_Amply_logo .cls-1 {\n fill: var(--Askas_Amply_logo-color);\n }\n \n #Askas_Amply_mover_content {\n margin-left: 53px;\n overflow: auto;\n white-space: nowrap;\n display: flex;\n flex-direction: column;\n scrollbar-width: none;\n padding: 4px 0;\n }\n #Askas_Amply_mover_content::-webkit-scrollbar {\n display: none;\n }\n \n #Askas_Amply_mover_content .Askas_Amply_mover_content-currency-display,\n #Askas_Amply_mover_content .Askas_Amply_mover_content-theme-display {\n margin-top: 4px;\n }\n \n #Askas_Amply_AmplyWrapper #Askas_Amply_dataDisplay.closed + #Askas_Amply_mover {\n border-radius: 10px;\n width: 50px;\n max-width: 50px;\n max-height: 50px;\n }\n #Askas_Amply_AmplyWrapper.amplyMoreInfo #Askas_Amply_dataDisplay.closed + #Askas_Amply_mover {\n width: 250px;\n max-width: 250px;\n max-height: unset;\n }\n \n #Askas_Amply_links {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-bottom: 8px;\n }\n \n #Askas_Amply_links a,\n #Askas_Amply_mover_content a {\n font-size: 15px;\n color: var(--Askas_Amply_text-color);\n padding: 8px 0;\n font-weight: 600;\n text-transform: capitalize;\n white-space: nowrap;\n scrollbar-width: none;\n overflow-x: hidden;\n }\n #Askas_Amply_links a::-webkit-scrollbar, \n #Askas_Amply_mover_content a::-webkit-scrollbar {\n display: none;\n }\n\n #Askas_Amply_links a:hover,\n #Askas_Amply_mover_content a:hover {\n text-decoration: underline;\n text-underline-offset: 7px;\n }\n \n #Askas_Amply_links .link-admin {\n text-transform: unset;\n }\n \n .Askas_Amply_settings-toggle {\n display: flex;\n justify-content: flex-end;\n position: absolute;\n bottom: 10px;\n right: 10px;\n }\n\n #Askas_Amply_AmplyWrapper .Askas_Amply_settings-toggle svg,\n #Askas_Amply_AmplyWrapper .close-widget svg {\n fill: var(--Askas_Amply_text-color);\n cursor: pointer;\n transition: transform 0.2s ease-in-out;\n }\n #Askas_Amply_AmplyWrapper .close-widget:hover svg,\n #Askas_Amply_AmplyWrapper .Askas_Amply_settings-toggle:hover svg {\n transform: scale(1.3);\n }\n \n #Askas_Amply_settingsDisplay {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background-color: var(--Askas_Amply_bg-color);\n border-radius: 10px 10px 10px 0;\n transform: translateX(0);\n z-index: -1;\n transition: left 0.2s ease-out;\n display: flex;\n justify-content: center;\n }\n \n #Askas_Amply_dataDisplay.settingsOpen #Askas_Amply_settingsDisplay {\n left: 100%;\n border-radius: 0px 10px 10px 0;\n }\n \n #Askas_Amply_dataDisplay .Askas_Amply_settings-wrapper {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 8px 16px;\n width: 175px;\n white-space: wrap;\n }\n \n .Askas_Amply_settings-wrapper div {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .Askas_Amply_settings-wrapper .close-widget {\n position: absolute;\n bottom: 6px;\n right: 10px;\n cursor: pointer;\n justify-content: flex-start;\n }\n\n .Askas_Amply_settings-wrapper .close-widget label {\n margin-right: 5px;\n cursor: pointer;\n padding-bottom: 4px;\n border-bottom: 1px solid transparent;\n transition: border-color 0.2s ease-in-out;\n }\n\n .Askas_Amply_settings-wrapper .close-widget:hover label {\n border-color: var(--Askas_Amply_text-color);\n }\n \n #Askas_Amply_AmplyWrapper h4 {\n font-size: 15px;\n margin: 8px 0 4px 0;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--Askas_Amply_border-color);\n }\n \n .Askas_Amply_settings-wrapper #Askas_Amply_theme-selector {\n padding: 4px;\n border: none;\n text-align: center;\n outline: none;\n appearance: none;\n box-shadow: none;\n cursor: pointer;\n width: unset !important;\n max-width: 50%;\n line-height: unset;\n height: unset;\n
101 border-radius: 4px;\n box-shadow: 0 0 0 1px transparent;\n transition: unset;\n }\n .Askas_Amply_settings-wrapper #Askas_Amply_theme-selector:hover {\n box-shadow: 0 0 0 1px #000;\n }\n \n .Askas_Amply_settings-wrapper .extended-view .Askas_Amply_switch {\n align-self: flex-end;\n }\n \n .Askas_Amply_switch {\n position: relative;\n display: inline-block;\n width: 35px;\n height: 20px;\n }\n \n .Askas_Amply-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--Askas_input-border-inactive);\n border-radius: 15px;\n box-shadow: 0 0 0 1px transparent;\n }\n .Askas_Amply-slider:hover {\n box-shadow: 0 0 0 1px #000;\n }\n .Askas_Amply-slider:before {\n position: absolute;\n content: "";\n height: 17px;\n width: 17px;\n left: 2px;\n top: 1.5px;\n background-color: #fff;\n transition: all 0.2s ease-in-out;\n border-radius: 50%;\n }\n .Askas_Amply-slider.active {\n background-color: var(--Askas_Amply_logo-color);\n }\n .Askas_Amply-slider.active::before {\n transform: translateX(14px);\n }\n\n @media screen and (max-width: 768px) {\n #Askas_Amply_AmplyWrapper {\n display: none !important;\n }\n }\n `; 102 const wrapper = document.createElement("div"); 103 wrapper.id = "Askas_Amply_AmplyWrapper"; 104 wrapper.classList.add(amplyTheme || "Askas_Amply_origTheme"); 105 if (utokadInfo) { 106 wrapper.classList.add("amplyMoreInfo"); 107 } 108 const dataDisplay = document.createElement("div"); 109 dataDisplay.id = "Askas_Amply_dataDisplay"; 110 dataDisplay.classList = amplyIsOpen ? "" : "closed"; 111 dataDisplay.innerHTML = `\n <div id="Askas_Amply_links"></div>\n <div id="Askas_Amply_output">Loading data...</div>\n <span class="Askas_Amply_settings-toggle">\n <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#F7F7F8"><path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"/></svg>\n </span>\n `; 112 const mover = document.createElement("div"); 113 mover.id = "Askas_Amply_mover"; 114 const moverLogo = document.createElement("div"); 115 moverLogo.innerHTML = logo; 116 moverLogo.classList.add("Askas_Amply_logo"); 117 moverLogo.alt = "logotype Ask\xe5s"; 118 const settingsDisplay = document.createElement("div"); 119 settingsDisplay.id = "Askas_Amply_settingsDisplay"; 120 settingsDisplay.innerHTML = `\n <div class="Askas_Amply_settings-wrapper">\n <h4>
120Amply-inst\u00E4llningar</h4>\n <div class="theme-selector">\n <label for="Askas_Amply_theme-selector">F\u00E4rgtema</label>\n <select id="Askas_Amply_theme-selector">\n ${themes.map(theme => `<option value="${theme.value}" ${theme.value === amplyTheme ? "selected" : ""}>${theme.label}</option>`).join("")}\n </select>\n </div>\n <div class="extended-view">\n <label for="Askas_Amply_settings-checkbox">Minimera</label>\n <div class="Askas_Amply_switch">\n <span id="Askas_Amply_settings-checkbox" class="Askas_Amply-slider ${utokadInfo ? "" : "active"}"></span>\n </div>\n </div>\n <div class="close-widget">\n <label for="Askas_Amply_closeBtn">Inaktivera widget</label>\n <span class="Askas_Amply_closeBtn">\n <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#333"><path d="m336-280 144-144 144 144 56-56-144-144 144-144-56-56-144 144-144-144-56 56 144 144-144 144 56 56ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>\n </span>\n </div>\n </div>\n `; 121 dataDisplay.appendChild(settingsDisplay); 122 document.head.appendChild(style); 123 document.body.appendChild(wrapper); 124 wrapper.appendChild(dataDisplay); 125 wrapper.appendChild(mover); 126 mover.appendChild(moverLogo); 127 amplyWrapper = document.getElementById("Askas_Amply_AmplyWrapper"); 128 applySavedPosition(); 129 } 130 async function fetchSessionData() { 131 try { 132 const response = await fetch("/cgi-bin/ibutik/API.fcgi?funk=get_session_data"); 133 if (!response.ok) throw new Error(`Error: ${response.statusText}`); 134 const data = await response.json(); 135 return data; 136 } catch (error) { 137 console.log(error.message); 138 return null; 139 } 140 } 141 async function fetchAdminData(domain) { 142 try { 143 const response = await fetch(`${domain ? `https://${domain}` : ""}/webbadmin?funk=get_session_data_json&url=` + encodeURIComponent(window.location.pathname + window.location.search), { 144 method: "GET", 145 credentials: "include" 146 }); 147 if (!response.ok) throw new Error(`Error: ${response.statusText}`); 148 const adminData = await response.json(); 149 return adminData; 150 } catch (error) { 151 console.log(error.message); 152 return null; 153 } 154 } 155 function displaySessionData(data) { 156 const output = document.getElementById("Askas_Amply_output"); 157 output.innerHTML = ""; 158 const generalInfo = document.createElement("div"); 159 generalInfo.classList.add("general_info"); 160 output.appendChild(generalInfo); 161 const infoItems = [ { 162 label: "Spr\xe5k", 163 value: data.language 164 }, { 165 label: "Valuta", 166 value: `${data.currency}, ${data.vat_type}` 167 }, { 168 label: "Tema", 169 value: data.theme 170 }, { 171 label: "Kundkategori", 172 value: data.customer_category_id 173 }, { 174 label: "Prislista", 175 value: data.customer_type 176 } ];
177 infoItems.forEach(item => { 178 if (item.value) { 179 const span = document.createElement("span"); 180 const strong = document.createElement("strong"); 181 strong.textContent = `${item.label}: `; 182 span.appendChild(strong); 183 span.appendChild(document.createTextNode(item.value)); 184 generalInfo.appendChild(span); 185 } 186 }); 187 const mover = document.getElementById("Askas_Amply_mover"); 188 const moverContent = document.createElement("div"); 189 moverContent.id = "Askas_Amply_mover_content"; 190 moverContent.innerHTML = `\n <span class="Askas_Amply_mover_content-currency-display">${data.language}, ${data.currency}, ${data.vat_type} - ${data.theme}</span>\n \n `; 191 mover.appendChild(moverContent); 192 } 193 function displayAdminData(data) { 194 const links = document.getElementById("Askas_Amply_links"); 195 const output = document.getElementById("Askas_Amply_output"); 196 const moverContent = document.getElementById("Askas_Amply_mover_content"); 197 links.innerHTML = ""; 198 const renderProductLink = () => { 199 const productLink = document.createElement("a"); 200 productLink.classList.add("link-product"); 201 productLink.href = path; 202 productLink.target = "_blank"; 203 productLink.textContent = entityDisplay; 204 links.appendChild(productLink); 205 }; 206 const renderAdminLink = () => { 207 const adminLink = document.createElement("a"); 208 adminLink.classList.add("link-admin"); 209 adminLink.href = `/webbadmin`; 210 adminLink.target = "_blank"; 211 adminLink.textContent = "G\xe5 till Admin"; 212 links.appendChild(adminLink); 213 document.querySelector(".Askas_Amply_logo").style.top = "6px"; 214 }; 215 const version = data.version; 216 if (version) { 217 const versionSpan = document.createElement("span"); 218 versionSpan.innerHTML = `<strong>Version:</strong> ${version}`; 219 output.insertBefore(versionSpan, output.firstChild); 220 } 221 if (data.request?.info?.length) { 222 const requestInfo = document.createElement("div"); 223 requestInfo.classList.add("request_info"); 224 output.insertBefore(requestInfo, output.firstChild); 225 for (const item of data.request.info) { 226 const itemSpan = document.createElement("strong"); 227 const itemData = document.createElement("span"); 228 itemSpan.classList.add("Askas_Amply_product_info_item"); 229 itemData.classList.add("Askas_Amply_product_info_data"); 230 itemSpan.textContent = `${item.name}: `; 231 itemData.textContent = item.value; 232 requestInfo.appendChild(itemSpan); 233 itemSpan.appendChild(itemData); 234 } 235 } 236 let reqType = data.request?.type; 237 let entityDisplay = `${reqType}: ${data.request?.key}`; 238 let id = data.request?.key; 239 let path = data.request?.adminLink; 240 if (reqType == "ovriga") { 241 reqType = data.request.key; 242 entityDisplay = reqType; 243 } else if (reqType == "cms") { 244 entityDisplay = `Webbsida: ${data.request.key}`; 245 } else if (reqType == "startsida") { 246 entityDisplay = "G\xe5 till startsidor"; 247 } 248 if (!id) { 249 if (reqType == "startsida") { 250 renderProductLink(); 251 } else { 252 renderAdminLink(); 253 } 254 } else if (!path) { 255 renderAdminLink(); 256 } else { 257 renderProductLink(); 258 } 259 if (reqType && path) { 260 const moverProductLink = document.createElement("a"); 261 moverProductLink.classList.add("link-product"); 262 moverProductLink.href = path; 263 moverProductLink.target = "_blank"; 264 moverProductLink.textContent = entityDisplay; 265 moverContent.insertBefore(moverProductLink, moverContent.firstChild); 266 } else if (reqType && !path) { 267 const moverAdminLink = document.createElement("a"); 268 moverAdminLink.classList.add("link-admin"); 269 moverAdminLink.href = `/webbadmin`; 270 moverAdminLink.target = "_blank"; 271 moverAdminLink.textContent = "G\xe5 till Admin"; 272 moverContent.insertBefore(moverAdminLink, moverContent.firstChild); 273 } 274 } 275 const openOrClose = () => { 276 const wrapper = document.getElementById("Askas_Amply_dataDisplay"); 277 if (amplyIsOpen) { 278 wrapper.classList.add("closed"); 279 localStorage.setItem("amplyIsOpen", "false"); 280 } else { 281 wrapper.classList.remove("closed"); 282 localStorage.setItem("amplyIsOpen", "true"); 283 } 284 amplyIsOpen = !amplyIsOpen; 285 }; 286 const amplyLogo = document.querySelector(".Askas_Amply_logo"); 287 amplyLogo.addEventListener("mousedown", function(e) { 288 e.preventDefault(); 289 isDragging = true; 290 offsetX = e.clientX - amplyWrapper.getBoundingClientRect().left; 291 offsetY = e.clientY - amplyWrapper.getBoundingClientRect().top; 292 maxX = window.innerWidth - amplyWrapper.offsetWidth; 293 maxY = window.innerHeight - amplyWrapper.offsetHeight; 294 }); 295 document.addEventListener("mouseup", function() { 296 isDragging = false;
297 localStorage.setItem("amplyLeft", amplyWrapper.style.left || "0px"); 298 localStorage.setItem("amplyBottom", amplyWrapper.style.bottom || "50px"); 299 }); 300 document.addEventListener("mousemove", function(e) { 301 const dataDisplay = document.getElementById("Askas_Amply_dataDisplay"); 302 const mover = document.getElementById("Askas_Amply_mover"); 303 if (isDragging) { 304 const amplyWidth = amplyWrapper.offsetWidth; 305 const moverWidth = dataDisplay.classList.contains("closed") ? mover.offsetWidth : amplyWidth; 306 const currentMaxX = window.innerWidth - moverWidth; 307 const currentMaxY = window.innerHeight - amplyWrapper.offsetHeight; 308 let x = e.clientX - offsetX; 309 let y = window.innerHeight - e.clientY + 30; 310 x = Math.max(0, Math.min(x, currentMaxX)); 311 y = Math.max(50, Math.min(y, currentMaxY)); 312 amplyWrapper.style.left = `${x}px`; 313 amplyWrapper.style.bottom = `${y}px`; 314 } 315 }); 316 document.addEventListener("DOMContentLoaded", () => { 317 const wrapper = document.getElementById("Askas_Amply_dataDisplay"); 318 let amplyIsOpen = localStorage.getItem("amplyIsOpen"); 319 if (amplyIsOpen === null) { 320 amplyIsOpen = "false"; 321 localStorage.setItem("amplyIsOpen", amplyIsOpen); 322 } 323 amplyIsOpen = amplyIsOpen === "true"; 324 if (amplyIsOpen) { 325 wrapper.classList.remove("closed"); 326 } else { 327 wrapper.classList.add("closed"); 328 } 329 applySavedPosition(); 330 }); 331 function applySavedPosition() { 332 const savedLeft = localStorage.getItem("amplyLeft"); 333 const savedBottom = localStorage.getItem("amplyBottom"); 334 if (savedLeft && savedBottom) { 335 amplyWrapper.style.left = savedLeft.includes("px") ? savedLeft : `${savedLeft}px`; 336 amplyWrapper.style.bottom = savedBottom.includes("px") ? savedBottom : `${savedBottom}px`; 337 } 338 } 339 document.getElementById("Askas_Amply_mover").addEventListener("dblclick", openOrClose); 340 const themeSelector = document.getElementById("Askas_Amply_theme-selector"); 341 themeSelector.addEventListener("change", e => { 342 themes.forEach(theme => amplyWrapper.classList.remove(theme.value)); 343 amplyWrapper.classList.add(e.target.value); 344 localStorage.setItem("amplyTheme", e.target.value); 345 }); 346 document.querySelector(".Askas_Amply-slider").addEventListener("click", () => { 347 const slider = document.querySelector(".Askas_Amply-slider"); 348 slider.classList.toggle("active"); 349 utokadInfo = !utokadInfo; 350 localStorage.setItem("amplyMoreInfo", utokadInfo); 351 amplyWrapper.classList.toggle("amplyMoreInfo"); 352 }); 353 const settingsBtn = document.querySelector(".Askas_Amply_settings-toggle"); 354 settingsBtn.addEventListener("click", () => { 355 document.getElementById("Askas_Amply_dataDisplay").classList.toggle("settingsOpen"); 356 }); 357 const closeBtn = document.querySelector(".Askas_Amply_closeBtn svg"); 358 closeBtn.addEventListener("click", () => { 359 amplyWrapper.remove(); 360 localStorage.removeItem("amplyEnabled"); 361 const url = new URL(window.location); 362 if (url.searchParams.has("amply")) { 363 url.searchParams.delete("amply"); 364 window.history.replaceState({}, document.title, url.toString()); 365 } 366 }); 367 } else if (amplyWrapper) { 368 amplyWrapper.remove(); 369 } 370 }; 371 window.onload = function() { 372 activateAmply(); 373 }; 374})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.