You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.7 KiB
104 lines
2.7 KiB
var autosave;
|
|
var autosave_time = 5000; // miliseconds
|
|
|
|
$(document).ready(function(){
|
|
load_list();
|
|
|
|
$("#notes-list .scroller").slimscroll({
|
|
height: '330px',
|
|
size: "5px"
|
|
});
|
|
|
|
$(".add-note").click(function(){
|
|
save_note();
|
|
$("#notes-app").addClass("new-item");
|
|
$("#note-text").val("");
|
|
$("#note-text").attr("rel",guidGenerator());
|
|
});
|
|
|
|
$(".back-note-list").click(function(){
|
|
save_note();
|
|
$("#notes-app").removeClass("new-item");
|
|
});
|
|
|
|
$(document).on("click", "#notes-list .note-trunc", function(e){
|
|
e.preventDefault();
|
|
var id = $(this).attr("rel");
|
|
$("#note-text").attr("rel",id);
|
|
$("#note-text").val(localStorage.getItem(id));
|
|
$("#notes-app").addClass("new-item");
|
|
});
|
|
|
|
$(document).on("blur change", "#note-text", function(){
|
|
save_note();
|
|
});
|
|
|
|
$(document).on("click", "#notes-list .kill-note", function(e){
|
|
e.preventDefault();
|
|
var id = $(this).attr("rel");
|
|
bootbox.confirm("Are you sure to remove this note?", function(result) {
|
|
if(result === true){
|
|
localStorage.removeItem(id);
|
|
load_list();
|
|
}
|
|
});
|
|
});
|
|
|
|
autosave = window.setInterval(function(){
|
|
if($("#notes-app").hasClass("new-item")){
|
|
save_note();
|
|
}
|
|
},autosave_time);
|
|
});
|
|
|
|
function save_note(){
|
|
if($("#note-text").val() != ""){
|
|
$("#notes-app").addClass("saved");
|
|
localStorage.setItem($("#note-text").attr("rel"),$("#note-text").val());
|
|
console.log("Note saved!");
|
|
load_list();
|
|
window.setTimeout(function(){
|
|
$("#notes-app").removeClass("saved");
|
|
},1000);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function load_list(){
|
|
$("#notes-list ul").html("");
|
|
var ids = [];
|
|
for (var i = 0; i < localStorage.length; i++) {
|
|
var id = localStorage.length-i-1;
|
|
if(localStorage.key(id).startsWith("coco-note-")){
|
|
ids.push(id);
|
|
}
|
|
}
|
|
ids = ids.sort();
|
|
for (var x = 0;x < ids.length;x++){
|
|
var note = localStorage.getItem(localStorage.key(ids[x])).truncate(40);
|
|
$("#notes-list ul").append("<li><a href='javascript:;' class='note-trunc' rel='"+localStorage.key(ids[x])+"'>"+note+"</a><div class='btn-group pull-right'><a class='btn btn-sm btn-link kill-note' rel='"+localStorage.key(ids[x])+"'><i class='icon-trash'></i></a></div></li>");
|
|
}
|
|
}
|
|
|
|
function guidGenerator() {
|
|
var d = new Date().getTime();
|
|
d = 9999999999999-d;
|
|
var S4 = function() {
|
|
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
|
|
};
|
|
return "coco-note-"+(d+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
|
|
}
|
|
|
|
if (typeof String.prototype.startsWith != 'function') {
|
|
// see below for better implementation!
|
|
String.prototype.startsWith = function (str){
|
|
return this.indexOf(str) == 0;
|
|
};
|
|
}
|
|
|
|
String.prototype.truncate = function(m) {
|
|
return (this.length > m)
|
|
? jQuery.trim(this).substring(0, m) + "..."
|
|
: this;
|
|
}; |