diff options
| author | rr- | 2016-06-14 10:31:48 +0200 |
|---|---|---|
| committer | rr- | 2016-06-18 10:35:20 +0200 |
| commit | 54e3099c5696e0b4fc7b05fb5ecc41ab4726628b (patch) | |
| tree | 29127e1c3d3d3d9bebfccefdf148da7305e2d5b3 /client/js/controllers/settings_controller.js | |
| parent | c74f06da35af3c35d565a3c96e3d048f7a1ec011 (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.js | 31 |
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(); + }); +}; |