@singularsystems/neo-core 1.0.0-alpha.3 → 1.0.0-beta.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 (299) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/dist/ApiClient/ApiClientBase.d.ts +5 -5
  4. package/dist/ApiClient/ApiClientBase.js +13 -13
  5. package/dist/ApiClient/ReadApiClient.d.ts +16 -16
  6. package/dist/ApiClient/ReadApiClient.js +24 -24
  7. package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
  8. package/dist/ApiClient/UpdateableApiClient.js +33 -33
  9. package/dist/AppServices/AppService.d.ts +46 -46
  10. package/dist/AppServices/AppService.js +25 -25
  11. package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
  12. package/dist/AppServices/Config/ConfigModel.js +28 -17
  13. package/dist/AppServices/Config/ConfigService.d.ts +15 -15
  14. package/dist/AppServices/Config/ConfigService.js +49 -53
  15. package/dist/AppServices/Module.d.ts +11 -11
  16. package/dist/AppServices/Module.js +13 -13
  17. package/dist/AppServices/NeoContainer.d.ts +22 -22
  18. package/dist/AppServices/NeoContainer.js +42 -42
  19. package/dist/AppServices/NeoModule.d.ts +3 -3
  20. package/dist/AppServices/NeoModule.js +30 -30
  21. package/dist/AppServices/NeoTypes.d.ts +61 -61
  22. package/dist/AppServices/NeoTypes.js +42 -42
  23. package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
  24. package/dist/AppServices/ServiceIdentifier.js +38 -39
  25. package/dist/AppServices/index.d.ts +7 -7
  26. package/dist/AppServices/index.js +7 -7
  27. package/dist/Components/AnimationHelper.d.ts +69 -69
  28. package/dist/Components/AnimationHelper.js +182 -182
  29. package/dist/Components/BootstrapHelpers.d.ts +8 -8
  30. package/dist/Components/BootstrapHelpers.js +30 -30
  31. package/dist/Components/BootstrapTypes.d.ts +35 -35
  32. package/dist/Components/BootstrapTypes.js +1 -1
  33. package/dist/Components/ButtonOptions.d.ts +63 -61
  34. package/dist/Components/ButtonOptions.js +1 -1
  35. package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
  36. package/dist/Components/ContextMenu/ContextMenu.js +1 -1
  37. package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
  38. package/dist/Components/ContextMenu/MenuUtils.js +34 -34
  39. package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
  40. package/dist/Components/DatePicker/DatePicker.js +510 -487
  41. package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
  42. package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
  43. package/dist/Components/ErrorHandler.d.ts +63 -55
  44. package/dist/Components/ErrorHandler.js +211 -138
  45. package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
  46. package/dist/Components/FileManager/BoundFileManager.js +60 -60
  47. package/dist/Components/FileManager/FileManager.d.ts +80 -78
  48. package/dist/Components/FileManager/FileManager.js +277 -257
  49. package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
  50. package/dist/Components/FileManager/FileUploadBatch.js +83 -82
  51. package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
  52. package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
  53. package/dist/Components/FormOptions.d.ts +34 -34
  54. package/dist/Components/FormOptions.js +1 -1
  55. package/dist/Components/ICollapsableOptions.d.ts +11 -11
  56. package/dist/Components/ICollapsableOptions.js +1 -1
  57. package/dist/Components/Modal/ModalHelper.d.ts +31 -31
  58. package/dist/Components/Modal/ModalHelper.js +174 -174
  59. package/dist/Components/Modal/ModalOptions.d.ts +61 -61
  60. package/dist/Components/Modal/ModalOptions.js +1 -1
  61. package/dist/Components/Modal/ModalStore.d.ts +32 -32
  62. package/dist/Components/Modal/ModalStore.js +82 -82
  63. package/dist/Components/Modal/ModalUtils.d.ts +61 -61
  64. package/dist/Components/Modal/ModalUtils.js +109 -109
  65. package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
  66. package/dist/Components/Notifications/INotificationHelper.js +1 -1
  67. package/dist/Components/Notifications/Notification.d.ts +32 -32
  68. package/dist/Components/Notifications/Notification.js +26 -27
  69. package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
  70. package/dist/Components/Notifications/NotificationHelper.js +111 -112
  71. package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
  72. package/dist/Components/Notifications/NotificationStore.js +78 -79
  73. package/dist/Components/PositionHelper.d.ts +10 -10
  74. package/dist/Components/PositionHelper.js +43 -43
  75. package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
  76. package/dist/Components/TaskRunner/Decorators.js +24 -24
  77. package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
  78. package/dist/Components/TaskRunner/ProgressState.js +71 -72
  79. package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
  80. package/dist/Components/TaskRunner/TaskRunner.js +253 -244
  81. package/dist/Components/TooltipOptions.d.ts +8 -8
  82. package/dist/Components/TooltipOptions.js +1 -1
  83. package/dist/Components/index.d.ts +22 -22
  84. package/dist/Components/index.js +13 -13
  85. package/dist/ConnectionManager.d.ts +45 -45
  86. package/dist/ConnectionManager.js +60 -61
  87. package/dist/Data/ApiDataSource.d.ts +46 -46
  88. package/dist/Data/ApiDataSource.js +140 -144
  89. package/dist/Data/AsyncDataSource.d.ts +35 -35
  90. package/dist/Data/AsyncDataSource.js +79 -80
  91. package/dist/Data/CacheService.d.ts +40 -40
  92. package/dist/Data/CacheService.js +63 -64
  93. package/dist/Data/DataCacheEntry.d.ts +42 -42
  94. package/dist/Data/DataCacheEntry.js +80 -80
  95. package/dist/Data/DataView.d.ts +43 -43
  96. package/dist/Data/DataView.js +173 -172
  97. package/dist/Data/Deserialiser.d.ts +42 -42
  98. package/dist/Data/Deserialiser.js +255 -255
  99. package/dist/Data/Paging/PageManager.d.ts +167 -167
  100. package/dist/Data/Paging/PageManager.js +323 -323
  101. package/dist/Data/Paging/PageRequest.d.ts +24 -24
  102. package/dist/Data/Paging/PageRequest.js +38 -39
  103. package/dist/Data/Paging/PageResult.d.ts +10 -10
  104. package/dist/Data/Paging/PageResult.js +14 -14
  105. package/dist/Data/Serialiser.d.ts +41 -41
  106. package/dist/Data/Serialiser.js +201 -201
  107. package/dist/Data/SortOperation.d.ts +8 -8
  108. package/dist/Data/SortOperation.js +26 -26
  109. package/dist/Data/StaticDataSource.d.ts +9 -9
  110. package/dist/Data/StaticDataSource.js +27 -27
  111. package/dist/Data/WindowedDataView.d.ts +8 -8
  112. package/dist/Data/WindowedDataView.js +49 -50
  113. package/dist/Data/index.d.ts +15 -15
  114. package/dist/Data/index.js +15 -15
  115. package/dist/Dates/DateUtils.d.ts +47 -47
  116. package/dist/Dates/DateUtils.js +226 -226
  117. package/dist/Dates/TimeSpan.d.ts +24 -24
  118. package/dist/Dates/TimeSpan.js +46 -46
  119. package/dist/DebounceHelper.d.ts +44 -38
  120. package/dist/DebounceHelper.js +122 -95
  121. package/dist/Extensions.d.ts +82 -82
  122. package/dist/Extensions.js +182 -182
  123. package/dist/FileUtils.d.ts +6 -6
  124. package/dist/FileUtils.js +37 -37
  125. package/dist/Globals.d.ts +19 -19
  126. package/dist/Globals.js +41 -41
  127. package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
  128. package/dist/JsonSchema/ClassMetadata.js +53 -53
  129. package/dist/JsonSchema/JsonData.d.ts +16 -16
  130. package/dist/JsonSchema/JsonData.js +97 -97
  131. package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
  132. package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
  133. package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
  134. package/dist/JsonSchema/PropertyMetadata.js +8 -8
  135. package/dist/JsonSchema/TypeCache.d.ts +16 -16
  136. package/dist/JsonSchema/TypeCache.js +44 -44
  137. package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
  138. package/dist/JsonSchema/TypeMetadata.js +170 -170
  139. package/dist/JsonSchema/index.d.ts +7 -7
  140. package/dist/JsonSchema/index.js +6 -6
  141. package/dist/Localisation/ILocalisationService.d.ts +11 -11
  142. package/dist/Localisation/ILocalisationService.js +1 -1
  143. package/dist/Localisation/LocalisationService.d.ts +4 -4
  144. package/dist/Localisation/LocalisationService.js +17 -17
  145. package/dist/Localisation/index.d.ts +1 -1
  146. package/dist/Localisation/index.js +1 -1
  147. package/dist/Misc.d.ts +6 -6
  148. package/dist/Misc.js +6 -6
  149. package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
  150. package/dist/Model/BaseModels/AuditValues.js +46 -48
  151. package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
  152. package/dist/Model/BaseModels/CriteriaBase.js +45 -34
  153. package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
  154. package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
  155. package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
  156. package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
  157. package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
  158. package/dist/Model/BaseModels/UserEvent.js +36 -32
  159. package/dist/Model/BindableBase.d.ts +46 -40
  160. package/dist/Model/BindableBase.js +82 -76
  161. package/dist/Model/Decorators.d.ts +50 -44
  162. package/dist/Model/Decorators.js +189 -177
  163. package/dist/Model/EnumHelper.d.ts +54 -54
  164. package/dist/Model/EnumHelper.js +104 -100
  165. package/dist/Model/IAutoRunner.d.ts +5 -5
  166. package/dist/Model/IAutoRunner.js +1 -1
  167. package/dist/Model/IModelBase.d.ts +101 -79
  168. package/dist/Model/IModelBase.js +1 -1
  169. package/dist/Model/IModelCreatorBase.d.ts +9 -9
  170. package/dist/Model/IModelCreatorBase.js +1 -1
  171. package/dist/Model/List.d.ts +79 -77
  172. package/dist/Model/List.js +208 -198
  173. package/dist/Model/LookupBase.d.ts +13 -6
  174. package/dist/Model/LookupBase.js +19 -10
  175. package/dist/Model/MethodInfo.d.ts +8 -0
  176. package/dist/Model/MethodInfo.js +7 -0
  177. package/dist/Model/Misc.d.ts +83 -81
  178. package/dist/Model/Misc.js +59 -59
  179. package/dist/Model/ModelBase.d.ts +88 -86
  180. package/dist/Model/ModelBase.js +189 -180
  181. package/dist/Model/ModelCreatorBase.d.ts +23 -23
  182. package/dist/Model/ModelCreatorBase.js +91 -92
  183. package/dist/Model/ModelFieldInfo.d.ts +29 -12
  184. package/dist/Model/ModelFieldInfo.js +35 -26
  185. package/dist/Model/ModelGraphTraverser.d.ts +35 -35
  186. package/dist/Model/ModelGraphTraverser.js +101 -99
  187. package/dist/Model/NeoModel.d.ts +6 -6
  188. package/dist/Model/NeoModel.js +13 -13
  189. package/dist/Model/NeoTypeInfo.d.ts +55 -41
  190. package/dist/Model/NeoTypeInfo.js +319 -250
  191. package/dist/Model/ObservableProperty.d.ts +8 -8
  192. package/dist/Model/ObservableProperty.js +41 -41
  193. package/dist/Model/ObservableValue.d.ts +9 -9
  194. package/dist/Model/ObservableValue.js +25 -26
  195. package/dist/Model/PropertyInfo.d.ts +83 -81
  196. package/dist/Model/PropertyInfo.js +137 -137
  197. package/dist/Model/PropertyInstance.d.ts +84 -48
  198. package/dist/Model/PropertyInstance.js +173 -113
  199. package/dist/Model/ValueObject.d.ts +3 -3
  200. package/dist/Model/ValueObject.js +10 -10
  201. package/dist/Model/index.d.ts +15 -14
  202. package/dist/Model/index.js +13 -12
  203. package/dist/NumberUtils.d.ts +63 -49
  204. package/dist/NumberUtils.js +247 -197
  205. package/dist/Routing/IMenuItemProvider.d.ts +9 -9
  206. package/dist/Routing/IMenuItemProvider.js +1 -1
  207. package/dist/Routing/IMenuRoute.d.ts +18 -18
  208. package/dist/Routing/IMenuRoute.js +1 -1
  209. package/dist/Routing/INavigationHelper.d.ts +7 -7
  210. package/dist/Routing/INavigationHelper.js +1 -1
  211. package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
  212. package/dist/Routing/IPageLeaveHandler.js +7 -7
  213. package/dist/Routing/IRoute.d.ts +27 -27
  214. package/dist/Routing/IRoute.js +1 -1
  215. package/dist/Routing/IRouteSecurityService.d.ts +14 -14
  216. package/dist/Routing/IRouteSecurityService.js +1 -1
  217. package/dist/Routing/MenuItemProvider.d.ts +17 -17
  218. package/dist/Routing/MenuItemProvider.js +53 -54
  219. package/dist/Routing/RouteSecurityService.d.ts +18 -18
  220. package/dist/Routing/RouteSecurityService.js +35 -36
  221. package/dist/Routing/index.d.ts +7 -7
  222. package/dist/Routing/index.js +3 -3
  223. package/dist/Security/IAuthenticationService.d.ts +41 -36
  224. package/dist/Security/IAuthenticationService.js +1 -1
  225. package/dist/Security/IAuthorisationService.d.ts +11 -11
  226. package/dist/Security/IAuthorisationService.js +1 -1
  227. package/dist/Security/ILoginErrorHandler.d.ts +4 -4
  228. package/dist/Security/ILoginErrorHandler.js +1 -1
  229. package/dist/Security/ISecurityService.d.ts +10 -10
  230. package/dist/Security/ISecurityService.js +1 -1
  231. package/dist/Security/IUser.d.ts +10 -10
  232. package/dist/Security/IUser.js +1 -1
  233. package/dist/Security/IUserRole.d.ts +6 -6
  234. package/dist/Security/IUserRole.js +1 -1
  235. package/dist/Security/LoginErrorHandler.d.ts +15 -15
  236. package/dist/Security/LoginErrorHandler.js +97 -98
  237. package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
  238. package/dist/Security/Oidc/OidcAuthService.js +216 -189
  239. package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
  240. package/dist/Security/Oidc/OidcTypes.js +1 -1
  241. package/dist/Security/Oidc/OidcUser.d.ts +9 -9
  242. package/dist/Security/Oidc/OidcUser.js +33 -33
  243. package/dist/Security/SecurityService.d.ts +12 -12
  244. package/dist/Security/SecurityService.js +33 -34
  245. package/dist/Security/SignInResult.d.ts +13 -13
  246. package/dist/Security/SignInResult.js +8 -8
  247. package/dist/Security/User.d.ts +12 -12
  248. package/dist/Security/User.js +24 -24
  249. package/dist/Security/index.d.ts +10 -10
  250. package/dist/Security/index.js +5 -5
  251. package/dist/Settings.d.ts +71 -57
  252. package/dist/Settings.js +100 -87
  253. package/dist/SignalR/HubBase.d.ts +70 -70
  254. package/dist/SignalR/HubBase.js +164 -164
  255. package/dist/SignalR/HubReceiver.d.ts +11 -11
  256. package/dist/SignalR/HubReceiver.js +25 -25
  257. package/dist/SignalR/HubSubscription.d.ts +12 -12
  258. package/dist/SignalR/HubSubscription.js +14 -14
  259. package/dist/SignalR/index.d.ts +3 -3
  260. package/dist/SignalR/index.js +1 -1
  261. package/dist/StringUtils.d.ts +7 -7
  262. package/dist/StringUtils.js +24 -24
  263. package/dist/Utils.d.ts +81 -80
  264. package/dist/Utils.js +220 -218
  265. package/dist/Validation/Decorators.d.ts +12 -12
  266. package/dist/Validation/Decorators.js +52 -52
  267. package/dist/Validation/DisplayHelper.d.ts +20 -19
  268. package/dist/Validation/DisplayHelper.js +104 -104
  269. package/dist/Validation/Misc.d.ts +10 -10
  270. package/dist/Validation/Misc.js +11 -11
  271. package/dist/Validation/ModelProxy.d.ts +20 -20
  272. package/dist/Validation/ModelProxy.js +46 -46
  273. package/dist/Validation/RuleContext.d.ts +86 -86
  274. package/dist/Validation/RuleContext.js +130 -130
  275. package/dist/Validation/Rules.d.ts +70 -70
  276. package/dist/Validation/Rules.js +177 -177
  277. package/dist/Validation/ValidationHelpers.d.ts +12 -12
  278. package/dist/Validation/ValidationHelpers.js +57 -57
  279. package/dist/Validation/ValidationRules.d.ts +18 -18
  280. package/dist/Validation/ValidationRules.js +34 -34
  281. package/dist/Validation/ValidationState.d.ts +42 -42
  282. package/dist/Validation/ValidationState.js +74 -74
  283. package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
  284. package/dist/Validation/Validators/IModelValidator.js +1 -1
  285. package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
  286. package/dist/Validation/Validators/IPropertyValidator.js +15 -15
  287. package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
  288. package/dist/Validation/Validators/ModelValidator.js +143 -137
  289. package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
  290. package/dist/Validation/Validators/PropertyValidator.js +64 -67
  291. package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
  292. package/dist/Validation/Validators/RuleValidator.js +51 -55
  293. package/dist/Validation/index.d.ts +9 -9
  294. package/dist/Validation/index.js +7 -7
  295. package/dist/Views/IViewBase.d.ts +5 -5
  296. package/dist/Views/IViewBase.js +1 -1
  297. package/dist/index.d.ts +37 -36
  298. package/dist/index.js +44 -43
  299. package/package.json +11 -10
@@ -1,180 +1,189 @@
1
- import { __decorate, __extends, __metadata } from "tslib";
2
- import * as ModelTraverser from './ModelGraphTraverser';
3
- import { Computed, NoTracking, Observable } from './Decorators';
4
- import { JSFormatter } from '../Data/Serialiser';
5
- import { BindableBase } from './BindableBase';
6
- import { Misc } from '../';
7
- import { SerialiseType } from './Misc';
8
- import { NeoTypes } from '../AppServices';
9
- /*
10
- Note:
11
- Any properties or methods that should not be included in the meta object should also be added to INonObservableModelBase
12
- Any protected methods that need to be accessed by neo code should be included in IModelBaseInternal
13
- */
14
- var ModelBase = /** @class */ (function (_super) {
15
- __extends(ModelBase, _super);
16
- function ModelBase() {
17
- var _this = _super !== null && _super.apply(this, arguments) || this;
18
- _this.isNew = true;
19
- _this.isSelfDirty = true;
20
- return _this;
21
- }
22
- Object.defineProperty(ModelBase.prototype, "isDirty", {
23
- /**
24
- * Returns true if the object itself is dirty, or any of its children are dirty.
25
- * IsNew does not affect the value of IsDirty.
26
- */
27
- get: function () {
28
- return ModelTraverser.traverseItems(this, new ModelTraverser.BooleanRecursionState(false), function (item, state) {
29
- if (item.isSelfDirty) {
30
- state.flag = true;
31
- state.stop = true;
32
- }
33
- }, function (list, state) {
34
- var deletedList = list.deletedList;
35
- if (deletedList && deletedList.length > 0) {
36
- state.flag = true;
37
- state.stop = true;
38
- }
39
- }).flag;
40
- },
41
- enumerable: false,
42
- configurable: true
43
- });
44
- Object.defineProperty(ModelBase.prototype, "isSelfValid", {
45
- get: function () {
46
- return this.validator.isValid;
47
- },
48
- enumerable: false,
49
- configurable: true
50
- });
51
- Object.defineProperty(ModelBase.prototype, "isValid", {
52
- get: function () {
53
- return ModelTraverser.traverseItems(this, new ModelTraverser.BooleanRecursionState(true), function (item, state) {
54
- if (!item.isSelfValid) {
55
- state.flag = false;
56
- state.stop = true;
57
- }
58
- }).flag;
59
- },
60
- enumerable: false,
61
- configurable: true
62
- });
63
- Object.defineProperty(ModelBase.prototype, "readyToSave", {
64
- /**
65
- * Indicates that the model is dirty and valid and can be saved.
66
- */
67
- get: function () {
68
- return this.isDirty && this.isValid;
69
- },
70
- enumerable: false,
71
- configurable: true
72
- });
73
- /** Recursively sets isSelfDirty, and isNew to false on this object and its children. */
74
- ModelBase.prototype.markOld = function (recurse) {
75
- if (recurse === void 0) { recurse = true; }
76
- if (recurse) {
77
- ModelTraverser.traverseItems(this, new ModelTraverser.RecursionState(), function (item) {
78
- item.isSelfDirty = false;
79
- item.isNew = false;
80
- });
81
- }
82
- else {
83
- this.isSelfDirty = false;
84
- this.isNew = false;
85
- }
86
- };
87
- ModelBase.prototype.toJSObject = function (options) {
88
- if (options === void 0) { options = {}; }
89
- return JSFormatter.serialise(this, options);
90
- };
91
- /**
92
- * Converts the model into a plain javascript object for use with Utils.getQueryString.
93
- * Child objects, child lists and tracking state are ignored.
94
- */
95
- ModelBase.prototype.toQueryObject = function () {
96
- return this.toJSObject({ suppressTrackingState: true, suppressChildren: true });
97
- };
98
- /**
99
- * Passes you a query object every time one of the models properties change.
100
- * This is delayed for string and numeric properties.
101
- * You must call the disposer when you are done with this object.
102
- * @param instance Model instance.
103
- * @param callback Callback to run accepting a query object.
104
- */
105
- ModelBase.prototype.toQueryObjectAuto = function (callback, options) {
106
- var _this = this;
107
- return Misc.Globals.appService.get(NeoTypes.Core.AutoRunnerFactory).create(this, function () { return callback(_this.toQueryObject()); }, options);
108
- };
109
- /**
110
- * Runs the provided callback whenever any of values of the properties on this object, it's value objects, or child objects (if specified) change.
111
- * This is delayed for string and numeric properties.
112
- * You must call the disposer when you are done with this object.
113
- */
114
- ModelBase.prototype.onAnyPropertyChanged = function (callback, options) {
115
- return Misc.Globals.appService.get(NeoTypes.Core.AutoRunnerFactory).create(this, callback, options);
116
- };
117
- /**
118
- * Converts a plain javascript object graph to a neo model graph.
119
- * Updates child lists - Items in the child list, but not in jsArray will remain in the list.
120
- * If you need to replace child lists with the jsArrays, use set() instead.
121
- * This will generally be used after calling toJSObject(includeClean = false)
122
- * */
123
- ModelBase.prototype.update = function (jsObject) {
124
- JSFormatter.deserialise(jsObject, this, null);
125
- };
126
- /**
127
- * Performs a deep clone on an object, cloning all nested objects including their entity identifiers.
128
- */
129
- ModelBase.prototype.cloneWithIdentity = function () {
130
- return this.constructor.mapFrom(this, { isMap: { includeEntityIdentifiers: true } });
131
- };
132
- /**
133
- * Icon to display next to toString() text.
134
- */
135
- ModelBase.prototype.getIcon = function () {
136
- return "fa-cube";
137
- };
138
- /**
139
- * Indicates whether or not this object should be serialised.
140
- * @param shouldSerialise The value determined by the serialiser.
141
- */
142
- ModelBase.prototype.canSerialise = function (shouldSerialise) {
143
- return shouldSerialise;
144
- };
145
- /**
146
- * Add custom business rules. Note, this will be called once per type and should be treated as static.
147
- */
148
- ModelBase.prototype.addBusinessRules = function (validationRules) {
149
- };
150
- __decorate([
151
- NoTracking(SerialiseType.Never),
152
- Observable(false),
153
- __metadata("design:type", Boolean)
154
- ], ModelBase.prototype, "isSuspended", void 0);
155
- __decorate([
156
- NoTracking(SerialiseType.Never),
157
- Observable(false),
158
- __metadata("design:type", Object)
159
- ], ModelBase.prototype, "validator", void 0);
160
- __decorate([
161
- NoTracking(),
162
- __metadata("design:type", Object)
163
- ], ModelBase.prototype, "isNew", void 0);
164
- __decorate([
165
- NoTracking(),
166
- __metadata("design:type", Object)
167
- ], ModelBase.prototype, "isSelfDirty", void 0);
168
- __decorate([
169
- Computed(false),
170
- __metadata("design:type", Object),
171
- __metadata("design:paramtypes", [])
172
- ], ModelBase.prototype, "isSelfValid", null);
173
- __decorate([
174
- Computed(false),
175
- __metadata("design:type", Object),
176
- __metadata("design:paramtypes", [])
177
- ], ModelBase.prototype, "readyToSave", null);
178
- return ModelBase;
179
- }(BindableBase));
180
- export default ModelBase;
1
+ import { __decorate, __extends, __metadata } from "tslib";
2
+ import * as ModelTraverser from './ModelGraphTraverser';
3
+ import { Action, Computed, NoTracking, Observable } from './Decorators';
4
+ import { JSFormatter } from '../Data/Serialiser';
5
+ import { ValidationRules } from '../Validation/ValidationRules';
6
+ import { BindableBase } from './BindableBase';
7
+ import { Misc } from '../';
8
+ import { SerialiseType } from './Misc';
9
+ import { NeoTypes } from '../AppServices';
10
+ /*
11
+ Note:
12
+ Any properties or methods that should not be included in the meta object should also be added to INonObservableModelBase
13
+ Any protected methods that need to be accessed by neo code should be included in IModelBaseInternal
14
+ */
15
+ var ModelBase = /** @class */ (function (_super) {
16
+ __extends(ModelBase, _super);
17
+ function ModelBase() {
18
+ var _this = _super !== null && _super.apply(this, arguments) || this;
19
+ _this.isNew = true;
20
+ _this.isSelfDirty = true;
21
+ return _this;
22
+ }
23
+ Object.defineProperty(ModelBase.prototype, "isDirty", {
24
+ /**
25
+ * Returns true if the object itself is dirty, or any of its children are dirty.
26
+ * IsNew does not affect the value of IsDirty.
27
+ */
28
+ get: function () {
29
+ return ModelTraverser.traverseItems(this, new ModelTraverser.BooleanRecursionState(false), function (item, state) {
30
+ if (item.isSelfDirty) {
31
+ state.flag = true;
32
+ state.stop = true;
33
+ }
34
+ }, function (list, state) {
35
+ var deletedList = list.deletedList;
36
+ if (deletedList && deletedList.length > 0) {
37
+ state.flag = true;
38
+ state.stop = true;
39
+ }
40
+ }).flag;
41
+ },
42
+ enumerable: false,
43
+ configurable: true
44
+ });
45
+ Object.defineProperty(ModelBase.prototype, "isSelfValid", {
46
+ get: function () {
47
+ return this.validator.isValid;
48
+ },
49
+ enumerable: false,
50
+ configurable: true
51
+ });
52
+ Object.defineProperty(ModelBase.prototype, "isValid", {
53
+ get: function () {
54
+ return ModelTraverser.traverseItems(this, new ModelTraverser.BooleanRecursionState(true), function (item, state) {
55
+ if (!item.isSelfValid) {
56
+ state.flag = false;
57
+ state.stop = true;
58
+ }
59
+ }).flag;
60
+ },
61
+ enumerable: false,
62
+ configurable: true
63
+ });
64
+ Object.defineProperty(ModelBase.prototype, "readyToSave", {
65
+ /**
66
+ * Indicates that the model is dirty and valid and can be saved.
67
+ */
68
+ get: function () {
69
+ return this.isDirty && this.isValid;
70
+ },
71
+ enumerable: false,
72
+ configurable: true
73
+ });
74
+ /** Recursively sets isSelfDirty, and isNew to false on this object and its children. */
75
+ ModelBase.prototype.markOld = function (recurse) {
76
+ if (recurse === void 0) { recurse = true; }
77
+ if (recurse) {
78
+ ModelTraverser.traverseItems(this, new ModelTraverser.RecursionState(), function (item) {
79
+ item.isSelfDirty = false;
80
+ item.isNew = false;
81
+ });
82
+ }
83
+ else {
84
+ this.isSelfDirty = false;
85
+ this.isNew = false;
86
+ }
87
+ };
88
+ ModelBase.prototype.toJSObject = function (options) {
89
+ if (options === void 0) { options = {}; }
90
+ return JSFormatter.serialise(this, options);
91
+ };
92
+ /**
93
+ * Converts the model into a plain javascript object for use with Utils.getQueryString.
94
+ * Child objects, child lists and tracking state are ignored.
95
+ */
96
+ ModelBase.prototype.toQueryObject = function () {
97
+ return this.toJSObject({ suppressTrackingState: true, suppressChildren: true });
98
+ };
99
+ /**
100
+ * Passes you a query object every time one of the models properties change.
101
+ * This is delayed for string and numeric properties.
102
+ * You must call the disposer when you are done with this object.
103
+ * @param instance Model instance.
104
+ * @param callback Callback to run accepting a query object.
105
+ */
106
+ ModelBase.prototype.toQueryObjectAuto = function (callback, options) {
107
+ var _this = this;
108
+ return Misc.Globals.appService.get(NeoTypes.Core.AutoRunnerFactory).create(this, function () { return callback(_this.toQueryObject()); }, options);
109
+ };
110
+ /**
111
+ * Runs the provided callback whenever any of values of the properties on this object, it's value objects, or child objects (if specified) change.
112
+ * This is delayed for string and numeric properties.
113
+ * You must call the disposer when you are done with this object.
114
+ */
115
+ ModelBase.prototype.onAnyPropertyChanged = function (callback, options) {
116
+ return Misc.Globals.appService.get(NeoTypes.Core.AutoRunnerFactory).create(this, callback, options);
117
+ };
118
+ /**
119
+ * Converts a plain javascript object graph to a neo model graph.
120
+ * Updates child lists - Items in the child list, but not in jsArray will remain in the list.
121
+ * If you need to replace child lists with the jsArrays, use set() instead.
122
+ * This will generally be used after calling toJSObject(includeClean = false)
123
+ * */
124
+ ModelBase.prototype.update = function (jsObject) {
125
+ JSFormatter.deserialise(jsObject, this, null);
126
+ };
127
+ /**
128
+ * Performs a deep clone on an object, cloning all nested objects including their entity identifiers.
129
+ */
130
+ ModelBase.prototype.cloneWithIdentity = function () {
131
+ return this.constructor.mapFrom(this, { isMap: { includeEntityIdentifiers: true } });
132
+ };
133
+ /**
134
+ * Icon to display next to toString() text.
135
+ */
136
+ ModelBase.prototype.getIcon = function () {
137
+ return "fa-cube";
138
+ };
139
+ /**
140
+ * Indicates whether or not this object should be serialised.
141
+ * @param shouldSerialise The value determined by the serialiser.
142
+ */
143
+ ModelBase.prototype.canSerialise = function (shouldSerialise) {
144
+ return shouldSerialise;
145
+ };
146
+ /**
147
+ * Add custom business rules. Note, this will be called once per type and should be treated as static.
148
+ */
149
+ ModelBase.prototype.addBusinessRules = function (validationRules) {
150
+ };
151
+ /** The server side type name used to find this type. Include the namespace if there is more than one type with the same name. */
152
+ ModelBase.typeName = null;
153
+ __decorate([
154
+ NoTracking(SerialiseType.Never),
155
+ Observable(false),
156
+ __metadata("design:type", Boolean)
157
+ ], ModelBase.prototype, "isSuspended", void 0);
158
+ __decorate([
159
+ NoTracking(SerialiseType.Never),
160
+ Observable(false),
161
+ __metadata("design:type", Object)
162
+ ], ModelBase.prototype, "validator", void 0);
163
+ __decorate([
164
+ NoTracking(),
165
+ __metadata("design:type", Object)
166
+ ], ModelBase.prototype, "isNew", void 0);
167
+ __decorate([
168
+ NoTracking(),
169
+ __metadata("design:type", Object)
170
+ ], ModelBase.prototype, "isSelfDirty", void 0);
171
+ __decorate([
172
+ Computed(false),
173
+ __metadata("design:type", Object),
174
+ __metadata("design:paramtypes", [])
175
+ ], ModelBase.prototype, "isSelfValid", null);
176
+ __decorate([
177
+ Computed(false),
178
+ __metadata("design:type", Object),
179
+ __metadata("design:paramtypes", [])
180
+ ], ModelBase.prototype, "readyToSave", null);
181
+ __decorate([
182
+ Action(false),
183
+ __metadata("design:type", Function),
184
+ __metadata("design:paramtypes", [ValidationRules]),
185
+ __metadata("design:returntype", void 0)
186
+ ], ModelBase.prototype, "addBusinessRules", null);
187
+ return ModelBase;
188
+ }(BindableBase));
189
+ export default ModelBase;
@@ -1,23 +1,23 @@
1
- import { NeoTypeInfo } from './NeoTypeInfo';
2
- import { NeoModelConstructor } from './IModelBase';
3
- import PropertyInfo from './PropertyInfo';
4
- export declare abstract class ModelCreatorBase {
5
- protected typeInfo: NeoTypeInfo;
6
- protected alwaysInitialiseMembers: boolean;
7
- /**
8
- * True if all properties and methods need to be present in the property / method lists.
9
- * Otherwise only decorated members will be present (Mobx = only decorated, Vue = all)
10
- */
11
- get shouldInitialiseAllMembers(): boolean;
12
- isBindableBase(type: NeoModelConstructor): boolean;
13
- isModelBase(type: NeoModelConstructor): boolean;
14
- initialise(typeInfo: NeoTypeInfo, originalConstructor: NeoModelConstructor): void;
15
- private addPrototypeProperties;
16
- /**
17
- * Ensures that lists / child objects have the correct relationType.
18
- */
19
- protected ensureChildInfo(instance: {}, propertyInfo: PropertyInfo): void;
20
- protected addMethodInfo(methodName: string, method: Function): void;
21
- protected addProperty(propertyName: string, descriptor: PropertyDescriptor): void;
22
- abstract convertInstance(instance: {}): {};
23
- }
1
+ import { NeoTypeInfo } from './NeoTypeInfo';
2
+ import { IMakeBindableOptions, NeoModelConstructor } from './IModelBase';
3
+ import PropertyInfo from './PropertyInfo';
4
+ import IModelCreatorBase from './IModelCreatorBase';
5
+ export declare abstract class ModelCreatorBase implements IModelCreatorBase {
6
+ protected typeInfo: NeoTypeInfo;
7
+ protected alwaysInitialiseMembers: boolean;
8
+ /**
9
+ * True if all properties and methods need to be present in the property / method lists.
10
+ * Otherwise only decorated members will be present (Mobx = only decorated, Vue = all)
11
+ */
12
+ get shouldInitialiseAllMembers(): boolean;
13
+ isBindableBase(type: NeoModelConstructor): boolean;
14
+ isModelBase(type: NeoModelConstructor): boolean;
15
+ initialise(typeInfo: NeoTypeInfo, originalConstructor: NeoModelConstructor): void;
16
+ private addPrototypeProperties;
17
+ /**
18
+ * Ensures that lists / child objects have the correct relationType.
19
+ */
20
+ protected ensureChildInfo(instance: {}, propertyInfo: PropertyInfo): void;
21
+ protected addMethodInfo(methodName: string, method: Function): void;
22
+ abstract convertInstance(instance: {}, options: IMakeBindableOptions): {};
23
+ }
@@ -1,92 +1,91 @@
1
- import { __decorate } from "tslib";
2
- import { injectable } from 'inversify';
3
- import ModelBase from './ModelBase';
4
- import { RelationType } from './Misc';
5
- import { ChildList, ChildObject } from './Decorators';
6
- import ValueObject from './ValueObject';
7
- import { BindableBase } from './BindableBase';
8
- var ModelCreatorBase = /** @class */ (function () {
9
- function ModelCreatorBase() {
10
- this.alwaysInitialiseMembers = false;
11
- }
12
- Object.defineProperty(ModelCreatorBase.prototype, "shouldInitialiseAllMembers", {
13
- /**
14
- * True if all properties and methods need to be present in the property / method lists.
15
- * Otherwise only decorated members will be present (Mobx = only decorated, Vue = all)
16
- */
17
- get: function () {
18
- return this.typeInfo.inheritsBindableBase || this.alwaysInitialiseMembers;
19
- },
20
- enumerable: false,
21
- configurable: true
22
- });
23
- ModelCreatorBase.prototype.isBindableBase = function (type) {
24
- return type === BindableBase;
25
- };
26
- ModelCreatorBase.prototype.isModelBase = function (type) {
27
- return type === ModelBase;
28
- };
29
- ModelCreatorBase.prototype.initialise = function (typeInfo, originalConstructor) {
30
- this.typeInfo = typeInfo;
31
- if (this.shouldInitialiseAllMembers) {
32
- this.addPrototypeProperties(originalConstructor);
33
- }
34
- };
35
- ModelCreatorBase.prototype.addPrototypeProperties = function (ctor) {
36
- var prototype = ctor.prototype;
37
- for (var _i = 0, _a = Object.getOwnPropertyNames(prototype); _i < _a.length; _i++) {
38
- var propertyName = _a[_i];
39
- if (propertyName !== "constructor") {
40
- // Read only properties are converted to computeds
41
- var descriptor = Object.getOwnPropertyDescriptor(prototype, propertyName);
42
- if (descriptor.value !== void 0) {
43
- // Method
44
- if (typeof descriptor.value === 'function') {
45
- this.addMethodInfo(propertyName, descriptor.value);
46
- }
47
- }
48
- else if (descriptor.get) {
49
- if (this.typeInfo.inheritsBindableBase) {
50
- this.typeInfo.addComputed(propertyName, descriptor);
51
- }
52
- else {
53
- // for general objects, getters must explicitly define @Computed to become computed properties.
54
- this.addProperty(propertyName, descriptor);
55
- }
56
- }
57
- }
58
- }
59
- };
60
- /**
61
- * Ensures that lists / child objects have the correct relationType.
62
- */
63
- ModelCreatorBase.prototype.ensureChildInfo = function (instance, propertyInfo) {
64
- var propertyValue = instance[propertyInfo.propertyName];
65
- if (propertyValue) {
66
- if (propertyValue.childObjectType) {
67
- // This is a list.
68
- if (propertyInfo.relationType != RelationType.ChildList) {
69
- // add missing annotation
70
- propertyInfo = ChildList(propertyValue.childObjectType)(instance, propertyInfo.propertyName);
71
- }
72
- }
73
- else if (propertyValue instanceof ModelBase) {
74
- // Child object
75
- var isValueObject = propertyValue instanceof ValueObject;
76
- var relationType = isValueObject ? RelationType.ValueObject : RelationType.ChildObject;
77
- if (propertyInfo.relationType != relationType) {
78
- propertyInfo = ChildObject(propertyValue.constructor, isValueObject)(instance, propertyInfo.propertyName);
79
- }
80
- }
81
- }
82
- };
83
- ModelCreatorBase.prototype.addMethodInfo = function (methodName, method) {
84
- };
85
- ModelCreatorBase.prototype.addProperty = function (propertyName, descriptor) {
86
- };
87
- ModelCreatorBase = __decorate([
88
- injectable()
89
- ], ModelCreatorBase);
90
- return ModelCreatorBase;
91
- }());
92
- export { ModelCreatorBase };
1
+ import { __decorate } from "tslib";
2
+ import { injectable } from 'inversify';
3
+ import ModelBase from './ModelBase';
4
+ import { RelationType } from './Misc';
5
+ import { ChildList, ChildObject } from './Decorators';
6
+ import ValueObject from './ValueObject';
7
+ import { BindableBase } from './BindableBase';
8
+ var nonActionMethods = ["addBusinessRules", "toString"];
9
+ export var ModelCreatorBase = /** @class */ (function () {
10
+ function ModelCreatorBase() {
11
+ this.alwaysInitialiseMembers = false;
12
+ }
13
+ Object.defineProperty(ModelCreatorBase.prototype, "shouldInitialiseAllMembers", {
14
+ /**
15
+ * True if all properties and methods need to be present in the property / method lists.
16
+ * Otherwise only decorated members will be present (Mobx = only decorated, Vue = all)
17
+ */
18
+ get: function () {
19
+ return this.typeInfo.inheritsBindableBase || this.alwaysInitialiseMembers;
20
+ },
21
+ enumerable: false,
22
+ configurable: true
23
+ });
24
+ ModelCreatorBase.prototype.isBindableBase = function (type) {
25
+ return type === BindableBase;
26
+ };
27
+ ModelCreatorBase.prototype.isModelBase = function (type) {
28
+ return type === ModelBase;
29
+ };
30
+ ModelCreatorBase.prototype.initialise = function (typeInfo, originalConstructor) {
31
+ this.typeInfo = typeInfo;
32
+ if (this.shouldInitialiseAllMembers) {
33
+ this.addPrototypeProperties(originalConstructor);
34
+ }
35
+ };
36
+ ModelCreatorBase.prototype.addPrototypeProperties = function (ctor) {
37
+ var prototype = ctor.prototype;
38
+ for (var _i = 0, _a = Object.getOwnPropertyNames(prototype); _i < _a.length; _i++) {
39
+ var propertyName = _a[_i];
40
+ if (propertyName !== "constructor") {
41
+ // Read only properties are converted to computeds
42
+ var descriptor = Object.getOwnPropertyDescriptor(prototype, propertyName);
43
+ if (descriptor.value !== void 0) {
44
+ // Method
45
+ if (typeof descriptor.value === 'function') {
46
+ this.addMethodInfo(propertyName, descriptor.value);
47
+ }
48
+ }
49
+ else if (descriptor.get) {
50
+ if (this.typeInfo.inheritsBindableBase) {
51
+ this.typeInfo.addComputed(propertyName, descriptor);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ };
57
+ /**
58
+ * Ensures that lists / child objects have the correct relationType.
59
+ */
60
+ ModelCreatorBase.prototype.ensureChildInfo = function (instance, propertyInfo) {
61
+ // @ts-ignore
62
+ var propertyValue = instance[propertyInfo.propertyName];
63
+ if (propertyValue) {
64
+ if (propertyValue.childObjectType) {
65
+ // This is a list.
66
+ if (propertyInfo.relationType != RelationType.ChildList) {
67
+ // add missing annotation
68
+ propertyInfo = ChildList(propertyValue.childObjectType)(instance, propertyInfo.propertyName);
69
+ }
70
+ }
71
+ else if (propertyValue instanceof ModelBase) {
72
+ // Child object
73
+ var isValueObject = propertyValue instanceof ValueObject;
74
+ var relationType = isValueObject ? RelationType.ValueObject : RelationType.ChildObject;
75
+ if (propertyInfo.relationType != relationType) {
76
+ propertyInfo = ChildObject(propertyValue.constructor, isValueObject)(instance, propertyInfo.propertyName);
77
+ }
78
+ }
79
+ }
80
+ };
81
+ ModelCreatorBase.prototype.addMethodInfo = function (methodName, method) {
82
+ var methodInfo = this.typeInfo.addMethod(methodName);
83
+ if (nonActionMethods.indexOf(methodInfo.name) >= 0) {
84
+ methodInfo.isAction = false;
85
+ }
86
+ };
87
+ ModelCreatorBase = __decorate([
88
+ injectable()
89
+ ], ModelCreatorBase);
90
+ return ModelCreatorBase;
91
+ }());