@sarafapp/iron_core 1.0.64 → 1.0.66

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 (307) hide show
  1. package/package.json +2 -2
  2. package/dist/core/src/BaseModel.d.ts +0 -45
  3. package/dist/core/src/Utils.d.ts +0 -4
  4. package/dist/core/src/accessHandling/AccessControl.d.ts +0 -10
  5. package/dist/core/src/accessHandling/AccessLevel.d.ts +0 -13
  6. package/dist/core/src/accessHandling/Accessible.d.ts +0 -3
  7. package/dist/core/src/accessHandling/EveryDirectiveAccess.d.ts +0 -4
  8. package/dist/core/src/accessHandling/SSO/AuthorizationDirective.d.ts +0 -17
  9. package/dist/core/src/accessHandling/SSO/AuthorizationService.d.ts +0 -17
  10. package/dist/core/src/accessHandling/SSO/EveryLevelAuthorizationDirective.d.ts +0 -4
  11. package/dist/core/src/accessHandling/SSO/SomeLevelsAuthorizationDirective.d.ts +0 -4
  12. package/dist/core/src/accessHandling/SomeDirectiveAccess.d.ts +0 -4
  13. package/dist/core/src/accessHandling/index.d.ts +0 -9
  14. package/dist/core/src/baseDirective/BeforeMountDirective.d.ts +0 -3
  15. package/dist/core/src/baseDirective/BeforeUnMountDirective.d.ts +0 -3
  16. package/dist/core/src/baseDirective/BeforeUpdateDirective.d.ts +0 -3
  17. package/dist/core/src/baseDirective/CreatedDirective.d.ts +0 -3
  18. package/dist/core/src/baseDirective/MountedDirective.d.ts +0 -3
  19. package/dist/core/src/baseDirective/UnMountedDirective.d.ts +0 -3
  20. package/dist/core/src/baseDirective/UpdateDirective.d.ts +0 -3
  21. package/dist/core/src/baseDirective/index.d.ts +0 -7
  22. package/dist/core/src/baseForm/BaseRequestBodyFilter.d.ts +0 -4
  23. package/dist/core/src/baseForm/FormManager.d.ts +0 -18
  24. package/dist/core/src/baseForm/InputControl.d.ts +0 -40
  25. package/dist/core/src/baseForm/InputControlBuilder.d.ts +0 -16
  26. package/dist/core/src/baseForm/InputControlData.d.ts +0 -15
  27. package/dist/core/src/baseForm/RequestBodyFilter.d.ts +0 -3
  28. package/dist/core/src/baseForm/TouchSensitiveForm.d.ts +0 -9
  29. package/dist/core/src/baseForm/UseForm.d.ts +0 -18
  30. package/dist/core/src/baseForm/index.d.ts +0 -8
  31. package/dist/core/src/baseSchedule/Schedule.d.ts +0 -3
  32. package/dist/core/src/baseSchedule/Scheduler.d.ts +0 -8
  33. package/dist/core/src/baseSchedule/index.d.ts +0 -2
  34. package/dist/core/src/baseTable/BaseTable.d.ts +0 -47
  35. package/dist/core/src/baseTable/Constants.d.ts +0 -13
  36. package/dist/core/src/baseTable/OnDestory.d.ts +0 -3
  37. package/dist/core/src/baseTable/RowActionSource.d.ts +0 -4
  38. package/dist/core/src/baseTable/RowClick.d.ts +0 -3
  39. package/dist/core/src/baseTable/RowDoubleClick.d.ts +0 -3
  40. package/dist/core/src/baseTable/RowMetaClick.d.ts +0 -3
  41. package/dist/core/src/baseTable/SelectableTable.d.ts +0 -19
  42. package/dist/core/src/baseTable/TableAction.d.ts +0 -8
  43. package/dist/core/src/baseTable/TableHeaderSchema.d.ts +0 -27
  44. package/dist/core/src/baseTable/TableLoader.d.ts +0 -3
  45. package/dist/core/src/baseTable/TablePaginate.d.ts +0 -3
  46. package/dist/core/src/baseTable/TableService.d.ts +0 -9
  47. package/dist/core/src/baseTable/TableSort.d.ts +0 -4
  48. package/dist/core/src/baseTable/TableSummarySchema.d.ts +0 -9
  49. package/dist/core/src/baseTable/generator/SelectableTableGenerator.d.ts +0 -14
  50. package/dist/core/src/baseTable/generator/TableCellComponentRegistry.d.ts +0 -7
  51. package/dist/core/src/baseTable/generator/TableConfig.d.ts +0 -7
  52. package/dist/core/src/baseTable/generator/TableGenerator.d.ts +0 -37
  53. package/dist/core/src/baseTable/generator/TableSource.d.ts +0 -24
  54. package/dist/core/src/baseTable/index.d.ts +0 -23
  55. package/dist/core/src/baseTable/moduleConnection/Action.d.ts +0 -3
  56. package/dist/core/src/baseTable/moduleConnection/Column.d.ts +0 -3
  57. package/dist/core/src/baseTable/moduleConnection/Table.d.ts +0 -4
  58. package/dist/core/src/baseTable/moduleConnection/TableDestroy.d.ts +0 -2
  59. package/dist/core/src/baseTable/moduleConnection/TableRowClick.d.ts +0 -2
  60. package/dist/core/src/baseTable/moduleConnection/generator/GColumn.d.ts +0 -2
  61. package/dist/core/src/baseTable/moduleConnection/generator/GTable.d.ts +0 -2
  62. package/dist/core/src/composables/UseCrud.d.ts +0 -10
  63. package/dist/core/src/composables/UseData.d.ts +0 -15
  64. package/dist/core/src/composables/UseLoadingStatus.d.ts +0 -15
  65. package/dist/core/src/composables/UseParams.d.ts +0 -17
  66. package/dist/core/src/composables/UseRepository.d.ts +0 -67
  67. package/dist/core/src/composables/UseState.d.ts +0 -2
  68. package/dist/core/src/composables/UseStaticTableService.d.ts +0 -5
  69. package/dist/core/src/composables/index.d.ts +0 -7
  70. package/dist/core/src/constants/Constants.d.ts +0 -108
  71. package/dist/core/src/constants/index.d.ts +0 -1
  72. package/dist/core/src/crudService/CrudService.d.ts +0 -22
  73. package/dist/core/src/crudService/index.d.ts +0 -1
  74. package/dist/core/src/dateHandling/Constants.d.ts +0 -5
  75. package/dist/core/src/dateHandling/Converter.d.ts +0 -5
  76. package/dist/core/src/dateHandling/JalaliDateSetup.d.ts +0 -1
  77. package/dist/core/src/dateHandling/Model.d.ts +0 -12
  78. package/dist/core/src/dateHandling/Utils.d.ts +0 -8
  79. package/dist/core/src/dateHandling/index.d.ts +0 -5
  80. package/dist/core/src/debounce/DebounceAction.d.ts +0 -4
  81. package/dist/core/src/debounce/DebounceService.d.ts +0 -9
  82. package/dist/core/src/debounce/index.d.ts +0 -2
  83. package/dist/core/src/deviceManagement/Constants.d.ts +0 -4
  84. package/dist/core/src/deviceManagement/Visibility.d.ts +0 -4
  85. package/dist/core/src/deviceManagement/VisibilityManager.d.ts +0 -6
  86. package/dist/core/src/deviceManagement/index.d.ts +0 -3
  87. package/dist/core/src/errorHandling/ErrorHandler.d.ts +0 -3
  88. package/dist/core/src/errorHandling/HandleError.d.ts +0 -2
  89. package/dist/core/src/errorHandling/index.d.ts +0 -2
  90. package/dist/core/src/eventSystem/CustomEventDispatcher.d.ts +0 -5
  91. package/dist/core/src/eventSystem/Model.d.ts +0 -8
  92. package/dist/core/src/eventSystem/OnEvent.d.ts +0 -1
  93. package/dist/core/src/eventSystem/index.d.ts +0 -3
  94. package/dist/core/src/feedbackHandling/FailureFeedback.d.ts +0 -3
  95. package/dist/core/src/feedbackHandling/Feedback.d.ts +0 -11
  96. package/dist/core/src/feedbackHandling/HandleFeedback.d.ts +0 -2
  97. package/dist/core/src/feedbackHandling/InfoFeedback.d.ts +0 -3
  98. package/dist/core/src/feedbackHandling/SuccessFeedback.d.ts +0 -3
  99. package/dist/core/src/feedbackHandling/WarningFeedback.d.ts +0 -3
  100. package/dist/core/src/feedbackHandling/index.d.ts +0 -6
  101. package/dist/core/src/httpClient/ApiBuilder.d.ts +0 -14
  102. package/dist/core/src/httpClient/ErrorHandlerRegistry.d.ts +0 -10
  103. package/dist/core/src/httpClient/HttpClient.d.ts +0 -14
  104. package/dist/core/src/httpClient/Interceptor.d.ts +0 -4
  105. package/dist/core/src/httpClient/index.d.ts +0 -4
  106. package/dist/core/src/initializer/ApplicationInitializer.d.ts +0 -6
  107. package/dist/core/src/initializer/Initializer.d.ts +0 -3
  108. package/dist/core/src/initializer/index.d.ts +0 -2
  109. package/dist/core/src/json/JsonMapper.d.ts +0 -18
  110. package/dist/core/src/json/index.d.ts +0 -1
  111. package/dist/core/src/layout/Constants.d.ts +0 -10
  112. package/dist/core/src/layout/DialogService.d.ts +0 -406
  113. package/dist/core/src/layout/DrawerService.d.ts +0 -14
  114. package/dist/core/src/layout/Toast.d.ts +0 -8
  115. package/dist/core/src/layout/index.d.ts +0 -4
  116. package/dist/core/src/lib/Constants.d.ts +0 -20
  117. package/dist/core/src/lib/Formatter.d.ts +0 -10
  118. package/dist/core/src/lib/Util.d.ts +0 -12
  119. package/dist/core/src/lib/index.d.ts +0 -3
  120. package/dist/core/src/observables/AbstractSubject.d.ts +0 -7
  121. package/dist/core/src/observables/BehaviorSubject.d.ts +0 -16
  122. package/dist/core/src/observables/Observer.d.ts +0 -3
  123. package/dist/core/src/observables/Subject.d.ts +0 -6
  124. package/dist/core/src/observables/index.d.ts +0 -4
  125. package/dist/core/src/process/Proccess.d.ts +0 -9
  126. package/dist/core/src/process/ProcessManager.d.ts +0 -10
  127. package/dist/core/src/process/index.d.ts +0 -2
  128. package/dist/core/src/repository/Params.d.ts +0 -11
  129. package/dist/core/src/repository/Repository.d.ts +0 -38
  130. package/dist/core/src/repository/SyncDetail.d.ts +0 -5
  131. package/dist/core/src/repository/index.d.ts +0 -4
  132. package/dist/core/src/repository/model.d.ts +0 -5
  133. package/dist/core/src/routeGuard/RouteGuard.d.ts +0 -7
  134. package/dist/core/src/routeGuard/index.d.ts +0 -1
  135. package/dist/core/src/search/client/ClientArraySearch.d.ts +0 -4
  136. package/dist/core/src/search/client/ClientSearch.d.ts +0 -3
  137. package/dist/core/src/search/index.d.ts +0 -2
  138. package/dist/core/src/sort/SortDetail.d.ts +0 -6
  139. package/dist/core/src/sort/client/Sorter.d.ts +0 -6
  140. package/dist/core/src/sort/index.d.ts +0 -4
  141. package/dist/core/src/sort/strategies/SimpleSort.d.ts +0 -5
  142. package/dist/core/src/sort/strategies/SortStrategy.d.ts +0 -4
  143. package/dist/core/src/types/Global.d.ts +0 -1
  144. package/dist/core/src/types/index.d.ts +0 -1
  145. package/dist/core/src/validators/Validator.d.ts +0 -4
  146. package/dist/core/src/validators/index.d.ts +0 -1
  147. package/dist/core/src/webSocket/Constants.d.ts +0 -6
  148. package/dist/core/src/webSocket/Model.d.ts +0 -6
  149. package/dist/core/src/webSocket/WebSocketService.d.ts +0 -30
  150. package/dist/core/src/webSocket/index.d.ts +0 -3
  151. package/dist/example-vue/src/AntTableConfig.d.ts +0 -6
  152. package/dist/example-vue/src/TableService.d.ts +0 -12
  153. package/dist/example-vue/src/TextCell.vue.d.ts +0 -5
  154. package/dist/example-vue/src/app/App.vue.d.ts +0 -2
  155. package/dist/example-vue/src/app/router/index.d.ts +0 -1
  156. package/dist/example-vue/src/app/screens/Index.vue.d.ts +0 -2
  157. package/dist/example-vue/src/main.d.ts +0 -0
  158. package/src/BaseModel.ts +0 -127
  159. package/src/Utils.ts +0 -16
  160. package/src/accessHandling/AccessControl.ts +0 -33
  161. package/src/accessHandling/AccessLevel.ts +0 -52
  162. package/src/accessHandling/Accessible.ts +0 -3
  163. package/src/accessHandling/EveryDirectiveAccess.ts +0 -7
  164. package/src/accessHandling/SSO/AuthorizationDirective.ts +0 -65
  165. package/src/accessHandling/SSO/AuthorizationService.ts +0 -74
  166. package/src/accessHandling/SSO/EveryLevelAuthorizationDirective.ts +0 -7
  167. package/src/accessHandling/SSO/SomeLevelsAuthorizationDirective.ts +0 -7
  168. package/src/accessHandling/SomeDirectiveAccess.ts +0 -7
  169. package/src/accessHandling/index.ts +0 -9
  170. package/src/baseDirective/BeforeMountDirective.ts +0 -3
  171. package/src/baseDirective/BeforeUnMountDirective.ts +0 -3
  172. package/src/baseDirective/BeforeUpdateDirective.ts +0 -3
  173. package/src/baseDirective/CreatedDirective.ts +0 -3
  174. package/src/baseDirective/MountedDirective.ts +0 -3
  175. package/src/baseDirective/UnMountedDirective.ts +0 -3
  176. package/src/baseDirective/UpdateDirective.ts +0 -3
  177. package/src/baseDirective/index.ts +0 -7
  178. package/src/baseForm/BaseRequestBodyFilter.ts +0 -7
  179. package/src/baseForm/FormManager.ts +0 -95
  180. package/src/baseForm/InputControl.ts +0 -182
  181. package/src/baseForm/InputControlBuilder.ts +0 -59
  182. package/src/baseForm/InputControlData.ts +0 -16
  183. package/src/baseForm/RequestBodyFilter.ts +0 -3
  184. package/src/baseForm/TouchSensitiveForm.ts +0 -47
  185. package/src/baseForm/UseForm.ts +0 -32
  186. package/src/baseForm/index.ts +0 -8
  187. package/src/baseSchedule/Schedule.ts +0 -3
  188. package/src/baseSchedule/Scheduler.ts +0 -29
  189. package/src/baseSchedule/index.ts +0 -2
  190. package/src/baseTable/BaseTable.ts +0 -162
  191. package/src/baseTable/Constants.ts +0 -26
  192. package/src/baseTable/OnDestory.ts +0 -3
  193. package/src/baseTable/RowActionSource.ts +0 -5
  194. package/src/baseTable/RowClick.ts +0 -3
  195. package/src/baseTable/RowDoubleClick.ts +0 -3
  196. package/src/baseTable/RowMetaClick.ts +0 -3
  197. package/src/baseTable/SelectableTable.ts +0 -86
  198. package/src/baseTable/TableAction.ts +0 -10
  199. package/src/baseTable/TableHeaderSchema.ts +0 -44
  200. package/src/baseTable/TableLoader.ts +0 -3
  201. package/src/baseTable/TablePaginate.ts +0 -3
  202. package/src/baseTable/TableService.ts +0 -10
  203. package/src/baseTable/TableSort.ts +0 -5
  204. package/src/baseTable/TableSummarySchema.ts +0 -11
  205. package/src/baseTable/generator/SelectableTableGenerator.ts +0 -65
  206. package/src/baseTable/generator/TableCellComponentRegistry.ts +0 -15
  207. package/src/baseTable/generator/TableConfig.ts +0 -18
  208. package/src/baseTable/generator/TableGenerator.ts +0 -147
  209. package/src/baseTable/generator/TableSource.ts +0 -34
  210. package/src/baseTable/index.ts +0 -43
  211. package/src/baseTable/moduleConnection/Action.ts +0 -12
  212. package/src/baseTable/moduleConnection/Column.ts +0 -11
  213. package/src/baseTable/moduleConnection/Table.ts +0 -49
  214. package/src/baseTable/moduleConnection/TableDestroy.ts +0 -7
  215. package/src/baseTable/moduleConnection/TableRowClick.ts +0 -7
  216. package/src/baseTable/moduleConnection/generator/GColumn.ts +0 -10
  217. package/src/baseTable/moduleConnection/generator/GTable.ts +0 -11
  218. package/src/composables/UseCrud.ts +0 -53
  219. package/src/composables/UseData.ts +0 -70
  220. package/src/composables/UseLoadingStatus.ts +0 -65
  221. package/src/composables/UseParams.ts +0 -93
  222. package/src/composables/UseRepository.ts +0 -207
  223. package/src/composables/UseState.ts +0 -30
  224. package/src/composables/UseStaticTableService.ts +0 -45
  225. package/src/composables/index.ts +0 -7
  226. package/src/constants/Constants.ts +0 -126
  227. package/src/constants/index.ts +0 -19
  228. package/src/crudService/CrudService.ts +0 -121
  229. package/src/crudService/index.ts +0 -1
  230. package/src/dateHandling/Constants.ts +0 -5
  231. package/src/dateHandling/Converter.ts +0 -15
  232. package/src/dateHandling/JalaliDateSetup.ts +0 -42
  233. package/src/dateHandling/Model.ts +0 -27
  234. package/src/dateHandling/Utils.ts +0 -49
  235. package/src/dateHandling/index.ts +0 -5
  236. package/src/debounce/DebounceAction.ts +0 -4
  237. package/src/debounce/DebounceService.ts +0 -27
  238. package/src/debounce/index.ts +0 -2
  239. package/src/deviceManagement/Constants.ts +0 -4
  240. package/src/deviceManagement/Visibility.ts +0 -4
  241. package/src/deviceManagement/VisibilityManager.ts +0 -18
  242. package/src/deviceManagement/index.ts +0 -3
  243. package/src/errorHandling/ErrorHandler.ts +0 -3
  244. package/src/errorHandling/HandleError.ts +0 -20
  245. package/src/errorHandling/index.ts +0 -2
  246. package/src/eventSystem/CustomEventDispatcher.ts +0 -13
  247. package/src/eventSystem/Model.ts +0 -29
  248. package/src/eventSystem/OnEvent.ts +0 -25
  249. package/src/eventSystem/index.ts +0 -3
  250. package/src/feedbackHandling/FailureFeedback.ts +0 -3
  251. package/src/feedbackHandling/Feedback.ts +0 -34
  252. package/src/feedbackHandling/HandleFeedback.ts +0 -28
  253. package/src/feedbackHandling/InfoFeedback.ts +0 -3
  254. package/src/feedbackHandling/SuccessFeedback.ts +0 -3
  255. package/src/feedbackHandling/WarningFeedback.ts +0 -3
  256. package/src/feedbackHandling/index.ts +0 -6
  257. package/src/httpClient/ApiBuilder.ts +0 -57
  258. package/src/httpClient/ErrorHandlerRegistry.ts +0 -29
  259. package/src/httpClient/HttpClient.ts +0 -77
  260. package/src/httpClient/Interceptor.ts +0 -5
  261. package/src/httpClient/index.ts +0 -4
  262. package/src/initializer/ApplicationInitializer.ts +0 -15
  263. package/src/initializer/Initializer.ts +0 -3
  264. package/src/initializer/index.ts +0 -2
  265. package/src/json/JsonMapper.ts +0 -48
  266. package/src/json/index.ts +0 -1
  267. package/src/layout/Constants.ts +0 -11
  268. package/src/layout/DialogService.ts +0 -75
  269. package/src/layout/DrawerService.ts +0 -25
  270. package/src/layout/Toast.ts +0 -14
  271. package/src/layout/index.ts +0 -4
  272. package/src/lib/Constants.ts +0 -433
  273. package/src/lib/Formatter.ts +0 -68
  274. package/src/lib/Util.ts +0 -113
  275. package/src/lib/index.ts +0 -3
  276. package/src/observables/AbstractSubject.ts +0 -21
  277. package/src/observables/BehaviorSubject.ts +0 -58
  278. package/src/observables/Observer.ts +0 -3
  279. package/src/observables/Subject.ts +0 -9
  280. package/src/observables/index.ts +0 -4
  281. package/src/process/Proccess.ts +0 -21
  282. package/src/process/ProcessManager.ts +0 -31
  283. package/src/process/index.ts +0 -2
  284. package/src/repository/Params.ts +0 -10
  285. package/src/repository/Repository.ts +0 -44
  286. package/src/repository/SyncDetail.ts +0 -8
  287. package/src/repository/index.ts +0 -4
  288. package/src/repository/model.ts +0 -9
  289. package/src/routeGuard/RouteGuard.ts +0 -38
  290. package/src/routeGuard/index.ts +0 -1
  291. package/src/search/client/ClientArraySearch.ts +0 -25
  292. package/src/search/client/ClientSearch.ts +0 -3
  293. package/src/search/index.ts +0 -2
  294. package/src/sort/SortDetail.ts +0 -11
  295. package/src/sort/client/Sorter.ts +0 -28
  296. package/src/sort/index.ts +0 -4
  297. package/src/sort/strategies/SimpleSort.ts +0 -35
  298. package/src/sort/strategies/SortStrategy.ts +0 -4
  299. package/src/types/Global.ts +0 -1
  300. package/src/types/index.ts +0 -1
  301. package/src/validators/Validator.ts +0 -5
  302. package/src/validators/index.ts +0 -1
  303. package/src/webSocket/Constants.ts +0 -6
  304. package/src/webSocket/Model.ts +0 -16
  305. package/src/webSocket/WebSocketService.ts +0 -153
  306. package/src/webSocket/index.ts +0 -3
  307. package/vite.config.ts +0 -55
@@ -1,11 +0,0 @@
1
- import { TableSource } from "../../generator/TableSource";
2
-
3
- export function GTable<T>(table: new (...args: any[]) => TableSource<T>) {
4
- return function GTableDecorator(constructor: Function) {
5
- async function loadHeaderSchema() {
6
- return constructor.prototype.headers || [];
7
- }
8
-
9
- (table as any).prototype.loadHeaderSchema = loadHeaderSchema;
10
- };
11
- }
@@ -1,53 +0,0 @@
1
- import { computed, type Ref, ref } from 'vue'
2
- import type { BaseModel } from '../BaseModel'
3
-
4
- export function useCrud<Entity extends BaseModel>() {
5
- const entityItems: Ref<Map<string, Entity>> = ref(new Map<string, Entity>()) as Ref<Map<string, Entity>>
6
- const totalCount = ref<number>(0);
7
-
8
- const getTotalCount = computed<number>(() => {
9
- return totalCount.value;
10
- })
11
-
12
- const entityItemsAsArray = computed<Entity[]>(() => {
13
- return Array.from(entityItems.value.values()) as Entity[]
14
- })
15
-
16
- function setTotalCount(count: number) {
17
- totalCount.value = count;
18
- }
19
-
20
- function addOrReplaceItems(items: Entity[]) {
21
- for (const item of items) {
22
- addOrReplaceItem(item)
23
- }
24
- }
25
-
26
- function addOrReplaceItem(item: Entity) {
27
- entityItems.value.set(String(item.id), item as Entity)
28
- }
29
-
30
- function removeById(id: string | number) {
31
- const itemToRemove = getItemById(id)
32
- entityItems.value.delete(String(id))
33
- return itemToRemove
34
- }
35
-
36
- function getItemById(id: number | string) {
37
- return entityItems.value.get(String(id)) || null
38
- }
39
-
40
- function clearItems() {
41
- entityItems.value.clear()
42
- }
43
-
44
- return {
45
- entityItemsAsArray,
46
- addOrReplaceItems,
47
- removeById,
48
- getItemById,
49
- clearItems,
50
- setTotalCount,
51
- getTotalCount
52
- }
53
- }
@@ -1,70 +0,0 @@
1
- import { computed, type Ref, ref } from "vue";
2
- import { BaseModel } from "../BaseModel";
3
- import type { Nullable } from "../types";
4
-
5
- export function useData<Model extends BaseModel>() {
6
- const items: Ref<Map<number, Model>> = ref<Map<number, Model>>(
7
- new Map<number, Model>(),
8
- ) as Ref<Map<number, Model>>;
9
-
10
- const totalCount = ref<number>(0);
11
- const currentItem = ref<Nullable<Model>>(null);
12
-
13
- const itemsAsArray = computed<Model[]>(() => {
14
- return Array.from(items.value.values()) as Model[];
15
- });
16
-
17
- function setTotalCount(totalItems: number) {
18
- totalCount.value = totalItems;
19
- }
20
-
21
- function addOrReplaceItems(itemsToAdd: Model[]) {
22
- for (const item of itemsToAdd) {
23
- addOrReplaceItem(item);
24
- }
25
- }
26
-
27
- function addOrReplaceItem(item: Model) {
28
- items.value.set(item.id, item);
29
- }
30
-
31
- function getById(id: number): Nullable<Model> {
32
- currentItem.value = items.value.get(id) || null;
33
- return currentItem.value;
34
- }
35
-
36
- function removeById(id: number): boolean {
37
- const removedItem = getById(id);
38
-
39
- if (removedItem) {
40
- items.value.delete(id);
41
- }
42
-
43
- return Boolean(removedItem);
44
- }
45
-
46
- function clearItems() {
47
- items.value.clear();
48
- }
49
-
50
- function setCurrentItem(item: Nullable<Model>) {
51
- currentItem.value = item;
52
- }
53
-
54
- function clearCurrentItem() {
55
- currentItem.value = null;
56
- }
57
-
58
- return {
59
- itemsAsArray,
60
- totalCount,
61
- currentItem,
62
- setTotalCount,
63
- addOrReplaceItems,
64
- getById,
65
- removeById,
66
- clearItems,
67
- setCurrentItem,
68
- clearCurrentItem,
69
- };
70
- }
@@ -1,65 +0,0 @@
1
- import { computed, ref } from "vue";
2
- import { LoadingStatus } from "../constants";
3
-
4
- export function useLoadingStatus() {
5
- const loadingStatus = ref<Set<LoadingStatus>>(new Set<LoadingStatus>());
6
-
7
- const isFetchingList = computed(() => {
8
- return loadingStatus.value.has(LoadingStatus.FetchList);
9
- });
10
-
11
- const isFetchingItem = computed(() => {
12
- return loadingStatus.value.has(LoadingStatus.FetchItem);
13
- });
14
-
15
- const isFetchingLastItems = computed(() => {
16
- return loadingStatus.value.has(LoadingStatus.FetchLastItems);
17
- });
18
-
19
- const isFetchingPreviousItems = computed(() => {
20
- return loadingStatus.value.has(LoadingStatus.FetchPreviousItems);
21
- });
22
-
23
- const isCreating = computed(() => {
24
- return loadingStatus.value.has(LoadingStatus.Create);
25
- });
26
-
27
- const isUpdating = computed(() => {
28
- return loadingStatus.value.has(LoadingStatus.Update);
29
- });
30
-
31
- const isDeleting = computed(() => {
32
- return loadingStatus.value.has(LoadingStatus.Delete);
33
- });
34
-
35
- const isSearching = computed(() => {
36
- return loadingStatus.value.has(LoadingStatus.Search);
37
- });
38
-
39
- const isSorting = computed(() => {
40
- return loadingStatus.value.has(LoadingStatus.Sort);
41
- });
42
-
43
- function setStatus(status: LoadingStatus) {
44
- loadingStatus.value.add(status);
45
- }
46
-
47
- function removeStatus(status: LoadingStatus) {
48
- loadingStatus.value.delete(status);
49
- }
50
-
51
- return {
52
- loadingStatus,
53
- isFetchingList,
54
- isFetchingItem,
55
- isFetchingLastItems,
56
- isFetchingPreviousItems,
57
- isCreating,
58
- isUpdating,
59
- isDeleting,
60
- isSearching,
61
- isSorting,
62
- setStatus,
63
- removeStatus,
64
- };
65
- }
@@ -1,93 +0,0 @@
1
- import { type Ref, ref } from "vue";
2
- import { SortDetail } from "../sort";
3
- import { BaseModel } from "../BaseModel";
4
- import { Params } from "../repository";
5
-
6
- const DEFAULT_PARAMS = new Params();
7
-
8
- export function useParams() {
9
- const params: Ref<Params> = ref(structuredClone(DEFAULT_PARAMS));
10
-
11
- function setNextPage() {
12
- params.value.pageNumber = params.value.pageNumber + 1;
13
- }
14
-
15
- function setPreventPage() {
16
- params.value.pageNumber = params.value.pageNumber - 1;
17
- }
18
-
19
- function setPageNumber(pageNumber: number) {
20
- params.value.pageNumber = pageNumber;
21
- }
22
-
23
- function setItemCount(itemCount: number) {
24
- params.value.itemCount = itemCount;
25
- }
26
-
27
- function setSortDetail(sortDetail: SortDetail<BaseModel>) {
28
- params.value.sortDetail.key = sortDetail.key;
29
- params.value.sortDetail.order = sortDetail.order;
30
- }
31
-
32
- function setFiltersBaseOnRequestBody(filters: Record<string, unknown>) {
33
- for (const key in filters) {
34
- setFilter(key, filters[key]);
35
- }
36
- }
37
-
38
- function setFilter(key: string, value: unknown) {
39
- const index = params.value.filters.findIndex(
40
- (filter) => filter.key === key,
41
- );
42
- if (index > -1) params.value.filters[index].value = value;
43
- else params.value.filters.push({ key, value });
44
- }
45
-
46
- function removeFilter(key: string) {
47
- let currentParams = params.value.filters;
48
- currentParams = currentParams.filter(iteratedParam => iteratedParam.key !== key)
49
- params.value.filters = currentParams;
50
- }
51
-
52
- function getRequestParams() {
53
- const requestParams: Record<string, unknown> = {
54
- page: params.value.pageNumber,
55
- count: params.value.itemCount,
56
- };
57
- if (params.value.sortDetail) {
58
- requestParams.by = params.value.sortDetail.key;
59
- requestParams.order = params.value.sortDetail.order;
60
- }
61
- for (const filter of params.value.filters) {
62
- if (filter.value) {
63
- if (typeof filter.value === 'string' || typeof filter.value === 'number') {
64
- requestParams[filter.key] = filter.value;
65
- } else {
66
- const value = JSON.stringify(filter.value);
67
- if (value !== "[]" && value !== "{}") {
68
- requestParams[filter.key] = value;
69
- }
70
- }
71
- }
72
- }
73
- return requestParams;
74
- }
75
-
76
- function clearParam() {
77
- params.value = structuredClone(DEFAULT_PARAMS);
78
- }
79
-
80
- return {
81
- params,
82
- setNextPage,
83
- setPreventPage,
84
- setPageNumber,
85
- setItemCount,
86
- setSortDetail,
87
- setFilter,
88
- removeFilter,
89
- getRequestParams,
90
- clearParam,
91
- setFiltersBaseOnRequestBody
92
- };
93
- }
@@ -1,207 +0,0 @@
1
- import { computed, onBeforeUnmount } from "vue";
2
- import { useData } from "./UseData";
3
- import { useParams } from "./UseParams";
4
- import { useLoadingStatus } from "./UseLoadingStatus";
5
- import { type Repository, type SyncDetail } from "../repository";
6
- import { LoadingStatus } from "../constants";
7
- import { SortDetail } from "../sort";
8
- import { BaseModel } from "../BaseModel";
9
- import { Scheduler } from "../baseSchedule";
10
- import { type TableRenderingData, type TableService } from "../baseTable";
11
-
12
- export function useRepository<Model extends BaseModel>(
13
- repository: Repository<Model>,
14
- ) {
15
- const dataManger = useData();
16
- const paramsManager = useParams();
17
- const loadingStatusManager = useLoadingStatus();
18
-
19
- const scheduler = new Scheduler({
20
- runAction: async () => fetchList(LoadingStatus.AutoRefresh),
21
- });
22
-
23
- const currentPageItems = computed<Model[]>(() => {
24
- const pageNumber = paramsManager.params.value.pageNumber;
25
- const pageSize = paramsManager.params.value.itemCount;
26
- const startIndex = pageNumber * pageSize - pageSize;
27
- const endIndex = pageNumber * pageSize - 1;
28
- const items: Model[] = [];
29
- for (let index = startIndex; index <= endIndex; index++) {
30
- if (!dataManger.itemsAsArray.value[index]) break;
31
- items.push(dataManger.itemsAsArray.value[index] as Model);
32
- }
33
- return items;
34
- });
35
-
36
- const tableRenderingData = computed<TableRenderingData<Model>>(() => {
37
- return {
38
- totalItems: dataManger.totalCount.value,
39
- currentPage: paramsManager.params.value.pageNumber,
40
- rows: dataManger.itemsAsArray.value,
41
- loadingStatus: loadingStatusManager.loadingStatus.value,
42
- currentPageItems: currentPageItems.value,
43
- } as TableRenderingData<Model>;
44
- });
45
-
46
- const tableService = computed<TableService<Model>>(() => {
47
- return {
48
- getData: getTableRenderingData,
49
- sort: sort,
50
- paginate: fetchItemsByPageNumber,
51
- fetchRows: fetchList,
52
- };
53
- });
54
-
55
- const syncDetail = computed<SyncDetail>(() => {
56
- return repository.getSyncDetail();
57
- });
58
-
59
- function getTableRenderingData(): TableRenderingData<Model> {
60
- return tableRenderingData.value;
61
- }
62
-
63
- async function handleFetchList(query?: Record<string, unknown>) {
64
- const result = await repository.fetchList(query);
65
- dataManger.clearItems();
66
- dataManger.addOrReplaceItems(result.items);
67
- dataManger.setTotalCount(result.totalItems);
68
- return result;
69
- }
70
-
71
- async function fetchList(
72
- loadingStatus: LoadingStatus = LoadingStatus.FetchList,
73
- ) {
74
- loadingStatusManager.setStatus(loadingStatus);
75
- const result = await handleFetchList(paramsManager.getRequestParams());
76
- loadingStatusManager.removeStatus(loadingStatus);
77
- return result;
78
- }
79
-
80
- async function fetchWithAutoRefresh() {
81
- setupAutoRefresh();
82
- await fetchList();
83
- }
84
-
85
- function setupAutoRefresh() {
86
- if (!syncDetail.value.shouldKeepSync) {
87
- throw new Error(`The provided repository does not support auto refresh`);
88
- }
89
- scheduler.setupInterval(syncDetail.value.intervalInMillisecond);
90
- }
91
-
92
- function stopAutoRefresh() {
93
- scheduler.clearInterval();
94
- }
95
-
96
- async function fetchItemById(id: number, shouldRemoveItem = true) {
97
- loadingStatusManager.setStatus(LoadingStatus.FetchItem);
98
- if (shouldRemoveItem) {
99
- dataManger.clearCurrentItem();
100
- }
101
- const result = await repository.fetchItemById(id);
102
- dataManger.setCurrentItem(result);
103
- loadingStatusManager.removeStatus(LoadingStatus.FetchItem);
104
- return result;
105
- }
106
-
107
- async function createItem<Body>(body: Body) {
108
- loadingStatusManager.setStatus(LoadingStatus.Create);
109
- const result = await repository.createItem(body);
110
- if (result) {
111
- dataManger.addOrReplaceItems([result]);
112
- }
113
- loadingStatusManager.removeStatus(LoadingStatus.Create);
114
- return result;
115
- }
116
-
117
- async function updateItem<Body>(id: number, body: Body) {
118
- loadingStatusManager.setStatus(LoadingStatus.Update);
119
- const result = await repository.updateItem(id, body);
120
- if (result) {
121
- dataManger.addOrReplaceItems([result]);
122
- }
123
- loadingStatusManager.removeStatus(LoadingStatus.Update);
124
- return result;
125
- }
126
-
127
- async function deleteItem(id: number) {
128
- loadingStatusManager.setStatus(LoadingStatus.Delete);
129
- await repository.deleteItem(id);
130
- loadingStatusManager.removeStatus(LoadingStatus.Delete);
131
- return dataManger.removeById(id);
132
- }
133
-
134
- async function fetchLastItems() {
135
- paramsManager.setNextPage();
136
- loadingStatusManager.setStatus(LoadingStatus.FetchLastItems);
137
- const result = await handleFetchList(paramsManager.getRequestParams());
138
- loadingStatusManager.removeStatus(LoadingStatus.FetchLastItems);
139
- return result;
140
- }
141
-
142
- async function fetchPreviousItems() {
143
- paramsManager.setPreventPage();
144
- loadingStatusManager.setStatus(LoadingStatus.FetchPreviousItems);
145
- const result = await handleFetchList(paramsManager.getRequestParams());
146
- loadingStatusManager.removeStatus(LoadingStatus.FetchPreviousItems);
147
- return result;
148
- }
149
-
150
- async function fetchItemsByPageNumber(pageNumber: number) {
151
- paramsManager.setPageNumber(pageNumber);
152
- loadingStatusManager.setStatus(LoadingStatus.FetchList);
153
- const result = await handleFetchList(paramsManager.getRequestParams());
154
- loadingStatusManager.removeStatus(LoadingStatus.FetchList);
155
- return result;
156
- }
157
-
158
- async function search(searchedValue: string) {
159
- paramsManager.setFilter("search", searchedValue);
160
- loadingStatusManager.setStatus(LoadingStatus.Search);
161
- dataManger.clearItems();
162
- const result = await handleFetchList(paramsManager.getRequestParams());
163
- loadingStatusManager.removeStatus(LoadingStatus.Search);
164
- return result;
165
- }
166
-
167
- async function sort(sortDetail: SortDetail<Model>) {
168
- paramsManager.setSortDetail(sortDetail as SortDetail<BaseModel>);
169
- loadingStatusManager.setStatus(LoadingStatus.Sort);
170
- dataManger.clearItems();
171
- const result = await handleFetchList(paramsManager.getRequestParams());
172
- loadingStatusManager.removeStatus(LoadingStatus.Sort);
173
- return result;
174
- }
175
-
176
- async function clearFilters() {
177
- paramsManager.clearParam();
178
- return await fetchList();
179
- }
180
-
181
- onBeforeUnmount(() => {
182
- stopAutoRefresh();
183
- });
184
-
185
- return {
186
- loadingStatusManager,
187
- dataManger,
188
- paramsManager,
189
- tableRenderingData,
190
- fetchList,
191
- fetchWithAutoRefresh,
192
- setupAutoRefresh,
193
- stopAutoRefresh,
194
- fetchItemById,
195
- createItem,
196
- updateItem,
197
- deleteItem,
198
- fetchLastItems,
199
- fetchPreviousItems,
200
- fetchItemsByPageNumber,
201
- search,
202
- sort,
203
- clearFilters,
204
- tableService,
205
- currentPageItems,
206
- };
207
- }
@@ -1,30 +0,0 @@
1
- import { computed, ref, type Ref } from "vue";
2
-
3
- export function useState<T>(initial: T, ttl: number = 300_000): Ref<T> {
4
- const state = ref<T>(structuredClone(initial));
5
- let timer: ReturnType<typeof setTimeout> | null = null;
6
-
7
- function resetTimer() {
8
- if (timer) clearTimeout(timer);
9
- if (ttl > 0) {
10
- timer = setTimeout(() => {
11
- state.value = initial;
12
- }, ttl);
13
- }
14
- }
15
-
16
- const computedState = computed<T>({
17
- get() {
18
- resetTimer();
19
- return state.value;
20
- },
21
- set(value: T) {
22
- state.value = value;
23
- resetTimer();
24
- },
25
- });
26
-
27
- resetTimer();
28
-
29
- return computedState;
30
- }
@@ -1,45 +0,0 @@
1
- import { computed, ref } from 'vue'
2
- import { LoadingStatus } from '../constants'
3
- import { SortDetail } from '../sort'
4
- import type { TableRenderingData, TableService } from '../baseTable'
5
-
6
- export function useStaticTableService<Model>(initialRows: Model[]) {
7
- const tableRows = ref<Model[]>(initialRows);
8
-
9
- const staticTableService = computed<TableService<Model>>(() => {
10
- return {
11
- getData(): TableRenderingData<Model> {
12
- return {
13
- totalItems: tableRows.value.length,
14
- currentPageItems: tableRows.value as Model[],
15
- loadingStatus: new Set<LoadingStatus>(),
16
- rows: tableRows.value as Model[],
17
- currentPage: 1
18
- }
19
- },
20
- async sort(_sortDetail: SortDetail<Model>) {
21
- return {
22
- totalItems: tableRows.value.length,
23
- items: tableRows.value as Model[]
24
- }
25
- },
26
- async fetchRows() {
27
- return {
28
- totalItems: tableRows.value.length,
29
- items: tableRows.value as Model[]
30
- }
31
- },
32
- async paginate(_nextPage: number, _pageSize: number) {
33
- return {
34
- totalItems: tableRows.value.length,
35
- items: tableRows.value as Model[]
36
- }
37
- }
38
- }
39
- })
40
-
41
- return {
42
- tableRows,
43
- staticTableService
44
- }
45
- }
@@ -1,7 +0,0 @@
1
- export { useRepository } from "./UseRepository";
2
- export { useData } from "./UseData";
3
- export { useParams } from "./UseParams";
4
- export { useLoadingStatus } from "./UseLoadingStatus";
5
- export { useStaticTableService } from "./UseStaticTableService";
6
- export * from "./UseCrud";
7
- export * from "./UseState";