95 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| let buttonParams = [];
 | |
| let images = [];
 | |
| 
 | |
| const openMenu = (data = null) => {
 | |
|     let html = "";
 | |
|     data.forEach((item, index) => {
 | |
|         if(!item.hidden) {
 | |
|             let header = item.header;
 | |
|             let message = item.txt || item.text;
 | |
|             let isMenuHeader = item.isMenuHeader;
 | |
|             let isDisabled = item.disabled;
 | |
|             let icon = item.icon;
 | |
|             images[index] = item;
 | |
|             html += getButtonRender(header, message, index, isMenuHeader, isDisabled, icon);
 | |
|             if (item.params) buttonParams[index] = item.params;
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     $("#buttons").html(html);
 | |
| 
 | |
|     $('.button').click(function() {
 | |
|         const target = $(this)
 | |
|         if (!target.hasClass('title') && !target.hasClass('disabled')) {
 | |
|             postData(target.attr('id'));
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| const getButtonRender = (header, message = null, id, isMenuHeader, isDisabled, icon) => {
 | |
|     return `
 | |
|         <div class="${isMenuHeader ? "title" : "button"} ${isDisabled ? "disabled" : ""}" id="${id}">
 | |
|             <div class="icon"> <img src=${icon} width=30px onerror="this.onerror=null; this.remove();"> <i class="${icon}" onerror="this.onerror=null; this.remove();"></i> </div>
 | |
|             <div class="column">
 | |
|             <div class="header"> ${header}</div>
 | |
|             ${message ? `<div class="text">${message}</div>` : ""}
 | |
|             </div>
 | |
|         </div>
 | |
|     `;
 | |
| };
 | |
| 
 | |
| const closeMenu = () => {
 | |
|     $("#buttons").html(" ");
 | |
|     $('#imageHover').css('display' , 'none');
 | |
|     buttonParams = [];
 | |
|     images = [];
 | |
| };
 | |
| 
 | |
| const postData = (id) => {
 | |
|     $.post(`https://${GetParentResourceName()}/clickedButton`, JSON.stringify(parseInt(id) + 1));
 | |
|     return closeMenu();
 | |
| };
 | |
| 
 | |
| const cancelMenu = () => {
 | |
|     $.post(`https://${GetParentResourceName()}/closeMenu`);
 | |
|     return closeMenu();
 | |
| };
 | |
| 
 | |
| 
 | |
| 
 | |
| window.addEventListener("message", (event) => {
 | |
|     const data = event.data;
 | |
|     const buttons = data.data;
 | |
|     const action = data.action;
 | |
|     switch (action) {
 | |
|         case "OPEN_MENU":
 | |
|         case "SHOW_HEADER":
 | |
|             return openMenu(buttons);
 | |
|         case "CLOSE_MENU":
 | |
|             return closeMenu();
 | |
|         default:
 | |
|             return;
 | |
|     }
 | |
| });
 | |
| 
 | |
| window.addEventListener('mousemove', (event) => {
 | |
|     let $target = $(event.target);
 | |
|     if ($target.closest('.button:hover').length && $('.button').is(":visible")) {
 | |
|         let id = event.target.id;
 | |
|         if (!images[id]) return
 | |
|         if (images[id].image) {
 | |
|             $('#image').attr('src', images[id].image);
 | |
|             $('#imageHover').css('display' , 'block');
 | |
|         }
 | |
|     }
 | |
|     else {
 | |
|         $('#imageHover').css('display' , 'none');
 | |
|     }
 | |
| })
 | |
| 
 | |
| document.onkeyup = function (event) {
 | |
|     const charCode = event.key;
 | |
|     if (charCode == "Escape") {
 | |
|         cancelMenu();
 | |
|     }
 | |
| };
 | 
