kvs.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Console Populate:
  2. // kvs_add({type:"user", id:"1",container:"feed",name:"maxim"});
  3. // kvs_add({type:"user", id:"2",container:"feed",name:"maxim"});
  4. // kvs_add({type:"user", id:"3",container:"feed",name:"maxim"});
  5. // localStorage:
  6. // feeduser : {"type":"feed","id":"user","count":3,"top":"3"}
  7. // user1 : {"type":"user","id":"1","container":"feed","name":"maxim","next":"2","feed_id":"user"}
  8. // user2 : {"type":"user","id":"2","container":"feed","name":"maxim","prev":"1","next":"3","feed_id":"user"}
  9. // user3 : {"type":"user","id":"3","container":"feed","name":"maxim","prev":"2","next":null,"feed_id":"user"}
  10. // Console Traverse:
  11. // kvs_read("user","1",-1);
  12. // [Object,Object,Object]
  13. function kvs_put(o) { localStorage.setItem(o.type+o.id, JSON.stringify(o)); }
  14. function kvs_add(iterator) {
  15. var type = iterator.type;
  16. var id = iterator.id;
  17. var local = localStorage.getItem(type+id);
  18. if (null == local) {
  19. var container_name = iterator.container;
  20. var feed_id = iterator.feed_id ? iterator.feed_id : iterator.type;
  21. var container = localStorage.getItem(container_name+feed_id);
  22. if (null == container) {
  23. container = {type: iterator.container, id: feed_id, count: 0 };
  24. kvs_put(container);
  25. } else container = JSON.parse(container);
  26. var prevTop = container.top;
  27. var prev = localStorage.getItem(type+prevTop);
  28. if (null != prev) {
  29. prev = JSON.parse(prev);
  30. prev.next = id;
  31. kvs_put(prev);
  32. iterator.prev = prev.id;
  33. }
  34. container.top = iterator.id;
  35. container.count++;
  36. iterator.next = null;
  37. iterator.feed_id = feed_id;
  38. kvs_put(container);
  39. kvs_put(iterator);
  40. }
  41. }
  42. function kvs_read(type,start,count) { return traversal(type,start,count,[]); }
  43. function traversal(type,start,count,result) {
  44. var item = localStorage.getItem(type+start);
  45. if (null == item || count == 0) return result; else {
  46. item = JSON.parse(item);
  47. result.push(item);
  48. if (count <= result.length && count != -1) return result; else
  49. return traversal(type,item.next,count,result);
  50. }
  51. }