Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
62 lines
2 KiB
JavaScript
Executable file
62 lines
2 KiB
JavaScript
Executable file
define(function(require) {
|
|
'use strict';
|
|
|
|
var SettingsPanel = require('modules/settings_panel');
|
|
var SendFeedback = require('panels/feedback_send/feedback_send');
|
|
|
|
return function ctor_sendFeedbackPanel() {
|
|
var elements = {};
|
|
var sendFeedback = SendFeedback();
|
|
var eventMapping = [
|
|
{ elementName: 'sendBtn', eventType: 'click', methodName: 'send' },
|
|
{ elementName: 'emailEnable', eventType: 'change',
|
|
methodName: 'enableEmail' },
|
|
{ elementName: 'header', eventType: 'action', methodName: 'back' }
|
|
];
|
|
|
|
function bindEvents(elements) {
|
|
eventMapping.forEach(function(map) {
|
|
map.method = sendFeedback[map.methodName].bind(sendFeedback);
|
|
elements[map.elementName].addEventListener(map.eventType,
|
|
map.method);
|
|
});
|
|
}
|
|
|
|
function unbindEvents(elements) {
|
|
eventMapping.forEach(function(map) {
|
|
if (!map.method) {
|
|
return;
|
|
}
|
|
elements[map.elementName].removeEventListener(map.eventType,
|
|
map.method);
|
|
});
|
|
}
|
|
|
|
return SettingsPanel({
|
|
onInit: function(panel) {
|
|
elements = {
|
|
title: panel.querySelector('#feedback-title'),
|
|
description: panel.querySelector('#feedback-description'),
|
|
emailInput: panel.querySelector('#feedback-email'),
|
|
emailColumn: panel.querySelector('#feedback-emailbar'),
|
|
emailEnable: panel.querySelector('#email-enable'),
|
|
sendBtn: panel.querySelector('#feedback-send-btn'),
|
|
header: panel.querySelector('#feedback-header')
|
|
};
|
|
sendFeedback.init(elements);
|
|
},
|
|
onBeforeShow: function(panel, options) {
|
|
bindEvents(elements);
|
|
sendFeedback.options = options;
|
|
sendFeedback.updateTitle();
|
|
sendFeedback.getPreviousInputs();
|
|
},
|
|
onBeforeHide: function() {
|
|
unbindEvents(elements);
|
|
if (document.hidden) {
|
|
sendFeedback.keepAllInputs();
|
|
}
|
|
}
|
|
});
|
|
};
|
|
});
|