PageRenderTime 25ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/app/scripts/collections/entry-collection.js

https://gitlab.com/mlnkv/keeweb
JavaScript | 47 lines | 38 code | 9 blank | 0 comment | 2 complexity | 707ab5c3d08cb0a8ae7e2a437e63bca7 MD5 | raw file
  1. 'use strict';
  2. var Backbone = require('backbone'),
  3. EntryModel = require('../models/entry-model'),
  4. Comparators = require('../util/comparators');
  5. var EntryCollection = Backbone.Collection.extend({
  6. model: EntryModel,
  7. comparator: function() {},
  8. comparators: {
  9. 'title': Comparators.stringComparator('title', true),
  10. '-title': Comparators.stringComparator('title', false),
  11. 'website': Comparators.stringComparator('url', true),
  12. '-website': Comparators.stringComparator('url', false),
  13. 'user': Comparators.stringComparator('user', true),
  14. '-user': Comparators.stringComparator('user', false),
  15. 'created': Comparators.dateComparator('created', true),
  16. '-created': Comparators.dateComparator('created', false),
  17. 'updated': Comparators.dateComparator('updated', true),
  18. '-updated': Comparators.dateComparator('updated', false),
  19. '-attachments': function(x, y) { return this.attachmentSortVal(x).localeCompare(this.attachmentSortVal(y)); }
  20. },
  21. defaultComparator: 'title',
  22. initialize: function() {
  23. this.comparator = this.comparators[this.defaultComparator];
  24. },
  25. sortEntries: function(comparator) {
  26. this.comparator = this.comparators[comparator] || this.comparators[this.defaultComparator];
  27. this.sort();
  28. },
  29. attachmentSortVal: function(entry) {
  30. var att = entry.attachments;
  31. var str = att.length ? String.fromCharCode(64 + att.length) : 'Z';
  32. if (att[0]) {
  33. str += att[0].title;
  34. }
  35. return str;
  36. }
  37. });
  38. module.exports = EntryCollection;