HTML/Web Storage

From Chorke Wiki
Jump to navigation Jump to search

Prototyping Library

//prototyping for string format
;String.prototype.format||(function(){
    String.prototype.format = function() {
        var args = arguments;
        return this.replace(/{(\d+)}/g, function(match, number) {
            return typeof args[number] != 'undefined' ? args[number] : match;
        });
    };
})();

//prototyping for console info
;String.prototype.info||(function(){
    String.prototype.info = function() {
        if(console && console.info){
            console.info(this.toString());
        }
        return this;
    };
})();

Proprietary Library

//chorke main namespace/package
var Chorke=Chorke||(function(me){
    me = {
        $class   : 'Chorke',
        $package : 'Default',
        meta     : function(ns, tpl, out){
            tpl = '{\n  "package" : "{0}",\n  "class"   : "{1}"\n}';
            out = tpl.format(ns.$package, ns.$class);
            return out;
        }
    };
    return me;
})(),
//chorke alias name
CKi=CKi||(function(me){
    me.$class = 'CKi';
    me.$meta  = function(){return me.meta(me)};
    me.hasDB  = function(){return typeof(Storage)!=='undefined'};
    return me;
})(Chorke);

Database Engine

//chorke database engine
;CKi.db||(function($, win, me, session, local){
    session = win && win.sessionStorage;
    local   = win && win.localStorage;
    me      = {
        $package : 'CKi',
        $class   : 'CKi.db',
        $meta    : function(){return $.meta(me)},
        getData  : function(name, secured, store){
            if($.hasDB() && name && (store = secured ? session : local)){
                return JSON.parse(store.getItem(name));
            }
        },
        setData  : function(name, data, secured, store){
            if($.hasDB() && name && data && (store = secured ? session : local)){
                store.setItem(name, JSON.stringify(data));
                return true;
            }
        }
    };
    $.db = me;
})(CKi, window);

Local Database

//permanent/local storage database
;CKi.db.pdb||(function($, win, me){
    me  = {
        $package : 'CKi.db',
        $class   : 'CKi.db.pdb',
        $meta    : function(){return $.meta(me)},
        getData  : function(name){
            if($.hasDB() && name){
                return (me[name] = $.db.getData(name));
            }
        },
        setData  : function(name, data){
            if($.hasDB() && name && data){
                return $.db.setData(name, (me[name] = data));
            }
        }
    };
    $.db.pdb = me;
})(CKi, window);

Session Database

//temporary/session storage database
;CKi.db.tdb||(function($, win, secured, me){
    me  = {
        $package : 'CKi.db',
        $class   : 'CKi.db.tdb',
        $meta    : function(){return $.meta(me)},
        getData  : function(name){
            if($.hasDB() && name && secured){
                return (me[name] = $.db.getData(name, secured));
            }
        },
        setData  : function(name, data){
            if($.hasDB() && name && data && secured){
                return $.db.setData(name, (me[name] = data), secured);
            }
        }
    };
    $.db.tdb = me;
})(CKi, window, true);

Checking Output

//insert/store data into client db
CKi.db.tdb.setData('T00I00', [{id: 1, name: 'Selina'}, {id: 2, name: 'Daliya'}]);
CKi.db.pdb.setData('T00I00', [{id: 1, name: 'Raiyan'}, {id: 2, name: 'Rashid'}]);

//retrieve data from client db
CKi.db.tdb.getData('T00I00');
CKi.db.pdb.getData('T00I00');

References