325 lines
		
	
	
		
			No EOL
		
	
	
		
			12 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			325 lines
		
	
	
		
			No EOL
		
	
	
		
			12 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| $(function () {
 | |
|     var sound = new Audio('sound.mp3');
 | |
|     sound.volume = 0.8;
 | |
|     window.addEventListener('message', function (event) {
 | |
|         if (event.data.action == 'open') {
 | |
| 
 | |
|             TranslateX = localStorage.getItem("MenuPositionX")
 | |
|             TranslateY = localStorage.getItem("MenuPositionY")
 | |
|             if (TranslateX > -((screen.width-300)/2)){
 | |
|             TranslateX = +TranslateX + +50
 | |
|             }
 | |
|             else{
 | |
|                 TranslateX = +TranslateX - +50
 | |
|             }
 | |
|             Translate = 'translate(' + TranslateX + 'px , ' + TranslateY + 'px)'
 | |
| 
 | |
|             var number = Math.floor((Math.random() * 1000) + 1);
 | |
| 
 | |
|             $('.toast').append(`
 | |
|             <div class="wrapper-${number}" id="wrapper-${number}">
 | |
|                 <div class="notification_main-${number}">
 | |
|                     <div class="title-${number}"></div>
 | |
|                     <div class="text-${number}">
 | |
|                         ${event.data.message}
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 <div class="progress-${number}"></div>
 | |
|             </div>`)
 | |
| 
 | |
|             $(`.wrapper-${number}`).css({
 | |
|                 "margin-bottom": "10px",
 | |
|                 "width": "275px",
 | |
|                 "margin": "0px 0 0 -180px",
 | |
|                 "border-radius": "10px",
 | |
|                 "transform": Translate,
 | |
|                 "opacity": "0",
 | |
|             })
 | |
|             $('.notification_main-'+number).addClass('main')
 | |
|             $('.text-'+number).css({
 | |
|                 "font-size": "14px"
 | |
|             })
 | |
|             $(`.progress-${number}`).css({
 | |
|                 "position": "absolute",
 | |
|                 "bottom":"6px",
 | |
|                 "left": "6px",
 | |
|                 "height": "6px",
 | |
|                 "width": "95%",
 | |
|                 "border-radius": "3px",
 | |
|                 "transition": "0.2s",
 | |
|             })
 | |
| 
 | |
|             var width = 95;
 | |
|                 var id = setInterval(frame, event.data.time/100);
 | |
|                 function frame() {
 | |
|                     if (width === 0) {
 | |
|                     clearInterval(id);
 | |
|                     } 
 | |
|                     else {
 | |
|                     width = width - 1; 
 | |
|                     $(`.progress-${number}`).css("width" , width + '%');
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|             if (event.data.type == 'success') {
 | |
|                 $(`.title-${number}`).html(event.data.title).css({
 | |
|                     "font-size": "16px",
 | |
|                     "font-weight": "600",
 | |
|                     "color": "#47cf73",
 | |
|                 })
 | |
|                 $(`.notification_main-${number}`).addClass('success-icon')
 | |
|                 $(`.wrapper-${number}`).addClass('success')
 | |
|                 $(`.progress-${number}`).css({
 | |
|                     "background": "#47cf73",
 | |
|                 })
 | |
|                 
 | |
|                 if (TranslateY > ((screen.height-480)/2)){
 | |
|                     $(`.wrapper-${number}`).css({
 | |
|                         "margin": "0 0"+ -(+((document.getElementById(`wrapper-${number}`).offsetHeight)*2) + +8) +"px -180px",
 | |
|                     })
 | |
|                 }
 | |
|                 else {
 | |
|                 $(`.wrapper-${number}`).css({
 | |
|                     "margin": "0 0 8px -180px",
 | |
|                 })
 | |
|                 }
 | |
| 
 | |
|                 if (event.data.audio) {
 | |
|                     sound.play();
 | |
|                 }
 | |
|             } else if (event.data.type == 'info') {
 | |
|                 $(`.title-${number}`).html(event.data.title).css({
 | |
|                     "font-size": "16px",
 | |
|                     "font-weight": "600",
 | |
|                     "color": "#2f83ff",
 | |
|                 })
 | |
|                 $(`.notification_main-${number}`).addClass('info-icon')
 | |
|                 $(`.wrapper-${number}`).addClass('info')
 | |
|                 $(`.progress-${number}`).css({
 | |
|                     "background": "#2f83ff",
 | |
|                 })
 | |
|                 
 | |
|                 if (TranslateY > ((screen.height-480)/2)){
 | |
|                     $(`.wrapper-${number}`).css({
 | |
|                         "margin": "0 0"+ -(+((document.getElementById(`wrapper-${number}`).offsetHeight)*2) + +8) +"px -180px",
 | |
|                     })
 | |
|                 }
 | |
|                 else {
 | |
|                 $(`.wrapper-${number}`).css({
 | |
|                     "margin": "0 0 8px -180px",
 | |
|                 })
 | |
|                 }
 | |
| 
 | |
|                 if (event.data.audio) {
 | |
|                     sound.play();
 | |
|                 }
 | |
|             } else if (event.data.type == 'error') {
 | |
|                 $(`.title-${number}`).html(event.data.title).css({
 | |
|                     "font-size": "16px",
 | |
|                     "font-weight": "600",
 | |
|                     "color": "#dc3545",
 | |
|                 })
 | |
|                 $(`.notification_main-${number}`).addClass('error-icon')
 | |
|                 $(`.wrapper-${number}`).addClass('error')
 | |
|                 $(`.progress-${number}`).css({
 | |
|                     "background": "#dc3545",
 | |
|                 })
 | |
|                 
 | |
|                 if (TranslateY > ((screen.height-480)/2)){
 | |
|                     $(`.wrapper-${number}`).css({
 | |
|                         "margin": "0 0"+ -(+((document.getElementById(`wrapper-${number}`).offsetHeight)*2) + +8) +"px -180px",
 | |
|                     })
 | |
|                 }
 | |
|                 else {
 | |
|                 $(`.wrapper-${number}`).css({
 | |
|                     "margin": "0 0 8px -180px",
 | |
|                 })
 | |
|                 }
 | |
|                 
 | |
|                 if (event.data.audio) {
 | |
|                     sound.play();
 | |
|                 }
 | |
|             } else if (event.data.type == 'warning') {
 | |
|                 $(`.title-${number}`).html(event.data.title).css({
 | |
|                     "font-size": "16px",
 | |
|                     "font-weight": "600",
 | |
|                     "color": "#ffc107",
 | |
|                 })
 | |
|                 $(`.notification_main-${number}`).addClass('warning-icon')
 | |
|                 $(`.wrapper-${number}`).addClass('warning')
 | |
|                 $(`.progress-${number}`).css({
 | |
|                     "background": "#ffc107",
 | |
|                 })
 | |
|                 
 | |
|                 if (TranslateY > ((screen.height-480)/2)){
 | |
|                     $(`.wrapper-${number}`).css({
 | |
|                         "margin": "0 0"+ -(+((document.getElementById(`wrapper-${number}`).offsetHeight)*2) + +8) +"px -180px",
 | |
|                     })
 | |
|                 }
 | |
|                 else {
 | |
|                 $(`.wrapper-${number}`).css({
 | |
|                     "margin": "0 0 8px -180px",
 | |
|                 })
 | |
|                 }
 | |
|                
 | |
|                 if (event.data.audio) {
 | |
|                     sound.play();
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (TranslateX > -((screen.width-300)/2)){
 | |
|                 anime({
 | |
|                     targets: `.wrapper-${number}`,
 | |
|                     opacity: 1,
 | |
|                     translateX: -50,
 | |
|                     duration: 750,
 | |
|                     easing: 'spring(1, 80, 10, 0)'
 | |
|                 })
 | |
|                 setTimeout(function () {
 | |
|                     anime({
 | |
|                         targets: `.wrapper-${number}`,
 | |
|                         opacity: 0,
 | |
|                         translateX: 50,
 | |
|                         duration: 750,
 | |
|                         easing: 'spring(1, 80, 10, 0)'
 | |
|                     })
 | |
|                     setTimeout(function () {
 | |
|                         $(`.wrapper-${number}`).remove()
 | |
|                     }, 750)
 | |
|                 }, event.data.time)
 | |
|             }
 | |
|             else{
 | |
|                 anime({
 | |
|                     targets: `.wrapper-${number}`,
 | |
|                     opacity: 1,
 | |
|                     translateX: 50,
 | |
|                     duration: 750,
 | |
|                     easing: 'spring(1, 80, 10, 0)'
 | |
|                 })
 | |
|                 setTimeout(function () {
 | |
|                     anime({
 | |
|                         targets: `.wrapper-${number}`,
 | |
|                         opacity: 0,
 | |
|                         translateX: -50,
 | |
|                         duration: 750,
 | |
|                         easing: 'spring(1, 80, 10, 0)'
 | |
|                     })
 | |
|                     setTimeout(function () {
 | |
|                         $(`.wrapper-${number}`).remove()
 | |
|                     }, 750)
 | |
|                 }, event.data.time)
 | |
|             }
 | |
| 
 | |
|         }
 | |
|         else if (event.data.action == 'open2') {
 | |
| 
 | |
|             TranslateX = localStorage.getItem("MenuPositionX")
 | |
|             TranslateY = localStorage.getItem("MenuPositionY")
 | |
|             Translate = 'translate(' + TranslateX + 'px , ' + TranslateY + 'px)'
 | |
| 
 | |
|             number = 1;
 | |
|             window.number = number
 | |
|             $('.toast').append(`
 | |
|             <div class="wrapper-${number}" id="wrapper-${number}">
 | |
|                 <div class="notification_main-${number}">
 | |
|                     <div class="title-${number}"></div>
 | |
|                     <div class="text-${number}">
 | |
|                         ${event.data.message}
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div>`)
 | |
| 
 | |
|             $(`.wrapper-${number}`).css({
 | |
|                 "margin-bottom": "10px",
 | |
|                 "width": "275px",
 | |
|                 "margin": "0 0 8px -180px",
 | |
|                 "border-radius": "10px",
 | |
|                 "transform": Translate,
 | |
|                 "opacity": "0",
 | |
|             })
 | |
|             $('.notification_main-'+number).addClass('main')
 | |
|             $('.text-'+number).css({
 | |
|                 "font-size": "14px"
 | |
|             })
 | |
| 
 | |
|             $(`.title-${number}`).html(event.data.title).css({
 | |
|                 "font-size": "16px",
 | |
|                 "font-weight": "600",
 | |
|                 "color": "#47cf73"
 | |
|             })
 | |
|             $(`.notification_main-${number}`).addClass('success-icon')
 | |
|             $(`.wrapper-${number}`).addClass('success')
 | |
| 
 | |
|             anime({
 | |
|                 targets: `.wrapper-${number}`,
 | |
|                 opacity:  1,
 | |
|                 duration: 2500,
 | |
|             })
 | |
| 
 | |
|             panel = document.getElementById(`wrapper-${number}`)
 | |
| 
 | |
|             panel.onmousedown = function(e){
 | |
|                 panel.style.cursor = "move"
 | |
|                 panel.style.opacity = "0.6"
 | |
|                 panel.style.transition = " 0s"
 | |
|                 panel.style.transition = "opacity 0.4s"
 | |
|             
 | |
|                 isDown = true;
 | |
|             };
 | |
|             
 | |
|             document.addEventListener('mouseup', function() {
 | |
|                 isDown = false;
 | |
| 
 | |
|                 panel.style.transition = "all 0.7s"
 | |
|                 panel.style.cursor = ""
 | |
|                 panel.style.opacity = "1"
 | |
|             }, true);
 | |
|             
 | |
|             document.addEventListener('mousemove', function(event) {
 | |
|                 event.preventDefault();
 | |
|                 if (isDown) {
 | |
|                     mousePosition = {
 | |
|             
 | |
|                         x : event.clientX,
 | |
|                         y : event.clientY
 | |
|             
 | |
|                     };
 | |
|                     xCenter = panel.offsetLeft + panel.offsetWidth / 2;
 | |
|                     yCenter = panel.offsetTop + panel.offsetHeight / 2;
 | |
| 
 | |
|                     TranslateX = mousePosition.x - xCenter
 | |
|                     TranslateY = mousePosition.y - yCenter
 | |
|                     Translate = 'translate(' + TranslateX + 'px , ' + TranslateY + 'px)'
 | |
|                     panel.style.transform  = Translate;
 | |
| 
 | |
|                     localStorage.setItem("MenuPositionX", TranslateX)
 | |
|                     localStorage.setItem("MenuPositionY", TranslateY)
 | |
|                 }
 | |
|             }, true);
 | |
|         }
 | |
|         else if (event.data.action == 'reset') {
 | |
|             TranslateX = 0
 | |
|             TranslateY = 0
 | |
|             localStorage.setItem("MenuPositionX", TranslateX)
 | |
|             localStorage.setItem("MenuPositionY", TranslateY)
 | |
|         }
 | |
|     })
 | |
| })
 | |
| 
 | |
| document.onkeyup = function() {
 | |
|     if (event.key == 'Escape') {
 | |
|         $.post('https://'+GetParentResourceName()+'/close');
 | |
|         anime({
 | |
|             targets: `.wrapper-${number}`,
 | |
|             opacity: 0,
 | |
|             duration: 750,
 | |
|         })
 | |
|         setTimeout(function () {
 | |
|             $(`.wrapper-${number}`).remove()
 | |
|         }, 750)
 | |
|     }
 | |
| };
 | |
| 
 | |
| var mousePosition;
 | |
| var offset = [0,0];
 | |
| var isDown = false; | 
