2011-12-12 11:47:20 -05:00
|
|
|
/**
|
|
|
|
* Store
|
|
|
|
*
|
|
|
|
* Wrapper for local / sessionstorage
|
|
|
|
*/
|
2011-10-24 12:26:00 -04:00
|
|
|
(function (){
|
2011-11-01 18:56:27 -04:00
|
|
|
"use strict";
|
2011-11-03 13:47:11 -04:00
|
|
|
|
|
|
|
//No support for localstorage? Bail out early
|
|
|
|
if(typeof localStorage === "undefined" || typeof JSON === "undefined")
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
//Shortcuts for wrapper
|
|
|
|
var l = localStorage,
|
|
|
|
s = sessionStorage;
|
2011-11-01 18:56:27 -04:00
|
|
|
|
|
|
|
/**
|
2011-11-03 16:04:35 -04:00
|
|
|
* Wrapper for localstorage / sessionstorage data serialization.
|
|
|
|
* Each method has a boolean parameter, that when set as true switches the method
|
|
|
|
* to use sessionStorage rather than the default localStorage.
|
2011-11-01 18:56:27 -04:00
|
|
|
*
|
|
|
|
* @name store
|
|
|
|
* @namespace
|
|
|
|
* @memberOf $_
|
|
|
|
*/
|
2011-11-03 13:47:11 -04:00
|
|
|
var store = {
|
2011-11-01 18:56:27 -04:00
|
|
|
/**
|
|
|
|
* Retrieves and deserializes a value from localstorage,
|
|
|
|
* based on the specified key
|
|
|
|
*
|
|
|
|
* @param string key
|
2011-11-03 13:47:11 -04:00
|
|
|
* @param bool session
|
2011-11-01 18:56:27 -04:00
|
|
|
* @name get
|
|
|
|
* @memberOf $_.store
|
|
|
|
* @function
|
|
|
|
* @return object
|
2011-11-03 13:47:11 -04:00
|
|
|
* @type object
|
2011-11-01 18:56:27 -04:00
|
|
|
*/
|
2011-11-03 13:47:11 -04:00
|
|
|
get: function (key, sess)
|
2011-10-24 12:26:00 -04:00
|
|
|
{
|
2011-11-03 13:47:11 -04:00
|
|
|
var val = (sess) ? s.getItem(key) : l.getItem(key);
|
|
|
|
|
|
|
|
return JSON.parse(val);
|
2011-10-24 12:26:00 -04:00
|
|
|
},
|
2011-11-01 18:56:27 -04:00
|
|
|
/**
|
|
|
|
* Puts a value into localstorage at the specified key,
|
|
|
|
* and JSON-encodes the value if not a string
|
|
|
|
*
|
|
|
|
* @param string key
|
|
|
|
* @param mixed value
|
2011-11-03 13:47:11 -04:00
|
|
|
* @param bool session
|
2011-11-01 18:56:27 -04:00
|
|
|
* @name set
|
|
|
|
* @memberOf $_.store
|
|
|
|
* @function
|
|
|
|
*/
|
2011-11-03 13:47:11 -04:00
|
|
|
set: function (key, value, sess)
|
2011-10-24 12:26:00 -04:00
|
|
|
{
|
2011-11-03 13:47:11 -04:00
|
|
|
// Localstorage generally only accepts strings
|
|
|
|
value = JSON.stringify(value);
|
|
|
|
|
|
|
|
(sess) ? s.setItem(key, value) : l.setItem(key, value);
|
2011-10-24 12:26:00 -04:00
|
|
|
},
|
2011-11-01 18:56:27 -04:00
|
|
|
/**
|
2011-11-03 13:47:11 -04:00
|
|
|
* Removes the specified item from storage
|
2011-11-01 18:56:27 -04:00
|
|
|
*
|
|
|
|
* @param string key
|
2011-11-03 13:47:11 -04:00
|
|
|
* @param bool session
|
2011-11-01 18:56:27 -04:00
|
|
|
* @name remove
|
|
|
|
* @memberOf $_.store
|
|
|
|
* @function
|
|
|
|
*/
|
2011-11-03 13:47:11 -04:00
|
|
|
remove: function (key, sess)
|
|
|
|
{
|
|
|
|
(sess) ? s.removeItem(key) : l.removeItem(key);
|
|
|
|
},
|
2011-11-01 18:56:27 -04:00
|
|
|
/**
|
2011-11-03 13:47:11 -04:00
|
|
|
* Returns an object of all the raw values in storage
|
2011-11-01 18:56:27 -04:00
|
|
|
*
|
2011-11-03 16:04:35 -04:00
|
|
|
* @param bool session
|
2011-11-01 18:56:27 -04:00
|
|
|
* @name getAll
|
2011-11-03 16:04:35 -04:00
|
|
|
* @memberOf $_.store
|
2011-11-01 18:56:27 -04:00
|
|
|
* @function
|
|
|
|
* @return object
|
2011-11-03 13:47:11 -04:00
|
|
|
* @type object
|
2011-11-01 18:56:27 -04:00
|
|
|
*/
|
2011-11-03 13:47:11 -04:00
|
|
|
getAll: function (sess)
|
2011-10-24 12:26:00 -04:00
|
|
|
{
|
|
|
|
var i,
|
|
|
|
len,
|
2011-11-03 13:47:11 -04:00
|
|
|
data = {},
|
|
|
|
k,
|
|
|
|
o;
|
|
|
|
|
|
|
|
//Reference to session/localstorage
|
|
|
|
o = (sess) ? l : s;
|
|
|
|
|
|
|
|
len = o.length;
|
2011-10-24 12:26:00 -04:00
|
|
|
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
{
|
2011-11-03 13:47:11 -04:00
|
|
|
k = o.key(i);
|
|
|
|
data[k] = o.getItem(k);
|
2011-10-24 12:26:00 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
return data;
|
2011-11-03 16:04:35 -04:00
|
|
|
},
|
|
|
|
/**
|
|
|
|
* Removes all values from the same domain storage
|
|
|
|
*
|
|
|
|
* @param bool session
|
|
|
|
* @name clear
|
|
|
|
* @memberOf $_.store
|
|
|
|
* @function
|
|
|
|
*/
|
|
|
|
clear: function(sess)
|
|
|
|
{
|
|
|
|
(sess) ? s.clear() : l.clear();
|
2011-10-24 12:26:00 -04:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
$_.ext('store', store);
|
|
|
|
}());
|