// =============== // Setup Dropdowns // =============== $(document).ready(function () { var $application = $("#APPLICATION_MNEMONIC").val(), $sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}"); // -------------------------------- // Open previously opened Accordion // -------------------------------- if ((typeof $sessionStorage.reveal !== "undefined") && ($sessionStorage.reveal !== "")) { var reveal = $sessionStorage.reveal.split("|"); reveal.forEach((element) => { $("#" + element).collapse("show"); }); } // ------------------- // Save open Accordion // ------------------- $("#dropdown-accordion").on("shown.bs.collapse hidden.bs.collapse", async function (e) { const open = new Array(); $(".collapse.show").each(function () { open.push($(this).attr("id")); }); $sessionStorage.reveal = open.join("|"); sessionStorage.setItem($application, JSON.stringify($sessionStorage)); }); // ---------- // Add Button // ---------- $(".btnAdd").on("click", async function () { $sessionStorage.action = "Dropdowns.addDropdown"; $sessionStorage.dropdowntype_serial = $(this).data("dropdowntype-serial"); $sessionStorage.addDropdown = "Dropdowns.setupDropdowns"; sessionStorage.setItem($application, JSON.stringify($sessionStorage)); formSubmit($sessionStorage); }); // ----------- // Done Button // ----------- $(".btnDone").on("click", async function () { formSubmit({ action : "" }); }); // ---- // Edit // ---- $(".dropdown-table tbody td:not('.dropdown_default, .dropdown_active')").on("click touch", async function (e) { e.preventDefault(); $sessionStorage.action = "Dropdowns.editDropdown"; $sessionStorage.dropdown_serial = $(this).closest("tr").data("dropdown-serial"); $sessionStorage.editDropdown = "Dropdowns.setupDropdowns"; sessionStorage.setItem($application, JSON.stringify($sessionStorage)); formSubmit($sessionStorage); }); // ---------------------------- // Process the Default Checkbox // ---------------------------- const savedDefaults=new Map(); $('input[name="dropdown_default"]').each(function(){savedDefaults.set($(this).closest('tr').data('dropdown-serial'),this.checked);}); $('input[name="dropdown_default"]').on('change',async function(){ const box=$(this),row=box.closest('tr'),id=row.data('dropdown-serial'),type=row.data('dropdown-dropdowntype'),checked=this.checked; box.prop('disabled',true); try{ await formPost({action:'Dropdowns.updateDropdownDefault',dropdown_serial:id,dropdown_dropdowntype:type,dropdown_checked:checked}); $('input[name="dropdown_default"]').each(function(){ const parent=$(this).closest('tr');if(parent.data('dropdown-dropdowntype')===type){const selected=parent.data('dropdown-serial')===id?checked:false;$(this).prop('checked',selected);savedDefaults.set(parent.data('dropdown-serial'),selected);} }); }catch(error){$('input[name="dropdown_default"]').each(function(){$(this).prop('checked',!!savedDefaults.get($(this).closest('tr').data('dropdown-serial')));});} finally{box.prop('disabled',false);} }); // --------------------------- // Process the Active Checkbox // --------------------------- $("input[name='dropdown_active']").on("change", async function (e) { try { await formPost({ action : "Dropdowns.updateDropdownActive", dropdown_serial : $(this).data("dropdown-serial"), dropdown_checked: $(this).prop("checked") }); } catch(error) { $(this).prop("checked", !$(this).prop("checked")); } }); });