Skip to content

Commit

Permalink
* settings.js stores settings in localStorage
Browse files Browse the repository at this point in the history
* settings object emits an event when any key changes
* hide/showCertified moved from settings.js to ui.js
  • Loading branch information
zalun committed May 3, 2013
1 parent f09e8f2 commit 548aae5
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 55 deletions.
5 changes: 2 additions & 3 deletions kitchensink-app/js/app.js
Expand Up @@ -9,8 +9,7 @@ define(function(require) {
require('elements/attributes'); // .html() in utils.js
require('elements/insertion'); // .insert() in logger and models.js
require('elements/traversal'); // $ searches elements using Slick
require('./settings');
var setStripes = require('./ui').setStripes;
var renderCertified = require('./ui').renderCertified;
var apis = require('./apis/index');
var log = require('logger');

Expand All @@ -29,7 +28,7 @@ define(function(require) {
api.runTests();
}

setStripes();
renderCertified();

if ('MozActivity' in window) {
// change all links to webactivities
Expand Down
38 changes: 38 additions & 0 deletions kitchensink-app/js/lib/settings.js
@@ -0,0 +1,38 @@
define(function(require) {
var prime = require('prime');
var Emitter = require('prime/emitter');

var Settings = prime({
inherits: Emitter,

options: {
'certifiedVisible': false
},

constructor: function() {
// update settings from localStorage
var localSettings = JSON.parse(localStorage.settings || '{}');
for (var key in localSettings) {
this.options[key] = localSettings[key];
}
this.store();
},

get: function(key) {
return this.options[key];
},

set: function(key, value) {
this.options[key] = value;
this.store();
this.emit(key);
},

store: function() {
localStorage.settings = JSON.stringify(this.options);
}

});

return new Settings();
});
50 changes: 0 additions & 50 deletions kitchensink-app/js/settings.js

This file was deleted.

58 changes: 56 additions & 2 deletions kitchensink-app/js/ui.js
@@ -1,5 +1,7 @@
define(function(require) {
var settings = require('settings');
var $ = require('elements');
require('elements/events');
require('elements/traversal');

/**
Expand All @@ -15,9 +17,61 @@ define(function(require) {
$(element).addClass('even');
}
});
};
}

/**
* hides all certified dt and closes dd if opened
*/
function hideCertified() {
$('dt.certified').forEach(function(element) {
element = $(element);
element.addClass('hidden');
// hide description if opened
var model = element._model;
if (model.visible) {
model.visible = false;
// XXX this will need to be changed if any animation will be
// implemented to hide
model.hide();
}
});
setStripes();
}

/**
* show all certified dt
*/
function showCertified() {
$('dt.certified').removeClass('hidden');
setStripes();
}

/**
* toggles certified dt's
*/
function toggleCeritified() {
settings.set('certifiedVisible', !settings.get('certifiedVisible'));
}

/**
* show hide certified regarding the setting
*/
function renderCertified() {
if (settings.get('certifiedVisible')) {
showCertified();
} else {
hideCertified();
}
}

// TODO: make it a proper setting
$('#header-settings').on('click', toggleCeritified);

// render certified on change of the setting
settings.on('certifiedVisible', renderCertified);

return {
setStripes: setStripes
setStripes: setStripes,
renderCertified: renderCertified
};
});

0 comments on commit 548aae5

Please sign in to comment.