@axelor/aos-mobile-project 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/README.md +44 -0
  2. package/lib/api/index.d.ts +4 -0
  3. package/lib/api/index.js +22 -0
  4. package/lib/api/index.js.map +1 -0
  5. package/lib/api/project-api.d.ts +20 -0
  6. package/lib/api/project-api.js +136 -0
  7. package/lib/api/project-api.js.map +1 -0
  8. package/lib/api/project-task-api.d.ts +51 -0
  9. package/lib/api/project-task-api.js +294 -0
  10. package/lib/api/project-task-api.js.map +1 -0
  11. package/lib/api/reporting-api.d.ts +3 -0
  12. package/lib/api/reporting-api.js +26 -0
  13. package/lib/api/reporting-api.js.map +1 -0
  14. package/lib/api/timesheet-lines-api.d.ts +3 -0
  15. package/lib/api/timesheet-lines-api.js +41 -0
  16. package/lib/api/timesheet-lines-api.js.map +1 -0
  17. package/lib/components/atoms/DatesDisplay/DatesDisplay.d.ts +6 -0
  18. package/lib/components/atoms/DatesDisplay/DatesDisplay.js +59 -0
  19. package/lib/components/atoms/DatesDisplay/DatesDisplay.js.map +1 -0
  20. package/lib/components/atoms/PartnerCard/PartnerCard.d.ts +12 -0
  21. package/lib/components/atoms/PartnerCard/PartnerCard.js +74 -0
  22. package/lib/components/atoms/PartnerCard/PartnerCard.js.map +1 -0
  23. package/lib/components/atoms/ProjectCard/ProjectCard.d.ts +15 -0
  24. package/lib/components/atoms/ProjectCard/ProjectCard.js +101 -0
  25. package/lib/components/atoms/ProjectCard/ProjectCard.js.map +1 -0
  26. package/lib/components/atoms/ProjectSimpleCard/ProjectSimpleCard.d.ts +10 -0
  27. package/lib/components/atoms/ProjectSimpleCard/ProjectSimpleCard.js +48 -0
  28. package/lib/components/atoms/ProjectSimpleCard/ProjectSimpleCard.js.map +1 -0
  29. package/lib/components/atoms/TaskCard/TaskCard.d.ts +16 -0
  30. package/lib/components/atoms/TaskCard/TaskCard.js +93 -0
  31. package/lib/components/atoms/TaskCard/TaskCard.js.map +1 -0
  32. package/lib/components/atoms/index.d.ts +5 -0
  33. package/lib/components/atoms/index.js +23 -0
  34. package/lib/components/atoms/index.js.map +1 -0
  35. package/lib/components/index.d.ts +5 -0
  36. package/lib/components/index.js +23 -0
  37. package/lib/components/index.js.map +1 -0
  38. package/lib/components/molecules/ActivityCard/ActivityCard.d.ts +11 -0
  39. package/lib/components/molecules/ActivityCard/ActivityCard.js +80 -0
  40. package/lib/components/molecules/ActivityCard/ActivityCard.js.map +1 -0
  41. package/lib/components/molecules/CustomFieldPopup/CustomFieldPopup.d.ts +11 -0
  42. package/lib/components/molecules/CustomFieldPopup/CustomFieldPopup.js +53 -0
  43. package/lib/components/molecules/CustomFieldPopup/CustomFieldPopup.js.map +1 -0
  44. package/lib/components/molecules/DropdownInvoicing/DropdownInvoicing.d.ts +11 -0
  45. package/lib/components/molecules/DropdownInvoicing/DropdownInvoicing.js +41 -0
  46. package/lib/components/molecules/DropdownInvoicing/DropdownInvoicing.js.map +1 -0
  47. package/lib/components/molecules/DropdownMembers/DropdownMembers.d.ts +8 -0
  48. package/lib/components/molecules/DropdownMembers/DropdownMembers.js +33 -0
  49. package/lib/components/molecules/DropdownMembers/DropdownMembers.js.map +1 -0
  50. package/lib/components/molecules/DropdownTaskCharacteristics/DropdownTaskCharacteristics.d.ts +13 -0
  51. package/lib/components/molecules/DropdownTaskCharacteristics/DropdownTaskCharacteristics.js +51 -0
  52. package/lib/components/molecules/DropdownTaskCharacteristics/DropdownTaskCharacteristics.js.map +1 -0
  53. package/lib/components/molecules/DropdownTaskDescription/DropdownTaskDescription.d.ts +8 -0
  54. package/lib/components/molecules/DropdownTaskDescription/DropdownTaskDescription.js +39 -0
  55. package/lib/components/molecules/DropdownTaskDescription/DropdownTaskDescription.js.map +1 -0
  56. package/lib/components/molecules/PartnerActionCard/PartnerActionCard.d.ts +19 -0
  57. package/lib/components/molecules/PartnerActionCard/PartnerActionCard.js +53 -0
  58. package/lib/components/molecules/PartnerActionCard/PartnerActionCard.js.map +1 -0
  59. package/lib/components/molecules/ProjectHeader/ProjectHeader.d.ts +3 -0
  60. package/lib/components/molecules/ProjectHeader/ProjectHeader.js +67 -0
  61. package/lib/components/molecules/ProjectHeader/ProjectHeader.js.map +1 -0
  62. package/lib/components/molecules/ProjectSiteTags/ProjectSiteTags.d.ts +3 -0
  63. package/lib/components/molecules/ProjectSiteTags/ProjectSiteTags.js +34 -0
  64. package/lib/components/molecules/ProjectSiteTags/ProjectSiteTags.js.map +1 -0
  65. package/lib/components/molecules/SectionHeader/SectionHeader.d.ts +9 -0
  66. package/lib/components/molecules/SectionHeader/SectionHeader.js +56 -0
  67. package/lib/components/molecules/SectionHeader/SectionHeader.js.map +1 -0
  68. package/lib/components/molecules/TaskActionCard/TaskActionCard.d.ts +20 -0
  69. package/lib/components/molecules/TaskActionCard/TaskActionCard.js +39 -0
  70. package/lib/components/molecules/TaskActionCard/TaskActionCard.js.map +1 -0
  71. package/lib/components/molecules/TaskDetailsHeader/TaskDetailsHeader.d.ts +3 -0
  72. package/lib/components/molecules/TaskDetailsHeader/TaskDetailsHeader.js +67 -0
  73. package/lib/components/molecules/TaskDetailsHeader/TaskDetailsHeader.js.map +1 -0
  74. package/lib/components/molecules/index.d.ts +12 -0
  75. package/lib/components/molecules/index.js +30 -0
  76. package/lib/components/molecules/index.js.map +1 -0
  77. package/lib/components/organisms/CustomSection/CustomSection.d.ts +10 -0
  78. package/lib/components/organisms/CustomSection/CustomSection.js +49 -0
  79. package/lib/components/organisms/CustomSection/CustomSection.js.map +1 -0
  80. package/lib/components/organisms/LogTimeButton/LogTimeButton.d.ts +6 -0
  81. package/lib/components/organisms/LogTimeButton/LogTimeButton.js +41 -0
  82. package/lib/components/organisms/LogTimeButton/LogTimeButton.js.map +1 -0
  83. package/lib/components/organisms/ProjectDropdownCards/ProjectDropdownCards.d.ts +3 -0
  84. package/lib/components/organisms/ProjectDropdownCards/ProjectDropdownCards.js +51 -0
  85. package/lib/components/organisms/ProjectDropdownCards/ProjectDropdownCards.js.map +1 -0
  86. package/lib/components/organisms/ProjectTaskDropdownCards/ProjectTaskDropdownCards.d.ts +3 -0
  87. package/lib/components/organisms/ProjectTaskDropdownCards/ProjectTaskDropdownCards.js +52 -0
  88. package/lib/components/organisms/ProjectTaskDropdownCards/ProjectTaskDropdownCards.js.map +1 -0
  89. package/lib/components/organisms/TimeSpentGridView/TimeSpentGridView.d.ts +3 -0
  90. package/lib/components/organisms/TimeSpentGridView/TimeSpentGridView.js +53 -0
  91. package/lib/components/organisms/TimeSpentGridView/TimeSpentGridView.js.map +1 -0
  92. package/lib/components/organisms/index.d.ts +5 -0
  93. package/lib/components/organisms/index.js +23 -0
  94. package/lib/components/organisms/index.js.map +1 -0
  95. package/lib/components/pages/GeneralInformationView/GeneralInformationView.d.ts +3 -0
  96. package/lib/components/pages/GeneralInformationView/GeneralInformationView.js +55 -0
  97. package/lib/components/pages/GeneralInformationView/GeneralInformationView.js.map +1 -0
  98. package/lib/components/pages/ReportingView/ReportingView.d.ts +3 -0
  99. package/lib/components/pages/ReportingView/ReportingView.js +60 -0
  100. package/lib/components/pages/ReportingView/ReportingView.js.map +1 -0
  101. package/lib/components/pages/SubProjectView/SubProjectView.d.ts +3 -0
  102. package/lib/components/pages/SubProjectView/SubProjectView.js +80 -0
  103. package/lib/components/pages/SubProjectView/SubProjectView.js.map +1 -0
  104. package/lib/components/pages/TaskCustomFieldsView/TaskCustomFieldsView.d.ts +3 -0
  105. package/lib/components/pages/TaskCustomFieldsView/TaskCustomFieldsView.js +49 -0
  106. package/lib/components/pages/TaskCustomFieldsView/TaskCustomFieldsView.js.map +1 -0
  107. package/lib/components/pages/TaskGeneralInformationView/TaskGeneralInformationView.d.ts +5 -0
  108. package/lib/components/pages/TaskGeneralInformationView/TaskGeneralInformationView.js +55 -0
  109. package/lib/components/pages/TaskGeneralInformationView/TaskGeneralInformationView.js.map +1 -0
  110. package/lib/components/pages/TaskLinkView/TaskLinkView.d.ts +3 -0
  111. package/lib/components/pages/TaskLinkView/TaskLinkView.js +58 -0
  112. package/lib/components/pages/TaskLinkView/TaskLinkView.js.map +1 -0
  113. package/lib/components/pages/TaskView/TaskView.d.ts +3 -0
  114. package/lib/components/pages/TaskView/TaskView.js +63 -0
  115. package/lib/components/pages/TaskView/TaskView.js.map +1 -0
  116. package/lib/components/pages/TimeView/TimeView.d.ts +7 -0
  117. package/lib/components/pages/TimeView/TimeView.js +59 -0
  118. package/lib/components/pages/TimeView/TimeView.js.map +1 -0
  119. package/lib/components/pages/index.d.ts +8 -0
  120. package/lib/components/pages/index.js +26 -0
  121. package/lib/components/pages/index.js.map +1 -0
  122. package/lib/components/templates/ActivityListView/ActivityListView.d.ts +3 -0
  123. package/lib/components/templates/ActivityListView/ActivityListView.js +117 -0
  124. package/lib/components/templates/ActivityListView/ActivityListView.js.map +1 -0
  125. package/lib/components/templates/CategorySearchBar/CategorySearchBar.d.ts +12 -0
  126. package/lib/components/templates/CategorySearchBar/CategorySearchBar.js +41 -0
  127. package/lib/components/templates/CategorySearchBar/CategorySearchBar.js.map +1 -0
  128. package/lib/components/templates/ParentTaskSearchBar/ParentTaskSearchBar.d.ts +12 -0
  129. package/lib/components/templates/ParentTaskSearchBar/ParentTaskSearchBar.js +41 -0
  130. package/lib/components/templates/ParentTaskSearchBar/ParentTaskSearchBar.js.map +1 -0
  131. package/lib/components/templates/PrioritySearchBar/PrioritySearchBar.d.ts +12 -0
  132. package/lib/components/templates/PrioritySearchBar/PrioritySearchBar.js +41 -0
  133. package/lib/components/templates/PrioritySearchBar/PrioritySearchBar.js.map +1 -0
  134. package/lib/components/templates/ProjectListView/ProjectListView.d.ts +6 -0
  135. package/lib/components/templates/ProjectListView/ProjectListView.js +71 -0
  136. package/lib/components/templates/ProjectListView/ProjectListView.js.map +1 -0
  137. package/lib/components/templates/ProjectSearchBar/ProjectSearchBar.d.ts +13 -0
  138. package/lib/components/templates/ProjectSearchBar/ProjectSearchBar.js +39 -0
  139. package/lib/components/templates/ProjectSearchBar/ProjectSearchBar.js.map +1 -0
  140. package/lib/components/templates/ReportingDetailsView/IndicatorCategory.d.ts +7 -0
  141. package/lib/components/templates/ReportingDetailsView/IndicatorCategory.js +70 -0
  142. package/lib/components/templates/ReportingDetailsView/IndicatorCategory.js.map +1 -0
  143. package/lib/components/templates/ReportingDetailsView/ReportingDetailsView.d.ts +3 -0
  144. package/lib/components/templates/ReportingDetailsView/ReportingDetailsView.js +50 -0
  145. package/lib/components/templates/ReportingDetailsView/ReportingDetailsView.js.map +1 -0
  146. package/lib/components/templates/SectionSearchBar/SectionSearchBar.d.ts +12 -0
  147. package/lib/components/templates/SectionSearchBar/SectionSearchBar.js +38 -0
  148. package/lib/components/templates/SectionSearchBar/SectionSearchBar.js.map +1 -0
  149. package/lib/components/templates/TargetVersionSearchBar/TargetVersionSearchBar.d.ts +12 -0
  150. package/lib/components/templates/TargetVersionSearchBar/TargetVersionSearchBar.js +40 -0
  151. package/lib/components/templates/TargetVersionSearchBar/TargetVersionSearchBar.js.map +1 -0
  152. package/lib/components/templates/TaskFilters/TaskFilters.d.ts +14 -0
  153. package/lib/components/templates/TaskFilters/TaskFilters.js +135 -0
  154. package/lib/components/templates/TaskFilters/TaskFilters.js.map +1 -0
  155. package/lib/components/templates/TaskStatusSearchBar/TaskStatusSearchBar.d.ts +12 -0
  156. package/lib/components/templates/TaskStatusSearchBar/TaskStatusSearchBar.js +56 -0
  157. package/lib/components/templates/TaskStatusSearchBar/TaskStatusSearchBar.js.map +1 -0
  158. package/lib/components/templates/TaskTagMultiValuePicker/TaskTagMultiValuePicker.d.ts +11 -0
  159. package/lib/components/templates/TaskTagMultiValuePicker/TaskTagMultiValuePicker.js +50 -0
  160. package/lib/components/templates/TaskTagMultiValuePicker/TaskTagMultiValuePicker.js.map +1 -0
  161. package/lib/components/templates/index.d.ts +12 -0
  162. package/lib/components/templates/index.js +30 -0
  163. package/lib/components/templates/index.js.map +1 -0
  164. package/lib/features/asyncFunctions-index.d.ts +4 -0
  165. package/lib/features/asyncFunctions-index.js +22 -0
  166. package/lib/features/asyncFunctions-index.js.map +1 -0
  167. package/lib/features/index.d.ts +4 -0
  168. package/lib/features/index.js +22 -0
  169. package/lib/features/index.js.map +1 -0
  170. package/lib/features/projectSlice.d.ts +65 -0
  171. package/lib/features/projectSlice.js +118 -0
  172. package/lib/features/projectSlice.js.map +1 -0
  173. package/lib/features/projectTaskSlice.d.ts +193 -0
  174. package/lib/features/projectTaskSlice.js +310 -0
  175. package/lib/features/projectTaskSlice.js.map +1 -0
  176. package/lib/features/reportingSlice.d.ts +13 -0
  177. package/lib/features/reportingSlice.js +43 -0
  178. package/lib/features/reportingSlice.js.map +1 -0
  179. package/lib/features/timesheetLinesSlice.d.ts +39 -0
  180. package/lib/features/timesheetLinesSlice.js +57 -0
  181. package/lib/features/timesheetLinesSlice.js.map +1 -0
  182. package/lib/hooks/index.d.ts +2 -0
  183. package/lib/hooks/index.js +20 -0
  184. package/lib/hooks/index.js.map +1 -0
  185. package/lib/hooks/use-project-header-actions.d.ts +1 -0
  186. package/lib/hooks/use-project-header-actions.js +75 -0
  187. package/lib/hooks/use-project-header-actions.js.map +1 -0
  188. package/lib/hooks/use-reporting-configuration.d.ts +5 -0
  189. package/lib/hooks/use-reporting-configuration.js +33 -0
  190. package/lib/hooks/use-reporting-configuration.js.map +1 -0
  191. package/lib/hooks/use-task-filter.d.ts +32 -0
  192. package/lib/hooks/use-task-filter.js +96 -0
  193. package/lib/hooks/use-task-filter.js.map +1 -0
  194. package/lib/i18n/en.json +87 -0
  195. package/lib/i18n/fr.json +87 -0
  196. package/lib/index.d.ts +8 -0
  197. package/lib/index.js +81 -0
  198. package/lib/index.js.map +1 -0
  199. package/lib/models/forms.d.ts +2 -0
  200. package/lib/models/forms.js +245 -0
  201. package/lib/models/forms.js.map +1 -0
  202. package/lib/models/index.d.ts +5 -0
  203. package/lib/models/index.js +23 -0
  204. package/lib/models/index.js.map +1 -0
  205. package/lib/models/objectFields.d.ts +2 -0
  206. package/lib/models/objectFields.js +187 -0
  207. package/lib/models/objectFields.js.map +1 -0
  208. package/lib/models/searchFields.d.ts +2 -0
  209. package/lib/models/searchFields.js +31 -0
  210. package/lib/models/searchFields.js.map +1 -0
  211. package/lib/models/sortFields.d.ts +2 -0
  212. package/lib/models/sortFields.js +22 -0
  213. package/lib/models/sortFields.js.map +1 -0
  214. package/lib/models/typeObjects.d.ts +2 -0
  215. package/lib/models/typeObjects.js +63 -0
  216. package/lib/models/typeObjects.js.map +1 -0
  217. package/lib/screens/ActiveProjectScreen.d.ts +3 -0
  218. package/lib/screens/ActiveProjectScreen.js +50 -0
  219. package/lib/screens/ActiveProjectScreen.js.map +1 -0
  220. package/lib/screens/BuisnessProjectScreen.d.ts +3 -0
  221. package/lib/screens/BuisnessProjectScreen.js +27 -0
  222. package/lib/screens/BuisnessProjectScreen.js.map +1 -0
  223. package/lib/screens/ProjectDetailsScreen.d.ts +7 -0
  224. package/lib/screens/ProjectDetailsScreen.js +87 -0
  225. package/lib/screens/ProjectDetailsScreen.js.map +1 -0
  226. package/lib/screens/ProjectScreen.d.ts +3 -0
  227. package/lib/screens/ProjectScreen.js +27 -0
  228. package/lib/screens/ProjectScreen.js.map +1 -0
  229. package/lib/screens/TaskDetailsScreen.d.ts +6 -0
  230. package/lib/screens/TaskDetailsScreen.js +92 -0
  231. package/lib/screens/TaskDetailsScreen.js.map +1 -0
  232. package/lib/screens/TaskFormScreen.d.ts +6 -0
  233. package/lib/screens/TaskFormScreen.js +83 -0
  234. package/lib/screens/TaskFormScreen.js.map +1 -0
  235. package/lib/screens/TaskListScreen.d.ts +5 -0
  236. package/lib/screens/TaskListScreen.js +56 -0
  237. package/lib/screens/TaskListScreen.js.map +1 -0
  238. package/lib/screens/index.d.ts +74 -0
  239. package/lib/screens/index.js +82 -0
  240. package/lib/screens/index.js.map +1 -0
  241. package/lib/types/index.d.ts +1 -0
  242. package/lib/types/index.js +19 -0
  243. package/lib/types/index.js.map +1 -0
  244. package/lib/types/reporting-type.d.ts +5 -0
  245. package/lib/types/reporting-type.js +23 -0
  246. package/lib/types/reporting-type.js.map +1 -0
  247. package/package.json +48 -0
@@ -0,0 +1,2 @@
1
+ import { ModuleSelections } from '@axelor/aos-mobile-core';
2
+ export declare const project_typeObjects: ModuleSelections;
@@ -0,0 +1,63 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ export const project_typeObjects = [
19
+ {
20
+ modelName: 'com.axelor.apps.project.db.ProjectTask',
21
+ fields: {
22
+ typeSelect: {
23
+ content: [
24
+ {
25
+ key: 'Task',
26
+ value: 'task',
27
+ title: null,
28
+ },
29
+ {
30
+ key: 'Ticket',
31
+ value: 'ticket',
32
+ title: null,
33
+ },
34
+ ],
35
+ },
36
+ },
37
+ },
38
+ {
39
+ modelName: 'com.axelor.apps.project.db.Project',
40
+ fields: {
41
+ taskStatusManagementSelect: {
42
+ content: [
43
+ {
44
+ key: 'ManageByCategory',
45
+ value: 4,
46
+ title: null,
47
+ },
48
+ {
49
+ key: 'ManageByProject',
50
+ value: 2,
51
+ title: null,
52
+ },
53
+ {
54
+ key: 'NoStatusManagement',
55
+ value: 1,
56
+ title: null,
57
+ },
58
+ ],
59
+ },
60
+ },
61
+ },
62
+ ];
63
+ //# sourceMappingURL=typeObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeObjects.js","sourceRoot":"","sources":["../../src/models/typeObjects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD;QACE,SAAS,EAAE,wCAAwC;QACnD,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP;wBACE,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,IAAI;qBACZ;oBACD;wBACE,GAAG,EAAE,QAAQ;wBACb,KAAK,EAAE,QAAQ;wBACf,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF;SACF;KACF;IACD;QACE,SAAS,EAAE,oCAAoC;QAC/C,MAAM,EAAE;YACN,0BAA0B,EAAE;gBAC1B,OAAO,EAAE;oBACP;wBACE,GAAG,EAAE,kBAAkB;wBACvB,KAAK,EAAE,CAAC;wBACR,KAAK,EAAE,IAAI;qBACZ;oBACD;wBACE,GAAG,EAAE,iBAAiB;wBACtB,KAAK,EAAE,CAAC;wBACR,KAAK,EAAE,IAAI;qBACZ;oBACD;wBACE,GAAG,EAAE,oBAAoB;wBACzB,KAAK,EAAE,CAAC;wBACR,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ActiveProjectScreen: ({}: {}) => React.JSX.Element;
3
+ export default ActiveProjectScreen;
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useEffect } from 'react';
19
+ import { StyleSheet } from 'react-native';
20
+ import { fetchActiveUser, useDispatch, useIsFocused, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
21
+ import { Label, Screen } from '@axelor/aos-mobile-ui';
22
+ import ProjectDetailsScreen from './ProjectDetailsScreen';
23
+ const ActiveProjectScreen = ({}) => {
24
+ const I18n = useTranslator();
25
+ const isFocused = useIsFocused();
26
+ const dispatch = useDispatch();
27
+ const { user } = useSelector(state => state.user);
28
+ useEffect(() => {
29
+ if (isFocused) {
30
+ dispatch(fetchActiveUser(user?.id));
31
+ }
32
+ }, [dispatch, isFocused, user.id]);
33
+ if (user.activeProject?.id) {
34
+ return <ProjectDetailsScreen projectId={user.activeProject?.id}/>;
35
+ }
36
+ else {
37
+ return (<Screen removeSpaceOnTop={true}>
38
+ <Label style={styles.label} message={I18n.t('Project_NoActiveProject')} type="info"/>
39
+ </Screen>);
40
+ }
41
+ };
42
+ const styles = StyleSheet.create({
43
+ label: {
44
+ width: '90%',
45
+ alignSelf: 'center',
46
+ marginTop: 30,
47
+ },
48
+ });
49
+ export default ActiveProjectScreen;
50
+ //# sourceMappingURL=ActiveProjectScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActiveProjectScreen.js","sourceRoot":"","sources":["../../src/screens/ActiveProjectScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,MAAM,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,EAAC,IAAI,EAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE;YACb,QAAQ,CAAE,eAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;SAC9C;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE;QAC1B,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAG,CAAC;KACpE;SAAM;QACL,OAAO,CACL,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAC7B;QAAA,CAAC,KAAK,CACJ,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAC3C,IAAI,CAAC,MAAM,EAEf;MAAA,EAAE,MAAM,CAAC,CACV,CAAC;KACH;AACH,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd;CACF,CAAC,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const BuisnessProjectScreen: ({}: {}) => React.JSX.Element;
3
+ export default BuisnessProjectScreen;
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React from 'react';
19
+ import { Screen } from '@axelor/aos-mobile-ui';
20
+ import { ProjectListView } from '../components';
21
+ const BuisnessProjectScreen = ({}) => {
22
+ return (<Screen removeSpaceOnTop={true}>
23
+ <ProjectListView businessProject={true}/>
24
+ </Screen>);
25
+ };
26
+ export default BuisnessProjectScreen;
27
+ //# sourceMappingURL=BuisnessProjectScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuisnessProjectScreen.js","sourceRoot":"","sources":["../../src/screens/BuisnessProjectScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAE9C,MAAM,qBAAqB,GAAG,CAAC,EAAE,EAAE,EAAE;IACnC,OAAO,CACL,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAC7B;MAAA,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EACzC;IAAA,EAAE,MAAM,CAAC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface ProjectDetailsScreenProps {
3
+ route?: any;
4
+ projectId?: number;
5
+ }
6
+ declare const ProjectDetailsScreen: ({ route, projectId, }: ProjectDetailsScreenProps) => React.JSX.Element;
7
+ export default ProjectDetailsScreen;
@@ -0,0 +1,87 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useEffect, useMemo } from 'react';
19
+ import { Screen, BottomBar, useThemeColor } from '@axelor/aos-mobile-ui';
20
+ import { useDispatch, useSelector, useTranslator } from '@axelor/aos-mobile-core';
21
+ import { getImputationMode } from '@axelor/aos-mobile-hr';
22
+ import { GeneralInformationView, ProjectHeader, ReportingView, SubProjectView, TaskView, TimeView, } from '../components';
23
+ import { fetchProjectById } from '../features/projectSlice';
24
+ import { useReportingConfiguration } from '../hooks/use-reporting-configuration';
25
+ const ProjectDetailsScreen = ({ route, projectId, }) => {
26
+ const _projectId = route?.params?.projectId || projectId;
27
+ const I18n = useTranslator();
28
+ const Colors = useThemeColor();
29
+ const dispatch = useDispatch();
30
+ const { project } = useSelector((state) => state.project_project);
31
+ const { user } = useSelector((state) => state.user);
32
+ const { noReporting } = useReportingConfiguration(project);
33
+ useEffect(() => {
34
+ dispatch(fetchProjectById({ projectId: _projectId }));
35
+ }, [_projectId, dispatch]);
36
+ const bottomBarItems = useMemo(() => [
37
+ {
38
+ iconName: 'house',
39
+ viewComponent: <GeneralInformationView />,
40
+ color: Colors.secondaryColor_dark,
41
+ title: I18n.t('Project_DetailsView'),
42
+ },
43
+ {
44
+ iconName: 'card-list',
45
+ color: Colors.plannedColor,
46
+ viewComponent: <TaskView />,
47
+ title: I18n.t('Project_TasksView'),
48
+ },
49
+ {
50
+ iconName: 'diagram-3-fill',
51
+ color: Colors.infoColor,
52
+ viewComponent: <SubProjectView />,
53
+ hidden: !project?.isShowPhasesElements && project?.parentProject == null,
54
+ title: I18n.t('Project_TreeStructureView'),
55
+ },
56
+ {
57
+ iconName: 'activity',
58
+ color: Colors.progressColor,
59
+ viewComponent: <ReportingView />,
60
+ hidden: noReporting,
61
+ title: I18n.t('Project_ReportingView'),
62
+ },
63
+ {
64
+ iconName: 'clock-history',
65
+ color: Colors.primaryColor,
66
+ hidden: !project?.manageTimeSpent ||
67
+ user.employee?.timesheetImputationSelect ===
68
+ getImputationMode()?.ManufOrder,
69
+ viewComponent: (<TimeView project={project} headerComponent={<ProjectHeader />}/>),
70
+ title: I18n.t('Project_TimeLogView'),
71
+ },
72
+ ], [
73
+ Colors,
74
+ I18n,
75
+ noReporting,
76
+ project,
77
+ user.employee?.timesheetImputationSelect,
78
+ ]);
79
+ if (project?.id !== _projectId) {
80
+ return null;
81
+ }
82
+ return (<Screen removeSpaceOnTop={true}>
83
+ <BottomBar items={bottomBarItems}/>
84
+ </Screen>);
85
+ };
86
+ export default ProjectDetailsScreen;
87
+ //# sourceMappingURL=ProjectDetailsScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectDetailsScreen.js","sourceRoot":"","sources":["../../src/screens/ProjectDetailsScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ProjectScreen: ({}: {}) => React.JSX.Element;
3
+ export default ProjectScreen;
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React from 'react';
19
+ import { Screen } from '@axelor/aos-mobile-ui';
20
+ import { ProjectListView } from '../components';
21
+ const ProjectScreen = ({}) => {
22
+ return (<Screen removeSpaceOnTop={true}>
23
+ <ProjectListView />
24
+ </Screen>);
25
+ };
26
+ export default ProjectScreen;
27
+ //# sourceMappingURL=ProjectScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectScreen.js","sourceRoot":"","sources":["../../src/screens/ProjectScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAE9C,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE;IAC3B,OAAO,CACL,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAC7B;MAAA,CAAC,eAAe,CAAC,AAAD,EAClB;IAAA,EAAE,MAAM,CAAC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ declare const TaskDetailsScreen: ({ navigation, route }: {
3
+ navigation: any;
4
+ route: any;
5
+ }) => React.JSX.Element;
6
+ export default TaskDetailsScreen;
@@ -0,0 +1,92 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
19
+ import { BottomBar, Screen, useThemeColor } from '@axelor/aos-mobile-ui';
20
+ import { useDispatch, useSelector, useTranslator } from '@axelor/aos-mobile-core';
21
+ import { getImputationMode } from '@axelor/aos-mobile-hr';
22
+ import { TaskCustomFieldsView, TaskDetailsHeader, TaskGeneralInformationView, TaskLinkView, TimeView, } from '../components';
23
+ import { fetchProjectTaskById } from '../features/projectTaskSlice';
24
+ const TaskDetailsScreen = ({ navigation, route }) => {
25
+ const { projecTaskId, isTimeViewActive } = route?.params;
26
+ const Colors = useThemeColor();
27
+ const I18n = useTranslator();
28
+ const dispatch = useDispatch();
29
+ const [manageActiveItem, setManageActiveItem] = useState(isTimeViewActive);
30
+ const { projectTask } = useSelector((state) => state.project_projectTask);
31
+ const { user } = useSelector((state) => state.user);
32
+ const fetchProjectTask = useCallback(() => {
33
+ dispatch(fetchProjectTaskById({ projecTaskId }));
34
+ }, [dispatch, projecTaskId]);
35
+ const bottomBarItems = useMemo(() => [
36
+ {
37
+ iconName: 'house',
38
+ viewComponent: (<TaskGeneralInformationView handleRefresh={fetchProjectTask}/>),
39
+ onPress: () => setManageActiveItem(false),
40
+ title: I18n.t('Project_DetailsView'),
41
+ },
42
+ {
43
+ iconName: 'layout-text-window-reverse',
44
+ viewComponent: <TaskCustomFieldsView />,
45
+ color: Colors.plannedColor,
46
+ disabled: projectTask?.project?.customFieldManagementSelect == null,
47
+ onPress: () => setManageActiveItem(false),
48
+ title: I18n.t('Project_CustomFieldsView'),
49
+ },
50
+ {
51
+ iconName: 'diagram-3-fill',
52
+ viewComponent: <TaskLinkView />,
53
+ color: Colors.infoColor,
54
+ onPress: () => setManageActiveItem(false),
55
+ title: I18n.t('Project_LinkedTasksView'),
56
+ },
57
+ {
58
+ iconName: 'pencil-square',
59
+ color: Colors.progressColor,
60
+ onPress: () => navigation.navigate('TaskFormScreen'),
61
+ },
62
+ {
63
+ iconName: 'clock-history',
64
+ color: Colors.primaryColor,
65
+ hidden: !projectTask?.project?.manageTimeSpent ||
66
+ user.employee?.timesheetImputationSelect ===
67
+ getImputationMode()?.ManufOrder,
68
+ viewComponent: (<TimeView project={projectTask?.project} projectTask={projectTask} headerComponent={<TaskDetailsHeader />}/>),
69
+ isActive: isTimeViewActive,
70
+ title: I18n.t('Project_TimeLogView'),
71
+ },
72
+ ], [
73
+ Colors,
74
+ I18n,
75
+ fetchProjectTask,
76
+ isTimeViewActive,
77
+ navigation,
78
+ projectTask,
79
+ user.employee?.timesheetImputationSelect,
80
+ ]);
81
+ useEffect(() => {
82
+ fetchProjectTask();
83
+ }, [fetchProjectTask]);
84
+ if (projecTaskId !== projectTask?.id) {
85
+ return null;
86
+ }
87
+ return (<Screen removeSpaceOnTop={true}>
88
+ <BottomBar items={bottomBarItems} updateActiveItem={manageActiveItem}/>
89
+ </Screen>);
90
+ };
91
+ export default TaskDetailsScreen;
92
+ //# sourceMappingURL=TaskDetailsScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskDetailsScreen.js","sourceRoot":"","sources":["../../src/screens/TaskDetailsScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ declare const TaskFormScreen: ({ navigation, route }: {
3
+ navigation: any;
4
+ route: any;
5
+ }) => React.JSX.Element;
6
+ export default TaskFormScreen;
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo } from 'react';
19
+ import { useSelector, FormView, useDispatch, isEmpty, useTypes, } from '@axelor/aos-mobile-core';
20
+ import { fetchProjectFormById } from '../features/projectSlice';
21
+ import { fetchCategoryFormById, saveProjectTask, } from '../features/projectTaskSlice';
22
+ const TaskFormScreen = ({ navigation, route }) => {
23
+ const { isCreation } = route.params ?? {};
24
+ const _dispatch = useDispatch();
25
+ const { ProjectTask } = useTypes();
26
+ const { projectTask } = useSelector((state) => state.project_projectTask);
27
+ const { project } = useSelector((state) => state.project_project);
28
+ useEffect(() => {
29
+ _dispatch(fetchProjectFormById({
30
+ projectId: isCreation ? project?.id : projectTask?.project?.id,
31
+ }));
32
+ }, [_dispatch, isCreation, project?.id, projectTask?.project]);
33
+ useEffect(() => {
34
+ _dispatch(fetchCategoryFormById({
35
+ categoryId: isCreation ? null : projectTask?.projectTaskCategory?.id,
36
+ }));
37
+ }, [_dispatch, isCreation, projectTask?.projectTaskCategory]);
38
+ const _defaultValue = useMemo(() => {
39
+ if (!isCreation && !isEmpty(projectTask)) {
40
+ return {
41
+ ...projectTask,
42
+ };
43
+ }
44
+ else {
45
+ return null;
46
+ }
47
+ }, [isCreation, projectTask]);
48
+ const creationDefaultValue = useMemo(() => ({
49
+ project,
50
+ projectReadonly: true,
51
+ taskDate: new Date().toISOString().split('T')[0],
52
+ progress: 0,
53
+ typeSelect: ProjectTask?.typeSelect.Task,
54
+ }), [project, ProjectTask?.typeSelect]);
55
+ const saveTaskAPI = useCallback((objectState, dispatch) => {
56
+ dispatch(saveProjectTask({ projectTask: objectState }));
57
+ navigation.pop();
58
+ }, [navigation]);
59
+ return (<FormView formKey="project_task" defaultValue={_defaultValue} creationDefaultValue={creationDefaultValue} defaultEditMode={true} actions={[
60
+ {
61
+ key: 'update-project-task',
62
+ type: 'update',
63
+ needValidation: true,
64
+ needRequiredFields: true,
65
+ customAction: ({ dispatch, objectState }) => {
66
+ saveTaskAPI(objectState, dispatch);
67
+ },
68
+ hideIf: () => isCreation,
69
+ },
70
+ {
71
+ key: 'create-project-task',
72
+ type: 'create',
73
+ needValidation: true,
74
+ needRequiredFields: true,
75
+ customAction: ({ dispatch, objectState }) => {
76
+ saveTaskAPI(objectState, dispatch);
77
+ },
78
+ hideIf: () => !isCreation,
79
+ },
80
+ ]}/>);
81
+ };
82
+ export default TaskFormScreen;
83
+ //# sourceMappingURL=TaskFormScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskFormScreen.js","sourceRoot":"","sources":["../../src/screens/TaskFormScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ declare const TaskListScreen: ({ navigation }: {
3
+ navigation: any;
4
+ }) => React.JSX.Element;
5
+ export default TaskListScreen;
@@ -0,0 +1,56 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2024 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useMemo, useState } from 'react';
19
+ import { Screen } from '@axelor/aos-mobile-ui';
20
+ import { SearchListView, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
21
+ import { TaskActionCard, TaskFilters } from '../components';
22
+ import { searchProjectTask } from '../features/projectTaskSlice';
23
+ const TaskListScreen = ({ navigation }) => {
24
+ const I18n = useTranslator();
25
+ const { userId } = useSelector((state) => state.auth);
26
+ const { loading, moreLoading, isListEnd, projectTaskList } = useSelector((state) => state.project_projectTask);
27
+ const [project, setProject] = useState(null);
28
+ const [selectedStatus, setSelectedStatus] = useState([]);
29
+ const [selectedPriority, setSelectedPriority] = useState([]);
30
+ const [selectedCategory, setSelectedCategory] = useState([]);
31
+ const [isAssignedToMe, setIsAssignedToMe] = useState(false);
32
+ const sliceFunctionData = useMemo(() => {
33
+ return {
34
+ projectId: project?.id,
35
+ isAssignedToMe: isAssignedToMe,
36
+ selectedStatus: selectedStatus,
37
+ selectedPriority: selectedPriority,
38
+ selectedCategory: selectedCategory,
39
+ userId: isAssignedToMe ? userId : null,
40
+ };
41
+ }, [
42
+ isAssignedToMe,
43
+ project?.id,
44
+ selectedCategory,
45
+ selectedPriority,
46
+ selectedStatus,
47
+ userId,
48
+ ]);
49
+ return (<Screen removeSpaceOnTop={true}>
50
+ <SearchListView headerChildren={<TaskFilters isAssignedToMe={isAssignedToMe} setIsAssignedToMe={setIsAssignedToMe} setSelectedPriority={setSelectedPriority} setSelectedStatus={setSelectedStatus} selectedCategories={selectedCategory} setSelectedCategory={setSelectedCategory} project={project} setProject={setProject} showProjectSearchBar/>} list={projectTaskList} loading={loading} moreLoading={moreLoading} isListEnd={isListEnd} sliceFunction={searchProjectTask} sliceFunctionData={sliceFunctionData} searchPlaceholder={I18n.t('Base_Search')} renderListItem={({ item }) => (<TaskActionCard task={item} displayParentProjet={project == null} onPress={() => {
51
+ navigation.navigate('TaskDetailsScreen', { projecTaskId: item.id });
52
+ }}/>)}/>
53
+ </Screen>);
54
+ };
55
+ export default TaskListScreen;
56
+ //# sourceMappingURL=TaskListScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskListScreen.js","sourceRoot":"","sources":["../../src/screens/TaskListScreen.tsx"],"names":[],"mappings":"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"}