/* * Options 2.0 * REQUIRES: goldenlayout.js */ let options2 = (function () { var optionsContainer = null ; // // When the user changes a setting from the interface var onOptionCheckboxChanged = function (evnt) { var name = $(evnt.target).data("setting"); var value = $(evnt.target).is(":checked"); options[name] = value; Evennia.msg("webclient_options", [], options); } // // Callback to display our basic OptionsUI var onOptionsUI = function (parentdiv) { var checked; checked = options["gagprompt"] ? "checked='checked'" : ""; var gagprompt = $( [ "" ].join("") ); checked = options["notification_popup"] ? "checked='checked'" : ""; var notifypopup = $( [ "" ].join("") ); checked = options["notification_sound"] ? "checked='checked'" : ""; var notifysound = $( [ "" ].join("") ); gagprompt.on("change", onOptionCheckboxChanged); notifypopup.on("change", onOptionCheckboxChanged); notifysound.on("change", onOptionCheckboxChanged); parentdiv.append(gagprompt); parentdiv.append(notifypopup); parentdiv.append(notifysound); } // handler for the "Options" button var onOpenCloseOptions = function () { var optionsComponent = { title: "Options", type: "component", componentName: "options", componentState: { }, }; // Create a new GoldenLayout tab filled with the optionsComponent above var myLayout = window.plugins["goldenlayout"].getGL(); if( ! optionsContainer ) { // open new optionsComponent var main = myLayout.root.getItemsByType("stack")[0].getActiveContentItem(); myLayout.on( "tabCreated", function( tab ) { if( tab.contentItem.componentName == "options" ) { tab .closeElement .off("click") .click( function () { optionsContainer = null; tab.contentItem.remove(); window.plugins["default_in"].setKeydownFocus(true); }); optionsContainer = tab.contentItem; } }); main.parent.addChild( optionsComponent ); window.plugins["default_in"].setKeydownFocus(false); } else { optionsContainer.remove(); optionsContainer = null; } } // Public // // Called when options settings are sent from server var onGotOptions = function (args, kwargs) { var addKnownType = window.plugins["goldenlayout"].addKnownType; $.each(kwargs, function(key, value) { options[key] = value; // for "available_server_tags", addKnownType for each value ["tag1", "tag2", ... ] if( (key === "available_server_tags") && addKnownType ) { $.each( value, addKnownType ); } }); } // // Create and register the "options" golden-layout component var onLayoutChanged = function () { var myLayout = window.plugins["goldenlayout"].getGL(); myLayout.registerComponent( "options", function (container, componentState) { var plugins = window.plugins; optionsContainer = container.getElement(); // build the buttons var div = $("