diff --git a/www/index.html b/www/index.html index 91e482c..a50e7c8 100644 --- a/www/index.html +++ b/www/index.html @@ -10,6 +10,7 @@ + diff --git a/www/main.js b/www/main.js index bfb9952..dfc8840 100644 --- a/www/main.js +++ b/www/main.js @@ -7,6 +7,7 @@ window.addEventListener('load', function() { var save = Save(); var screen = Screen({dom: dom, i18n: i18n}); var messaging = Messaging({screen: screen}); + var ui = Ui({messaging: messaging}); var session = Session({messaging: messaging, save: save}); var room = Room({dom: dom, messaging: messaging, session: session, fun: fun}); var statusHandler = StatusHandler(); diff --git a/www/ui.js b/www/ui.js new file mode 100644 index 0000000..8558895 --- /dev/null +++ b/www/ui.js @@ -0,0 +1,38 @@ +function Ui(modules) { + var connectedForms = {}; + + modules.messaging.addEventListener('open', refreshForms); + modules.messaging.addEventListener('close', refreshForms); + + return { + connectedForm: connectedForm, + enableForm: enableForm + }; + + function connectedForm(formId) { + var root = document.getElementById(formId); + connectedForms[formId] = { + root: root, + submits: root.querySelectorAll('[type=submit]'), + enabled: false + }; + return root; + } + + function enableForm(formId, enabled) { + connectedForms[formId].enabled = enabled || undefined == enabled; + refreshForm(connectedForms[formId]); + } + + function refreshForms() { + for(var key in connectedForms) { + refreshForm(connectedForms[key]); + } + } + + function refreshForm(form) { + form.submits.forEach(function(button) { + button.disabled = !(modules.messaging.isOn() && form.enabled); + }); + } +}