@singularsystems/neo-core 1.0.0-alpha.3 → 1.0.0-alpha.4

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 (296) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/ApiClient/ApiClientBase.d.ts +5 -5
  3. package/dist/ApiClient/ApiClientBase.js +13 -13
  4. package/dist/ApiClient/ReadApiClient.d.ts +16 -16
  5. package/dist/ApiClient/ReadApiClient.js +24 -24
  6. package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
  7. package/dist/ApiClient/UpdateableApiClient.js +33 -33
  8. package/dist/AppServices/AppService.d.ts +46 -46
  9. package/dist/AppServices/AppService.js +25 -25
  10. package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
  11. package/dist/AppServices/Config/ConfigModel.js +28 -17
  12. package/dist/AppServices/Config/ConfigService.d.ts +15 -15
  13. package/dist/AppServices/Config/ConfigService.js +49 -53
  14. package/dist/AppServices/Module.d.ts +11 -11
  15. package/dist/AppServices/Module.js +13 -13
  16. package/dist/AppServices/NeoContainer.d.ts +22 -22
  17. package/dist/AppServices/NeoContainer.js +42 -42
  18. package/dist/AppServices/NeoModule.d.ts +3 -3
  19. package/dist/AppServices/NeoModule.js +30 -30
  20. package/dist/AppServices/NeoTypes.d.ts +61 -61
  21. package/dist/AppServices/NeoTypes.js +42 -42
  22. package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
  23. package/dist/AppServices/ServiceIdentifier.js +38 -39
  24. package/dist/AppServices/index.d.ts +7 -7
  25. package/dist/AppServices/index.js +7 -7
  26. package/dist/Components/AnimationHelper.d.ts +69 -69
  27. package/dist/Components/AnimationHelper.js +182 -182
  28. package/dist/Components/BootstrapHelpers.d.ts +8 -8
  29. package/dist/Components/BootstrapHelpers.js +30 -30
  30. package/dist/Components/BootstrapTypes.d.ts +35 -35
  31. package/dist/Components/BootstrapTypes.js +1 -1
  32. package/dist/Components/ButtonOptions.d.ts +63 -61
  33. package/dist/Components/ButtonOptions.js +1 -1
  34. package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
  35. package/dist/Components/ContextMenu/ContextMenu.js +1 -1
  36. package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
  37. package/dist/Components/ContextMenu/MenuUtils.js +34 -34
  38. package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
  39. package/dist/Components/DatePicker/DatePicker.js +502 -487
  40. package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
  41. package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
  42. package/dist/Components/ErrorHandler.d.ts +59 -55
  43. package/dist/Components/ErrorHandler.js +210 -138
  44. package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
  45. package/dist/Components/FileManager/BoundFileManager.js +60 -60
  46. package/dist/Components/FileManager/FileManager.d.ts +80 -78
  47. package/dist/Components/FileManager/FileManager.js +277 -257
  48. package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
  49. package/dist/Components/FileManager/FileUploadBatch.js +83 -82
  50. package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
  51. package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
  52. package/dist/Components/FormOptions.d.ts +34 -34
  53. package/dist/Components/FormOptions.js +1 -1
  54. package/dist/Components/ICollapsableOptions.d.ts +11 -11
  55. package/dist/Components/ICollapsableOptions.js +1 -1
  56. package/dist/Components/Modal/ModalHelper.d.ts +31 -31
  57. package/dist/Components/Modal/ModalHelper.js +174 -174
  58. package/dist/Components/Modal/ModalOptions.d.ts +61 -61
  59. package/dist/Components/Modal/ModalOptions.js +1 -1
  60. package/dist/Components/Modal/ModalStore.d.ts +32 -32
  61. package/dist/Components/Modal/ModalStore.js +82 -82
  62. package/dist/Components/Modal/ModalUtils.d.ts +61 -61
  63. package/dist/Components/Modal/ModalUtils.js +109 -109
  64. package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
  65. package/dist/Components/Notifications/INotificationHelper.js +1 -1
  66. package/dist/Components/Notifications/Notification.d.ts +32 -32
  67. package/dist/Components/Notifications/Notification.js +26 -27
  68. package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
  69. package/dist/Components/Notifications/NotificationHelper.js +111 -112
  70. package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
  71. package/dist/Components/Notifications/NotificationStore.js +78 -79
  72. package/dist/Components/PositionHelper.d.ts +10 -10
  73. package/dist/Components/PositionHelper.js +43 -43
  74. package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
  75. package/dist/Components/TaskRunner/Decorators.js +24 -24
  76. package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
  77. package/dist/Components/TaskRunner/ProgressState.js +71 -72
  78. package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
  79. package/dist/Components/TaskRunner/TaskRunner.js +253 -244
  80. package/dist/Components/TooltipOptions.d.ts +8 -8
  81. package/dist/Components/TooltipOptions.js +1 -1
  82. package/dist/Components/index.d.ts +22 -22
  83. package/dist/Components/index.js +13 -13
  84. package/dist/ConnectionManager.d.ts +45 -45
  85. package/dist/ConnectionManager.js +60 -61
  86. package/dist/Data/ApiDataSource.d.ts +46 -46
  87. package/dist/Data/ApiDataSource.js +140 -144
  88. package/dist/Data/AsyncDataSource.d.ts +35 -35
  89. package/dist/Data/AsyncDataSource.js +79 -80
  90. package/dist/Data/CacheService.d.ts +40 -40
  91. package/dist/Data/CacheService.js +63 -64
  92. package/dist/Data/DataCacheEntry.d.ts +42 -42
  93. package/dist/Data/DataCacheEntry.js +80 -80
  94. package/dist/Data/DataView.d.ts +43 -43
  95. package/dist/Data/DataView.js +173 -172
  96. package/dist/Data/Deserialiser.d.ts +42 -42
  97. package/dist/Data/Deserialiser.js +255 -255
  98. package/dist/Data/Paging/PageManager.d.ts +167 -167
  99. package/dist/Data/Paging/PageManager.js +323 -323
  100. package/dist/Data/Paging/PageRequest.d.ts +24 -24
  101. package/dist/Data/Paging/PageRequest.js +38 -39
  102. package/dist/Data/Paging/PageResult.d.ts +10 -10
  103. package/dist/Data/Paging/PageResult.js +14 -14
  104. package/dist/Data/Serialiser.d.ts +41 -41
  105. package/dist/Data/Serialiser.js +201 -201
  106. package/dist/Data/SortOperation.d.ts +8 -8
  107. package/dist/Data/SortOperation.js +26 -26
  108. package/dist/Data/StaticDataSource.d.ts +9 -9
  109. package/dist/Data/StaticDataSource.js +27 -27
  110. package/dist/Data/WindowedDataView.d.ts +8 -8
  111. package/dist/Data/WindowedDataView.js +49 -50
  112. package/dist/Data/index.d.ts +15 -15
  113. package/dist/Data/index.js +15 -15
  114. package/dist/Dates/DateUtils.d.ts +47 -47
  115. package/dist/Dates/DateUtils.js +226 -226
  116. package/dist/Dates/TimeSpan.d.ts +24 -24
  117. package/dist/Dates/TimeSpan.js +46 -46
  118. package/dist/DebounceHelper.d.ts +44 -38
  119. package/dist/DebounceHelper.js +122 -95
  120. package/dist/Extensions.d.ts +82 -82
  121. package/dist/Extensions.js +182 -182
  122. package/dist/FileUtils.d.ts +6 -6
  123. package/dist/FileUtils.js +37 -37
  124. package/dist/Globals.d.ts +19 -19
  125. package/dist/Globals.js +41 -41
  126. package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
  127. package/dist/JsonSchema/ClassMetadata.js +53 -53
  128. package/dist/JsonSchema/JsonData.d.ts +16 -16
  129. package/dist/JsonSchema/JsonData.js +97 -97
  130. package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
  131. package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
  132. package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
  133. package/dist/JsonSchema/PropertyMetadata.js +8 -8
  134. package/dist/JsonSchema/TypeCache.d.ts +16 -16
  135. package/dist/JsonSchema/TypeCache.js +44 -44
  136. package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
  137. package/dist/JsonSchema/TypeMetadata.js +170 -170
  138. package/dist/JsonSchema/index.d.ts +7 -7
  139. package/dist/JsonSchema/index.js +6 -6
  140. package/dist/Localisation/ILocalisationService.d.ts +11 -11
  141. package/dist/Localisation/ILocalisationService.js +1 -1
  142. package/dist/Localisation/LocalisationService.d.ts +4 -4
  143. package/dist/Localisation/LocalisationService.js +17 -17
  144. package/dist/Localisation/index.d.ts +1 -1
  145. package/dist/Localisation/index.js +1 -1
  146. package/dist/Misc.d.ts +6 -6
  147. package/dist/Misc.js +6 -6
  148. package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
  149. package/dist/Model/BaseModels/AuditValues.js +46 -48
  150. package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
  151. package/dist/Model/BaseModels/CriteriaBase.js +45 -34
  152. package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
  153. package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
  154. package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
  155. package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
  156. package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
  157. package/dist/Model/BaseModels/UserEvent.js +36 -32
  158. package/dist/Model/BindableBase.d.ts +46 -40
  159. package/dist/Model/BindableBase.js +79 -76
  160. package/dist/Model/Decorators.d.ts +47 -44
  161. package/dist/Model/Decorators.js +182 -177
  162. package/dist/Model/EnumHelper.d.ts +54 -54
  163. package/dist/Model/EnumHelper.js +104 -100
  164. package/dist/Model/IAutoRunner.d.ts +5 -5
  165. package/dist/Model/IAutoRunner.js +1 -1
  166. package/dist/Model/IModelBase.d.ts +92 -79
  167. package/dist/Model/IModelBase.js +1 -1
  168. package/dist/Model/IModelCreatorBase.d.ts +9 -9
  169. package/dist/Model/IModelCreatorBase.js +1 -1
  170. package/dist/Model/List.d.ts +79 -77
  171. package/dist/Model/List.js +208 -198
  172. package/dist/Model/LookupBase.d.ts +13 -6
  173. package/dist/Model/LookupBase.js +19 -10
  174. package/dist/Model/Misc.d.ts +83 -81
  175. package/dist/Model/Misc.js +59 -59
  176. package/dist/Model/ModelBase.d.ts +88 -86
  177. package/dist/Model/ModelBase.js +182 -180
  178. package/dist/Model/ModelCreatorBase.d.ts +24 -23
  179. package/dist/Model/ModelCreatorBase.js +92 -92
  180. package/dist/Model/ModelFieldInfo.d.ts +29 -12
  181. package/dist/Model/ModelFieldInfo.js +35 -26
  182. package/dist/Model/ModelGraphTraverser.d.ts +35 -35
  183. package/dist/Model/ModelGraphTraverser.js +101 -99
  184. package/dist/Model/NeoModel.d.ts +6 -6
  185. package/dist/Model/NeoModel.js +13 -13
  186. package/dist/Model/NeoTypeInfo.d.ts +52 -41
  187. package/dist/Model/NeoTypeInfo.js +300 -250
  188. package/dist/Model/ObservableProperty.d.ts +8 -8
  189. package/dist/Model/ObservableProperty.js +41 -41
  190. package/dist/Model/ObservableValue.d.ts +9 -9
  191. package/dist/Model/ObservableValue.js +25 -26
  192. package/dist/Model/PropertyInfo.d.ts +83 -81
  193. package/dist/Model/PropertyInfo.js +138 -137
  194. package/dist/Model/PropertyInstance.d.ts +84 -48
  195. package/dist/Model/PropertyInstance.js +173 -113
  196. package/dist/Model/ValueObject.d.ts +3 -3
  197. package/dist/Model/ValueObject.js +10 -10
  198. package/dist/Model/index.d.ts +15 -14
  199. package/dist/Model/index.js +13 -12
  200. package/dist/NumberUtils.d.ts +63 -49
  201. package/dist/NumberUtils.js +247 -197
  202. package/dist/Routing/IMenuItemProvider.d.ts +9 -9
  203. package/dist/Routing/IMenuItemProvider.js +1 -1
  204. package/dist/Routing/IMenuRoute.d.ts +18 -18
  205. package/dist/Routing/IMenuRoute.js +1 -1
  206. package/dist/Routing/INavigationHelper.d.ts +7 -7
  207. package/dist/Routing/INavigationHelper.js +1 -1
  208. package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
  209. package/dist/Routing/IPageLeaveHandler.js +7 -7
  210. package/dist/Routing/IRoute.d.ts +27 -27
  211. package/dist/Routing/IRoute.js +1 -1
  212. package/dist/Routing/IRouteSecurityService.d.ts +14 -14
  213. package/dist/Routing/IRouteSecurityService.js +1 -1
  214. package/dist/Routing/MenuItemProvider.d.ts +17 -17
  215. package/dist/Routing/MenuItemProvider.js +53 -54
  216. package/dist/Routing/RouteSecurityService.d.ts +18 -18
  217. package/dist/Routing/RouteSecurityService.js +35 -36
  218. package/dist/Routing/index.d.ts +7 -7
  219. package/dist/Routing/index.js +3 -3
  220. package/dist/Security/IAuthenticationService.d.ts +41 -36
  221. package/dist/Security/IAuthenticationService.js +1 -1
  222. package/dist/Security/IAuthorisationService.d.ts +11 -11
  223. package/dist/Security/IAuthorisationService.js +1 -1
  224. package/dist/Security/ILoginErrorHandler.d.ts +4 -4
  225. package/dist/Security/ILoginErrorHandler.js +1 -1
  226. package/dist/Security/ISecurityService.d.ts +10 -10
  227. package/dist/Security/ISecurityService.js +1 -1
  228. package/dist/Security/IUser.d.ts +10 -10
  229. package/dist/Security/IUser.js +1 -1
  230. package/dist/Security/IUserRole.d.ts +6 -6
  231. package/dist/Security/IUserRole.js +1 -1
  232. package/dist/Security/LoginErrorHandler.d.ts +15 -15
  233. package/dist/Security/LoginErrorHandler.js +97 -98
  234. package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
  235. package/dist/Security/Oidc/OidcAuthService.js +216 -189
  236. package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
  237. package/dist/Security/Oidc/OidcTypes.js +1 -1
  238. package/dist/Security/Oidc/OidcUser.d.ts +9 -9
  239. package/dist/Security/Oidc/OidcUser.js +33 -33
  240. package/dist/Security/SecurityService.d.ts +12 -12
  241. package/dist/Security/SecurityService.js +33 -34
  242. package/dist/Security/SignInResult.d.ts +13 -13
  243. package/dist/Security/SignInResult.js +8 -8
  244. package/dist/Security/User.d.ts +12 -12
  245. package/dist/Security/User.js +24 -24
  246. package/dist/Security/index.d.ts +10 -10
  247. package/dist/Security/index.js +5 -5
  248. package/dist/Settings.d.ts +71 -57
  249. package/dist/Settings.js +100 -87
  250. package/dist/SignalR/HubBase.d.ts +70 -70
  251. package/dist/SignalR/HubBase.js +164 -164
  252. package/dist/SignalR/HubReceiver.d.ts +11 -11
  253. package/dist/SignalR/HubReceiver.js +25 -25
  254. package/dist/SignalR/HubSubscription.d.ts +12 -12
  255. package/dist/SignalR/HubSubscription.js +14 -14
  256. package/dist/SignalR/index.d.ts +3 -3
  257. package/dist/SignalR/index.js +1 -1
  258. package/dist/StringUtils.d.ts +7 -7
  259. package/dist/StringUtils.js +24 -24
  260. package/dist/Utils.d.ts +81 -80
  261. package/dist/Utils.js +220 -218
  262. package/dist/Validation/Decorators.d.ts +12 -12
  263. package/dist/Validation/Decorators.js +52 -52
  264. package/dist/Validation/DisplayHelper.d.ts +20 -19
  265. package/dist/Validation/DisplayHelper.js +104 -104
  266. package/dist/Validation/Misc.d.ts +10 -10
  267. package/dist/Validation/Misc.js +11 -11
  268. package/dist/Validation/ModelProxy.d.ts +20 -20
  269. package/dist/Validation/ModelProxy.js +46 -46
  270. package/dist/Validation/RuleContext.d.ts +86 -86
  271. package/dist/Validation/RuleContext.js +130 -130
  272. package/dist/Validation/Rules.d.ts +70 -70
  273. package/dist/Validation/Rules.js +177 -177
  274. package/dist/Validation/ValidationHelpers.d.ts +12 -12
  275. package/dist/Validation/ValidationHelpers.js +57 -57
  276. package/dist/Validation/ValidationRules.d.ts +18 -18
  277. package/dist/Validation/ValidationRules.js +34 -34
  278. package/dist/Validation/ValidationState.d.ts +42 -42
  279. package/dist/Validation/ValidationState.js +74 -74
  280. package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
  281. package/dist/Validation/Validators/IModelValidator.js +1 -1
  282. package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
  283. package/dist/Validation/Validators/IPropertyValidator.js +15 -15
  284. package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
  285. package/dist/Validation/Validators/ModelValidator.js +143 -137
  286. package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
  287. package/dist/Validation/Validators/PropertyValidator.js +64 -67
  288. package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
  289. package/dist/Validation/Validators/RuleValidator.js +51 -55
  290. package/dist/Validation/index.d.ts +9 -9
  291. package/dist/Validation/index.js +7 -7
  292. package/dist/Views/IViewBase.d.ts +5 -5
  293. package/dist/Views/IViewBase.js +1 -1
  294. package/dist/index.d.ts +37 -36
  295. package/dist/index.js +44 -43
  296. package/package.json +11 -10
@@ -1,323 +1,323 @@
1
- import { __awaiter, __decorate, __extends, __generator, __metadata } from "tslib";
2
- import { PageRequest } from './PageRequest';
3
- import NeoModel from '../../Model/NeoModel';
4
- import { DataViewBase } from '../DataView';
5
- import { Misc, AppServices } from '../../';
6
- import { Observable } from '../../Model/Decorators';
7
- import { SortOperation } from '../SortOperation';
8
- import List from '../../Model/List';
9
- var PageManager = /** @class */ (function (_super) {
10
- __extends(PageManager, _super);
11
- function PageManager(criteria, modelType, dataSource, options) {
12
- var _this = _super.call(this, []) || this;
13
- _this.modelType = modelType;
14
- _this.dataSource = dataSource;
15
- _this.hasInitialised = false;
16
- _this._totalRecords = -1;
17
- _this.currentData = new List(_this.modelType);
18
- _this.initialFetchState = "none";
19
- _this.options = options || {};
20
- _this.allowSort = _this.options.allowSort !== false;
21
- _this.performsRemoteSorting = true;
22
- _this.pageRequest = new PageRequest(criteria);
23
- _this.pageRequest.pageSize = _this.options.pageSize || 20;
24
- // Create an instance of model type so that we know about its properties.
25
- void new modelType();
26
- if (options) {
27
- if (options.sortBy) {
28
- _this.setSortOperations(options.sortBy, options.sortAscending);
29
- }
30
- _this.taskRunner = options.taskRunner;
31
- }
32
- if (!options || !options.taskRunner) {
33
- _this.taskRunner = Misc.Globals.appService.get(AppServices.NeoTypes.TaskRunner);
34
- }
35
- if (!_this.options.pageSizeOptions) {
36
- _this.options.pageSizeOptions = Misc.Settings.pager.pageSizeOptions;
37
- }
38
- return _this;
39
- }
40
- Object.defineProperty(PageManager.prototype, "criteria", {
41
- /**
42
- * Gets or sets the criteria.
43
- */
44
- get: function () {
45
- return this.pageRequest.criteria;
46
- },
47
- set: function (value) {
48
- this.pageRequest.criteria = value;
49
- },
50
- enumerable: false,
51
- configurable: true
52
- });
53
- Object.defineProperty(PageManager.prototype, "hasFetched", {
54
- /**
55
- * Returns the state of the initial data request. Does not change after the first request has been made.
56
- * Note, this will return null while loading, so you should check against a boolean value. E.g. if (hasFetched === false)
57
- */
58
- get: function () {
59
- if (this.initialFetchState === "loading") {
60
- return null;
61
- }
62
- return this.initialFetchState === "complete";
63
- },
64
- enumerable: false,
65
- configurable: true
66
- });
67
- Object.defineProperty(PageManager.prototype, "pageNo", {
68
- /**
69
- * Gets or sets the 1 based page number.
70
- */
71
- get: function () {
72
- return this.pageRequest.pageIndex + 1;
73
- },
74
- set: function (value) {
75
- var newIndex = Math.max(1, Math.min(this.totalPages, value)) - 1;
76
- if (this.pageRequest.pageIndex !== newIndex) {
77
- this.pageRequest.pageIndex = newIndex;
78
- this.refreshData(false);
79
- }
80
- },
81
- enumerable: false,
82
- configurable: true
83
- });
84
- Object.defineProperty(PageManager.prototype, "pageSize", {
85
- get: function () {
86
- return this.pageRequest.pageSize;
87
- },
88
- set: function (value) {
89
- var prevSize = this.pageRequest.pageSize;
90
- var prevPageNo = this.pageNo;
91
- if (value !== prevSize) {
92
- this.pageRequest.pageSize = value;
93
- // Adjust the page no so we show the same records, this will re-fetch data.
94
- this.pageNo = Math.floor((this.pageRequest.pageIndex * prevSize + 1) / value) + 1;
95
- if (this.pageNo === prevPageNo) {
96
- this.refreshData(false);
97
- }
98
- }
99
- },
100
- enumerable: false,
101
- configurable: true
102
- });
103
- Object.defineProperty(PageManager.prototype, "totalRecords", {
104
- get: function () {
105
- return this._totalRecords;
106
- },
107
- enumerable: false,
108
- configurable: true
109
- });
110
- Object.defineProperty(PageManager.prototype, "totalPages", {
111
- /** Gets the total number of pages based on the total number of records. */
112
- get: function () {
113
- if (this.totalRecords <= 0) {
114
- return 1;
115
- }
116
- else {
117
- return Math.ceil(this.totalRecords / this.pageRequest.pageSize);
118
- }
119
- },
120
- enumerable: false,
121
- configurable: true
122
- });
123
- /**
124
- * Called by the pager component on first display. Will fetch data if options.fetchInitial is set to true.
125
- */
126
- PageManager.prototype.initialise = function () {
127
- if (!this.hasInitialised) {
128
- this.hasInitialised = true;
129
- if (this.options.fetchInitial) {
130
- this.refreshData(true, this.options.initialTaskRunner);
131
- }
132
- }
133
- };
134
- /**
135
- * Refresh the data by calling the api endpoint with the current criteria.
136
- * Note: the page index will be reset to zero. Use this when your criteria has changed
137
- * @param getCount True if criteria has changed, and the total number of records needs to be refetched.
138
- * @param taskRunner Optional alternate task runner to use.
139
- */
140
- PageManager.prototype.refreshData = function (getCount, taskRunner) {
141
- if (getCount === void 0) { getCount = true; }
142
- return __awaiter(this, void 0, void 0, function () {
143
- var request;
144
- return __generator(this, function (_a) {
145
- switch (_a.label) {
146
- case 0:
147
- if (getCount) {
148
- // Reset the page index when the no of records returned is expected to change (e.g. when filtering).
149
- this.pageRequest.pageIndex = 0;
150
- }
151
- this.pageRequest.noCount = !getCount;
152
- this.pageRequest.sortColumns = this.sortInfo;
153
- request = this.pageRequest.toQueryObject();
154
- if (this.options.beforeFetch)
155
- this.options.beforeFetch(request);
156
- if (!taskRunner)
157
- taskRunner = this.taskRunner;
158
- if (this.initialFetchState === "none") {
159
- this.initialFetchState = "loading";
160
- }
161
- return [4 /*yield*/, taskRunner.waitFor(this.fetchAndSetData(request))];
162
- case 1:
163
- _a.sent();
164
- return [2 /*return*/];
165
- }
166
- });
167
- });
168
- };
169
- /**
170
- * Refresh the data by calling the api endpoint with the current criteria.
171
- * This will not reset the page index, and will not update the total record count, therefore should only be called if your criteria has not changed since the last full fetch using refreshData().
172
- * @param taskRunner Optional alternate task runner to use.
173
- */
174
- PageManager.prototype.refreshPage = function (taskRunner) {
175
- return this.refreshData(false, taskRunner);
176
- };
177
- PageManager.prototype.fetchAndSetData = function (request) {
178
- var _a;
179
- return __awaiter(this, void 0, void 0, function () {
180
- var response, data;
181
- return __generator(this, function (_b) {
182
- switch (_b.label) {
183
- case 0: return [4 /*yield*/, this.dataSource(request)];
184
- case 1:
185
- response = _b.sent();
186
- if ((_a = response.data) === null || _a === void 0 ? void 0 : _a.entityList) {
187
- data = response.data;
188
- }
189
- else {
190
- data = response;
191
- }
192
- return [4 /*yield*/, this.setData(data.entityList, data.total)];
193
- case 2:
194
- _b.sent();
195
- return [2 /*return*/];
196
- }
197
- });
198
- });
199
- };
200
- /* Will set the data to the provided list. This will still invoke the `afterFetch` */
201
- PageManager.prototype.setData = function (pageRecords, totalRecords) {
202
- if (totalRecords === void 0) { totalRecords = 0; }
203
- return __awaiter(this, void 0, void 0, function () {
204
- var newData, task;
205
- return __generator(this, function (_a) {
206
- switch (_a.label) {
207
- case 0:
208
- if (totalRecords >= 0) {
209
- this._totalRecords = totalRecords;
210
- }
211
- newData = List.fromJSArray(this.modelType, pageRecords, this.options.deserialiseOptions);
212
- if (!this.options.afterFetch) return [3 /*break*/, 2];
213
- task = this.options.afterFetch(newData);
214
- if (!(task !== void 0)) return [3 /*break*/, 2];
215
- return [4 /*yield*/, task];
216
- case 1:
217
- _a.sent();
218
- _a.label = 2;
219
- case 2:
220
- this.currentData = newData;
221
- this.initialFetchState = "complete";
222
- return [2 /*return*/];
223
- }
224
- });
225
- });
226
- };
227
- /**
228
- * Resets the page manager to its initial state and clears the current data.
229
- */
230
- PageManager.prototype.reset = function () {
231
- this.initialFetchState = "none";
232
- this.data.set([]);
233
- };
234
- /**
235
- * Resets the sort properties. A new sort property can be provided.
236
- * If the provided sort property matches the first existing sort property, and sortAscending is undefined, then the current sort order will be reversed.
237
- */
238
- PageManager.prototype.resetSort = function (property, sortAscending) {
239
- _super.prototype.resetSort.call(this, property, sortAscending);
240
- this.refreshData(false);
241
- };
242
- /**
243
- * Adds a sort property.
244
- * If the property already exists, the sort direction of the property will be reversed.
245
- */
246
- PageManager.prototype.addSort = function (property, sortAscending) {
247
- _super.prototype.addSort.call(this, property, sortAscending);
248
- this.refreshData(false);
249
- };
250
- /** Sets a single or multiple sort operations. Does not refresh data. */
251
- PageManager.prototype.setSortOperations = function (sortBy, sortAscending) {
252
- this.sortInfo = [];
253
- var metaData = this.modelType.neo.meta;
254
- if (sortBy instanceof Array) {
255
- for (var i = 0; i < sortBy.length; i++) {
256
- this.sortInfo.push(new SortOperation(metaData[sortBy[i]].propertyInfo, sortAscending === undefined || sortAscending[i] !== false));
257
- }
258
- }
259
- else {
260
- this.sortInfo.push(new SortOperation(metaData[sortBy].propertyInfo, sortAscending !== false));
261
- }
262
- };
263
- Object.defineProperty(PageManager.prototype, "rawItems", {
264
- get: function () {
265
- return this.currentData;
266
- },
267
- enumerable: false,
268
- configurable: true
269
- });
270
- PageManager.prototype.getItems = function () {
271
- return this.currentData;
272
- };
273
- Object.defineProperty(PageManager.prototype, "data", {
274
- /**
275
- * Returns the current list.
276
- */
277
- get: function () {
278
- return this.currentData;
279
- },
280
- enumerable: false,
281
- configurable: true
282
- });
283
- Object.defineProperty(PageManager.prototype, "pageSizeOptions", {
284
- get: function () {
285
- return this.options.pageSizeOptions;
286
- },
287
- enumerable: false,
288
- configurable: true
289
- });
290
- PageManager.prototype.getMetaItem = function () {
291
- return new this.modelType();
292
- };
293
- PageManager.prototype.firstPage = function () {
294
- this.pageNo = 1;
295
- };
296
- PageManager.prototype.previousPage = function () {
297
- this.pageNo -= 1;
298
- };
299
- PageManager.prototype.nextPage = function () {
300
- this.pageNo += 1;
301
- };
302
- PageManager.prototype.lastPage = function () {
303
- this.pageNo = this.totalPages;
304
- };
305
- __decorate([
306
- Observable(),
307
- __metadata("design:type", Number)
308
- ], PageManager.prototype, "_totalRecords", void 0);
309
- __decorate([
310
- Observable(),
311
- __metadata("design:type", Object)
312
- ], PageManager.prototype, "currentData", void 0);
313
- __decorate([
314
- Observable(),
315
- __metadata("design:type", String)
316
- ], PageManager.prototype, "initialFetchState", void 0);
317
- PageManager = __decorate([
318
- NeoModel,
319
- __metadata("design:paramtypes", [Object, Function, Function, Object])
320
- ], PageManager);
321
- return PageManager;
322
- }(DataViewBase));
323
- export { PageManager };
1
+ import { __awaiter, __decorate, __extends, __generator, __metadata } from "tslib";
2
+ import { PageRequest } from './PageRequest';
3
+ import NeoModel from '../../Model/NeoModel';
4
+ import { DataViewBase } from '../DataView';
5
+ import { Misc, AppServices } from '../../';
6
+ import { Observable } from '../../Model/Decorators';
7
+ import { SortOperation } from '../SortOperation';
8
+ import List from '../../Model/List';
9
+ export var PageManager = /** @class */ (function (_super) {
10
+ __extends(PageManager, _super);
11
+ function PageManager(criteria, modelType, dataSource, options) {
12
+ var _this = _super.call(this, []) || this;
13
+ _this.modelType = modelType;
14
+ _this.dataSource = dataSource;
15
+ _this.hasInitialised = false;
16
+ _this._totalRecords = -1;
17
+ _this.currentData = new List(_this.modelType);
18
+ _this.initialFetchState = "none";
19
+ _this.options = options || {};
20
+ _this.allowSort = _this.options.allowSort !== false;
21
+ _this.performsRemoteSorting = true;
22
+ _this.pageRequest = new PageRequest(criteria);
23
+ _this.pageRequest.pageSize = _this.options.pageSize || 20;
24
+ // Create an instance of model type so that we know about its properties.
25
+ void new modelType();
26
+ if (options) {
27
+ if (options.sortBy) {
28
+ _this.setSortOperations(options.sortBy, options.sortAscending);
29
+ }
30
+ _this.taskRunner = options.taskRunner;
31
+ }
32
+ if (!options || !options.taskRunner) {
33
+ _this.taskRunner = Misc.Globals.appService.get(AppServices.NeoTypes.TaskRunner);
34
+ }
35
+ if (!_this.options.pageSizeOptions) {
36
+ _this.options.pageSizeOptions = Misc.Settings.pager.pageSizeOptions;
37
+ }
38
+ return _this;
39
+ }
40
+ Object.defineProperty(PageManager.prototype, "criteria", {
41
+ /**
42
+ * Gets or sets the criteria.
43
+ */
44
+ get: function () {
45
+ return this.pageRequest.criteria;
46
+ },
47
+ set: function (value) {
48
+ this.pageRequest.criteria = value;
49
+ },
50
+ enumerable: false,
51
+ configurable: true
52
+ });
53
+ Object.defineProperty(PageManager.prototype, "hasFetched", {
54
+ /**
55
+ * Returns the state of the initial data request. Does not change after the first request has been made.
56
+ * Note, this will return null while loading, so you should check against a boolean value. E.g. if (hasFetched === false)
57
+ */
58
+ get: function () {
59
+ if (this.initialFetchState === "loading") {
60
+ return null;
61
+ }
62
+ return this.initialFetchState === "complete";
63
+ },
64
+ enumerable: false,
65
+ configurable: true
66
+ });
67
+ Object.defineProperty(PageManager.prototype, "pageNo", {
68
+ /**
69
+ * Gets or sets the 1 based page number.
70
+ */
71
+ get: function () {
72
+ return this.pageRequest.pageIndex + 1;
73
+ },
74
+ set: function (value) {
75
+ var newIndex = Math.max(1, Math.min(this.totalPages, value)) - 1;
76
+ if (this.pageRequest.pageIndex !== newIndex) {
77
+ this.pageRequest.pageIndex = newIndex;
78
+ this.refreshData(false);
79
+ }
80
+ },
81
+ enumerable: false,
82
+ configurable: true
83
+ });
84
+ Object.defineProperty(PageManager.prototype, "pageSize", {
85
+ get: function () {
86
+ return this.pageRequest.pageSize;
87
+ },
88
+ set: function (value) {
89
+ var prevSize = this.pageRequest.pageSize;
90
+ var prevPageNo = this.pageNo;
91
+ if (value !== prevSize) {
92
+ this.pageRequest.pageSize = value;
93
+ // Adjust the page no so we show the same records, this will re-fetch data.
94
+ this.pageNo = Math.floor((this.pageRequest.pageIndex * prevSize + 1) / value) + 1;
95
+ if (this.pageNo === prevPageNo) {
96
+ this.refreshData(false);
97
+ }
98
+ }
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ Object.defineProperty(PageManager.prototype, "totalRecords", {
104
+ get: function () {
105
+ return this._totalRecords;
106
+ },
107
+ enumerable: false,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(PageManager.prototype, "totalPages", {
111
+ /** Gets the total number of pages based on the total number of records. */
112
+ get: function () {
113
+ if (this.totalRecords <= 0) {
114
+ return 1;
115
+ }
116
+ else {
117
+ return Math.ceil(this.totalRecords / this.pageRequest.pageSize);
118
+ }
119
+ },
120
+ enumerable: false,
121
+ configurable: true
122
+ });
123
+ /**
124
+ * Called by the pager component on first display. Will fetch data if options.fetchInitial is set to true.
125
+ */
126
+ PageManager.prototype.initialise = function () {
127
+ if (!this.hasInitialised) {
128
+ this.hasInitialised = true;
129
+ if (this.options.fetchInitial) {
130
+ this.refreshData(true, this.options.initialTaskRunner);
131
+ }
132
+ }
133
+ };
134
+ /**
135
+ * Refresh the data by calling the api endpoint with the current criteria.
136
+ * Note: the page index will be reset to zero. Use this when your criteria has changed
137
+ * @param getCount True if criteria has changed, and the total number of records needs to be refetched.
138
+ * @param taskRunner Optional alternate task runner to use.
139
+ */
140
+ PageManager.prototype.refreshData = function (getCount, taskRunner) {
141
+ if (getCount === void 0) { getCount = true; }
142
+ return __awaiter(this, void 0, void 0, function () {
143
+ var request;
144
+ return __generator(this, function (_a) {
145
+ switch (_a.label) {
146
+ case 0:
147
+ if (getCount) {
148
+ // Reset the page index when the no of records returned is expected to change (e.g. when filtering).
149
+ this.pageRequest.pageIndex = 0;
150
+ }
151
+ this.pageRequest.noCount = !getCount;
152
+ this.pageRequest.sortColumns = this.sortInfo;
153
+ request = this.pageRequest.toQueryObject();
154
+ if (this.options.beforeFetch)
155
+ this.options.beforeFetch(request);
156
+ if (!taskRunner)
157
+ taskRunner = this.taskRunner;
158
+ if (this.initialFetchState === "none") {
159
+ this.initialFetchState = "loading";
160
+ }
161
+ return [4 /*yield*/, taskRunner.waitFor(this.fetchAndSetData(request))];
162
+ case 1:
163
+ _a.sent();
164
+ return [2 /*return*/];
165
+ }
166
+ });
167
+ });
168
+ };
169
+ /**
170
+ * Refresh the data by calling the api endpoint with the current criteria.
171
+ * This will not reset the page index, and will not update the total record count, therefore should only be called if your criteria has not changed since the last full fetch using refreshData().
172
+ * @param taskRunner Optional alternate task runner to use.
173
+ */
174
+ PageManager.prototype.refreshPage = function (taskRunner) {
175
+ return this.refreshData(false, taskRunner);
176
+ };
177
+ PageManager.prototype.fetchAndSetData = function (request) {
178
+ var _a;
179
+ return __awaiter(this, void 0, void 0, function () {
180
+ var response, data;
181
+ return __generator(this, function (_b) {
182
+ switch (_b.label) {
183
+ case 0: return [4 /*yield*/, this.dataSource(request)];
184
+ case 1:
185
+ response = _b.sent();
186
+ if ((_a = response.data) === null || _a === void 0 ? void 0 : _a.entityList) {
187
+ data = response.data;
188
+ }
189
+ else {
190
+ data = response;
191
+ }
192
+ return [4 /*yield*/, this.setData(data.entityList, data.total)];
193
+ case 2:
194
+ _b.sent();
195
+ return [2 /*return*/];
196
+ }
197
+ });
198
+ });
199
+ };
200
+ /* Will set the data to the provided list. This will still invoke the `afterFetch` */
201
+ PageManager.prototype.setData = function (pageRecords, totalRecords) {
202
+ if (totalRecords === void 0) { totalRecords = 0; }
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ var newData, task;
205
+ return __generator(this, function (_a) {
206
+ switch (_a.label) {
207
+ case 0:
208
+ if (totalRecords >= 0) {
209
+ this._totalRecords = totalRecords;
210
+ }
211
+ newData = List.fromJSArray(this.modelType, pageRecords, this.options.deserialiseOptions);
212
+ if (!this.options.afterFetch) return [3 /*break*/, 2];
213
+ task = this.options.afterFetch(newData);
214
+ if (!(task !== void 0)) return [3 /*break*/, 2];
215
+ return [4 /*yield*/, task];
216
+ case 1:
217
+ _a.sent();
218
+ _a.label = 2;
219
+ case 2:
220
+ this.currentData = newData;
221
+ this.initialFetchState = "complete";
222
+ return [2 /*return*/];
223
+ }
224
+ });
225
+ });
226
+ };
227
+ /**
228
+ * Resets the page manager to its initial state and clears the current data.
229
+ */
230
+ PageManager.prototype.reset = function () {
231
+ this.initialFetchState = "none";
232
+ this.data.set([]);
233
+ this._totalRecords = 0;
234
+ };
235
+ /**
236
+ * Resets the sort properties. A new sort property can be provided.
237
+ * If the provided sort property matches the first existing sort property, and sortAscending is undefined, then the current sort order will be reversed.
238
+ */
239
+ PageManager.prototype.resetSort = function (property, sortAscending) {
240
+ _super.prototype.resetSort.call(this, property, sortAscending);
241
+ this.refreshData(false);
242
+ };
243
+ /**
244
+ * Adds a sort property.
245
+ * If the property already exists, the sort direction of the property will be reversed.
246
+ */
247
+ PageManager.prototype.addSort = function (property, sortAscending) {
248
+ _super.prototype.addSort.call(this, property, sortAscending);
249
+ this.refreshData(false);
250
+ };
251
+ /** Sets a single or multiple sort operations. Does not refresh data. */
252
+ PageManager.prototype.setSortOperations = function (sortBy, sortAscending) {
253
+ this.sortInfo = [];
254
+ var metaData = this.modelType.neo.meta;
255
+ if (sortBy instanceof Array) {
256
+ for (var i = 0; i < sortBy.length; i++) {
257
+ this.sortInfo.push(new SortOperation(metaData[sortBy[i]].propertyInfo, sortAscending === undefined || sortAscending[i] !== false));
258
+ }
259
+ }
260
+ else {
261
+ this.sortInfo.push(new SortOperation(metaData[sortBy].propertyInfo, sortAscending !== false));
262
+ }
263
+ };
264
+ Object.defineProperty(PageManager.prototype, "rawItems", {
265
+ get: function () {
266
+ return this.currentData;
267
+ },
268
+ enumerable: false,
269
+ configurable: true
270
+ });
271
+ PageManager.prototype.getItems = function () {
272
+ return this.currentData;
273
+ };
274
+ Object.defineProperty(PageManager.prototype, "data", {
275
+ /**
276
+ * Returns the current list.
277
+ */
278
+ get: function () {
279
+ return this.currentData;
280
+ },
281
+ enumerable: false,
282
+ configurable: true
283
+ });
284
+ Object.defineProperty(PageManager.prototype, "pageSizeOptions", {
285
+ get: function () {
286
+ return this.options.pageSizeOptions;
287
+ },
288
+ enumerable: false,
289
+ configurable: true
290
+ });
291
+ PageManager.prototype.getMetaItem = function () {
292
+ return new this.modelType();
293
+ };
294
+ PageManager.prototype.firstPage = function () {
295
+ this.pageNo = 1;
296
+ };
297
+ PageManager.prototype.previousPage = function () {
298
+ this.pageNo -= 1;
299
+ };
300
+ PageManager.prototype.nextPage = function () {
301
+ this.pageNo += 1;
302
+ };
303
+ PageManager.prototype.lastPage = function () {
304
+ this.pageNo = this.totalPages;
305
+ };
306
+ __decorate([
307
+ Observable(),
308
+ __metadata("design:type", Number)
309
+ ], PageManager.prototype, "_totalRecords", void 0);
310
+ __decorate([
311
+ Observable(),
312
+ __metadata("design:type", Object)
313
+ ], PageManager.prototype, "currentData", void 0);
314
+ __decorate([
315
+ Observable(),
316
+ __metadata("design:type", String)
317
+ ], PageManager.prototype, "initialFetchState", void 0);
318
+ PageManager = __decorate([
319
+ NeoModel,
320
+ __metadata("design:paramtypes", [Object, Function, Function, Object])
321
+ ], PageManager);
322
+ return PageManager;
323
+ }(DataViewBase));