@magic-xpa/engine 4.801.0-dev481.245 → 4.801.0-dev481.253

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 (281) hide show
  1. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  2. package/{esm2015/magic-xpa-engine.js → esm2020/magic-xpa-engine.mjs} +0 -0
  3. package/{esm2015/src/AccessHelper.js → esm2020/src/AccessHelper.mjs} +0 -0
  4. package/esm2020/src/ClientManager.mjs +403 -0
  5. package/esm2020/src/CommandsProcessorBase.mjs +58 -0
  6. package/esm2020/src/CommandsProcessorManager.mjs +26 -0
  7. package/esm2020/src/CommandsTable.mjs +163 -0
  8. package/{esm2015/src/ConstInterface.js → esm2020/src/ConstInterface.mjs} +0 -0
  9. package/{esm2015/src/CurrentClientVersion.js → esm2020/src/CurrentClientVersion.mjs} +2 -2
  10. package/{esm2015/src/FlowMonitorInterface.js → esm2020/src/FlowMonitorInterface.mjs} +0 -0
  11. package/esm2020/src/GUIManager.mjs +63 -0
  12. package/{esm2015/src/GlobalCommandsManager.js → esm2020/src/GlobalCommandsManager.mjs} +0 -0
  13. package/{esm2015/src/GuiEventsProcessor.js → esm2020/src/GuiEventsProcessor.mjs} +0 -0
  14. package/{esm2015/src/ICommandsTable.js → esm2020/src/ICommandsTable.mjs} +1 -0
  15. package/{esm2015/src/ServerConfig.js → esm2020/src/ServerConfig.mjs} +0 -0
  16. package/{esm2015/src/bridge/IGuiEvent.js → esm2020/src/bridge/IGuiEvent.mjs} +0 -0
  17. package/esm2020/src/bridge/MagicBridge.mjs +41 -0
  18. package/{esm2015/src/commands/ClientOriginatedCommandTaskTag.js → esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs} +0 -0
  19. package/{esm2015/src/commands/ClientToServer/AddUserLocateDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs} +0 -0
  20. package/{esm2015/src/commands/ClientToServer/AddUserRangeDataviewCommand.js → esm2020/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs} +0 -0
  21. package/{esm2015/src/commands/ClientToServer/AddUserSortDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs} +0 -0
  22. package/{esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js → esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs} +0 -0
  23. package/{esm2015/src/commands/ClientToServer/ClientOriginatedCommand.js → esm2020/src/commands/ClientToServer/ClientOriginatedCommand.mjs} +0 -0
  24. package/{esm2015/src/commands/ClientToServer/ClientOriginatedCommandSerializer.js → esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs} +0 -0
  25. package/{esm2015/src/commands/ClientToServer/ColumnSortEventCommand.js → esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs} +0 -0
  26. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +278 -0
  27. package/{esm2015/src/commands/ClientToServer/CommandSerializationHelper.js → esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs} +0 -0
  28. package/{esm2015/src/commands/ClientToServer/ComputeEventCommand.js → esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs} +0 -0
  29. package/{esm2015/src/commands/ClientToServer/ContextTerminationEventCommand.js → esm2020/src/commands/ClientToServer/ContextTerminationEventCommand.mjs} +0 -0
  30. package/{esm2015/src/commands/ClientToServer/ContextTimeoutResetCommand.js → esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs} +0 -0
  31. package/{esm2015/src/commands/ClientToServer/ControlItemsRefreshCommand.js → esm2020/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs} +0 -0
  32. package/{esm2015/src/commands/ClientToServer/DataViewOutputCommand.js → esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs} +0 -0
  33. package/{esm2015/src/commands/ClientToServer/DataviewCommand.js → esm2020/src/commands/ClientToServer/DataviewCommand.mjs} +0 -0
  34. package/{esm2015/src/commands/ClientToServer/EvaluateCommand.js → esm2020/src/commands/ClientToServer/EvaluateCommand.mjs} +0 -0
  35. package/{esm2015/src/commands/ClientToServer/EventCommand.js → esm2020/src/commands/ClientToServer/EventCommand.mjs} +0 -0
  36. package/{esm2015/src/commands/ClientToServer/ExecOperCommand.js → esm2020/src/commands/ClientToServer/ExecOperCommand.mjs} +0 -0
  37. package/{esm2015/src/commands/ClientToServer/FetchDataControlValuesEventCommand.js → esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs} +0 -0
  38. package/{esm2015/src/commands/ClientToServer/GlobalParamsQueryCommand.js → esm2020/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs} +0 -0
  39. package/{esm2015/src/commands/ClientToServer/ICommandTaskTag.js → esm2020/src/commands/ClientToServer/ICommandTaskTag.mjs} +1 -0
  40. package/{esm2015/src/commands/ClientToServer/IndexChangeEventCommand.js → esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs} +0 -0
  41. package/{esm2015/src/commands/ClientToServer/IniputForceWriteCommand.js → esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs} +0 -0
  42. package/{esm2015/src/commands/ClientToServer/NonReversibleExitEventCommand.js → esm2020/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs} +0 -0
  43. package/{esm2015/src/commands/ClientToServer/QueryCommand.js → esm2020/src/commands/ClientToServer/QueryCommand.mjs} +0 -0
  44. package/{esm2015/src/commands/ClientToServer/RecomputeCommand.js → esm2020/src/commands/ClientToServer/RecomputeCommand.mjs} +0 -0
  45. package/{esm2015/src/commands/ClientToServer/RefreshEventCommand.js → esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs} +0 -0
  46. package/{esm2015/src/commands/ClientToServer/RefreshScreenEventCommand.js → esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs} +0 -0
  47. package/{esm2015/src/commands/ClientToServer/RollbackEventCommand.js → esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs} +0 -0
  48. package/{esm2015/src/commands/ClientToServer/SelectProgramCommand.js → esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs} +0 -0
  49. package/{esm2015/src/commands/ClientToServer/SetTransactionStateDataviewCommand.js → esm2020/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs} +0 -0
  50. package/{esm2015/src/commands/ClientToServer/SubformOpenEventCommand.js → esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs} +0 -0
  51. package/{esm2015/src/commands/ClientToServer/SubformRefreshEventCommand.js → esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs} +0 -0
  52. package/{esm2015/src/commands/ClientToServer/TransactionCommand.js → esm2020/src/commands/ClientToServer/TransactionCommand.mjs} +0 -0
  53. package/{esm2015/src/commands/ClientToServer/UnloadCommand.js → esm2020/src/commands/ClientToServer/UnloadCommand.mjs} +0 -0
  54. package/{esm2015/src/commands/ClientToServer/WriteMessageToServerLogCommand.js → esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs} +0 -0
  55. package/esm2020/src/commands/DataViewCommandBase.mjs +10 -0
  56. package/{esm2015/src/commands/IClientCommand.js → esm2020/src/commands/IClientCommand.mjs} +1 -0
  57. package/esm2020/src/commands/IClientTargetedCommand.mjs +9 -0
  58. package/{esm2015/src/commands/IClientToServerCommandInfo.js → esm2020/src/commands/IClientToServerCommandInfo.mjs} +1 -0
  59. package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +65 -0
  60. package/esm2020/src/commands/ServerToClient/AddLocateCommand.mjs +22 -0
  61. package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
  62. package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
  63. package/{esm2015/src/commands/ServerToClient/ClientRefreshCommand.js → esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs} +14 -17
  64. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +27 -0
  65. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
  66. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +222 -0
  67. package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +15 -0
  68. package/esm2020/src/commands/ServerToClient/ResetRangeCommand.mjs +15 -0
  69. package/esm2020/src/commands/ServerToClient/ResetSortCommand.mjs +15 -0
  70. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +37 -0
  71. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +85 -0
  72. package/{esm2015/src/commands/ServerToClient/XMLBasedCommandBuilder.js → esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs} +0 -0
  73. package/{esm2015/src/communications/IConnectionStateManager.js → esm2020/src/communications/IConnectionStateManager.mjs} +1 -0
  74. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +17 -0
  75. package/{esm2015/src/data/DataSourceIdKey.js → esm2020/src/data/DataSourceIdKey.mjs} +0 -0
  76. package/esm2020/src/data/DataView.mjs +1634 -0
  77. package/{esm2015/src/data/DataViewBase.js → esm2020/src/data/DataViewBase.mjs} +0 -0
  78. package/esm2020/src/data/DataviewManager.mjs +28 -0
  79. package/esm2020/src/data/DataviewManagerBase.mjs +15 -0
  80. package/{esm2015/src/data/DvCache.js → esm2020/src/data/DvCache.mjs} +0 -0
  81. package/esm2020/src/data/Field.mjs +645 -0
  82. package/esm2020/src/data/FieldBase.mjs +18 -0
  83. package/{esm2015/src/data/FieldsTable.js → esm2020/src/data/FieldsTable.mjs} +0 -0
  84. package/{esm2015/src/data/IRecordsTable.js → esm2020/src/data/IRecordsTable.mjs} +1 -0
  85. package/{esm2015/src/data/Key.js → esm2020/src/data/Key.mjs} +0 -0
  86. package/{esm2015/src/data/Record.js → esm2020/src/data/Record.mjs} +0 -0
  87. package/{esm2015/src/data/RecordOutOfDataViewException.js → esm2020/src/data/RecordOutOfDataViewException.mjs} +0 -0
  88. package/{esm2015/src/data/RecordsTable.js → esm2020/src/data/RecordsTable.mjs} +0 -0
  89. package/esm2020/src/data/TaskTransactionManager.mjs +103 -0
  90. package/{esm2015/src/data/XMLBasedDcValuesBuilder.js → esm2020/src/data/XMLBasedDcValuesBuilder.mjs} +0 -0
  91. package/{esm2015/src/enums.js → esm2020/src/enums.mjs} +0 -0
  92. package/esm2020/src/env/EnvVariablesTable.mjs +340 -0
  93. package/esm2020/src/env/Environment.mjs +554 -0
  94. package/{esm2015/src/env/ILanguageData.js → esm2020/src/env/ILanguageData.mjs} +1 -0
  95. package/esm2020/src/env/LanguageData.mjs +222 -0
  96. package/{esm2015/src/env/MirrorString.js → esm2020/src/env/MirrorString.mjs} +0 -0
  97. package/{esm2015/src/event/ActionManager.js → esm2020/src/event/ActionManager.mjs} +0 -0
  98. package/esm2020/src/event/Event.mjs +1436 -0
  99. package/esm2020/src/event/EventHandler.mjs +773 -0
  100. package/{esm2015/src/event/EventHandlerPosition.js → esm2020/src/event/EventHandlerPosition.mjs} +0 -0
  101. package/esm2020/src/event/EventsManager.mjs +2983 -0
  102. package/{esm2015/src/event/IEventsManager.js → esm2020/src/event/IEventsManager.mjs} +0 -0
  103. package/{esm2015/src/event/RunTimeEvent.js → esm2020/src/event/RunTimeEvent.mjs} +0 -0
  104. package/{esm2015/src/event/RunTimeEventBase.js → esm2020/src/event/RunTimeEventBase.mjs} +0 -0
  105. package/{esm2015/src/event/UserEventsTable.js → esm2020/src/event/UserEventsTable.mjs} +0 -0
  106. package/{esm2015/src/exp/ExpTable.js → esm2020/src/exp/ExpTable.mjs} +0 -0
  107. package/esm2020/src/exp/Expression.mjs +200 -0
  108. package/{esm2015/src/exp/ExpressionDict.js → esm2020/src/exp/ExpressionDict.mjs} +0 -0
  109. package/esm2020/src/exp/ExpressionEvaluator.mjs +4373 -0
  110. package/{esm2015/src/exp/ExpressionLocalJpn.js → esm2020/src/exp/ExpressionLocalJpn.mjs} +0 -0
  111. package/{esm2015/src/exp/GlobalParamsTable.js → esm2020/src/exp/GlobalParamsTable.mjs} +0 -0
  112. package/esm2020/src/exp/YesNoExp.mjs +41 -0
  113. package/{esm2015/src/gui/CreatedFormVector.js → esm2020/src/gui/CreatedFormVector.mjs} +0 -0
  114. package/esm2020/src/gui/FormsTable.mjs +66 -0
  115. package/esm2020/src/gui/MgControl.mjs +357 -0
  116. package/esm2020/src/gui/MgForm.mjs +1195 -0
  117. package/esm2020/src/http/HttpManager.mjs +97 -0
  118. package/esm2020/src/http/client/HttpClientAsync.mjs +67 -0
  119. package/esm2020/src/http/client/HttpClientBase.mjs +148 -0
  120. package/{esm2015/src/http/client/HttpClientEvents.js → esm2020/src/http/client/HttpClientEvents.mjs} +0 -0
  121. package/esm2020/src/http/client/HttpClientSync.mjs +42 -0
  122. package/{esm2015/src/http/client/HttpUtility.js → esm2020/src/http/client/HttpUtility.mjs} +0 -0
  123. package/{esm2015/src/http/client/ICommunicationsFailureHandler.js → esm2020/src/http/client/ICommunicationsFailureHandler.mjs} +1 -0
  124. package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
  125. package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
  126. package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
  127. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +872 -0
  128. package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
  129. package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +24 -0
  130. package/{esm2015/src/remote/RemoteDataViewCommandFactory.js → esm2020/src/remote/RemoteDataViewCommandFactory.mjs} +0 -0
  131. package/esm2020/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +16 -0
  132. package/esm2020/src/remote/RemoteDataviewManager.mjs +17 -0
  133. package/esm2020/src/remote/RemoteInitDataViewCommand.mjs +11 -0
  134. package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
  135. package/esm2020/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +13 -0
  136. package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
  137. package/{esm2015/src/remote/ServerError.js → esm2020/src/remote/ServerError.mjs} +0 -0
  138. package/{esm2015/src/remote/SetTransactionStateRemoteDataViewCommand.js → esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs} +8 -11
  139. package/esm2020/src/rt/Argument.mjs +274 -0
  140. package/esm2020/src/rt/ArgumentsList.mjs +103 -0
  141. package/esm2020/src/rt/Boundary.mjs +158 -0
  142. package/{esm2015/src/rt/CompMainPrgTable.js → esm2020/src/rt/CompMainPrgTable.mjs} +0 -0
  143. package/esm2020/src/rt/DataviewHeaderBase.mjs +96 -0
  144. package/{esm2015/src/rt/DataviewHeaderFactory.js → esm2020/src/rt/DataviewHeaderFactory.mjs} +0 -0
  145. package/{esm2015/src/rt/DataviewHeaders.js → esm2020/src/rt/DataviewHeaders.mjs} +0 -0
  146. package/{esm2015/src/rt/DataviewHeadersSaxHandler.js → esm2020/src/rt/DataviewHeadersSaxHandler.mjs} +0 -0
  147. package/{esm2015/src/rt/ExecutionStack.js → esm2020/src/rt/ExecutionStack.mjs} +0 -0
  148. package/{esm2015/src/rt/ExecutionStackEntry.js → esm2020/src/rt/ExecutionStackEntry.mjs} +0 -0
  149. package/{esm2015/src/rt/HandlersTable.js → esm2020/src/rt/HandlersTable.mjs} +0 -0
  150. package/{esm2015/src/rt/IDataSourceViewDefinition.js → esm2020/src/rt/IDataSourceViewDefinition.mjs} +1 -0
  151. package/{esm2015/src/rt/IDataviewHeader.js → esm2020/src/rt/IDataviewHeader.mjs} +1 -0
  152. package/{esm2015/src/rt/IResultValue.js → esm2020/src/rt/IResultValue.mjs} +1 -0
  153. package/{esm2015/src/rt/LastFocusedManager.js → esm2020/src/rt/LastFocusedManager.mjs} +0 -0
  154. package/esm2020/src/rt/Operation.mjs +745 -0
  155. package/{esm2015/src/rt/OperationTable.js → esm2020/src/rt/OperationTable.mjs} +0 -0
  156. package/esm2020/src/rt/Recompute.mjs +355 -0
  157. package/{esm2015/src/rt/RecomputeTable.js → esm2020/src/rt/RecomputeTable.mjs} +0 -0
  158. package/esm2020/src/rt/RemoteDataviewHeader.mjs +105 -0
  159. package/{esm2015/src/rt/ResultValue.js → esm2020/src/rt/ResultValue.mjs} +0 -0
  160. package/esm2020/src/rt/TableCache.mjs +177 -0
  161. package/esm2020/src/rt/TableCacheManager.mjs +67 -0
  162. package/{esm2015/src/rt/Transaction.js → esm2020/src/rt/Transaction.mjs} +0 -0
  163. package/{esm2015/src/security/UserDetails.js → esm2020/src/security/UserDetails.mjs} +0 -0
  164. package/{esm2015/src/tasks/IMGDataCollection.js → esm2020/src/tasks/IMGDataCollection.mjs} +1 -0
  165. package/esm2020/src/tasks/MGData.mjs +552 -0
  166. package/esm2020/src/tasks/MGDataCollection.mjs +259 -0
  167. package/{esm2015/src/tasks/MenusDeserializer.js → esm2020/src/tasks/MenusDeserializer.mjs} +0 -0
  168. package/{esm2015/src/tasks/RCTimer.js → esm2020/src/tasks/RCTimer.mjs} +0 -0
  169. package/{esm2015/src/tasks/RemoteTaskService.js → esm2020/src/tasks/RemoteTaskService.mjs} +0 -0
  170. package/esm2020/src/tasks/Task.mjs +2501 -0
  171. package/{esm2015/src/tasks/TaskBase.js → esm2020/src/tasks/TaskBase.mjs} +22 -1
  172. package/esm2020/src/tasks/TaskServiceBase.mjs +25 -0
  173. package/esm2020/src/tasks/TasksTable.mjs +80 -0
  174. package/{esm2015/src/tasks/sort/Sort.js → esm2020/src/tasks/sort/Sort.mjs} +0 -0
  175. package/{esm2015/src/tasks/sort/SortCollection.js → esm2020/src/tasks/sort/SortCollection.mjs} +0 -0
  176. package/{esm2015/src/util/ConstUtils.js → esm2020/src/util/ConstUtils.mjs} +0 -0
  177. package/esm2020/src/util/FlowMonitorQueue.mjs +361 -0
  178. package/{esm2015/src/util/HeapSort.js → esm2020/src/util/HeapSort.mjs} +0 -0
  179. package/{esm2015/src/util/IMirrorXML.js → esm2020/src/util/IMirrorXML.mjs} +1 -0
  180. package/{esm2015/src/util/IServerConfig.js → esm2020/src/util/IServerConfig.mjs} +1 -0
  181. package/{esm2015/src/util/MgBlockingQueue.js → esm2020/src/util/MgBlockingQueue.mjs} +1 -0
  182. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +76 -0
  183. package/{esm2015/src/util/MgPriorityQueue.js → esm2020/src/util/MgPriorityQueue.mjs} +0 -0
  184. package/{esm2015/src/util/ParamParseResult.js → esm2020/src/util/ParamParseResult.mjs} +0 -0
  185. package/{esm2015/src/util/PrmMap.js → esm2020/src/util/PrmMap.mjs} +0 -0
  186. package/{esm2015/src/util/Process.js → esm2020/src/util/Process.mjs} +0 -0
  187. package/{esm2015/src/util/ReturnResult.js → esm2020/src/util/ReturnResult.mjs} +0 -0
  188. package/{esm2015/src/util/ReturnResultBase.js → esm2020/src/util/ReturnResultBase.mjs} +0 -0
  189. package/{esm2015/src/util/Scrambler.js → esm2020/src/util/Scrambler.mjs} +0 -0
  190. package/{esm2015/src/util/UniqueIDUtils.js → esm2020/src/util/UniqueIDUtils.mjs} +0 -0
  191. package/{esm2015/src/util/cookie.service.js → esm2020/src/util/cookie.service.mjs} +0 -0
  192. package/fesm2015/{magic-xpa-engine.js → magic-xpa-engine.mjs} +98 -3
  193. package/fesm2015/magic-xpa-engine.mjs.map +1 -0
  194. package/fesm2020/magic-xpa-engine.mjs +30705 -0
  195. package/fesm2020/magic-xpa-engine.mjs.map +1 -0
  196. package/package.json +24 -12
  197. package/src/CommandsProcessorBase.d.ts +3 -3
  198. package/src/commands/DataViewCommandBase.d.ts +2 -2
  199. package/src/commands/IClientTargetedCommand.d.ts +1 -1
  200. package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +1 -1
  201. package/src/data/FieldBase.d.ts +3 -3
  202. package/src/http/client/HttpClientBase.d.ts +2 -2
  203. package/src/rt/DataviewHeaderBase.d.ts +1 -1
  204. package/src/tasks/TaskBase.d.ts +7 -7
  205. package/bundles/magic-xpa-engine.umd.js +0 -37985
  206. package/bundles/magic-xpa-engine.umd.js.map +0 -1
  207. package/bundles/magic-xpa-engine.umd.min.js +0 -16
  208. package/bundles/magic-xpa-engine.umd.min.js.map +0 -1
  209. package/esm2015/src/ClientManager.js +0 -412
  210. package/esm2015/src/CommandsProcessorBase.js +0 -54
  211. package/esm2015/src/CommandsProcessorManager.js +0 -31
  212. package/esm2015/src/CommandsTable.js +0 -166
  213. package/esm2015/src/GUIManager.js +0 -72
  214. package/esm2015/src/bridge/MagicBridge.js +0 -44
  215. package/esm2015/src/commands/ClientToServer/CommandFactory.js +0 -283
  216. package/esm2015/src/commands/DataViewCommandBase.js +0 -6
  217. package/esm2015/src/commands/IClientTargetedCommand.js +0 -6
  218. package/esm2015/src/commands/ServerToClient/AbortCommand.js +0 -68
  219. package/esm2015/src/commands/ServerToClient/AddLocateCommand.js +0 -25
  220. package/esm2015/src/commands/ServerToClient/AddRangeCommand.js +0 -65
  221. package/esm2015/src/commands/ServerToClient/AddSortCommand.js +0 -36
  222. package/esm2015/src/commands/ServerToClient/ClientTargetedCommandBase.js +0 -24
  223. package/esm2015/src/commands/ServerToClient/EnhancedVerifyCommand.js +0 -48
  224. package/esm2015/src/commands/ServerToClient/OpenURLCommand.js +0 -225
  225. package/esm2015/src/commands/ServerToClient/ResetLocateCommand.js +0 -18
  226. package/esm2015/src/commands/ServerToClient/ResetRangeCommand.js +0 -18
  227. package/esm2015/src/commands/ServerToClient/ResetSortCommand.js +0 -18
  228. package/esm2015/src/commands/ServerToClient/ResultCommand.js +0 -40
  229. package/esm2015/src/commands/ServerToClient/VerifyCommand.js +0 -88
  230. package/esm2015/src/communications/InteractiveCommunicationsFailureHandler.js +0 -20
  231. package/esm2015/src/data/DataView.js +0 -1692
  232. package/esm2015/src/data/DataviewManager.js +0 -31
  233. package/esm2015/src/data/DataviewManagerBase.js +0 -18
  234. package/esm2015/src/data/Field.js +0 -671
  235. package/esm2015/src/data/FieldBase.js +0 -9
  236. package/esm2015/src/data/TaskTransactionManager.js +0 -110
  237. package/esm2015/src/env/EnvVariablesTable.js +0 -347
  238. package/esm2015/src/env/Environment.js +0 -557
  239. package/esm2015/src/env/LanguageData.js +0 -229
  240. package/esm2015/src/event/Event.js +0 -1441
  241. package/esm2015/src/event/EventHandler.js +0 -786
  242. package/esm2015/src/event/EventsManager.js +0 -3106
  243. package/esm2015/src/exp/Expression.js +0 -209
  244. package/esm2015/src/exp/ExpressionEvaluator.js +0 -4440
  245. package/esm2015/src/exp/YesNoExp.js +0 -44
  246. package/esm2015/src/gui/FormsTable.js +0 -73
  247. package/esm2015/src/gui/MgControl.js +0 -424
  248. package/esm2015/src/gui/MgForm.js +0 -1291
  249. package/esm2015/src/http/HttpManager.js +0 -100
  250. package/esm2015/src/http/client/HttpClientAsync.js +0 -72
  251. package/esm2015/src/http/client/HttpClientBase.js +0 -147
  252. package/esm2015/src/http/client/HttpClientSync.js +0 -47
  253. package/esm2015/src/remote/AddUserLocateRemoteDataViewCommand.js +0 -21
  254. package/esm2015/src/remote/AddUserRangeRemoteDataViewCommand.js +0 -21
  255. package/esm2015/src/remote/AddUserSortRemoteDataViewCommand.js +0 -21
  256. package/esm2015/src/remote/RemoteCommandsProcessor.js +0 -901
  257. package/esm2015/src/remote/RemoteControlItemsRefreshCommand.js +0 -28
  258. package/esm2015/src/remote/RemoteDataViewCommandBase.js +0 -27
  259. package/esm2015/src/remote/RemoteDataViewCommandUpdateNonModifiable.js +0 -19
  260. package/esm2015/src/remote/RemoteDataviewManager.js +0 -23
  261. package/esm2015/src/remote/RemoteInitDataViewCommand.js +0 -14
  262. package/esm2015/src/remote/ResetUserLocateRemoteDataviewCommand.js +0 -20
  263. package/esm2015/src/remote/ResetUserRangeRemoteDataviewCommand.js +0 -16
  264. package/esm2015/src/remote/ResetUserSortRemoteDataviewCommand.js +0 -19
  265. package/esm2015/src/rt/Argument.js +0 -281
  266. package/esm2015/src/rt/ArgumentsList.js +0 -108
  267. package/esm2015/src/rt/Boundary.js +0 -161
  268. package/esm2015/src/rt/DataviewHeaderBase.js +0 -96
  269. package/esm2015/src/rt/Operation.js +0 -772
  270. package/esm2015/src/rt/Recompute.js +0 -372
  271. package/esm2015/src/rt/RemoteDataviewHeader.js +0 -114
  272. package/esm2015/src/rt/TableCache.js +0 -182
  273. package/esm2015/src/rt/TableCacheManager.js +0 -70
  274. package/esm2015/src/tasks/MGData.js +0 -561
  275. package/esm2015/src/tasks/MGDataCollection.js +0 -270
  276. package/esm2015/src/tasks/Task.js +0 -2601
  277. package/esm2015/src/tasks/TaskServiceBase.js +0 -30
  278. package/esm2015/src/tasks/TasksTable.js +0 -87
  279. package/esm2015/src/util/FlowMonitorQueue.js +0 -364
  280. package/esm2015/src/util/MgPriorityBlockingQueue.js +0 -79
  281. package/fesm2015/magic-xpa-engine.js.map +0 -1
@@ -1,108 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { List } from '@magic-xpa/mscorelib';
3
- import { Argument } from './Argument';
4
- import { StrUtil } from '@magic-xpa/utils';
5
- export class ArgumentsList {
6
- constructor(srcArgsOrExp_paramsOrArgument) {
7
- this._list = null;
8
- this.RefreshOnString = null;
9
- if (arguments.length === 0) {
10
- this.constructor_0();
11
- return;
12
- }
13
- if (arguments.length === 1 && (srcArgsOrExp_paramsOrArgument === null || srcArgsOrExp_paramsOrArgument instanceof Array)) {
14
- this.constructor_2(srcArgsOrExp_paramsOrArgument);
15
- return;
16
- }
17
- this.constructor_3(srcArgsOrExp_paramsOrArgument);
18
- }
19
- constructor_0() {
20
- }
21
- Initialize(srcArgs) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- this.constructor_0();
24
- if (srcArgs === null)
25
- this._list = null;
26
- else {
27
- this._list = new List();
28
- for (let i = 0; i < srcArgs.getSize(); i = i + 1) {
29
- let arg = new Argument(srcArgs.getArg(i));
30
- yield arg.Initialize(srcArgs.getArg(i));
31
- this._list.push(arg);
32
- }
33
- }
34
- });
35
- }
36
- constructor_2(Exp_params) {
37
- this.constructor_0();
38
- let argCnt = Exp_params.length;
39
- if (argCnt === 0)
40
- this._list = null;
41
- else {
42
- this._list = new List();
43
- for (let i = 0; i < argCnt; i = i + 1) {
44
- this._list.push(new Argument(Exp_params[i]));
45
- }
46
- }
47
- }
48
- constructor_3(argument) {
49
- this.Add(argument);
50
- }
51
- fillList(valueStr, srcTask) {
52
- let tok = StrUtil.tokenize(valueStr, "$");
53
- let size = tok.length;
54
- this._list = new List();
55
- for (let i = 0; i < size; i = i + 1) {
56
- let argument = new Argument();
57
- argument.fillData(tok[i], srcTask);
58
- this._list.push(argument);
59
- }
60
- }
61
- buildListFromParams(size, attrs, vals, nulls) {
62
- this._list = new List();
63
- for (let i = 0; i < size; i = i + 1) {
64
- let argument = new Argument();
65
- argument.fillDataByParams(attrs.charAt(i), vals[i], nulls.charAt(i) !== '0');
66
- this._list.push(argument);
67
- }
68
- }
69
- buildXML(message) {
70
- for (let i = 0; i < this._list.length; i = i + 1) {
71
- if (i > 0)
72
- message.Append('$');
73
- this._list.get_Item(i).buildXML(message);
74
- }
75
- }
76
- getSize() {
77
- return (this._list === null) ? 0 : this._list.length;
78
- }
79
- getArg(idx) {
80
- if (idx < 0 || idx >= this._list.length)
81
- return null;
82
- return this._list.get_Item(idx);
83
- }
84
- getArgValue(idx, expType, expSize) {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- let arg = this.getArg(idx);
87
- if (arg === null)
88
- return null;
89
- return yield arg.getValue(expType, expSize);
90
- });
91
- }
92
- FillListFromString(argsString) {
93
- let pattern = new RegExp("(?<!\\\\),");
94
- let array = argsString.split(pattern);
95
- this._list = new List();
96
- for (let i = 0; i < array.length; i = i + 1) {
97
- let argument = new Argument();
98
- argument.FillFromString(array[i]);
99
- this._list.push(argument);
100
- }
101
- }
102
- Add(argument) {
103
- if (this._list === null)
104
- this._list = new List();
105
- this._list.push(argument);
106
- }
107
- }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnRzTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvQXJndW1lbnRzTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RDLE9BQU8sRUFBb0IsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0QsTUFBTSxPQUFPLGFBQWE7SUFVeEIsWUFBWSw2QkFBbUM7UUFUdkMsVUFBSyxHQUFtQixJQUFJLENBQUM7UUFJckMsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFNN0IsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLDZCQUE2QixLQUFLLElBQUksSUFBSSw2QkFBNkIsWUFBWSxLQUFLLENBQUMsRUFBRTtZQUN4SCxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDbEQsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFLTyxhQUFhO0lBQ3JCLENBQUM7SUFLWSxVQUFVLENBQUMsT0FBc0I7O1lBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLE9BQU8sS0FBSyxJQUFJO2dCQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztpQkFDZjtnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFZLENBQUM7Z0JBRWxDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FB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R0FBRyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUN4QyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQU1ELEdBQUcsQ0FBQyxRQUFrQjtRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFZLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhwVmFsIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBMaXN0LCBTdHJpbmdCdWlsZGVyIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBBcmd1bWVudCB9IGZyb20gJy4vQXJndW1lbnQnO1xyXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7IFRhc2tCYXNlIH0gZnJvbSAnLi4vdGFza3MvVGFza0Jhc2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlQXR0cmlidXRlLCBTdHJVdGlsIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXJndW1lbnRzTGlzdCB7XHJcbiAgcHJpdmF0ZSBfbGlzdDogTGlzdDxBcmd1bWVudD4gPSBudWxsO1xyXG5cclxuICAvLyBTdHJpbmcgZm9yIHN1YmZvcm0gYXJndW1lbnRzXHJcbiAgLy8gT25seSBmb3Igb2ZmbGluZS4gSXQncyByZWxldmFudCBmb3IgY2FsbCB3aXRoIGRlc3RpbmF0aW9uXHJcbiAgUmVmcmVzaE9uU3RyaW5nOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKEV4cF9wYXJhbXM6IEV4cFZhbFtdKTtcclxuICBjb25zdHJ1Y3Rvcihhcmd1bWVudDogQXJndW1lbnQpO1xyXG4gIGNvbnN0cnVjdG9yKHNyY0FyZ3NPckV4cF9wYXJhbXNPckFyZ3VtZW50PzogYW55KSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHNyY0FyZ3NPckV4cF9wYXJhbXNPckFyZ3VtZW50ID09PSBudWxsIHx8IHNyY0FyZ3NPckV4cF9wYXJhbXNPckFyZ3VtZW50IGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMihzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY29uc3RydWN0b3JfMyhzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgdGhhdCBjcmVhdGVzIGEgVkFMVUUgYXJndW1lbnQgbGlzdCB1c2luZyBhIGdpdmVuIGFyZ3VtZW50IGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBhc3luYyBJbml0aWFsaXplKHNyY0FyZ3M6IEFyZ3VtZW50c0xpc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgaWYgKHNyY0FyZ3MgPT09IG51bGwpXHJcbiAgICAgIHRoaXMuX2xpc3QgPSBudWxsO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xpc3QgPSBuZXcgTGlzdDxBcmd1bWVudD4oKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBzcmNBcmdzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgbGV0IGFyZyA9IG5ldyBBcmd1bWVudChzcmNBcmdzLmdldEFyZyhpKSk7XHJcbiAgICAgICAgYXdhaXQgYXJnLkluaXRpYWxpemUoc3JjQXJncy5nZXRBcmcoaSkpO1xyXG4gICAgICAgIHRoaXMuX2xpc3QucHVzaChhcmcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUiB0aGF0IGNyZWF0ZXMgYSBWQUxVRSBhcmd1bWVudCBsaXN0IHVzaW5nIGEgZ2l2ZW4gZXhwcmVzc2lvbiB2YWx1ZSBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzIoRXhwX3BhcmFtczogRXhwVmFsW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgbGV0IGFyZ0NudDogbnVtYmVyID0gRXhwX3BhcmFtcy5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGFyZ0NudCA9PT0gMClcclxuICAgICAgdGhpcy5fbGlzdCA9IG51bGw7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fbGlzdCA9IG5ldyBMaXN0PEFyZ3VtZW50PigpO1xyXG5cclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFyZ0NudDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgdGhpcy5fbGlzdC5wdXNoKG5ldyBBcmd1bWVudChFeHBfcGFyYW1zW2ldKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ1RPUiAtIGNyZWF0ZSBhbiBhcmd1bWVudCBsaXN0IHdpdGggb25lIHNwZWNpZmllZCBhcmd1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJndW1lbnRcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMyhhcmd1bWVudDogQXJndW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuQWRkKGFyZ3VtZW50KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmaWxsIHRoZSBhcmd1bWVudCBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbHVlU3RyXCI+c3RyaW5nIGluIHRoZSBmb3JtYXQgb2Y6IFwiW0Y6c3RyLHN0cl18W0U6c3RyXSQuLi5cIjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzcmNUYXNrXCI+dGhlIHNvdXJjZSB0YXNrIGZvciBwYXJzaW5nIGV4cHJlc3Npb24gYXJndW1lbnRzPC9wYXJhbT5cclxuICBmaWxsTGlzdCh2YWx1ZVN0cjogc3RyaW5nLCBzcmNUYXNrOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgbGV0IHRvazogc3RyaW5nW10gPSBTdHJVdGlsLnRva2VuaXplKHZhbHVlU3RyLCBcIiRcIik7XHJcbiAgICBsZXQgc2l6ZTogbnVtYmVyID0gdG9rLmxlbmd0aDtcclxuXHJcbiAgICB0aGlzLl9saXN0ID0gbmV3IExpc3Q8QXJndW1lbnQ+KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHNpemU7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgYXJndW1lbnQ6IEFyZ3VtZW50ID0gbmV3IEFyZ3VtZW50KCk7XHJcbiAgICAgIGFyZ3VtZW50LmZpbGxEYXRhKHRva1tpXSwgPFRhc2s+c3JjVGFzayk7XHJcbiAgICAgIHRoaXMuX2xpc3QucHVzaChhcmd1bWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGRzIGFyZ3VtZW50IGxpc3QgZnJvbSB0aGUgZXZlbnQgcGFyYW1ldGVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzaXplXCI+ICAgLSBhcmd1bWVudCBudW1iZXIgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImF0dHJzXCI+ICAtIHN0cmluZyBvZiBhdHRyaWJ1dGVzPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbHNcIj4gICAtIHZhbHVlIHN0cmluZ3M8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibnVsbHNcIj4gIC0gYXJndW1lbnRzIG51bGxzPC9wYXJhbT5cclxuICBidWlsZExpc3RGcm9tUGFyYW1zKHNpemU6IG51bWJlciwgYXR0cnM6IHN0cmluZywgdmFsczogc3RyaW5nW10sIG51bGxzOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xpc3QgPSBuZXcgTGlzdDxBcmd1bWVudD4oKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc2l6ZTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBhcmd1bWVudDogQXJndW1lbnQgPSBuZXcgQXJndW1lbnQoKTtcclxuICAgICAgYXJndW1lbnQuZmlsbERhdGFCeVBhcmFtcyg8U3RvcmFnZUF0dHJpYnV0ZT5hdHRycy5jaGFyQXQoaSksIHZhbHNbaV0sIG51bGxzLmNoYXJBdChpKSAhPT0gJzAnLyonMCcqLyk7XHJcbiAgICAgIHRoaXMuX2xpc3QucHVzaChhcmd1bWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgdGhlIFhNTCBzdHJpbmcgZm9yIHRoZSBhcmd1bWVudHMgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtZXNzYWdlXCI+dGhlIFhNTCBzdHJpbmcgdG8gYXBwZW5kIHRoZSBhcmd1bWVudHMgdG88L3BhcmFtPlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9saXN0Lmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGlmIChpID4gMClcclxuICAgICAgICBtZXNzYWdlLkFwcGVuZCgnJCcpLyonJCcqLztcclxuICAgICAgdGhpcy5fbGlzdC5nZXRfSXRlbShpKS5idWlsZFhNTChtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKHRoaXMuX2xpc3QgPT09IG51bGwpID8gMCA6IHRoaXMuX2xpc3QubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgYW4gYXJndW1lbnQgaXRlbSBmcm9tIHRoZSBsaXN0IGJ5IGl0cyBpbmRleFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBhcmd1bWVudDwvcGFyYW0+XHJcbiAgZ2V0QXJnKGlkeDogbnVtYmVyKTogQXJndW1lbnQge1xyXG4gICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuX2xpc3QubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fbGlzdC5nZXRfSXRlbShpZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBWYWx1ZSBvZiBBcmd1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBhcmd1bWVudDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBUeXBlXCI+dHlwZSBvZiBleHBlY3RlZCB0eXBlIG9mIGV2YWx1YXRpb24sIGZvciBleHByZXNzaW9uIG9ubHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwU2l6ZVwiPnNpemUgb2YgZXhwZWN0ZWQgc3RyaW5nIGZyb20gZXZhbHVhdGlvbiwgZm9yIGV4cHJlc3Npb24gb25seTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB2YWx1ZSBvZiBldmFsdWF0ZWQgQXJndW1lbnQ8L3JldHVybnM+XHJcbiAgYXN5bmMgZ2V0QXJnVmFsdWUoaWR4OiBudW1iZXIsIGV4cFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGV4cFNpemU6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBsZXQgYXJnOiBBcmd1bWVudCA9IHRoaXMuZ2V0QXJnKGlkeCk7XHJcbiAgICBpZiAoYXJnID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBhd2FpdCBhcmcuZ2V0VmFsdWUoZXhwVHlwZSwgZXhwU2l6ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGZpbGwgdGhlIGFyZ3VtZW50cyBsaXN0IGZyb20gYSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFyZ3NTdHJpbmdcIj48L3BhcmFtPlxyXG4gIEZpbGxMaXN0RnJvbVN0cmluZyhhcmdzU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBUT0RPIDogY2hlY2sgc2l6ZSBvZiBidW5kbGUgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSBSZWdFeHBcclxuICAgIGxldCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcIig/PCFcXFxcXFxcXCksXCIpO1xyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXSA9IGFyZ3NTdHJpbmcuc3BsaXQocGF0dGVybik7XHJcbiAgICB0aGlzLl9saXN0ID0gbmV3IExpc3Q8QXJndW1lbnQ+KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBhcmd1bWVudDogQXJndW1lbnQgPSBuZXcgQXJndW1lbnQoKTtcclxuICAgICAgYXJndW1lbnQuRmlsbEZyb21TdHJpbmcoYXJyYXlbaV0pO1xyXG4gICAgICB0aGlzLl9saXN0LnB1c2goYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBhZGQgYW4gYXJndW1lbnQgdG8gdGhlIGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFyZ3VtZW50XCI+PC9wYXJhbT5cclxuICBBZGQoYXJndW1lbnQ6IEFyZ3VtZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fbGlzdCA9PT0gbnVsbClcclxuICAgICAgdGhpcy5fbGlzdCA9IG5ldyBMaXN0PEFyZ3VtZW50PigpO1xyXG4gICAgdGhpcy5fbGlzdC5wdXNoKGFyZ3VtZW50KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,161 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { ExpressionEvaluator, NullValueException } from "../exp/ExpressionEvaluator";
3
- import { DisplayConvertor, ExpVal } from "@magic-xpa/gui";
4
- import { StorageAttribute, StrUtil } from "@magic-xpa/utils";
5
- import { Char, NString } from "@magic-xpa/mscorelib";
6
- export class Boundary {
7
- constructor(task, minIdx, maxIdx, returnType, size, cacheTableId) {
8
- this._cacheTableFldId = 0;
9
- this._max = null;
10
- this._min = null;
11
- this._retType = StorageAttribute.NONE;
12
- this._size = 0;
13
- this._maxExpVal = null;
14
- this._minExpVal = null;
15
- this.DiscardMin = false;
16
- this.DiscardMax = false;
17
- this.MaxEqualsMin = false;
18
- if (arguments.length === 5)
19
- this.constructor_0(task, minIdx, maxIdx, returnType, size);
20
- else
21
- this.constructor_1(task, minIdx, maxIdx, returnType, size, cacheTableId);
22
- }
23
- get MaxExpVal() {
24
- return this._maxExpVal;
25
- }
26
- get MinExpVal() {
27
- return this._minExpVal;
28
- }
29
- constructor_0(task, minIdx, maxIdx, returnType, size) {
30
- this.constructor_1(task, minIdx, maxIdx, returnType, size, -1);
31
- }
32
- constructor_1(task, minIdx, maxIdx, returnType, size, cacheTableId) {
33
- this._retType = returnType;
34
- this._size = size;
35
- this._cacheTableFldId = cacheTableId;
36
- if (minIdx !== -1)
37
- this._min = task.getExpById(minIdx);
38
- if (maxIdx !== -1)
39
- this._max = task.getExpById(maxIdx);
40
- }
41
- hasMinExp() {
42
- return this._min !== null;
43
- }
44
- hasMaxExp() {
45
- return this._max !== null;
46
- }
47
- getExpType() {
48
- return this._retType;
49
- }
50
- getCacheTableFldId() {
51
- return this._cacheTableFldId;
52
- }
53
- compute(padValueWithMinMaxCharacters) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- if (this.hasMinExp()) {
56
- let minVal = yield this._min.evaluateWithResultTypeAndLength(this.getExpType(), this._size);
57
- if (minVal !== null) {
58
- minVal = NString.TrimEnd(minVal, new Array(0));
59
- }
60
- this._minExpVal = new ExpVal(this.getExpType(), minVal === null, minVal);
61
- this.MaxEqualsMin = this.IsMaxEqualsMin();
62
- if (!this._minExpVal.IsNull && (this._minExpVal.Attr === StorageAttribute.ALPHA || this._minExpVal.Attr === StorageAttribute.UNICODE)) {
63
- if (padValueWithMinMaxCharacters) {
64
- this._minExpVal.StrVal = DisplayConvertor.StringValueToMgValue(this._minExpVal.StrVal, this._minExpVal.Attr, Char.MinValue, this._size).toString();
65
- this.MaxEqualsMin = false;
66
- }
67
- this._minExpVal.StrVal = StrUtil.SearchAndReplaceWildChars(this._minExpVal.StrVal, this._size, Char.MinValue);
68
- }
69
- this.DiscardMin = yield this._min.DiscardCndRangeResult();
70
- }
71
- if (this.hasMaxExp()) {
72
- let maxVal = yield this._max.evaluateWithResultTypeAndLength(this.getExpType(), this._size);
73
- this._maxExpVal = new ExpVal(this.getExpType(), maxVal === null, maxVal);
74
- if (!this._maxExpVal.IsNull && (this._maxExpVal.Attr === StorageAttribute.ALPHA || this._maxExpVal.Attr === StorageAttribute.UNICODE)) {
75
- if (padValueWithMinMaxCharacters) {
76
- this._maxExpVal.StrVal = DisplayConvertor.StringValueToMgValue(this._maxExpVal.StrVal, this._maxExpVal.Attr, Char.MaxValue, this._size);
77
- }
78
- this._maxExpVal.StrVal = StrUtil.SearchAndReplaceWildChars(this._maxExpVal.StrVal, this._size, Char.MaxValue);
79
- }
80
- this.DiscardMax = yield this._max.DiscardCndRangeResult();
81
- }
82
- });
83
- }
84
- checkRange(val, IsNull) {
85
- let res = true;
86
- let cmpVal = new ExpVal(this.getExpType(), IsNull, val);
87
- if (cmpVal.IsNull && ((this.hasMinExp() && this._minExpVal.IsNull) || (this.hasMaxExp() && this._maxExpVal.IsNull))) {
88
- res = true;
89
- }
90
- else {
91
- if (this.hasMinExp()) {
92
- if (!this._minExpVal.IsNull && !cmpVal.IsNull) {
93
- try {
94
- if (ExpressionEvaluator.val_cmp_any(cmpVal, this._minExpVal) < 0)
95
- res = false;
96
- }
97
- catch (exception) {
98
- if (exception instanceof NullValueException) {
99
- res = false;
100
- }
101
- else
102
- throw exception;
103
- }
104
- }
105
- else {
106
- if (cmpVal.IsNull !== this._minExpVal.IsNull)
107
- res = false;
108
- }
109
- }
110
- if (this.hasMaxExp() && res) {
111
- if (!this._maxExpVal.IsNull && !cmpVal.IsNull) {
112
- try {
113
- if (ExpressionEvaluator.val_cmp_any(cmpVal, this._maxExpVal) > 0)
114
- res = false;
115
- }
116
- catch (exception) {
117
- if (exception instanceof NullValueException)
118
- res = false;
119
- else
120
- throw exception;
121
- }
122
- }
123
- else if (cmpVal.IsNull !== this._maxExpVal.IsNull)
124
- res = false;
125
- }
126
- }
127
- return res;
128
- }
129
- IsMaxEqualsMin() {
130
- let result = false;
131
- if (this.hasMaxExp() && this.hasMinExp()) {
132
- if (this._min.getId() === this._max.getId()) {
133
- if (this._retType === StorageAttribute.ALPHA || this._retType === StorageAttribute.UNICODE)
134
- result = !this.WildCharExist();
135
- else
136
- result = true;
137
- }
138
- }
139
- return result;
140
- }
141
- WildCharExist() {
142
- let wildChars = ["*", "?"];
143
- let result = false;
144
- if (!this._minExpVal.IsNull) {
145
- let stringValue = this._minExpVal.StrVal;
146
- for (let i = 0; i < wildChars.length; i = i + 1) {
147
- if (stringValue.endsWith(wildChars[i])) {
148
- result = true;
149
- break;
150
- }
151
- }
152
- }
153
- return result;
154
- }
155
- toString() {
156
- return NString.Format("{{Boundary: {0}-{1}, {2}, {3}}}", [
157
- this._max, this._max, this._retType, this._size
158
- ]);
159
- }
160
- }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L0JvdW5kYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFLbkQsTUFBTSxPQUFPLFFBQVE7SUF1Qm5CLFlBQVksSUFBVSxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsVUFBNEIsRUFBRSxJQUFZLEVBQUUsWUFBcUI7UUF0QmpILHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLFNBQUksR0FBZSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDbkQsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixlQUFVLEdBQVcsSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBVyxJQUFJLENBQUM7UUFFbEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBYTVCLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDOztZQUUzRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFF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QWE7UUFDbkIsSUFBSSxTQUFTLEdBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBRzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMzQixJQUFJLFdBQVcsR0FBVyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUVqRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkQsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNkLE1BQU07aUJBQ1A7YUFDRjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUNBQWlDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFeHByZXNzaW9uRXZhbHVhdG9yLCBOdWxsVmFsdWVFeGNlcHRpb259IGZyb20gXCIuLi9leHAvRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3IsIEV4cFZhbH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtFeHByZXNzaW9ufSBmcm9tIFwiLi4vZXhwL0V4cHJlc3Npb25cIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0NoYXIsIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHJhbmdlIG9yIGxvY2F0ZSBzZWN0aW9ucyAtIGkuZS4gbWluL21heCBleHByZXNzaW9uc1xyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgQm91bmRhcnkge1xyXG4gIHByaXZhdGUgX2NhY2hlVGFibGVGbGRJZDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9tYXg6IEV4cHJlc3Npb24gPSBudWxsO1xyXG4gIHByaXZhdGUgX21pbjogRXhwcmVzc2lvbiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcmV0VHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTtcclxuICBwcml2YXRlIF9zaXplOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX21heEV4cFZhbDogRXhwVmFsID0gbnVsbDtcclxuICBwcml2YXRlIF9taW5FeHBWYWw6IEV4cFZhbCA9IG51bGw7XHJcblxyXG4gIERpc2NhcmRNaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBEaXNjYXJkTWF4OiBib29sZWFuID0gZmFsc2U7XHJcbiAgTWF4RXF1YWxzTWluOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBNYXhFeHBWYWwoKTogRXhwVmFsIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhFeHBWYWw7XHJcbiAgfVxyXG5cclxuICBnZXQgTWluRXhwVmFsKCk6IEV4cFZhbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluRXhwVmFsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IodGFzazogVGFzaywgbWluSWR4OiBudW1iZXIsIG1heElkeDogbnVtYmVyLCByZXR1cm5UeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBzaXplOiBudW1iZXIpO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2s6IFRhc2ssIG1pbklkeDogbnVtYmVyLCBtYXhJZHg6IG51bWJlciwgcmV0dXJuVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgc2l6ZTogbnVtYmVyLCBjYWNoZVRhYmxlSWQ6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IodGFzazogVGFzaywgbWluSWR4OiBudW1iZXIsIG1heElkeDogbnVtYmVyLCByZXR1cm5UeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBzaXplOiBudW1iZXIsIGNhY2hlVGFibGVJZD86IG51bWJlcikge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCh0YXNrLCBtaW5JZHgsIG1heElkeCwgcmV0dXJuVHlwZSwgc2l6ZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMSh0YXNrLCBtaW5JZHgsIG1heElkeCwgcmV0dXJuVHlwZSwgc2l6ZSwgY2FjaGVUYWJsZUlkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSW5zdGFudGlhdGVzIGEgbmV3IEJvdW5kYXJ5IG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWluSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtYXhJZHhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldHVyblR5cGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNpemVcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCh0YXNrOiBUYXNrLCBtaW5JZHg6IG51bWJlciwgbWF4SWR4OiBudW1iZXIsIHJldHVyblR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHNpemU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKHRhc2ssIG1pbklkeCwgbWF4SWR4LCByZXR1cm5UeXBlLCBzaXplLCAtMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEodGFzazogVGFzaywgbWluSWR4OiBudW1iZXIsIG1heElkeDogbnVtYmVyLCByZXR1cm5UeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBzaXplOiBudW1iZXIsIGNhY2hlVGFibGVJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXRUeXBlID0gcmV0dXJuVHlwZTtcclxuICAgIHRoaXMuX3NpemUgPSBzaXplO1xyXG4gICAgdGhpcy5fY2FjaGVUYWJsZUZsZElkID0gY2FjaGVUYWJsZUlkO1xyXG4gICAgaWYgKG1pbklkeCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuX21pbiA9IHRhc2suZ2V0RXhwQnlJZChtaW5JZHgpO1xyXG5cclxuICAgIGlmIChtYXhJZHggIT09IC0xKVxyXG4gICAgICB0aGlzLl9tYXggPSB0YXNrLmdldEV4cEJ5SWQobWF4SWR4KTtcclxuICB9XHJcblxyXG4gIC8vIHNvbWV0aW1lcyB0aGUgbWluIG9yIG1heCBkb2VzIG5vdCBoYXZlIGFuIGV4cHJlc3Npb25cclxuICBoYXNNaW5FeHAoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gc29tZXRpbWVzIHRoZSBtaW4gb3IgbWF4IGRvZXMgbm90IGhhdmUgYW4gZXhwcmVzc2lvblxyXG4gIGhhc01heEV4cCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXggIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbWluL21heCBleHByZXNzaW9ucyByZXR1cm4gdHlwZSAtIGl0IGFjdHVhbGx5IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCB0aGV5IGFyZSBBc3NvY2lhdGVkIHdpdGhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEV4cFR5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmV0VHlwZTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBpZCBvZiB0aGUgY2FjaGVkIHRhYmxlIGZpZWxkIHRoaXMgcmFuZ2UgY29ycmVzcG9uZHMgdG9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldENhY2hlVGFibGVGbGRJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlVGFibGVGbGRJZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb21wdXRlcyB0aGUgbWluIGFuZCBtYXggZXhwcmVzc2lvbiB0byBjaGVjayB0aGVpciB2YWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIGNvbXB1dGUocGFkVmFsdWVXaXRoTWluTWF4Q2hhcmFjdGVyczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaGFzTWluRXhwKCkpIHtcclxuXHJcbiAgICAgIC8vIGV2YWx1YXRlIHRoZSBtaW4gZXhwcmVzc2lvblxyXG4gICAgICBsZXQgbWluVmFsOiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9taW4uZXZhbHVhdGVXaXRoUmVzdWx0VHlwZUFuZExlbmd0aCh0aGlzLmdldEV4cFR5cGUoKSwgdGhpcy5fc2l6ZSk7XHJcbiAgICAgIGlmIChtaW5WYWwgIT09IG51bGwpIHtcclxuICAgICAgICBtaW5WYWwgPSBOU3RyaW5nLlRyaW1FbmQobWluVmFsLCBuZXcgQXJyYXk8c3RyaW5nPigwKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX21pbkV4cFZhbCA9IG5ldyBFeHBWYWwodGhpcy5nZXRFeHBUeXBlKCksIG1pblZhbCA9PT0gbnVsbCwgbWluVmFsKTtcclxuXHJcbiAgICAgIC8vIGNoZWNrIGFuZCBzZXQgdGhlIE1heEVxdWFsc01pbiBiZWZvcmUgdGhlIHdpbGQgY2hhcnMgYXJlIHJlcGxhY2VkIG9uIHRoZSBzdHJpbmcgcmVzdWx0XHJcbiAgICAgIHRoaXMuTWF4RXF1YWxzTWluID0gdGhpcy5Jc01heEVxdWFsc01pbigpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLl9taW5FeHBWYWwuSXNOdWxsICYmICh0aGlzLl9taW5FeHBWYWwuQXR0ciA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCB0aGlzLl9taW5FeHBWYWwuQXR0ciA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFKSkge1xyXG4gICAgICAgIGlmIChwYWRWYWx1ZVdpdGhNaW5NYXhDaGFyYWN0ZXJzKSB7XHJcbiAgICAgICAgICB0aGlzLl9taW5FeHBWYWwuU3RyVmFsID0gRGlzcGxheUNvbnZlcnRvci5TdHJpbmdWYWx1ZVRvTWdWYWx1ZSh0aGlzLl9taW5FeHBWYWwuU3RyVmFsLCB0aGlzLl9taW5FeHBWYWwuQXR0ciwgQ2hhci5NaW5WYWx1ZSwgLyonXHUwMDAwJyovdGhpcy5fc2l6ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgIHRoaXMuTWF4RXF1YWxzTWluID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21pbkV4cFZhbC5TdHJWYWwgPSBTdHJVdGlsLlNlYXJjaEFuZFJlcGxhY2VXaWxkQ2hhcnModGhpcy5fbWluRXhwVmFsLlN0clZhbCwgdGhpcy5fc2l6ZSwgQ2hhci5NaW5WYWx1ZSkvKidcdTAwMDAnKi87XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5EaXNjYXJkTWluID0gYXdhaXQgdGhpcy5fbWluLkRpc2NhcmRDbmRSYW5nZVJlc3VsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhhc01heEV4cCgpKSB7XHJcblxyXG4gICAgICAvLyBldmFsdWF0ZSB0aGUgbWF4IGV4cHJlc3Npb25cclxuICAgICAgbGV0IG1heFZhbDogc3RyaW5nID0gYXdhaXQgdGhpcy5fbWF4LmV2YWx1YXRlV2l0aFJlc3VsdFR5cGVBbmRMZW5ndGgodGhpcy5nZXRFeHBUeXBlKCksIHRoaXMuX3NpemUpO1xyXG4gICAgICB0aGlzLl9tYXhFeHBWYWwgPSBuZXcgRXhwVmFsKHRoaXMuZ2V0RXhwVHlwZSgpLCBtYXhWYWwgPT09IG51bGwsIG1heFZhbCk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuX21heEV4cFZhbC5Jc051bGwgJiYgKHRoaXMuX21heEV4cFZhbC5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IHRoaXMuX21heEV4cFZhbC5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpKSB7XHJcbiAgICAgICAgaWYgKHBhZFZhbHVlV2l0aE1pbk1heENoYXJhY3RlcnMpIHtcclxuICAgICAgICAgIHRoaXMuX21heEV4cFZhbC5TdHJWYWwgPSBEaXNwbGF5Q29udmVydG9yLlN0cmluZ1ZhbHVlVG9NZ1ZhbHVlKHRoaXMuX21heEV4cFZhbC5TdHJWYWwsIHRoaXMuX21heEV4cFZhbC5BdHRyLCBDaGFyLk1heFZhbHVlIC8qJ++/vycqLywgdGhpcy5fc2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21heEV4cFZhbC5TdHJWYWwgPSBTdHJVdGlsLlNlYXJjaEFuZFJlcGxhY2VXaWxkQ2hhcnModGhpcy5fbWF4RXhwVmFsLlN0clZhbCwgdGhpcy5fc2l6ZSwgQ2hhci5NYXhWYWx1ZSkvKifvv78nKi87XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5EaXNjYXJkTWF4ID0gYXdhaXQgdGhpcy5fbWF4LkRpc2NhcmRDbmRSYW5nZVJlc3VsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRoaXMgZnVuY3Rpb24gZ2V0cyBhIHZhbHVlIGFuZCBjaGVja3Mgd2hldGhlciBpdCBzYXRpc2ZpZXMgdGhlIHJhbmdlIHNlY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+LSB0aGUgdmFsdWUgdG8gYmUgY29tcGFyZWRcclxuICAvLy8gPC9wYXJhbT5cclxuICBjaGVja1JhbmdlKHZhbDogc3RyaW5nLCBJc051bGw6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGxldCBjbXBWYWw6IEV4cFZhbCA9IG5ldyBFeHBWYWwodGhpcy5nZXRFeHBUeXBlKCksIElzTnVsbCwgdmFsKTtcclxuXHJcbiAgICBpZiAoY21wVmFsLklzTnVsbCAmJiAoKHRoaXMuaGFzTWluRXhwKCkgJiYgdGhpcy5fbWluRXhwVmFsLklzTnVsbCkgfHwgKHRoaXMuaGFzTWF4RXhwKCkgJiYgdGhpcy5fbWF4RXhwVmFsLklzTnVsbCkpKSB7XHJcbiAgICAgIHJlcyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gY2hlY2sgbWluIGV4cHJlc3Npb24gQ29tcGxpYW5jZVxyXG4gICAgICBpZiAodGhpcy5oYXNNaW5FeHAoKSkge1xyXG5cclxuICAgICAgICAvLyBpZiBib3RoIG9mIHRoZSBjb21wYXJlZCB2YWx1ZXMgYXJlIG5vdCBudWxsXHJcbiAgICAgICAgaWYgKCF0aGlzLl9taW5FeHBWYWwuSXNOdWxsICYmICFjbXBWYWwuSXNOdWxsKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyB0aGUgY29tcGFyZWQgdmFsdWUgbXVzdCBiZSBlcXVhbCBvciBncmVhdGVyIHRvIHRoZSBtaW4gdmFsdWVcclxuICAgICAgICAgICAgaWYgKEV4cHJlc3Npb25FdmFsdWF0b3IudmFsX2NtcF9hbnkoY21wVmFsLCB0aGlzLl9taW5FeHBWYWwpIDwgMClcclxuICAgICAgICAgICAgICByZXMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleGNlcHRpb24pIHtcclxuICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiBpbnN0YW5jZW9mIE51bGxWYWx1ZUV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNtcFZhbC5Jc051bGwgIT09IHRoaXMuX21pbkV4cFZhbC5Jc051bGwpXHJcbiAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBjaGVjayBtYXggZXhwcmVzc2lvbiBDb21wbGlhbmNlXHJcbiAgICAgIGlmICh0aGlzLmhhc01heEV4cCgpICYmIHJlcykge1xyXG4gICAgICAgIC8vIGlmIGJvdGggb2YgdGhlIGNvbXBhcmVkIHZhbHVlcyBhcmUgbm90IG51bGxcclxuICAgICAgICBpZiAoIXRoaXMuX21heEV4cFZhbC5Jc051bGwgJiYgIWNtcFZhbC5Jc051bGwpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIHRoZSBjb21wYXJlZCB2YWx1ZSBtdXN0IGJlIGVxdWFsIG9yIGdyZWF0ZXIgdG8gdGhlIG1pbiB2YWx1ZVxyXG4gICAgICAgICAgICBpZiAoRXhwcmVzc2lvbkV2YWx1YXRvci52YWxfY21wX2FueShjbXBWYWwsIHRoaXMuX21heEV4cFZhbCkgPiAwKVxyXG4gICAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICBpZiAoZXhjZXB0aW9uIGluc3RhbmNlb2YgTnVsbFZhbHVlRXhjZXB0aW9uKVxyXG4gICAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlbSBpcyBudWxsIGFuZCBudWxsIGlzIHRoZSBncmVhdGVzdCB2YWx1ZSB0aGVyZSBpcyB3ZSBtdXN0IGNoZWNrIHRoYXQgbWF4RXhwVmFsIGlzIG5vdCBudWxsXHJcbiAgICAgICAgZWxzZSBpZiAoY21wVmFsLklzTnVsbCAhPT0gdGhpcy5fbWF4RXhwVmFsLklzTnVsbClcclxuICAgICAgICAgIHJlcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIHRydWUgaWYgbWluIGV4cHJlc3Npb24gZXF1YWwgdG8gbWF4IGV4cHJlc3Npb24gYW5kIG5vIHdpbGQgY2hhcnMgKCosID8pIGV4aXN0IGluIHRoZSByYW5nZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBJc01heEVxdWFsc01pbigpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmhhc01heEV4cCgpICYmIHRoaXMuaGFzTWluRXhwKCkpIHtcclxuICAgICAgaWYgKHRoaXMuX21pbi5nZXRJZCgpID09PSB0aGlzLl9tYXguZ2V0SWQoKSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXRUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IHRoaXMuX3JldFR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERSlcclxuICAgICAgICAgIHJlc3VsdCA9ICF0aGlzLldpbGRDaGFyRXhpc3QoKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjaGVja3MgaWYgd2lsZCBjaGFyIGV4aXN0IGluIHRuZSB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIFdpbGRDaGFyRXhpc3QoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgd2lsZENoYXJzOiBzdHJpbmdbXSA9IFtcIipcIiwgXCI/XCJdO1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIGNoZWNrIHRyaW1cclxuICAgIGlmICghdGhpcy5fbWluRXhwVmFsLklzTnVsbCkge1xyXG4gICAgICBsZXQgc3RyaW5nVmFsdWU6IHN0cmluZyA9IHRoaXMuX21pbkV4cFZhbC5TdHJWYWw7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgd2lsZENoYXJzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgaWYgKHN0cmluZ1ZhbHVlLmVuZHNXaXRoKHdpbGRDaGFyc1tpXSkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE5TdHJpbmcuRm9ybWF0KFwie3tCb3VuZGFyeTogezB9LXsxfSwgezJ9LCB7M319fVwiLCBbXHJcbiAgICAgIHRoaXMuX21heCwgdGhpcy5fbWF4LCB0aGlzLl9yZXRUeXBlLCB0aGlzLl9zaXplXHJcbiAgICBdKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,96 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { YesNoExp } from '../exp/YesNoExp';
3
- import { NString, RefParam } from '@magic-xpa/mscorelib';
4
- import { Logger, XMLConstants, XmlParser } from '@magic-xpa/utils';
5
- import { ConstInterface } from '../ConstInterface';
6
- export class DataviewHeaderBase {
7
- constructor(task) {
8
- this._cond = null;
9
- this._task = null;
10
- this.Loc = null;
11
- this._dir = '\0';
12
- this._id = 0;
13
- this._keyIdx = 0;
14
- this._retVal = null;
15
- this.returnfield = null;
16
- this.LinkStartAfterField = 0;
17
- this.KeyExpression = 0;
18
- this._task = task;
19
- this._keyIdx = -1;
20
- this._cond = new YesNoExp(true);
21
- }
22
- get ReturnField() {
23
- if (this.returnfield === null && this._retVal !== null)
24
- this.returnfield = this.Task.getFieldByValueStr(this._retVal);
25
- return this.returnfield;
26
- }
27
- get IsMainSource() {
28
- return this._id === -1;
29
- }
30
- get Task() {
31
- return this._task;
32
- }
33
- get Fields() {
34
- return this._task.DataView.GetFieldsTab().getLinkFields(this._id);
35
- }
36
- get Id() {
37
- return this._id;
38
- }
39
- get LinkEvaluateCondition() {
40
- return this._linkEvalCondition;
41
- }
42
- SetAttributes(attributes) {
43
- let keys = attributes.Keys;
44
- keys.forEach((text) => {
45
- this.setAttribute(text, attributes.get_Item(text));
46
- });
47
- }
48
- setAttribute(attribute, valueStr) {
49
- switch (attribute) {
50
- case XMLConstants.MG_ATTR_ID:
51
- this._id = XmlParser.getInt(valueStr);
52
- break;
53
- case ConstInterface.MG_ATTR_KEY:
54
- this._keyIdx = XmlParser.getInt(valueStr);
55
- break;
56
- case ConstInterface.MG_ATTR_KEY_EXP:
57
- this.KeyExpression = XmlParser.getInt(valueStr);
58
- break;
59
- case ConstInterface.MG_ATTR_DIR:
60
- this._dir = valueStr[0];
61
- break;
62
- case ConstInterface.MG_ATTR_COND:
63
- case ConstInterface.MG_ATTR_COND_RES:
64
- this._cond.setVal(this._task, valueStr);
65
- break;
66
- case ConstInterface.MG_ATTR_RET_VAL:
67
- this._retVal = valueStr;
68
- break;
69
- case ConstInterface.MG_ATTR_LINK_EVAL_CONDITION:
70
- this._linkEvalCondition = valueStr[0];
71
- break;
72
- case ConstInterface.MG_ATTR_LINK_MODE:
73
- this.Mode = valueStr[0];
74
- break;
75
- case ConstInterface.MG_ATTR_LINK_START:
76
- this.LinkStartAfterField = XmlParser.getInt(valueStr);
77
- break;
78
- default:
79
- Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Unrecognized attribute: '{0}'", attribute));
80
- break;
81
- }
82
- }
83
- InitLinkFields(currRec) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- for (let i = 0; i < this.Fields.length; i++) {
86
- let field = this.Fields.get_Item(i);
87
- let isNull = new RefParam(field.isNull());
88
- let result = new RefParam(field.getValue(false));
89
- yield field.getInitExpVal(result, isNull);
90
- currRec.SetFieldValue(field.getId(), isNull.value, result.value);
91
- field.invalidate(true, false);
92
- }
93
- });
94
- }
95
- }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YXZpZXdIZWFkZXJCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ydC9EYXRhdmlld0hlYWRlckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQW1CLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RSxPQUFPLEVBQXdCLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFJeEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBS2pELE1BQU0sT0FBZ0Isa0JBQWtCO0lBNkR0QyxZQUFZLElBQVU7UUE1RHRCLFVBQUssR0FBYSxJQUFJLENBQUM7UUFDdkIsVUFBSyxHQUFTLElBQUksQ0FBQztRQUNuQixRQUFHLEdBQW1CLElBQUksQ0FBQztRQUMzQixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLFFBQUcsR0FBVyxDQUFDLENBQUM7UUFDaEIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUVaLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFLdkIsZ0JBQVcsR0FBVSxJQUFJLENBQUM7UUFhbEMsd0JBQW1CLEdBQVcsQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBbUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQWpERCxJQUFJLFdBQVc7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSTtZQUNw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LENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNuRCxJQUFJLEtBQUssR0FBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFM0MsSUFBSSxNQUFNLEdBQXNCLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLE1BQU0sR0FBcUIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUVqQyxPQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0UsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDO0tBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7WWVzTm9FeHB9IGZyb20gJy4uL2V4cC9ZZXNOb0V4cCc7XHJcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7RGljdGlvbmFyeSwgTGlzdCwgTlN0cmluZywgUmVmUGFyYW19IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtCb3VuZGFyeX0gZnJvbSAnLi9Cb3VuZGFyeSc7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gJy4uL2RhdGEvRmllbGQnO1xyXG5pbXBvcnQge0xua0V2YWxfQ29uZCwgTG5rTW9kZSwgTG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7RmllbGRzVGFibGVFeHQgYXMgRmllbGRzVGFibGV9IGZyb20gJy4uL2RhdGEvRmllbGRzVGFibGUnO1xyXG5pbXBvcnQge0lSZWNvcmR9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtSZWNvcmR9IGZyb20gJy4uL2RhdGEvUmVjb3JkJztcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSAnLi4vQ29uc3RJbnRlcmZhY2UnO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBTdW1tYXJ5IGRlc2NyaXB0aW9uIGZvciBMaW5rLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YXZpZXdIZWFkZXJCYXNlIHtcclxuICBfY29uZDogWWVzTm9FeHAgPSBudWxsOyAgLy8gd2lsbCBiZSBnZW5lcmF0ZWQgb3IgZnJvbSB0aGUgbGluayBjb25kaXRpb24gb3IgZnJvbSB0aGUgbGluayBjb25kaXRpb24gdmFsdWUgdGFnXHJcbiAgX3Rhc2s6IFRhc2sgPSBudWxsO1xyXG4gIExvYzogTGlzdDxCb3VuZGFyeT4gPSBudWxsO1xyXG4gIF9kaXI6IHN0cmluZyA9ICdcXDAnO1xyXG4gIF9pZDogbnVtYmVyID0gMDsgLy8gdGhlIGlkIG9mIHRoZSBsaW5rIGluIHRoZSB0YXNrXHJcbiAgX2tleUlkeDogbnVtYmVyID0gMDsgLy8gdGhlIGtleSAoZnJvbSB0aGUgdGFibGVDYWNoZSkgdGhhdCB0aGlzXHJcblxyXG4gIHByaXZhdGUgX3JldFZhbDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBkbyBub3QgdXNlIGRpcmVjdGx5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHJldHVybmZpZWxkOiBGaWVsZCA9IG51bGw7XHJcbiAgX2xpbmtFdmFsQ29uZGl0aW9uOiBMbmtFdmFsX0NvbmQ7XHJcblxyXG4gIGdldCBSZXR1cm5GaWVsZCgpOiBGaWVsZCB7XHJcbiAgICBpZiAodGhpcy5yZXR1cm5maWVsZCA9PT0gbnVsbCAmJiB0aGlzLl9yZXRWYWwgIT09IG51bGwpXHJcbiAgICAgIHRoaXMucmV0dXJuZmllbGQgPSA8RmllbGQ+dGhpcy5UYXNrLmdldEZpZWxkQnlWYWx1ZVN0cih0aGlzLl9yZXRWYWwpO1xyXG4gICAgcmV0dXJuIHRoaXMucmV0dXJuZmllbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGxpbmsgTW9kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgTW9kZTogTG5rTW9kZTtcclxuICBMaW5rU3RhcnRBZnRlckZpZWxkOiBudW1iZXIgPSAwO1xyXG4gIEtleUV4cHJlc3Npb246IG51bWJlciA9IDA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdHJ1ZSBpZiB0aGlzIGxpbmsgcmVwcmVzZW50cyBNYWluIHNvdXJjZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0IElzTWFpblNvdXJjZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pZCA9PT0gLTE7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldCBUYXNrKCk6IFRhc2sge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEZpZWxkc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0IEZpZWxkcygpOiBMaXN0PEZpZWxkPiB7XHJcbiAgICByZXR1cm4gKDxGaWVsZHNUYWJsZT50aGlzLl90YXNrLkRhdGFWaWV3LkdldEZpZWxkc1RhYigpKS5nZXRMaW5rRmllbGRzKHRoaXMuX2lkKTtcclxuICB9XHJcblxyXG4gIGdldCBJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IExpbmtFdmFsdWF0ZUNvbmRpdGlvbigpOiBMbmtFdmFsX0NvbmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xpbmtFdmFsQ29uZGl0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGluaXRpYWxpemUgdGhlIGxpbmsgZm9yIGEgZ2l2ZW4gdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IodGFzazogVGFzaykge1xyXG4gICAgdGhpcy5fdGFzayA9IHRhc2s7XHJcbiAgICB0aGlzLl9rZXlJZHggPSAtMTtcclxuICAgIHRoaXMuX2NvbmQgPSBuZXcgWWVzTm9FeHAodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhdHRyaWJ1dGVzXCI+PC9wYXJhbT5cclxuICBTZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IERpY3Rpb25hcnk8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gYXR0cmlidXRlcy5LZXlzO1xyXG4gICAga2V5cy5mb3JFYWNoKCh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUodGV4dCwgYXR0cmlidXRlcy5nZXRfSXRlbSh0ZXh0KSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZSB0aGUgbGluayBYTUwgdGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPnRoZSB2ZWN0b3Igb2YgYXR0cmlidXRlcyBhbmQgdGhlaXIgdmFsdWVzPC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgc2V0QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lEOlxyXG4gICAgICAgIHRoaXMuX2lkID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVk6XHJcbiAgICAgICAgdGhpcy5fa2V5SWR4ID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVlfRVhQOlxyXG4gICAgICAgIHRoaXMuS2V5RXhwcmVzc2lvbiA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRElSOlxyXG4gICAgICAgIHRoaXMuX2RpciA9IHZhbHVlU3RyWzBdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ09ORDpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NPTkRfUkVTOlxyXG4gICAgICAgIHRoaXMuX2NvbmQuc2V0VmFsKHRoaXMuX3Rhc2ssIHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1JFVF9WQUw6XHJcbiAgICAgICAgdGhpcy5fcmV0VmFsID0gdmFsdWVTdHI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9MSU5LX0VWQUxfQ09ORElUSU9OOlxyXG4gICAgICAgIHRoaXMuX2xpbmtFdmFsQ29uZGl0aW9uID0gPExua0V2YWxfQ29uZD52YWx1ZVN0clswXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0xJTktfTU9ERTpcclxuICAgICAgICB0aGlzLk1vZGUgPSA8TG5rTW9kZT52YWx1ZVN0clswXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0xJTktfU1RBUlQ6XHJcbiAgICAgICAgdGhpcy5MaW5rU3RhcnRBZnRlckZpZWxkID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiVW5yZWNvZ25pemVkIGF0dHJpYnV0ZTogJ3swfSdcIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHVwZGF0ZSBsaW5rIHJlc3VsdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VyUmVjXCI+Y3VycmVudCByZWNvcmQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldFwiPmxpbmsgc3VjY2VzczwvcGFyYW0+XHJcbiAgYWJzdHJhY3QgU2V0UmV0dXJuVmFsdWUoIHJldDogYm9vbGVhbiwgcmVjb21wdXRlOiBib29sZWFuKTogdm9pZDtcclxuXHJcbiAgYWJzdHJhY3QgYXN5bmMgZ2V0TGlua2VkUmVjb3JkKGN1clJlYzogUmVjb3JkKTogUHJvbWlzZTxib29sZWFuPjtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbml0aWFsaXplIGxpbmsgZmllbGRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdXJyUmVjXCI+PC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgSW5pdExpbmtGaWVsZHMoY3VyclJlYzogSVJlY29yZCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIC8vIG5pdCB0aGUgY3VyZWVudCByZWMgZmllbGRzIHRoYXQgYmVsb25nIHRvIHRoZSBsaW5rXHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuRmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaWVsZDogRmllbGQgPSB0aGlzLkZpZWxkcy5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgIGxldCBpc051bGw6IFJlZlBhcmFtPGJvb2xlYW4+ID0gbmV3IFJlZlBhcmFtKGZpZWxkLmlzTnVsbCgpKTtcclxuICAgICAgbGV0IHJlc3VsdDogUmVmUGFyYW08c3RyaW5nPiA9IG5ldyBSZWZQYXJhbShmaWVsZC5nZXRWYWx1ZShmYWxzZSkpO1xyXG4gICAgICBhd2FpdCBmaWVsZC5nZXRJbml0RXhwVmFsKHJlc3VsdCwgaXNOdWxsKTtcclxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiBrbm93cyB0byB0YWtlIGVpdGhlciB0aGUgbnVsbCB2YWx1ZSBvciB0aGUgZGVmdWFsdCB2YWx1ZVxyXG4gICAgICAoPFJlY29yZD5jdXJyUmVjKS5TZXRGaWVsZFZhbHVlKGZpZWxkLmdldElkKCksIGlzTnVsbC52YWx1ZSwgcmVzdWx0LnZhbHVlKTtcclxuICAgICAgZmllbGQuaW52YWxpZGF0ZSh0cnVlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==