@singularsystems/neo-core 1.0.0-alpha.2 → 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,180 +1,182 @@
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 { 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
+ /** The server side type name used to find this type. Include the namespace if there is more than one type with the same name. */
151
+ ModelBase.typeName = null;
152
+ __decorate([
153
+ NoTracking(SerialiseType.Never),
154
+ Observable(false),
155
+ __metadata("design:type", Boolean)
156
+ ], ModelBase.prototype, "isSuspended", void 0);
157
+ __decorate([
158
+ NoTracking(SerialiseType.Never),
159
+ Observable(false),
160
+ __metadata("design:type", Object)
161
+ ], ModelBase.prototype, "validator", void 0);
162
+ __decorate([
163
+ NoTracking(),
164
+ __metadata("design:type", Object)
165
+ ], ModelBase.prototype, "isNew", void 0);
166
+ __decorate([
167
+ NoTracking(),
168
+ __metadata("design:type", Object)
169
+ ], ModelBase.prototype, "isSelfDirty", void 0);
170
+ __decorate([
171
+ Computed(false),
172
+ __metadata("design:type", Object),
173
+ __metadata("design:paramtypes", [])
174
+ ], ModelBase.prototype, "isSelfValid", null);
175
+ __decorate([
176
+ Computed(false),
177
+ __metadata("design:type", Object),
178
+ __metadata("design:paramtypes", [])
179
+ ], ModelBase.prototype, "readyToSave", null);
180
+ return ModelBase;
181
+ }(BindableBase));
182
+ export default ModelBase;
@@ -1,23 +1,24 @@
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
+ protected addProperty(propertyName: string, descriptor: PropertyDescriptor): void;
23
+ abstract convertInstance(instance: {}, options: IMakeBindableOptions): {};
24
+ }
@@ -1,92 +1,92 @@
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
+ export 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
+ // @ts-ignore
65
+ var propertyValue = instance[propertyInfo.propertyName];
66
+ if (propertyValue) {
67
+ if (propertyValue.childObjectType) {
68
+ // This is a list.
69
+ if (propertyInfo.relationType != RelationType.ChildList) {
70
+ // add missing annotation
71
+ propertyInfo = ChildList(propertyValue.childObjectType)(instance, propertyInfo.propertyName);
72
+ }
73
+ }
74
+ else if (propertyValue instanceof ModelBase) {
75
+ // Child object
76
+ var isValueObject = propertyValue instanceof ValueObject;
77
+ var relationType = isValueObject ? RelationType.ValueObject : RelationType.ChildObject;
78
+ if (propertyInfo.relationType != relationType) {
79
+ propertyInfo = ChildObject(propertyValue.constructor, isValueObject)(instance, propertyInfo.propertyName);
80
+ }
81
+ }
82
+ }
83
+ };
84
+ ModelCreatorBase.prototype.addMethodInfo = function (methodName, method) {
85
+ };
86
+ ModelCreatorBase.prototype.addProperty = function (propertyName, descriptor) {
87
+ };
88
+ ModelCreatorBase = __decorate([
89
+ injectable()
90
+ ], ModelCreatorBase);
91
+ return ModelCreatorBase;
92
+ }());
@@ -1,12 +1,29 @@
1
- import ValueObject from "./ValueObject";
2
- export declare class ModelFieldInfo extends ValueObject {
3
- constructor(displayName: string, valueString: string);
4
- /**
5
- * Display name for the field.
6
- */
7
- displayName: string;
8
- /**
9
- * Lookup of the field value
10
- */
11
- valueString: string;
12
- }
1
+ import ValueObject from "./ValueObject";
2
+ import PropertyInfo from "./PropertyInfo";
3
+ export interface IModelFieldInfoContainer {
4
+ /**
5
+ * Extra information about lookup fields in this object.
6
+ */
7
+ fieldInfo: {
8
+ [K in keyof this]?: ModelFieldInfo;
9
+ };
10
+ /**
11
+ * Sets the model field info for a property.
12
+ */
13
+ setModelFieldInfo(property: PropertyInfo, displayValue: string): ModelFieldInfo;
14
+ }
15
+ export declare class ModelFieldInfo extends ValueObject {
16
+ constructor(displayName: string, valueString: string);
17
+ /**
18
+ * Display name for the field.
19
+ */
20
+ displayName: string;
21
+ /**
22
+ * Lookup of the field value
23
+ */
24
+ valueString: string;
25
+ /**
26
+ * If the instance is a container of ModelFieldInfo, the instance is returned, otherwise null is returned.
27
+ */
28
+ static asModelFieldInfoContainer(instance: any): IModelFieldInfoContainer | null;
29
+ }