Add .length to !$el, replace break; with return false;
[KiwiIRC.git] / client / assets / src / applets / settings.js
CommitLineData
4baeda09 1(function () {\r
1b48d21e
VC
2 var View = Backbone.View.extend({\r
3 events: {\r
4 'change [data-setting]': 'saveSettings',\r
5 'click [data-setting="theme"]': 'selectTheme'\r
6 },\r
7\r
8 initialize: function (options) {\r
9 this.$el = $($('#tmpl_applet_settings').html().trim());\r
10\r
11 // Incase any settings change while we have this open, update them\r
12 _kiwi.global.settings.on('change', this.loadSettings, this);\r
13\r
14 // Now actually show the current settings\r
15 this.loadSettings();\r
16\r
17 },\r
18\r
19 loadSettings: function () {\r
20\r
21 var that = this;\r
22\r
23 $.each(_kiwi.global.settings.attributes, function(key, value) {\r
24\r
08701d92
VC
25 console.log(key, value);\r
26\r
ad6e3f2b
VC
27 var $el = $('[data-setting="' + key + '"]', that.$el);\r
28\r
29 // Only deal with settings we have a UI element for\r
08701d92
VC
30 if (!$el.length)\r
31 return false;\r
ad6e3f2b
VC
32\r
33 switch ($el.prop('type')) {\r
1b48d21e 34 case 'checkbox':\r
ad6e3f2b 35 $el.prop('checked', value);\r
1b48d21e
VC
36 break;\r
37 case 'radio':\r
38 $('[data-setting="' + key + '"][value="' + value + '"]', that.$el).prop('checked', true);\r
39 break;\r
40 case 'text':\r
ad6e3f2b 41 $el.val(value);\r
1b48d21e
VC
42 break;\r
43 default:\r
44 $('[data-setting="' + key + '"][data-value="' + value + '"]', that.$el).addClass('active');\r
45 break;\r
46 }\r
47 });\r
48 },\r
49\r
50 saveSettings: function (event) {\r
51 var value,\r
52 settings = _kiwi.global.settings,\r
53 $setting = $(event.currentTarget, this.$el)\r
54\r
55 switch (event.currentTarget.type) {\r
56 case 'checkbox':\r
57 value = $setting.is(':checked');\r
58 break;\r
59 case 'radio':\r
60 case 'text':\r
61 value = $setting.val();\r
62 break;\r
63 default:\r
64 value = $setting.data('value');\r
65 break;\r
66 }\r
67\r
68 // Stop settings being updated while we're saving one by one\r
69 _kiwi.global.settings.off('change', this.loadSettings, this);\r
70 settings.set($setting.data('setting'), value);\r
71 settings.save();\r
72\r
73 // Continue listening for setting changes\r
74 _kiwi.global.settings.on('change', this.loadSettings, this);\r
75 },\r
76\r
77 selectTheme: function(event) {\r
78 $('[data-setting="theme"].active', this.$el).removeClass('active');\r
79 $(event.currentTarget).addClass('active').trigger('change');\r
80 event.preventDefault();\r
81 }\r
82 });\r
83\r
84\r
85 var Applet = Backbone.Model.extend({\r
86 initialize: function () {\r
87 this.set('title', 'Settings');\r
88 this.view = new View();\r
89 }\r
90 });\r
91\r
92\r
93 _kiwi.model.Applet.register('kiwi_settings', Applet);\r
4baeda09 94})();