api-mocks.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import Ember from 'ember';
  2. export function updateObjProps(obj, props) {
  3. if (props) {
  4. return Ember.$.extend({}, obj, props);
  5. } else {
  6. return Ember.$.extend({}, obj);
  7. }
  8. }
  9. export function paginatedJSON(results, count, page, per_page, orphans) {
  10. count = count || 0;
  11. var pages = 0;
  12. if (count && per_page) {
  13. pages = Math.ceil(count / per_page);
  14. }
  15. if (orphans && pages > 1 && count - (pages - 1) * per_page <= orphans) {
  16. pages -= 1;
  17. }
  18. var next = null;
  19. var last = null;
  20. if (page < pages) {
  21. last = pages;
  22. if (page + 1 < pages) {
  23. next = page + 1;
  24. }
  25. }
  26. var previous = null;
  27. var first = null;
  28. if (page > 1) {
  29. first = 1;
  30. if (page > 2) {
  31. previous = page - 1;
  32. }
  33. }
  34. var before = 0;
  35. if (page > 1) {
  36. before = (page - 1) * per_page;
  37. }
  38. var more = 0;
  39. if (last) {
  40. more = count - before - per_page;
  41. }
  42. return {
  43. 'results': results || [],
  44. 'count': count,
  45. 'pages': pages,
  46. 'next': next,
  47. 'last': last,
  48. 'previous': previous,
  49. 'first': first,
  50. 'before': before,
  51. 'more': more
  52. };
  53. }
  54. export function rankJSON(id, props) {
  55. var mock = {
  56. 'id': id,
  57. 'name': 'Members',
  58. 'slug': 'members',
  59. 'description': '',
  60. 'title': '',
  61. 'css_class': '',
  62. 'is_tab': false
  63. };
  64. return updateObjProps(mock, props);
  65. }
  66. export function userJSON(id, props) {
  67. var mock = {
  68. 'id': id,
  69. 'username': 'MockedUser' + id,
  70. 'slug': 'mockeduser' + id,
  71. 'avatar_hash': 'h4sh',
  72. 'title': null,
  73. 'rank': rankJSON(1),
  74. 'state': {
  75. 'is_offline_hidden': false,
  76. 'is_online_hidden': false,
  77. 'is_offline': true,
  78. 'is_online': false,
  79. 'is_banned': false,
  80. 'last_click': '2015-07-05T16:06:44.010Z',
  81. 'is_hidden': false,
  82. 'banned_until': null
  83. },
  84. 'signature': null
  85. };
  86. return updateObjProps(mock, props);
  87. }