types.ts 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /*
  2. * <<
  3. * Davinci
  4. * ==
  5. * Copyright (C) 2016 - 2017 EDP
  6. * ==
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS,
  15. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. * See the License for the specific language governing permissions and
  17. * limitations under the License.
  18. * >>
  19. */
  20. import { IProject, IStarUser } from 'containers/Projects/types'
  21. export interface IDavinciUser {
  22. id: number
  23. username: string
  24. email: string
  25. role: number
  26. avatar: string
  27. }
  28. export interface IOrganization {
  29. id: number
  30. name: string
  31. role?: number
  32. avatar: string
  33. roleNum?: number
  34. memberNum?: number
  35. projectNum?: number
  36. description: string
  37. memberPermission?: number
  38. allowCreateProject?: number
  39. allowChangeVisibility?: number
  40. allowDeleteOrTransferProject?: number
  41. }
  42. export interface IOrganizationMember {
  43. id: number
  44. user: IDavinciUser
  45. }
  46. export interface IOrganizationRole {
  47. id: number
  48. name: string
  49. description: string
  50. }
  51. export interface IOrganizationState {
  52. organizations: IOrganization[],
  53. currentOrganization: IOrganization,
  54. currentOrganizationLoading: boolean,
  55. currentOrganizationProjects: IProject[],
  56. currentOrganizationProjectsDetail: { total: number, list: IProject[] },
  57. currentOrganizationMembers: IOrganizationMember[],
  58. currentOrganizationRole: IOrganizationRole[],
  59. inviteMemberLists: null, // @FIXME need change to remote org users search
  60. roleModalLoading: boolean,
  61. projectDetail: IProject,
  62. projectAdmins: IOrganizationMember[],
  63. projectRoles: IOrganizationRole[],
  64. inviteMemberfetching?: boolean
  65. }
  66. export interface IMembers {
  67. id: number
  68. user: IDavinciUser
  69. roles?: object[]
  70. }
  71. export interface ISetRange{
  72. start: number
  73. end: number
  74. }
  75. export interface IMembersState {
  76. category?: string
  77. formKey?: number
  78. keywords: string
  79. currentMemberId: number
  80. formVisible: boolean
  81. modalLoading: boolean
  82. currentMember: IOrganizationMember
  83. notUsersModalVisible: boolean
  84. notUsers: string[],
  85. changeRoleFormCategory: string
  86. changeRoleFormVisible: boolean
  87. changeRoleModalLoading: boolean
  88. organizationMembers: IMembers[]
  89. }
  90. type onGetRoleListByMemberId = (orgId: number, memberId: number, resolve?: (res: any) => void) => void
  91. export interface IMembersProps {
  92. loginUser: any
  93. organizationId: number
  94. loadOrganizationsMembers: (id: number) => any
  95. deleteOrganizationMember: (id: number, resolve: () => any) => any
  96. organizationMembers: IMembers[]
  97. changeOrganizationMemberRole: (
  98. id: number,
  99. role: number,
  100. resolve: () => any
  101. ) => any
  102. currentOrganization: IOrganization
  103. inviteMemberList: any
  104. onInviteMember: (ordId: number, members: string[], needEmail: boolean, resolve: (result: any) => void) => any
  105. handleSearchMember: (keywords: string) => any
  106. onGetRoleListByMemberId: onGetRoleListByMemberId
  107. }
  108. export interface IProjectsStates {
  109. formType?: string
  110. formVisible: boolean
  111. modalLoading: boolean
  112. editFormVisible: boolean
  113. adminFormVisible: boolean
  114. pageNum: number
  115. pageSize: number
  116. currentProject: any
  117. starModalVisble: boolean
  118. organizationProjects: IProject[]
  119. }
  120. export interface IProjectsProps {
  121. children?: React.ReactNode
  122. loginUser?: any
  123. organizationId?: number
  124. organizations?: any
  125. projectDetail?: any
  126. currentOrganization?: IOrganization
  127. toProject?: (id: number) => any
  128. deleteProject?: (id: number) => any
  129. starUser?: IStarUser[]
  130. collectProjects?: IProject[]
  131. onAddProject?: (project: any, resolve: () => any) => any
  132. onEditProject?: (project: any, resolve: () => any) => any
  133. organizationProjects?: IProject[]
  134. organizationProjectsDetail?: { total?: number; list: IProject[] }
  135. unStar?: (id: number) => any
  136. userList?: (id: number) => any
  137. onCheckUniqueName?: (
  138. pathname: any,
  139. data: any,
  140. resolve: () => any,
  141. reject: (error: string) => any
  142. ) => any
  143. getOrganizationProjectsByPagination?: (obj: {
  144. keyword?: string
  145. pageNum: number
  146. pageSize: number
  147. }) => any
  148. onLoadOrganizationProjects?: (param: {
  149. id: number
  150. pageNum?: number
  151. pageSize?: number
  152. }) => any
  153. onClickCollectProjects?: (
  154. formType,
  155. project: object,
  156. resolve: (id: number) => any
  157. ) => any
  158. onLoadCollectProjects?: () => any
  159. onTransferProject?: (id: number, orgId: number, resolve: () => any) => any
  160. onSetCurrentProject?: (option: any) => any
  161. starUserList?: IStarUser[]
  162. onStarProject?: (id: number, resolve: () => any) => any
  163. onDeleteProject?: (id: number, resolve?: any) => any
  164. onGetProjectStarUser?: (id: number) => any
  165. currentOrganizationProjects?: IProject[]
  166. organizationMembers?: any[]
  167. onLoadVizs?: (projectId: number) => any
  168. onLoadOrganizations?: () => any
  169. vizs?: any
  170. }
  171. export interface IOrganizationProps {
  172. loginUser: any
  173. organizations: any
  174. starUserList: IStarUser[]
  175. inviteMemberList: any
  176. currentOrganization: IOrganization
  177. collectProjects: IProject[]
  178. currentOrganizationRole: IOrganizationRole[]
  179. onLoadOrganizationProjects: (param: {id: number, pageNum?: number, pageSize?: number}) => any
  180. onLoadOrganizationMembers: (id: number) => any
  181. onLoadOrganizationDetail: (id: number) => any
  182. onDeleteOrganizationMember: (id: number, resolve: () => any) => any
  183. onChangeOrganizationMemberRole: (id: number, role: number, resolve: () => any) => any
  184. currentOrganizationProjects: IProject[]
  185. currentOrganizationProjectsDetail: {total?: number, list: IProject[]}
  186. currentOrganizationMembers: IOrganizationMember[]
  187. onInviteMember: (ordId: number, members: string[], needEmail: boolean, resolve: (result: any) => void) => any
  188. onSearchMember: (keywords: string) => any
  189. onClickCollectProjects: (formType: string, project: object, resolve: (id: number) => any) => any
  190. onLoadCollectProjects: () => any
  191. onEditOrganization: (organization: IOrganization) => any
  192. onDeleteOrganization: (id: number, resolve: () => any) => any
  193. onCheckUniqueName: (pathname: any, data: any, resolve: () => any, reject: (error: string) => any) => any
  194. onGetRoleListByMemberId: onGetRoleListByMemberId
  195. onLoadOrganizationRole: (id: number) => any
  196. }
  197. export interface IInviteMemberProps {
  198. category: string
  199. inviteMemberList: any
  200. addHandler: () => void
  201. handleSearchMember: (searchValue: string) => any
  202. organizationDetail: IOrganization
  203. }