Auto Save, Removed Stamps +more

Removed stamps so code stays stored until code has been reset. 
--> Added a feature which returns if the storage has been saved since last edit. *codeStorage.hasSaved()* 
--> Changed "localBonfire" to *codeStorage*
This commit is contained in:
Andrew Cay
2015-06-19 17:47:21 -07:00
parent 5a0d38eb5e
commit 60354d24e6

View File

@@ -42,7 +42,7 @@ editor.setOption("extraKeys", {
/* /*
Local Storage Update System By Andrew Cay(Resto) Local Storage Update System By Andrew Cay(Resto)
localBonfire: singleton object that contains properties and methods related to codeStorage: singleton object that contains properties and methods related to
dealing with the localStorage system. dealing with the localStorage system.
The keys work off of the variable challenge_name to make unique identifiers per bonfire The keys work off of the variable challenge_name to make unique identifiers per bonfire
@@ -50,54 +50,49 @@ editor.setOption("extraKeys", {
Added anonymous version checking system incase of future updates to the system Added anonymous version checking system incase of future updates to the system
Added keyup listener to editor(myCodeMirror) so the last update has been saved to storage Added keyup listener to editor(myCodeMirror) so the last update has been saved to storage
*/ */
var localBonfire = { var codeStorage = {
version: 0.01, version: 0.01,
keyVersion:"saveVersion", keyVersion:"saveVersion",
keyStamp: challenge_Name + 'Stamp',
keyValue: challenge_Name + 'Val', keyValue: challenge_Name + 'Val',
stampExpireTime: (1000 *60) *60 *24, updateWait: 2000,// 2 seconds
updateWait: 1500,// 1.5 seconds
updateTimeoutId: null updateTimeoutId: null
}; };
localBonfire.getEditorValue = function(){ // Returns true if the editor code was saved since last key press (use this if you want to make a "saved" notification somewhere")
return localStorage.getItem(localBonfire.keyValue); codeStorage.hasSaved = function(){
return ( updateTimeoutId === null );
}; };
localBonfire.getStampTime = function(){ codeStorage.getEditorValue = function(){
//localstorage always saves as strings. return localStorage.getItem(codeStorage.keyValue);
return Number.parseInt( localStorage.getItem(localBonfire.keyStamp) );
}; };
localBonfire.isAlive = function(){// returns true if IDE was edited within expire time codeStorage.updateStorage = function(){
return ( Date.now() - localBonfire.getStampTime() < localBonfire.stampExpireTime );
};
localBonfire.updateStorage = function(){
if(typeof(Storage) !== undefined) { if(typeof(Storage) !== undefined) {
var stamp = Date.now(), var value = editor.getValue();
value = editor.getValue(); localStorage.setItem(codeStorage.keyValue, value);
localStorage.setItem(localBonfire.keyValue, value);
localStorage.setItem(localBonfire.keyStamp, stamp);
} else { } else {
var debugging = false;
if( debugging ){ if( debugging ){
console.log('no web storage'); console.log('no web storage');
} }
} }
localBonfire.updateTimeoutId = null; codeStorage.updateTimeoutId = null;
}; };
// ANONYMOUS 1 TIME UPDATE VERSION // ANONYMOUS 1 TIME UPDATE VERSION
(function(){ (function(){
var savedVersion = localStorage.getItem('saveVersion'); var savedVersion = localStorage.getItem('saveVersion');
if( savedVersion === null ){ if( savedVersion === null ){
localStorage.setItem(localBonfire.keyVersion, localBonfire.version);//just write current version localStorage.setItem(codeStorage.keyVersion, codeStorage.version);//just write current version
}else{ }else{
//do checking if not current version //do checking if not current version
if( savedVersion !== localBonfire.version ){ if( savedVersion !== codeStorage.version ){
//update version //update version
} }
} }
})(); })();
/// Update local save when editor has changed
editor.on('keyup', function(codMir, event){ editor.on('keyup', function(codMir, event){
window.clearTimeout(localBonfire.updateTimeoutId); window.clearTimeout(codeStorage.updateTimeoutId);
localBonfire.updateTimeoutId = window.setTimeout(localBonfire.updateStorage, localBonfire.updateWait); codeStorage.updateTimeoutId = window.setTimeout(codeStorage.updateStorage, codeStorage.updateWait);
}); });
var attempts = 0; var attempts = 0;
@@ -107,7 +102,7 @@ if (attempts) {
var resetEditor = function() { var resetEditor = function() {
editor.setValue(allSeeds); editor.setValue(allSeeds);
localBonfire.updateStorage(); codeStorage.updateStorage();
}; };
var codeOutput = CodeMirror.fromTextArea(document.getElementById("codeOutput"), { var codeOutput = CodeMirror.fromTextArea(document.getElementById("codeOutput"), {
@@ -145,7 +140,7 @@ var allSeeds = '';
}); });
})(); })();
editorValue = (localBonfire.isAlive())? localBonfire.getEditorValue() : allSeeds; editorValue = (codeStorage.isAlive())? codeStorage.getEditorValue() : allSeeds;
myCodeMirror.setValue(editorValue); myCodeMirror.setValue(editorValue);