Commit cf955906 authored by Sven Franck's avatar Sven Franck

jslint pass indexstorage.js

parent 6e6d67b7
jIO.addStorageType ('indexed', function (spec, my) { /*jslint indent: 2, maxlen: 80, sloppy: true, nomen: true */
spec = spec || {}; /*global jIO: true, localStorage: true, setTimeout: true */
var that = my.basicStorage( spec, my ), priv = {}; jIO.addStorageType('indexed', function (spec, my) {
spec = spec || {};
var validatestate_sub_storage = spec.storage || false; var that = my.basicStorage(spec, my),
priv.sub_storage_spec = spec.storage || {type:'base'}; priv = {},
priv.sub_storage_string = JSON.stringify (priv.sub_storage_spec); validatestate_sub_storage = spec.storage || false,
storage_object_name = 'jio/indexed_storage_object',
var storage_object_name = 'jio/indexed_storage_object'; storage_file_object_name,
var storage_file_object_name = 'jio/indexed_file_object/'+ super_serialized = that.serialized;
priv.sub_storage_string;
priv.sub_storage_spec = spec.storage || {
var super_serialized = that.serialized; type: 'base'
that.serialized = function () { };
var o = super_serialized(); priv.sub_storage_string = JSON.stringify(priv.sub_storage_spec);
o.storage = priv.sub_storage_spec;
return o; storage_file_object_name = 'jio/indexed_file_object/' +
}; priv.sub_storage_string;
that.validateState = function () { that.serialized = function () {
if (!validatestate_sub_storage) { var o = super_serialized();
return 'Need at least one parameter: "storage" '+ o.storage = priv.sub_storage_spec;
'containing storage specifications.'; return o;
} };
that.validateState = function () {
if (!validatestate_sub_storage) {
return 'Need at least one parameter: "storage" ' +
'containing storage specifications.';
}
return '';
};
priv.secureDocId = function (string) {
var split = string.split('/'),
i;
if (split[0] === '') {
split = split.slice(1);
}
for (i = 0; i < split.length; i += 1) {
if (split[i] === '') {
return ''; return '';
}
}
return split.join('%2F');
};
priv.indexStorage = function () {
var obj = localStorage.getItem(storage_object_name) || {};
obj[priv.sub_storage_spec] = new Date().getTime();
localStorage.setItem(storage_object_name, obj);
};
priv.formatToFileObject = function (row) {
var k, obj = {
_id: row.id
}; };
for (k in row.value) {
priv.secureDocId = function (string) { if (row.value.hasOwnProperty(k)) {
var split = string.split('/'), i; obj[k] = row.value[k];
if (split[0] === '') { }
split = split.slice(1); }
} return obj;
for (i = 0; i < split.length; i+= 1) { };
if (split[i] === '') { return ''; }
} priv.allDocs = function (files_object) {
return split.join('%2F'); var k, obj = {
}; rows: []
}, i = 0;
priv.indexStorage = function () { for (k in files_object) {
var obj = localStorage.getItem (storage_object_name) || {}; if (files_object.hasOwnProperty(k)) {
obj[priv.sub_storage_spec] = new Date().getTime(); obj.rows[i] = {};
localStorage.setItem (storage_object_name,obj); obj.rows[i].value = files_object[k];
}; obj.rows[i].id = obj.rows[i].key = obj.rows[i].value._id;
delete obj.rows[i].value._id;
priv.formatToFileObject = function (row) { i += 1;
var k, obj = {_id:row.id}; }
for (k in row.value) { }
obj[k] = row.value[k]; obj.total_rows = obj.rows.length;
} return obj;
return obj; };
};
priv.setFileArray = function (file_array) {
priv.allDocs = function (files_object) { var i, obj = {};
var k, obj = {rows:[]}, i = 0; for (i = 0; i < file_array.length; i += 1) {
for (k in files_object) { obj[file_array[i].id] = priv.formatToFileObject(file_array[i]);
obj.rows[i] = {}; }
obj.rows[i].value = files_object[k]; localStorage.setItem(storage_file_object_name, obj);
obj.rows[i].id = obj.rows[i].key = obj.rows[i].value._id; };
delete obj.rows[i].value._id;
i ++; priv.getFileObject = function (docid) {
} var obj = localStorage.getItem(storage_file_object_name) || {};
obj.total_rows = obj.rows.length; return obj[docid];
return obj; };
};
priv.addFile = function (file_obj) {
priv.setFileArray = function (file_array) { var obj = localStorage.getItem(storage_file_object_name) || {};
var i, obj = {}; obj[file_obj._id] = file_obj;
for (i = 0; i < file_array.length; i+= 1) { localStorage.setItem(storage_file_object_name, obj);
obj[file_array[i].id] = priv.formatToFileObject(file_array[i]); };
}
localStorage.setItem (storage_file_object_name,obj); priv.removeFile = function (docid) {
}; var obj = localStorage.getItem(storage_file_object_name) || {};
delete obj[docid];
priv.getFileObject = function (docid) { localStorage.setItem(storage_file_object_name, obj);
var obj = localStorage.getItem (storage_file_object_name) || {}; };
return obj[docid];
}; /**
* updates the storage.
priv.addFile = function (file_obj) { * It will retreive all files from a storage. It is an asynchronous task
var obj = localStorage.getItem (storage_file_object_name) || {}; * so the update can be on going even if IndexedStorage has already
obj[file_obj._id] = file_obj; * returned the result.
localStorage.setItem (storage_file_object_name,obj); * @method update
}; */
priv.update = function () {
priv.removeFile = function (docid) { var success = function (val) {
var obj = localStorage.getItem (storage_file_object_name) || {}; priv.setFileArray(val.rows);
delete obj[docid];
localStorage.setItem (storage_file_object_name,obj);
}; };
that.addJob('allDocs', priv.sub_storage_spec, null, {
/** max_retry: 3
* updates the storage. }, success, function () {});
* It will retreive all files from a storage. It is an asynchronous task };
* so the update can be on going even if IndexedStorage has already
* returned the result. that.post = function (command) {
* @method update that.put(command);
*/ };
priv.update = function () {
var success = function (val) { /**
priv.setFileArray(val.rows); * Saves a document.
}; * @method put
that.addJob ('allDocs', priv.sub_storage_spec,null, */
{max_retry:3},success,function(){}); that.put = function (command) {
}; var cloned_doc = command.cloneDoc(),
cloned_option = command.cloneOption(),
that.post = function (command) { success = function (val) {
that.put(command);
};
/**
* Saves a document.
* @method put
*/
that.put = function (command) {
var cloned_doc = command.cloneDoc(),
cloned_option = command.cloneOption(),
success = function (val) {
priv.update();
that.success(val);
},
error = function (err) {
that.error(err);
};
priv.indexStorage();
that.addJob ('put',priv.sub_storage_spec,cloned_doc,
cloned_option,success,error);
}; // end put
/**
* Loads a document.
* @method get
*/
that.get = function (command) {
var file_array,
success = function (val) {
that.success(val);
},
error = function (err) {
that.error(err);
},
get = function () {
var cloned_option = command.cloneOption();
that.addJob ('get',priv.sub_storage_spec,command.cloneDoc(),
cloned_option,success,error);
that.end();
};
priv.indexStorage();
priv.update(); priv.update();
if (command.getOption('metadata_only')) { that.success(val);
setTimeout(function () { },
var file_obj = priv.getFileObject(command.getDocId()); error = function (err) {
if (file_obj && that.error(err);
(file_obj._last_modified || };
file_obj._creation_date)) { priv.indexStorage();
that.success (file_obj); that.addJob('put', priv.sub_storage_spec, cloned_doc,
} else { cloned_option, success, error);
get(); }; // end put
}
}); /**
} else { * Loads a document.
get(); * @method get
} */
}; // end get that.get = function (command) {
// jslint unused var file_array
/** var success = function (val) {
* Gets a document list. that.success(val);
* @method allDocs },
*/ error = function (err) {
that.allDocs = function (command) { that.error(err);
var obj = localStorage.getItem (storage_file_object_name); },
if (obj) { get = function () {
priv.update(); var cloned_option = command.cloneOption();
setTimeout(function (){ that.addJob('get', priv.sub_storage_spec, command.cloneDoc(),
that.success (priv.allDocs(obj)); cloned_option, success, error);
}); that.end();
};
priv.indexStorage();
priv.update();
if (command.getOption('metadata_only')) {
setTimeout(function () {
var file_obj = priv.getFileObject(command.getDocId());
if (file_obj && (file_obj._last_modified || file_obj._creation_date)) {
that.success(file_obj);
} else { } else {
var success = function (val) { get();
priv.setFileArray(val.rows);
that.success(val);
},
error = function (err) {
that.error(err);
};
that.addJob ('allDocs', priv.sub_storage_spec,null,
command.cloneOption(),success,error);
} }
}; // end allDocs });
} else {
/** get();
* Removes a document. }
* @method remove }; // end get
*/
that.remove = function (command) { /**
var success = function (val) { * Gets a document list.
priv.removeFile(command.getDocId()); * @method allDocs
priv.update(); */
that.success(val); that.allDocs = function (command) {
}, var obj = localStorage.getItem(storage_file_object_name),
error = function (err) { success,
that.error(err); error;
};
that.addJob ('remove',priv.sub_storage_spec,command.cloneDoc(), if (obj) {
command.cloneOption(),success,error); priv.update();
}; // end remove setTimeout(function () {
that.success(priv.allDocs(obj));
return that; });
}; } else {
success = function (val) {
priv.setFileArray(val.rows);
that.success(val);
};
error = function (err) {
that.error(err);
};
that.addJob('allDocs', priv.sub_storage_spec, null,
command.cloneOption(), success, error);
}
}; // end allDocs
/**
* Removes a document.
* @method remove
*/
that.remove = function (command) {
var success = function (val) {
priv.removeFile(command.getDocId());
priv.update();
that.success(val);
},
error = function (err) {
that.error(err);
};
that.addJob('remove', priv.sub_storage_spec, command.cloneDoc(),
command.cloneOption(), success, error);
}; // end remove
return that;
});
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment