aboutsummaryrefslogtreecommitdiff
path: root/client/js/controllers/settings_controller.js
diff options
context:
space:
mode:
authorrr-2016-06-14 10:31:48 +0200
committerrr-2016-06-18 10:35:20 +0200
commit54e3099c5696e0b4fc7b05fb5ecc41ab4726628b (patch)
tree29127e1c3d3d3d9bebfccefdf148da7305e2d5b3 /client/js/controllers/settings_controller.js
parentc74f06da35af3c35d565a3c96e3d048f7a1ec011 (diff)
client/general: refactor control flow
- Controller lifetime is bound to route lifetime - View lifetime is bound to controller lifetime - Control lifetime is bound to view lifetime - Enhanced event dispatching - Enhanced responsiveness in some places - Views communicate user input to controllers via new event system
Diffstat (limited to 'client/js/controllers/settings_controller.js')
-rw-r--r--client/js/controllers/settings_controller.js31
1 files changed, 16 insertions, 15 deletions
diff --git a/client/js/controllers/settings_controller.js b/client/js/controllers/settings_controller.js
index 360b480..e7bba6e 100644
--- a/client/js/controllers/settings_controller.js
+++ b/client/js/controllers/settings_controller.js
@@ -1,26 +1,27 @@
'use strict';
-const router = require('../router.js');
-const settings = require('../settings.js');
-const TopNavigation = require('../models/top_navigation.js');
+const settings = require('../models/settings.js');
+const topNavigation = require('../models/top_navigation.js');
const SettingsView = require('../views/settings_view.js');
class SettingsController {
constructor() {
- this._settingsView = new SettingsView();
+ topNavigation.activate('settings');
+ this._view = new SettingsView({
+ settings: settings.get(),
+ });
+ this._view.addEventListener('change', e => this._evtChange(e));
}
- registerRoutes() {
- router.enter('/settings', (ctx, next) => { this._settingsRoute(); });
- }
-
- _settingsRoute() {
- TopNavigation.activate('settings');
- this._settingsView.render({
- getSettings: () => settings.getSettings(),
- saveSettings: newSettings => settings.saveSettings(newSettings),
- });
+ _evtChange(e) {
+ this._view.clearMessages();
+ settings.save(e.detail.settings);
+ this._view.showSuccess('Settings saved.');
}
};
-module.exports = new SettingsController();
+module.exports = router => {
+ router.enter('/settings', (ctx, next) => {
+ ctx.controller = new SettingsController();
+ });
+};

© 2015 - 2026 Jakob L. Kreuze