kvs.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. function kvs_put(o) { localStorage.setItem(o.type+o.id, JSON.stringify(o)); }
  2. function kvs_add(iterator) {
  3. var type = iterator.type;
  4. var id = iterator.id;
  5. var local = localStorage.getItem(type+id);
  6. if (null == local) {
  7. var container_name = iterator.container;
  8. var feed_id = iterator.feed_id ? iterator.feed_id : iterator.type;
  9. var container = localStorage.getItem(container_name+feed_id);
  10. if (null == container) {
  11. container = {type: iterator.container, id: feed_id, count: 0 };
  12. kvs_put(container);
  13. } else container = JSON.parse(container);
  14. var prevTop = container.top;
  15. var prev = localStorage.getItem(type+prevTop);
  16. if (null != prev) {
  17. prev = JSON.parse(prev);
  18. prev.next = id;
  19. kvs_put(prev);
  20. iterator.prev = prev.id;
  21. }
  22. container.top = iterator.id;
  23. container.count++;
  24. iterator.next = null;
  25. iterator.feed_id = feed_id;
  26. kvs_put(container);
  27. kvs_put(iterator);
  28. }
  29. }
  30. function kvs_read(type,start,count) { return traversal(type,start,count,[]); }
  31. function traversal(type,start,count,result) {
  32. var item = localStorage.getItem(type+start);
  33. if (null == item || count == 0) return result; else {
  34. item = JSON.parse(item);
  35. result.push(item);
  36. if (count <= result.length) return result; else
  37. return traversal(type,item.next,count,result);
  38. }
  39. }