projects-data.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. import { Project } from '../../../../../types/project/dashboard/api'
  2. import {
  3. isDeletableProject,
  4. isLeavableProject,
  5. } from '../../../../../frontend/js/features/project-list/util/project'
  6. import moment from 'moment'
  7. export const owner = {
  8. id: '624333f147cfd8002622a1d3',
  9. email: 'riker@overleaf.com',
  10. firstName: 'William',
  11. lastName: 'Riker',
  12. }
  13. const users = {
  14. laforge: {
  15. id: '624371e98a21dd0026a5bfef',
  16. email: 'laforge@overleaf.com',
  17. firstName: '',
  18. lastName: 'La Forge',
  19. },
  20. picard: {
  21. id: '62d6d0b4c5c5030a4d696c7a',
  22. email: 'picard@overleaf.com',
  23. firstName: 'Jean-Luc',
  24. lastName: 'Picard',
  25. },
  26. riker: owner,
  27. worf: {
  28. id: '624371708a21dd0026a5bf86',
  29. email: 'worf@overleaf.com',
  30. firstName: '',
  31. lastName: '',
  32. },
  33. }
  34. export const copyableProject = {
  35. id: '62f17f594641b405ca2b3264',
  36. name: 'Starfleet Report (owner)',
  37. lastUpdated: moment().subtract(1, 'day').toISOString(),
  38. lastUpdatedBy: users.picard,
  39. accessLevel: 'owner',
  40. source: 'owner',
  41. archived: false,
  42. trashed: false,
  43. owner: users.riker,
  44. } as Project
  45. export const archiveableProject = {
  46. id: '62d6d3721357e20a682110d5',
  47. name: "Captain's logs (Invite & Read Only)",
  48. lastUpdated: moment().subtract(1, 'week').toISOString(),
  49. lastUpdatedBy: users.picard,
  50. accessLevel: 'readOnly',
  51. source: 'invite',
  52. archived: false,
  53. trashed: false,
  54. owner: users.picard,
  55. } as Project
  56. export const trashedProject = {
  57. id: '42f17f594641b405ca2b3265',
  58. name: 'Starfleet Report draft (owner & trashed)',
  59. lastUpdated: moment().subtract(2, 'year').toISOString(),
  60. lastUpdatedBy: users.picard,
  61. accessLevel: 'owner',
  62. source: 'owner',
  63. archived: false,
  64. trashed: true,
  65. owner: users.riker,
  66. } as Project
  67. export const archivedProject = {
  68. id: '52f17f594641b405ca2b3266',
  69. name: 'Starfleet Report old (owner & archive)',
  70. lastUpdated: moment().subtract(1, 'year').toISOString(),
  71. lastUpdatedBy: users.picard,
  72. accessLevel: 'owner',
  73. source: 'owner',
  74. archived: true,
  75. trashed: false,
  76. owner: users.riker,
  77. } as Project
  78. export const trashedAndNotOwnedProject = {
  79. id: '63d6d3721357e20a682110d5',
  80. name: "Captain's logs very old (Trashed & Read Only & Not Owned)",
  81. lastUpdated: moment().subtract(11, 'year').toISOString(),
  82. lastUpdatedBy: users.picard,
  83. accessLevel: 'readOnly',
  84. source: 'invite',
  85. archived: false,
  86. trashed: true,
  87. owner: users.picard,
  88. } as Project
  89. export const sharedProject = archiveableProject
  90. export const ownedProject = copyableProject
  91. export const projectsData: Array<Project> = [
  92. copyableProject,
  93. archiveableProject,
  94. {
  95. id: '62b5cdf85212090c2244161c',
  96. name: 'Enterprise Security Analysis | Deflector Shields, Sensors, Tractor Beams, and Cloaking Devices (Invite & Edit)',
  97. lastUpdated: moment().subtract(1, 'month').toISOString(),
  98. lastUpdatedBy: users.worf,
  99. accessLevel: 'readWrite',
  100. source: 'invite',
  101. archived: false,
  102. trashed: false,
  103. owner: users.worf,
  104. },
  105. {
  106. id: '624380431c2e40006c59b922',
  107. name: 'VISOR Sensors (Link Sharing & Edit)',
  108. lastUpdated: moment().subtract(2, 'months').toISOString(),
  109. lastUpdatedBy: users.laforge,
  110. accessLevel: 'readAndWrite',
  111. source: 'token',
  112. archived: false,
  113. trashed: false,
  114. owner: users.laforge,
  115. },
  116. {
  117. id: '62f51b31f6f4c60027e8935f',
  118. name: 'United Federation of Planets (Link Sharing & View Only)',
  119. lastUpdated: moment().subtract(2, 'year').toISOString(),
  120. lastUpdatedBy: null,
  121. accessLevel: 'readOnly',
  122. source: 'token',
  123. archived: false,
  124. trashed: false,
  125. },
  126. archivedProject,
  127. trashedProject,
  128. trashedAndNotOwnedProject,
  129. ]
  130. export const archivedProjects = projectsData.filter(({ archived }) => archived)
  131. export const currentProjects = projectsData.filter(
  132. ({ archived, trashed }) => !archived && !trashed
  133. )
  134. export const trashedProjects = projectsData.filter(({ trashed }) => trashed)
  135. export const makeLongProjectList = (listLength: number) => {
  136. const longList = [...projectsData]
  137. while (longList.length < listLength) {
  138. longList.push(
  139. Object.assign({}, copyableProject, {
  140. name: `Report (${longList.length})`,
  141. id: `newProjectId${longList.length}`,
  142. })
  143. )
  144. }
  145. return {
  146. fullList: longList,
  147. currentList: longList.filter(
  148. ({ archived, trashed }) => !archived && !trashed
  149. ),
  150. trashedList: longList.filter(({ trashed }) => trashed),
  151. archivedList: longList.filter(({ archived }) => archived),
  152. leavableList: longList.filter(isLeavableProject),
  153. deletableList: longList.filter(isDeletableProject),
  154. }
  155. }