From 99394bf16643f2429b341b7ed423c1052be26002 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Tue, 19 Feb 2019 23:26:24 +0100 Subject: [PATCH] =?UTF-8?q?add=20documentation=20to=20js=20util=20=C2=BBse?= =?UTF-8?q?tup=C2=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/js/utils/setup.js | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/static/js/utils/setup.js b/static/js/utils/setup.js index b71e226a5..b7296586f 100644 --- a/static/js/utils/setup.js +++ b/static/js/utils/setup.js @@ -5,9 +5,16 @@ var registeredSetupListeners = {}; - window.utils.setup = function(utilType, scope, options) { +/** + * setup function to initiate a util (utilName) on a scope (sope) with options (options). + * + * A util has to define an itself at `window.utils` as shown for the `autoSubmit` util: + * `window.utils.autoSubmit = function(wrapper, options) { ... };` + */ - if (!utilType || !scope) { + window.utils.setup = function(utilName, scope, options) { + + if (!utilName || !scope) { return; } @@ -15,44 +22,44 @@ var listener = function(event) { - if (event.detail.targetUtil !== utilType) { + if (event.detail.targetUtil !== utilName) { return false; } if (options.setupFunction) { options.setupFunction(scope, options); } else { - var util = window.utils[utilType]; + var util = window.utils[utilName]; if (!util) { - throw new Error('"' + utilType + '" is not a known js util'); + throw new Error('"' + utilName + '" is not a known js util'); } util(scope, options); } }; - if (registeredSetupListeners[utilType] && !options.singleton) { - registeredSetupListeners[utilType].push(listener); + if (registeredSetupListeners[utilName] && !options.singleton) { + registeredSetupListeners[utilName].push(listener); } else { - window.utils.teardown(utilType); - registeredSetupListeners[utilType] = [ listener ]; + window.utils.teardown(utilName); + registeredSetupListeners[utilName] = [ listener ]; } document.addEventListener('setup', listener); document.dispatchEvent(new CustomEvent('setup', { - detail: { targetUtil: utilType, module: 'none' }, + detail: { targetUtil: utilName, module: 'none' }, bubbles: true, cancelable: true, })); }; - window.utils.teardown = function(utilType) { - if (registeredSetupListeners[utilType]) { - registeredSetupListeners[utilType].forEach(function(listener) { + window.utils.teardown = function(utilName) { + if (registeredSetupListeners[utilName]) { + registeredSetupListeners[utilName].forEach(function(listener) { document.removeEventListener('setup', listener); }); - delete registeredSetupListeners[utilType]; + delete registeredSetupListeners[utilName]; } } })();