@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,117 @@
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 { SectionList, StyleSheet, View, RefreshControl } from 'react-native';
20
+ import { DateDisplay, formatDate, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
21
+ import { Label } from '@axelor/aos-mobile-ui';
22
+ import { previousProjectActivity } from '../../../api/project-api';
23
+ import { ActivityCard } from '../../molecules';
24
+ const ActivityListView = () => {
25
+ const I18n = useTranslator();
26
+ const { project } = useSelector((state) => state.project_project);
27
+ const [refreshing, setRefreshing] = useState(false);
28
+ const [dataList, setDataList] = useState([]);
29
+ const [startDate, setStartDate] = useState(() => {
30
+ const initialDate = new Date();
31
+ initialDate.setDate(initialDate.getDate() + 1);
32
+ return initialDate;
33
+ });
34
+ const dateLimit = useMemo(() => {
35
+ const limitDate = new Date();
36
+ limitDate.setFullYear(project.createdOn);
37
+ return limitDate;
38
+ }, [project.createdOn]);
39
+ const handlePreviousActivity = useCallback(() => {
40
+ setStartDate(prevStartDate => {
41
+ const newStartDate = new Date(prevStartDate);
42
+ newStartDate.setMonth(newStartDate.getMonth() - 1);
43
+ return newStartDate;
44
+ });
45
+ }, []);
46
+ const fetchActivityData = useCallback(async (_startDate) => {
47
+ try {
48
+ const res = await previousProjectActivity({
49
+ projectId: project?.id,
50
+ startDate: formatDate(_startDate, 'MM/DD/YYYY'),
51
+ });
52
+ const activityList = res.data.data[0]?.values?.$activityList?.[0] || {};
53
+ const formattedData = Object.keys(activityList).map(date => ({
54
+ title: date,
55
+ data: activityList[date],
56
+ }));
57
+ if (formattedData.length === 0 && _startDate >= dateLimit) {
58
+ handlePreviousActivity();
59
+ }
60
+ else {
61
+ setDataList(prevData => [...prevData, ...formattedData]);
62
+ }
63
+ }
64
+ catch (error) {
65
+ console.error(error);
66
+ }
67
+ }, [project?.id, dateLimit, handlePreviousActivity]);
68
+ useEffect(() => {
69
+ if (project?.id) {
70
+ fetchActivityData(startDate).finally(() => setRefreshing(false));
71
+ }
72
+ }, [fetchActivityData, startDate, project]);
73
+ const convertToDate = dateStr => {
74
+ const [month, day, year] = dateStr.split('/').map(Number);
75
+ return new Date(year, month - 1, day);
76
+ };
77
+ const onRefresh = useCallback(() => {
78
+ setRefreshing(true);
79
+ setStartDate(() => {
80
+ const newDate = new Date();
81
+ newDate.setDate(newDate.getDate() + 1);
82
+ return newDate;
83
+ });
84
+ setDataList([]);
85
+ }, []);
86
+ const renderItem = ({ item }) => {
87
+ const updates = item[Object.keys(item)[0]];
88
+ return updates.map(update => {
89
+ const { activity = {}, modelName, time, user, utilityClass, title, userId, } = update;
90
+ const tracks = activity?.tracks || [];
91
+ return (<ActivityCard key={time} userId={userId} userName={user} time={time} title={title} tracks={tracks} modelName={modelName} utilityClass={utilityClass}/>);
92
+ });
93
+ };
94
+ const renderSectionHeader = ({ section: { title } }) => {
95
+ const dateToDisplay = convertToDate(title);
96
+ const isValidDate = !isNaN(dateToDisplay.getTime());
97
+ const displayDate = isValidDate ? dateToDisplay : new Date();
98
+ return (<View style={styles.header}>
99
+ <DateDisplay date={displayDate.toString()} displayYear={true}/>
100
+ </View>);
101
+ };
102
+ if (dataList.length === 0 && !refreshing) {
103
+ return (<Label style={styles.label} type="info" message={I18n.t('Project_NoActivity')}/>);
104
+ }
105
+ return (<SectionList sections={dataList} keyExtractor={(item, index) => item + index} renderItem={renderItem} renderSectionHeader={renderSectionHeader} onEndReached={handlePreviousActivity} refreshControl={<RefreshControl refreshing={refreshing} onRefresh={onRefresh}/>}/>);
106
+ };
107
+ const styles = StyleSheet.create({
108
+ header: {
109
+ padding: 10,
110
+ },
111
+ label: {
112
+ width: '90%',
113
+ alignSelf: 'center',
114
+ },
115
+ });
116
+ export default ActivityListView;
117
+ //# sourceMappingURL=ActivityListView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityListView.js","sourceRoot":"","sources":["../../../../src/components/templates/ActivityListView/ActivityListView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACvE,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,KAAK,EAAC,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAE7B,MAAM,EAAC,OAAO,EAAC,GAAG,WAAW,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAErE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC9C,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAExB,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,YAAY,CAAC,aAAa,CAAC,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7C,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAC,UAAU,EAAC,EAAE;QACjB,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC;gBACxC,SAAS,EAAE,OAAO,EAAE,EAAE;gBACtB,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC;aAChD,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3D,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC,CAAC;YAEJ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,IAAI,SAAS,EAAE;gBACzD,sBAAsB,EAAE,CAAC;aAC1B;iBAAM;gBACL,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;aAC1D;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC,EACD,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,sBAAsB,CAAC,CACjD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,EAAE,EAAE;YACf,iBAAiB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;SAClE;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE;QAC9B,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,YAAY,CAAC,GAAG,EAAE;YAChB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC1B,MAAM,EACJ,QAAQ,GAAG,EAAE,EACb,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,MAAM,GACP,GAAG,MAAM,CAAC;YACX,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;YAEtC,OAAO,CACL,CAAC,YAAY,CACX,GAAG,CAAC,CAAC,IAAI,CAAC,CACV,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,QAAQ,CAAC,CAAC,IAAI,CAAC,CACf,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,YAAY,CAAC,CAAC,YAAY,CAAC,EAC3B,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,EAAC,OAAO,EAAE,EAAC,KAAK,EAAC,EAAC,EAAE,EAAE;QACjD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAE7D,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACzB;QAAA,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAC/D;MAAA,EAAE,IAAI,CAAC,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;QACxC,OAAO,CACL,CAAC,KAAK,CACJ,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,IAAI,CAAC,MAAM,CACX,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EACtC,CACH,CAAC;KACH;IAED,OAAO,CACL,CAAC,WAAW,CACV,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAC5C,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,mBAAmB,CAAC,CAAC,mBAAmB,CAAC,CACzC,YAAY,CAAC,CAAC,sBAAsB,CAAC,CACrC,cAAc,CAAC,CACb,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAG,CACjE,EACD,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE;QACN,OAAO,EAAE,EAAE;KACZ;IACD,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface CategorySearchBarProps {
3
+ style?: any;
4
+ title?: string;
5
+ defaultValue?: string;
6
+ onChange?: (any: any) => void;
7
+ readonly?: boolean;
8
+ required?: boolean;
9
+ showTitle?: boolean;
10
+ }
11
+ declare const CategorySearchBar: ({ style, title, defaultValue, onChange, readonly, required, showTitle, }: CategorySearchBarProps) => React.JSX.Element;
12
+ export default CategorySearchBar;
@@ -0,0 +1,41 @@
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, useMemo } from 'react';
19
+ import { displayItemName, useDispatch, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
20
+ import { AutoCompleteSearch } from '@axelor/aos-mobile-ui';
21
+ import { searchCategory } from '../../../features/projectTaskSlice';
22
+ const CategorySearchBarAux = ({ style = null, title = 'Project_Category', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, }) => {
23
+ const I18n = useTranslator();
24
+ const dispatch = useDispatch();
25
+ const { categoryList, loadingCategory, moreLoadingCategory, isListEndCategory, } = useSelector((state) => state.project_projectTask);
26
+ const { projectForm } = useSelector((state) => state.project_project);
27
+ const categoryIds = useMemo(() => projectForm?.projectTaskCategorySet?.map(priority => priority.id), [projectForm?.projectTaskCategorySet]);
28
+ const searchCategoryAPI = useCallback(({ page = 0, searchValue }) => {
29
+ dispatch(searchCategory({
30
+ page,
31
+ searchValue,
32
+ categoryIds: categoryIds,
33
+ }));
34
+ }, [categoryIds, dispatch]);
35
+ return (<AutoCompleteSearch style={style} title={showTitle && I18n.t(title)} objectList={categoryList} value={defaultValue} required={required} readonly={readonly} onChangeValue={onChange} fetchData={searchCategoryAPI} displayValue={displayItemName} placeholder={I18n.t(title)} showDetailsPopup={true} loadingList={loadingCategory} moreLoading={moreLoadingCategory} isListEnd={isListEndCategory} navigate={false} oneFilter={false}/>);
36
+ };
37
+ const CategorySearchBar = ({ style = null, title = 'Project_Category', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, }) => {
38
+ return (<CategorySearchBarAux style={style} title={title} defaultValue={defaultValue} required={required} readonly={readonly} onChange={onChange} showTitle={showTitle}/>);
39
+ };
40
+ export default CategorySearchBar;
41
+ //# sourceMappingURL=CategorySearchBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategorySearchBar.js","sourceRoot":"","sources":["../../../../src/components/templates/CategorySearchBar/CategorySearchBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAClD,OAAO,EACL,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAYlE,MAAM,oBAAoB,GAAG,CAAC,EAC5B,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,kBAAkB,EAC1B,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,EACnB,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,IAAI,GACO,EAAE,EAAE;IAC3B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,EACJ,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAClB,GAAG,WAAW,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3D,MAAM,EAAC,WAAW,EAAC,GAAG,WAAW,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEzE,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,WAAW,EAAE,sBAAsB,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EACvE,CAAC,WAAW,EAAE,sBAAsB,CAAC,CACtC,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,EAAC,IAAI,GAAG,CAAC,EAAE,WAAW,EAAC,EAAE,EAAE;QAC1B,QAAQ,CACL,cAAsB,CAAC;YACtB,IAAI;YACJ,WAAW;YACX,WAAW,EAAE,WAAW;SACzB,CAAC,CACH,CAAC;IACJ,CAAC,EACD,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAC;IAEF,OAAO,CACL,CAAC,kBAAkB,CACjB,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,KAAK,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAClC,UAAU,CAAC,CAAC,YAAY,CAAC,CACzB,KAAK,CAAC,CAAC,YAAY,CAAC,CACpB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,aAAa,CAAC,CAAC,QAAQ,CAAC,CACxB,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAC7B,YAAY,CAAC,CAAC,eAAe,CAAC,CAC9B,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC3B,gBAAgB,CAAC,CAAC,IAAI,CAAC,CACvB,WAAW,CAAC,CAAC,eAAe,CAAC,CAC7B,WAAW,CAAC,CAAC,mBAAmB,CAAC,CACjC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAC7B,QAAQ,CAAC,CAAC,KAAK,CAAC,CAChB,SAAS,CAAC,CAAC,KAAK,CAAC,EACjB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,EACzB,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,kBAAkB,EAC1B,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,EACnB,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,IAAI,GACO,EAAE,EAAE;IAC3B,OAAO,CACL,CAAC,oBAAoB,CACnB,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,SAAS,CAAC,CAAC,SAAS,CAAC,EACrB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface ParentTaskSearchBarProps {
3
+ style?: any;
4
+ title?: string;
5
+ defaultValue?: string;
6
+ onChange?: (any: any) => void;
7
+ readonly?: boolean;
8
+ required?: boolean;
9
+ showTitle?: boolean;
10
+ }
11
+ declare const ParentTaskSearchBar: ({ style, title, defaultValue, onChange, readonly, required, showTitle, }: ParentTaskSearchBarProps) => React.JSX.Element;
12
+ export default ParentTaskSearchBar;
@@ -0,0 +1,41 @@
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 } from 'react';
19
+ import { displayItemName, useDispatch, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
20
+ import { AutoCompleteSearch } from '@axelor/aos-mobile-ui';
21
+ import { searchParentTask } from '../../../features/projectTaskSlice';
22
+ const ParentTaskSearchBarAux = ({ style = null, title = 'Project_ParentTask', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, }) => {
23
+ const I18n = useTranslator();
24
+ const dispatch = useDispatch();
25
+ const { projectTask, parentTaskList, loadingParentTask, moreLoadingParentTask, isListEndParentTask, } = useSelector((state) => state.project_projectTask);
26
+ const { projectForm } = useSelector((state) => state.project_project);
27
+ const searchParentTaskAPI = useCallback(({ page = 0, searchValue }) => {
28
+ dispatch(searchParentTask({
29
+ page,
30
+ searchValue,
31
+ projectId: projectForm?.id,
32
+ projectTaskId: projectTask?.id,
33
+ }));
34
+ }, [dispatch, projectForm?.id, projectTask?.id]);
35
+ return (<AutoCompleteSearch style={style} title={showTitle && I18n.t(title)} objectList={parentTaskList} value={defaultValue} required={required} readonly={readonly} onChangeValue={onChange} fetchData={searchParentTaskAPI} displayValue={displayItemName} placeholder={I18n.t(title)} showDetailsPopup={true} loadingList={loadingParentTask} moreLoading={moreLoadingParentTask} isListEnd={isListEndParentTask} navigate={false} oneFilter={false}/>);
36
+ };
37
+ const ParentTaskSearchBar = ({ style = null, title = 'Project_ParentTask', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, }) => {
38
+ return (<ParentTaskSearchBarAux style={style} title={title} defaultValue={defaultValue} required={required} readonly={readonly} onChange={onChange} showTitle={showTitle}/>);
39
+ };
40
+ export default ParentTaskSearchBar;
41
+ //# sourceMappingURL=ParentTaskSearchBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParentTaskSearchBar.js","sourceRoot":"","sources":["../../../../src/components/templates/ParentTaskSearchBar/ParentTaskSearchBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface PrioritySearchBarProps {
3
+ style?: any;
4
+ title?: string;
5
+ defaultValue?: string;
6
+ onChange?: (any: any) => void;
7
+ readonly?: boolean;
8
+ required?: boolean;
9
+ showTitle?: boolean;
10
+ }
11
+ declare const PrioritySearchBar: ({ style, title, defaultValue, onChange, readonly, required, showTitle, }: PrioritySearchBarProps) => React.JSX.Element;
12
+ export default PrioritySearchBar;
@@ -0,0 +1,41 @@
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, useMemo } from 'react';
19
+ import { displayItemName, useDispatch, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
20
+ import { AutoCompleteSearch } from '@axelor/aos-mobile-ui';
21
+ import { searchPriority } from '../../../features/projectTaskSlice';
22
+ const PrioritySearchBarAux = ({ style = null, title = 'Project_Priority', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, }) => {
23
+ const I18n = useTranslator();
24
+ const dispatch = useDispatch();
25
+ const { priorityList, loadingPriority, moreLoadingPriority, isListEndPriority, } = useSelector((state) => state.project_projectTask);
26
+ const { projectForm } = useSelector((state) => state.project_project);
27
+ const priorityIds = useMemo(() => projectForm?.projectTaskPrioritySet?.map(priority => priority.id), [projectForm?.projectTaskPrioritySet]);
28
+ const searchPriorityAPI = useCallback(({ page = 0, searchValue }) => {
29
+ dispatch(searchPriority({
30
+ page,
31
+ searchValue,
32
+ priorityIds: priorityIds,
33
+ }));
34
+ }, [dispatch, priorityIds]);
35
+ return (<AutoCompleteSearch style={style} title={showTitle && I18n.t(title)} objectList={priorityList} value={defaultValue} required={required} readonly={readonly} onChangeValue={onChange} fetchData={searchPriorityAPI} displayValue={displayItemName} placeholder={I18n.t(title)} showDetailsPopup={true} loadingList={loadingPriority} moreLoading={moreLoadingPriority} isListEnd={isListEndPriority} navigate={false} oneFilter={false}/>);
36
+ };
37
+ const PrioritySearchBar = ({ style = null, title = 'Project_Priority', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, }) => {
38
+ return (<PrioritySearchBarAux style={style} title={title} defaultValue={defaultValue} required={required} readonly={readonly} onChange={onChange} showTitle={showTitle}/>);
39
+ };
40
+ export default PrioritySearchBar;
41
+ //# sourceMappingURL=PrioritySearchBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrioritySearchBar.js","sourceRoot":"","sources":["../../../../src/components/templates/PrioritySearchBar/PrioritySearchBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface ProjectListViewListViewProps {
3
+ businessProject?: boolean;
4
+ }
5
+ declare const ProjectListView: ({ businessProject, }: ProjectListViewListViewProps) => React.JSX.Element;
6
+ export default ProjectListView;
@@ -0,0 +1,71 @@
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, useState } from 'react';
19
+ import { StyleSheet, View } from 'react-native';
20
+ import { useSelector, useTranslator, SearchListView, useTypeHelpers, useDispatch, useNavigation, } from '@axelor/aos-mobile-core';
21
+ import { MultiValuePicker, ToggleButton } from '@axelor/aos-mobile-ui';
22
+ import { fetchProjectStatus, searchProject, } from '../../../features/projectSlice';
23
+ import { ProjectCard } from '../../atoms';
24
+ const ProjectListView = ({ businessProject = false, }) => {
25
+ const I18n = useTranslator();
26
+ const dispatch = useDispatch();
27
+ const navigation = useNavigation();
28
+ const { getCustomSelectionItems } = useTypeHelpers();
29
+ const { userId } = useSelector((state) => state.auth);
30
+ const { loading, moreLoading, isListEnd, projectList, projectStatusList } = useSelector((state) => state.project_project);
31
+ const [selectedStatus, setSelectedStatus] = useState([]);
32
+ const [isAssignedToMe, setIsAssignedToMe] = useState(true);
33
+ const statusList = useMemo(() => getCustomSelectionItems(projectStatusList, 'name', selectedStatus), [projectStatusList, getCustomSelectionItems, selectedStatus]);
34
+ const sliceFunctionData = useMemo(() => ({
35
+ isBusinessProject: businessProject,
36
+ statusList: selectedStatus,
37
+ userId: isAssignedToMe ? userId : null,
38
+ }), [businessProject, isAssignedToMe, selectedStatus, userId]);
39
+ useEffect(() => {
40
+ dispatch(fetchProjectStatus());
41
+ }, [dispatch]);
42
+ return (<SearchListView list={projectList} loading={loading} moreLoading={moreLoading} isListEnd={isListEnd} sliceFunction={searchProject} sliceFunctionData={sliceFunctionData} searchPlaceholder={I18n.t('Base_Search')} headerChildren={<View style={styles.headerContainer}>
43
+ <ToggleButton isActive={isAssignedToMe} onPress={() => setIsAssignedToMe(current => !current)} buttonConfig={{
44
+ iconName: 'person-fill',
45
+ width: '10%',
46
+ style: styles.toggleButton,
47
+ }}/>
48
+ <MultiValuePicker style={styles.picker} listItems={statusList} onValueChange={setSelectedStatus} placeholder={I18n.t('Project_Status')}/>
49
+ </View>} renderListItem={({ item }) => (<ProjectCard customer={item.clientPartner} projectStatus={item.projectStatus} onPress={() => {
50
+ navigation.navigate('ProjectDetailsScreen', {
51
+ projectId: item.id,
52
+ });
53
+ }} name={item.name} code={item.code} company={item.company?.name} assignedTo={isAssignedToMe ? null : item.assignedTo?.fullName} parentProject={item.parentProject?.fullName}/>)}/>);
54
+ };
55
+ const styles = StyleSheet.create({
56
+ headerContainer: {
57
+ width: '90%',
58
+ flexDirection: 'row',
59
+ justifyContent: 'space-between',
60
+ alignSelf: 'center',
61
+ alignItems: 'center',
62
+ },
63
+ toggleButton: {
64
+ height: 40,
65
+ },
66
+ picker: {
67
+ width: '85%',
68
+ },
69
+ });
70
+ export default ProjectListView;
71
+ //# sourceMappingURL=ProjectListView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectListView.js","sourceRoot":"","sources":["../../../../src/components/templates/ProjectListView/ProjectListView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ interface ProjectSearchBarProps {
3
+ style?: any;
4
+ title?: string;
5
+ defaultValue?: string;
6
+ onChange?: (any: any) => void;
7
+ readonly?: boolean;
8
+ required?: boolean;
9
+ showTitle?: boolean;
10
+ differentiateBusinessProjects?: boolean;
11
+ }
12
+ declare const ProjectSearchBar: ({ style, title, defaultValue, onChange, readonly, required, showTitle, differentiateBusinessProjects, }: ProjectSearchBarProps) => React.JSX.Element;
13
+ export default ProjectSearchBar;
@@ -0,0 +1,39 @@
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 } from 'react';
19
+ import { displayItemName, useDispatch, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
20
+ import { AutoCompleteSearch } from '@axelor/aos-mobile-ui';
21
+ import { searchProject } from '../../../features/projectSlice';
22
+ const ProjectSearchBarAux = ({ style = null, title = 'Project_Project', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, differentiateBusinessProjects = true, }) => {
23
+ const I18n = useTranslator();
24
+ const dispatch = useDispatch();
25
+ const { projectList, loading, moreLoading, isListEnd } = useSelector((state) => state.project_project);
26
+ const searchProjectAPI = useCallback(({ page = 0, searchValue }) => {
27
+ dispatch(searchProject({
28
+ page,
29
+ searchValue,
30
+ differentiateBusinessProjects,
31
+ }));
32
+ }, [differentiateBusinessProjects, dispatch]);
33
+ return (<AutoCompleteSearch style={style} title={showTitle && I18n.t(title)} objectList={projectList} value={defaultValue} required={required} readonly={readonly} onChangeValue={onChange} fetchData={searchProjectAPI} displayValue={displayItemName} placeholder={I18n.t(title)} showDetailsPopup={true} loadingList={loading} moreLoading={moreLoading} isListEnd={isListEnd} navigate={false} oneFilter={false}/>);
34
+ };
35
+ const ProjectSearchBar = ({ style = null, title = 'Project_Project', defaultValue = null, onChange = () => { }, readonly = false, required = false, showTitle = true, differentiateBusinessProjects = true, }) => {
36
+ return (<ProjectSearchBarAux style={style} title={title} defaultValue={defaultValue} required={required} readonly={readonly} onChange={onChange} showTitle={showTitle} differentiateBusinessProjects={differentiateBusinessProjects}/>);
37
+ };
38
+ export default ProjectSearchBar;
39
+ //# sourceMappingURL=ProjectSearchBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSearchBar.js","sourceRoot":"","sources":["../../../../src/components/templates/ProjectSearchBar/ProjectSearchBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ declare const IndicatorCategory: ({ title, indicatorList, subCategoryList }: {
3
+ title: any;
4
+ indicatorList: any;
5
+ subCategoryList: any;
6
+ }) => React.JSX.Element;
7
+ export default IndicatorCategory;
@@ -0,0 +1,70 @@
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, useState } from 'react';
19
+ import { Dimensions, StyleSheet, TouchableOpacity, View } from 'react-native';
20
+ import { formatNumber, HorizontalRule, Icon, IndicatorChart, Text, } from '@axelor/aos-mobile-ui';
21
+ import { useTranslator } from '@axelor/aos-mobile-core';
22
+ const IndicatorCategory = ({ title, indicatorList, subCategoryList }) => {
23
+ const I18n = useTranslator();
24
+ const [expanded, setExpanded] = useState(true);
25
+ const renderIndicator = useCallback((data, idx) => {
26
+ return (<IndicatorChart key={`reportingTimeData${idx}`} datasets={[
27
+ {
28
+ ...data,
29
+ value: formatNumber(data.value, I18n.t('Base_DecimalSpacer'), I18n.t('Base_ThousandSpacer')),
30
+ },
31
+ ]} widthGraph={Dimensions.get('window').width / 2} translator={I18n.t}/>);
32
+ }, [I18n]);
33
+ const renderContent = useCallback(() => {
34
+ if (indicatorList != null) {
35
+ return indicatorList.map(renderIndicator);
36
+ }
37
+ if (subCategoryList != null) {
38
+ return subCategoryList.map((data, idx) => (<IndicatorCategory {...data} key={`${data.title}-${idx}`}/>));
39
+ }
40
+ return null;
41
+ }, [indicatorList, renderIndicator, subCategoryList]);
42
+ return (<View>
43
+ <TouchableOpacity style={styles.headerTouchable} onPress={() => setExpanded(_current => !_current)}>
44
+ <View style={styles.headerContainer}>
45
+ <Icon name={expanded ? 'chevron-up' : 'chevron-down'} style={styles.icon}/>
46
+ <Text writingType="title">{title}</Text>
47
+ </View>
48
+ <HorizontalRule />
49
+ </TouchableOpacity>
50
+ {expanded && <View style={styles.dataContainer}>{renderContent()}</View>}
51
+ </View>);
52
+ };
53
+ const styles = StyleSheet.create({
54
+ headerTouchable: {
55
+ width: Dimensions.get('window').width,
56
+ },
57
+ headerContainer: {
58
+ margin: 10,
59
+ flexDirection: 'row',
60
+ },
61
+ icon: {
62
+ marginRight: 10,
63
+ },
64
+ dataContainer: {
65
+ flexDirection: 'row',
66
+ flexWrap: 'wrap',
67
+ },
68
+ });
69
+ export default IndicatorCategory;
70
+ //# sourceMappingURL=IndicatorCategory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndicatorCategory.js","sourceRoot":"","sources":["../../../../src/components/templates/ReportingDetailsView/IndicatorCategory.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ReportingDetailsView: () => React.JSX.Element;
3
+ export default ReportingDetailsView;
@@ -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, { useCallback, useEffect } from 'react';
19
+ import { StyleSheet } from 'react-native';
20
+ import { useDispatch, useSelector, useTranslator } from '@axelor/aos-mobile-core';
21
+ import { Label, ScrollView } from '@axelor/aos-mobile-ui';
22
+ import { getProjectReportingIndicator } from '../../../features/reportingSlice';
23
+ import IndicatorCategory from './IndicatorCategory';
24
+ const ReportingDetailsView = () => {
25
+ const I18n = useTranslator();
26
+ const dispatch = useDispatch();
27
+ const { project } = useSelector(state => state.project_project);
28
+ const { reportingIndicator } = useSelector(state => state.project_reporting);
29
+ const fetchIndicators = useCallback(() => {
30
+ dispatch(getProjectReportingIndicator({ projectId: project?.id }));
31
+ }, [dispatch, project?.id]);
32
+ useEffect(() => {
33
+ fetchIndicators();
34
+ }, [fetchIndicators]);
35
+ return (<ScrollView style={styles.scroll} refresh={{ fetcher: fetchIndicators, loading: false }}>
36
+ {!reportingIndicator && (<Label style={styles.label} message={I18n.t('Base_NoData')} type="info"/>)}
37
+ {reportingIndicator.map((data, idx) => (<IndicatorCategory {...data} key={`${data.title}-${idx}`}/>))}
38
+ </ScrollView>);
39
+ };
40
+ const styles = StyleSheet.create({
41
+ scroll: {
42
+ height: null,
43
+ },
44
+ label: {
45
+ width: '90%',
46
+ alignSelf: 'center',
47
+ },
48
+ });
49
+ export default ReportingDetailsView;
50
+ //# sourceMappingURL=ReportingDetailsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportingDetailsView.js","sourceRoot":"","sources":["../../../../src/components/templates/ReportingDetailsView/ReportingDetailsView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAC9E,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,MAAM,oBAAoB,GAAG,GAAG,EAAE;IAChC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,EAAC,OAAO,EAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC9D,MAAM,EAAC,kBAAkB,EAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE3E,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,QAAQ,CAAE,4BAAoC,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,CACL,CAAC,UAAU,CACT,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACrB,OAAO,CAAC,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CACpD;MAAA,CAAC,CAAC,kBAAkB,IAAI,CACtB,CAAC,KAAK,CACJ,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAC/B,IAAI,CAAC,MAAM,EACX,CACH,CACD;MAAA,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CACrC,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,EAAG,CAC7D,CAAC,CACJ;IAAA,EAAE,UAAU,CAAC,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;KACb;IACD,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}