jdb - a javascript object manager
Wed, 21 February 2018
work-in-progress.html
<script>
var options = {
basePath: "/admin/test",
headers: {},
objects: {
'default': [
{
name: "foo",
id: "bar"
}
]
}
};
var jdb = (function(options){
var defaultNamespace = 'default';
var defaults = {
basePath: window.location.pathname,
headers: {},
objects: {
defaultNamespace: {}
}
};
var objects = {}; // Object containing 'namespace': [{obj1}, {obj2}, {obj3}]
var namespaces = []; // List of namespace names.
for (var n in options){
defaults[n]=options[n];
}
this.getObjects = function(ns) {
ns = 'undefined' ? defaultNamespace: ns;
if (namespaces.indexOf(ns) === -1) {
return [];
}
return objects[ns];
};
this.getObject = function(id, ns) {
ns = 'undefined' ? defaultNamespace : ns;
if (namespaces.indexOf(ns) === -1) {
return null;
}
for (var i in objects[ns]) {
if (objects[ns][i]['id'] === id) {
return objects[ns];
}
}
return null;
};
this.getNamespaces = function() {
return namespaces
};
this.addObject = function(obj, namespace) {
if (typeof obj['id'] === 'undefined') {
throw "jdb.addObject requires objects contain a id key.";
}
namespace = 'undefined' ? defaultNamespace: namespace;
if (typeof objects[namespace] === 'undefined') {
objects[namespace] = [];
}
obj['__jdb_ns'] = namespace;
objects[namespace].push(obj);
};
for (var ns in defaults.objects) {
namespaces.push(ns);
for (var obj_i = 0; obj_i < defaults.objects[ns].length; obj_i++) {
addObject(defaults.objects[ns][obj_i]);
}
}
if (namespaces.indexOf(defaultNamespace) === -1) {
namespaces.push(defaultNamespace);
objects[defaultNamespace] = [];
}
return this;
});
var inst = jdb(options);
inst.addObject(
{
id: "12345",
name: "Foo"
}
);
inst.getObject('12345');
</script>