beca-ui 2.1.1-beta.13 → 2.1.1-beta.15

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 (323) hide show
  1. package/README.md +6 -0
  2. package/package.json +1 -1
  3. package/dist/ConvertVietnameseNumber.js +0 -136
  4. package/dist/DynamicWorkflowScript.js +0 -1141
  5. package/dist/assets/locales/en.json.d.ts +0 -34
  6. package/dist/assets/locales/vi.json.d.ts +0 -34
  7. package/dist/beca-ui.js +0 -151430
  8. package/dist/components/AIChat/AIChat.d.ts +0 -11
  9. package/dist/components/AIChat/AIChat.types.d.ts +0 -21
  10. package/dist/components/AIChat/index.d.ts +0 -2
  11. package/dist/components/Alert/Alert.d.ts +0 -2
  12. package/dist/components/Alert/Alert.types.d.ts +0 -3
  13. package/dist/components/Alert/index.d.ts +0 -2
  14. package/dist/components/Anchor/Anchor.d.ts +0 -4
  15. package/dist/components/Anchor/Anchor.types.d.ts +0 -2
  16. package/dist/components/Anchor/index.d.ts +0 -2
  17. package/dist/components/App/App.d.ts +0 -2
  18. package/dist/components/App/App.types.d.ts +0 -3
  19. package/dist/components/App/index.d.ts +0 -3
  20. package/dist/components/ApplicationsCard/ApplicationsCard.d.ts +0 -3
  21. package/dist/components/ApplicationsCard/ApplicationsCard.types.d.ts +0 -27
  22. package/dist/components/ApplicationsCard/index.d.ts +0 -2
  23. package/dist/components/AudioPlayer/AudioPlayer.d.ts +0 -4
  24. package/dist/components/AudioPlayer/AudioPlayer.types.d.ts +0 -10
  25. package/dist/components/AudioPlayer/index.d.ts +0 -3
  26. package/dist/components/AutoComplete/AutoComplete.d.ts +0 -2
  27. package/dist/components/AutoComplete/AutoComplete.types.d.ts +0 -3
  28. package/dist/components/AutoComplete/index.d.ts +0 -3
  29. package/dist/components/Avatar/Avatar.d.ts +0 -6
  30. package/dist/components/Avatar/Avatar.types.d.ts +0 -6
  31. package/dist/components/Avatar/index.d.ts +0 -4
  32. package/dist/components/Badge/Badge.d.ts +0 -4
  33. package/dist/components/Badge/Badge.types.d.ts +0 -3
  34. package/dist/components/Badge/index.d.ts +0 -3
  35. package/dist/components/BecaChatBox/BecaChatBox.d.ts +0 -24
  36. package/dist/components/BecaChatBox/Composer.d.ts +0 -20
  37. package/dist/components/BecaChatBox/MainChat.d.ts +0 -36
  38. package/dist/components/BecaChatBox/MessageBubble.d.ts +0 -27
  39. package/dist/components/BecaChatBox/Sidebar.d.ts +0 -11
  40. package/dist/components/BecaChatBox/index.d.ts +0 -1
  41. package/dist/components/BecaChatBox/types.d.ts +0 -26
  42. package/dist/components/BecaChatBox/utils.d.ts +0 -3
  43. package/dist/components/BecaColorPicker/BecaColorPicker.d.ts +0 -2
  44. package/dist/components/BecaColorPicker/BecaColorPicker.types.d.ts +0 -2
  45. package/dist/components/BecaColorPicker/index.d.ts +0 -3
  46. package/dist/components/BodyCard/BodyCard.d.ts +0 -3
  47. package/dist/components/BodyCard/BodyCard.types.d.ts +0 -20
  48. package/dist/components/BodyCard/index.d.ts +0 -3
  49. package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -6
  50. package/dist/components/Breadcrumb/Breadcrumb.types.d.ts +0 -5
  51. package/dist/components/Breadcrumb/index.d.ts +0 -3
  52. package/dist/components/Button/Button.d.ts +0 -2
  53. package/dist/components/Button/Button.types.d.ts +0 -18
  54. package/dist/components/Button/index.d.ts +0 -2
  55. package/dist/components/Calendar/Calendar.d.ts +0 -3
  56. package/dist/components/Calendar/Calendar.types.d.ts +0 -3
  57. package/dist/components/Calendar/index.d.ts +0 -3
  58. package/dist/components/Card/Card.d.ts +0 -6
  59. package/dist/components/Card/Card.types.d.ts +0 -6
  60. package/dist/components/Card/index.d.ts +0 -2
  61. package/dist/components/Carousel/Carousel.d.ts +0 -2
  62. package/dist/components/Carousel/Carousel.types.d.ts +0 -3
  63. package/dist/components/Carousel/index.d.ts +0 -3
  64. package/dist/components/Checkbox/Checkbox.d.ts +0 -6
  65. package/dist/components/Checkbox/Checkbox.types.d.ts +0 -11
  66. package/dist/components/Checkbox/index.d.ts +0 -2
  67. package/dist/components/Col/Col.d.ts +0 -3
  68. package/dist/components/Col/Col.types.d.ts +0 -3
  69. package/dist/components/Col/index.d.ts +0 -3
  70. package/dist/components/Collapse/Collapse.d.ts +0 -6
  71. package/dist/components/Collapse/Collapse.types.d.ts +0 -5
  72. package/dist/components/Collapse/index.d.ts +0 -3
  73. package/dist/components/ColorPicker/ColorPicker.d.ts +0 -4
  74. package/dist/components/ColorPicker/ColorPicker.types.d.ts +0 -3
  75. package/dist/components/ColorPicker/index.d.ts +0 -3
  76. package/dist/components/CommonTypes.d.ts +0 -2
  77. package/dist/components/ConfigProvider/ConfigProvider.d.ts +0 -4
  78. package/dist/components/ConfigProvider/ConfigProvider.types.d.ts +0 -5
  79. package/dist/components/ConfigProvider/index.d.ts +0 -3
  80. package/dist/components/Content/Content.d.ts +0 -3
  81. package/dist/components/Content/Content.types.d.ts +0 -4
  82. package/dist/components/Content/index.d.ts +0 -3
  83. package/dist/components/DatePicker/DatePicker.d.ts +0 -7
  84. package/dist/components/DatePicker/DatePicker.types.d.ts +0 -9
  85. package/dist/components/DatePicker/index.d.ts +0 -3
  86. package/dist/components/Descriptions/Descriptions.d.ts +0 -6
  87. package/dist/components/Descriptions/Descriptions.types.d.ts +0 -6
  88. package/dist/components/Descriptions/index.d.ts +0 -3
  89. package/dist/components/Divider/Divider.d.ts +0 -4
  90. package/dist/components/Divider/Divider.types.d.ts +0 -3
  91. package/dist/components/Divider/index.d.ts +0 -3
  92. package/dist/components/Drawer/Drawer.d.ts +0 -4
  93. package/dist/components/Drawer/Drawer.types.d.ts +0 -3
  94. package/dist/components/Drawer/index.d.ts +0 -3
  95. package/dist/components/Dropdown/Dropdown.d.ts +0 -3
  96. package/dist/components/Dropdown/Dropdown.types.d.ts +0 -5
  97. package/dist/components/Dropdown/index.d.ts +0 -3
  98. package/dist/components/Empty/Empty.d.ts +0 -2
  99. package/dist/components/Empty/Empty.types.d.ts +0 -3
  100. package/dist/components/Empty/index.d.ts +0 -3
  101. package/dist/components/ErrorPage/ErrorPage.d.ts +0 -3
  102. package/dist/components/ErrorPage/ErrorPage.types.d.ts +0 -13
  103. package/dist/components/ErrorPage/index.d.ts +0 -3
  104. package/dist/components/Flex/Flex.d.ts +0 -4
  105. package/dist/components/Flex/Flex.types.d.ts +0 -3
  106. package/dist/components/Flex/index.d.ts +0 -3
  107. package/dist/components/FloatButton/FloatButton.d.ts +0 -2
  108. package/dist/components/FloatButton/FloatButton.types.d.ts +0 -3
  109. package/dist/components/FloatButton/index.d.ts +0 -3
  110. package/dist/components/Form/Form.d.ts +0 -15
  111. package/dist/components/Form/Form.types.d.ts +0 -5
  112. package/dist/components/Form/index.d.ts +0 -2
  113. package/dist/components/Grid/index.d.ts +0 -2
  114. package/dist/components/Icons/Icons.d.ts +0 -19
  115. package/dist/components/Icons/index.d.ts +0 -1
  116. package/dist/components/Image/Image.d.ts +0 -6
  117. package/dist/components/Image/Image.types.d.ts +0 -6
  118. package/dist/components/Image/index.d.ts +0 -3
  119. package/dist/components/ImgCrop/ImgCrop.d.ts +0 -4
  120. package/dist/components/ImgCrop/index.d.ts +0 -1
  121. package/dist/components/Input/Input.d.ts +0 -9
  122. package/dist/components/Input/Input.types.d.ts +0 -17
  123. package/dist/components/Input/index.d.ts +0 -3
  124. package/dist/components/InputNumber/InputNumber.d.ts +0 -3
  125. package/dist/components/InputNumber/InputNumber.types.d.ts +0 -3
  126. package/dist/components/InputNumber/index.d.ts +0 -3
  127. package/dist/components/Layout/Layout.d.ts +0 -2
  128. package/dist/components/Layout/Layout.types.d.ts +0 -3
  129. package/dist/components/Layout/index.d.ts +0 -3
  130. package/dist/components/LazyLoadImage/LazyLoadImage.d.ts +0 -3
  131. package/dist/components/LazyLoadImage/LazyLoadImage.types.d.ts +0 -3
  132. package/dist/components/LazyLoadImage/index.d.ts +0 -1
  133. package/dist/components/List/List.d.ts +0 -10
  134. package/dist/components/List/List.types.d.ts +0 -8
  135. package/dist/components/List/index.d.ts +0 -3
  136. package/dist/components/MainLayout/AppMenu/AppMenu.d.ts +0 -13
  137. package/dist/components/MainLayout/AppMenu/index.d.ts +0 -1
  138. package/dist/components/MainLayout/Content/Content.d.ts +0 -3
  139. package/dist/components/MainLayout/Content/Content.types.d.ts +0 -3
  140. package/dist/components/MainLayout/Content/index.d.ts +0 -2
  141. package/dist/components/MainLayout/Header/Header.d.ts +0 -3
  142. package/dist/components/MainLayout/Header/Header.types.d.ts +0 -90
  143. package/dist/components/MainLayout/Header/Notification.d.ts +0 -11
  144. package/dist/components/MainLayout/Header/index.d.ts +0 -2
  145. package/dist/components/MainLayout/MainLayout.d.ts +0 -14
  146. package/dist/components/MainLayout/MainLayout.types.d.ts +0 -97
  147. package/dist/components/MainLayout/SideBarMenu/SideBarMenu.d.ts +0 -10
  148. package/dist/components/MainLayout/SideBarMenu/SideBarMenu.types.d.ts +0 -27
  149. package/dist/components/MainLayout/SideBarMenu/index.d.ts +0 -2
  150. package/dist/components/MainLayout/index.d.ts +0 -4
  151. package/dist/components/Mentions/Mentions.d.ts +0 -2
  152. package/dist/components/Mentions/Mentions.types.d.ts +0 -2
  153. package/dist/components/Mentions/index.d.ts +0 -2
  154. package/dist/components/Menu/Menu.d.ts +0 -2
  155. package/dist/components/Menu/Menu.types.d.ts +0 -8
  156. package/dist/components/Menu/index.d.ts +0 -2
  157. package/dist/components/Message/Message.d.ts +0 -2
  158. package/dist/components/Message/Message.types.d.ts +0 -0
  159. package/dist/components/Message/index.d.ts +0 -1
  160. package/dist/components/Modal/Modal.d.ts +0 -13
  161. package/dist/components/Modal/Modal.types.d.ts +0 -19
  162. package/dist/components/Modal/index.d.ts +0 -3
  163. package/dist/components/Notification/Notification.d.ts +0 -2
  164. package/dist/components/Notification/index.d.ts +0 -1
  165. package/dist/components/Pagination/Pagination.d.ts +0 -4
  166. package/dist/components/Pagination/Pagination.types.d.ts +0 -3
  167. package/dist/components/Pagination/index.d.ts +0 -3
  168. package/dist/components/Popconfirm/Popconfirm.d.ts +0 -4
  169. package/dist/components/Popconfirm/Popconfirm.types.d.ts +0 -8
  170. package/dist/components/Popconfirm/index.d.ts +0 -3
  171. package/dist/components/Popover/Popover.d.ts +0 -3
  172. package/dist/components/Popover/Popover.types.d.ts +0 -5
  173. package/dist/components/Popover/index.d.ts +0 -3
  174. package/dist/components/Progress/Progress.d.ts +0 -2
  175. package/dist/components/Progress/Progress.types.d.ts +0 -3
  176. package/dist/components/Progress/index.d.ts +0 -3
  177. package/dist/components/QRCode/QRCode.d.ts +0 -4
  178. package/dist/components/QRCode/QRCode.types.d.ts +0 -3
  179. package/dist/components/QRCode/index.d.ts +0 -3
  180. package/dist/components/Radio/Radio.d.ts +0 -6
  181. package/dist/components/Radio/Radio.types.d.ts +0 -5
  182. package/dist/components/Radio/index.d.ts +0 -3
  183. package/dist/components/Rate/Rate.d.ts +0 -4
  184. package/dist/components/Rate/Rate.types.d.ts +0 -3
  185. package/dist/components/Rate/index.d.ts +0 -3
  186. package/dist/components/Row/Row.d.ts +0 -3
  187. package/dist/components/Row/Row.types.d.ts +0 -4
  188. package/dist/components/Row/index.d.ts +0 -3
  189. package/dist/components/ScrollView/ScrollView.d.ts +0 -4
  190. package/dist/components/ScrollView/ScrollView.types.d.ts +0 -4
  191. package/dist/components/ScrollView/index.d.ts +0 -3
  192. package/dist/components/Segmented/Segmented.d.ts +0 -4
  193. package/dist/components/Segmented/Segmented.types.d.ts +0 -3
  194. package/dist/components/Segmented/index.d.ts +0 -3
  195. package/dist/components/Select/Select.d.ts +0 -7
  196. package/dist/components/Select/Select.types.d.ts +0 -19
  197. package/dist/components/Select/index.d.ts +0 -3
  198. package/dist/components/SelectField/SelectField.d.ts +0 -3
  199. package/dist/components/SelectField/SelectField.types.d.ts +0 -10
  200. package/dist/components/SelectField/index.d.ts +0 -3
  201. package/dist/components/Skeleton/Skeleton.d.ts +0 -2
  202. package/dist/components/Skeleton/Skeleton.types.d.ts +0 -3
  203. package/dist/components/Skeleton/index.d.ts +0 -3
  204. package/dist/components/Slider/Slider.d.ts +0 -4
  205. package/dist/components/Slider/Slider.types.d.ts +0 -5
  206. package/dist/components/Slider/index.d.ts +0 -3
  207. package/dist/components/Space/Space.d.ts +0 -2
  208. package/dist/components/Space/Space.types.d.ts +0 -3
  209. package/dist/components/Space/index.d.ts +0 -2
  210. package/dist/components/Spin/Spin.d.ts +0 -3
  211. package/dist/components/Spin/Spin.types.d.ts +0 -4
  212. package/dist/components/Spin/index.d.ts +0 -3
  213. package/dist/components/Statistic/Statistic.d.ts +0 -4
  214. package/dist/components/Statistic/Statistic.types.d.ts +0 -3
  215. package/dist/components/Statistic/index.d.ts +0 -3
  216. package/dist/components/Steps/Steps.d.ts +0 -2
  217. package/dist/components/Steps/Steps.types.d.ts +0 -5
  218. package/dist/components/Steps/index.d.ts +0 -3
  219. package/dist/components/Switch/Switch.d.ts +0 -4
  220. package/dist/components/Switch/Switch.types.d.ts +0 -3
  221. package/dist/components/Switch/index.d.ts +0 -3
  222. package/dist/components/Table/ResizeableTitle.d.ts +0 -2
  223. package/dist/components/Table/Table.d.ts +0 -4
  224. package/dist/components/Table/Table.types.d.ts +0 -33
  225. package/dist/components/Table/index.d.ts +0 -3
  226. package/dist/components/Tabs/Tabs.d.ts +0 -6
  227. package/dist/components/Tabs/Tabs.types.d.ts +0 -9
  228. package/dist/components/Tabs/index.d.ts +0 -3
  229. package/dist/components/Tag/Tag.d.ts +0 -4
  230. package/dist/components/Tag/Tag.types.d.ts +0 -3
  231. package/dist/components/Tag/index.d.ts +0 -3
  232. package/dist/components/TextEditor/BubbleMenu/TextEditorBubbleMenu.d.ts +0 -27
  233. package/dist/components/TextEditor/ColorPicker/ColorPicker.component.d.ts +0 -6
  234. package/dist/components/TextEditor/FontSize/index.d.ts +0 -2
  235. package/dist/components/TextEditor/Image/NodeView.d.ts +0 -14
  236. package/dist/components/TextEditor/Image/icons/index.d.ts +0 -6
  237. package/dist/components/TextEditor/Image/index.d.ts +0 -28
  238. package/dist/components/TextEditor/Image/resizableMediaMenuUtil.d.ts +0 -9
  239. package/dist/components/TextEditor/Image/upload_image.d.ts +0 -7
  240. package/dist/components/TextEditor/MentionList.d.ts +0 -3
  241. package/dist/components/TextEditor/Menu/Menu.component.d.ts +0 -6
  242. package/dist/components/TextEditor/Menu/index.d.ts +0 -1
  243. package/dist/components/TextEditor/SmilieReplacer.d.ts +0 -2
  244. package/dist/components/TextEditor/Suggestions/EditorSuggestionsInlineRender.d.ts +0 -10
  245. package/dist/components/TextEditor/Suggestions/Mention.d.ts +0 -6
  246. package/dist/components/TextEditor/Suggestions/MentionExtension.d.ts +0 -2
  247. package/dist/components/TextEditor/Suggestions/MentionList.d.ts +0 -8
  248. package/dist/components/TextEditor/Suggestions/Suggestions.d.ts +0 -2
  249. package/dist/components/TextEditor/TableTools/TableTools.component.d.ts +0 -11
  250. package/dist/components/TextEditor/TextBubbleMenu/TextBubbleMenu.d.ts +0 -6
  251. package/dist/components/TextEditor/TextEditor.d.ts +0 -11
  252. package/dist/components/TextEditor/TextEditor.types.d.ts +0 -71
  253. package/dist/components/TextEditor/components/ActionButton.d.ts +0 -0
  254. package/dist/components/TextEditor/index.d.ts +0 -3
  255. package/dist/components/TimePicker/TimePicker.d.ts +0 -7
  256. package/dist/components/TimePicker/TimePicker.types.d.ts +0 -5
  257. package/dist/components/TimePicker/index.d.ts +0 -3
  258. package/dist/components/Timeline/Timeline.d.ts +0 -2
  259. package/dist/components/Timeline/Timeline.types.d.ts +0 -6
  260. package/dist/components/Timeline/index.d.ts +0 -3
  261. package/dist/components/Tooltip/Tooltip.d.ts +0 -4
  262. package/dist/components/Tooltip/Tooltip.types.d.ts +0 -2
  263. package/dist/components/Tooltip/index.d.ts +0 -3
  264. package/dist/components/Tour/Tour.d.ts +0 -4
  265. package/dist/components/Tour/Tour.types.d.ts +0 -3
  266. package/dist/components/Tour/index.d.ts +0 -3
  267. package/dist/components/Tree/Tree.d.ts +0 -4
  268. package/dist/components/Tree/Tree.types.d.ts +0 -3
  269. package/dist/components/Tree/index.d.ts +0 -3
  270. package/dist/components/TreeSelect/TreeSelect.d.ts +0 -8
  271. package/dist/components/TreeSelect/TreeSelect.types.d.ts +0 -10
  272. package/dist/components/TreeSelect/index.d.ts +0 -3
  273. package/dist/components/TreeSelectField/TreeSelectField.d.ts +0 -3
  274. package/dist/components/TreeSelectField/TreeSelectField.types.d.ts +0 -7
  275. package/dist/components/TreeSelectField/index.d.ts +0 -2
  276. package/dist/components/Typography/Typography.d.ts +0 -10
  277. package/dist/components/Typography/Typography.types.d.ts +0 -10
  278. package/dist/components/Typography/index.d.ts +0 -3
  279. package/dist/components/Upload/Upload.d.ts +0 -10
  280. package/dist/components/Upload/Upload.types.d.ts +0 -8
  281. package/dist/components/Upload/index.d.ts +0 -3
  282. package/dist/components/VideoPlayer/VideoPlayer.d.ts +0 -4
  283. package/dist/components/VideoPlayer/VideoPlayer.types.d.ts +0 -19
  284. package/dist/components/VideoPlayer/index.d.ts +0 -3
  285. package/dist/components/VirtualList/VirtualList.d.ts +0 -4
  286. package/dist/components/VirtualList/VirtualList.types.d.ts +0 -36
  287. package/dist/components/VirtualList/index.d.ts +0 -3
  288. package/dist/components/index.d.ts +0 -82
  289. package/dist/data/LocalesTexts/EnglishTexts.d.ts +0 -67
  290. package/dist/data/LocalesTexts/VietnameseTexts.d.ts +0 -67
  291. package/dist/data/Permissions.d.ts +0 -5
  292. package/dist/data/SideBarMenu.d.ts +0 -2
  293. package/dist/hooks/ConfigHooks.d.ts +0 -10
  294. package/dist/hooks/DeviceHook.d.ts +0 -6
  295. package/dist/hooks/GlobalHooks.d.ts +0 -1
  296. package/dist/hooks/LocaleHook.d.ts +0 -69
  297. package/dist/hooks/i18n.d.ts +0 -7
  298. package/dist/hooks/index.d.ts +0 -5
  299. package/dist/main.css +0 -1
  300. package/dist/main.d.ts +0 -5
  301. package/dist/models/Core/Result.d.ts +0 -7
  302. package/dist/models/Core/index.d.ts +0 -2
  303. package/dist/models/Layout/MenuModel.d.ts +0 -16
  304. package/dist/models/Layout/SideBarMenuModel.d.ts +0 -5
  305. package/dist/models/Layout/index.d.ts +0 -2
  306. package/dist/models/NotificationModel.d.ts +0 -12
  307. package/dist/models/PersonalProfileModel.d.ts +0 -28
  308. package/dist/models/Session/IServiceUser.d.ts +0 -3
  309. package/dist/models/Session/IWebSessionContext.d.ts +0 -21
  310. package/dist/models/Session/index.d.ts +0 -3
  311. package/dist/models/SupportContactModel.d.ts +0 -8
  312. package/dist/models/index.d.ts +0 -6
  313. package/dist/services/DataService.d.ts +0 -4
  314. package/dist/services/FormatDateTimeService.d.ts +0 -13
  315. package/dist/services/LayoutService.d.ts +0 -11
  316. package/dist/services/NotificationService.d.ts +0 -24
  317. package/dist/services/Service.d.ts +0 -1
  318. package/dist/services/index.d.ts +0 -4
  319. package/dist/styles/components/layout/test.d.ts +0 -0
  320. package/dist/styles/font.d.ts +0 -0
  321. package/dist/theme/index.d.ts +0 -1
  322. package/dist/theme/styles.d.ts +0 -62
  323. package/dist/vite.svg +0 -1
@@ -1,1141 +0,0 @@
1
- const docTien = new DocTienBangChu();
2
- const DEFAULT_MONEY_UNIT = 'đồng';
3
-
4
- var isDetail = false;
5
- var isMasterDetail = false;
6
- var colName = undefined;
7
- var mdCellId = undefined;
8
- var masterDetailId = undefined;
9
-
10
- function capitalize(word = '') {
11
- word = word.toLowerCase();
12
- return word.charAt(0).toUpperCase() + word.slice(1);
13
- }
14
-
15
- function runScript(scriptString) {
16
- eval(scriptString);
17
- }
18
-
19
- function isNumeric(n) {
20
- return !isNaN(parseFloat(n)) && isFinite(n);
21
- }
22
-
23
- function getMoneyUnitName(unit) {
24
- switch (unit) {
25
- case 'VND':
26
- return 'đồng';
27
- case 'USD':
28
- return 'đô la';
29
- case 'EUR':
30
- return 'ơ-rô';
31
- case 'JPY':
32
- return 'yên';
33
- case 'SGD':
34
- return 'đô la Singapore';
35
- case 'KRW':
36
- return 'won';
37
- default:
38
- return '';
39
- }
40
- }
41
-
42
- function docSoTien(number, unit = DEFAULT_MONEY_UNIT, locale = 'vi') {
43
- let result = '';
44
- const numbers = number?.toString().split('.');
45
-
46
- if (locale === 'en') {
47
- const numberText1 = numberToTextEN(Number(numbers[0]));
48
- result = numberText1.trim();
49
- } else {
50
- const numberText1 = docTien.doc(numbers[0]);
51
- result = numberText1.trim();
52
- }
53
-
54
- if (numbers.length === 2) {
55
- if (locale === 'en') {
56
- const numberText2 = numberToTextEN(numbers[1]);
57
- result += ` point ${numberText2.toLowerCase()}`;
58
- } else {
59
- const numberText2 = docTien.doc(numbers[1]);
60
- result += ` phẩy ${numberText2.toLowerCase()}`;
61
- }
62
- }
63
- result = capitalize(result);
64
- if (unit?.trim() !== '') {
65
- result += ` ${unit}`;
66
- }
67
-
68
- return result;
69
- }
70
-
71
- function fetchDataFromApi(api, from, property, to, fromName) {
72
- var htmlElement = document.getElementById('field_' + fromName);
73
- if (htmlElement && htmlElement.tagName === 'SPAN') {
74
- return;
75
- }
76
- if (from && from[property]) {
77
- if (!isNumeric(from[property])) {
78
- return;
79
- }
80
- api = window.location.origin + api + from[property];
81
- var myHeaders = new Headers();
82
- myHeaders.append('Accept', '*/*');
83
- myHeaders.append('Accept-Language', 'en');
84
- myHeaders.append('Accept-Encoding', 'gzip, deflate, br');
85
- myHeaders.append('Connection', 'keep-alive');
86
- var requestOptions = {
87
- method: 'GET',
88
- headers: myHeaders,
89
- redirect: 'follow',
90
- };
91
-
92
- fetch(api, requestOptions)
93
- .then(response => response.text())
94
- .then(result => {
95
- result = result.replace(/"/g, '');
96
-
97
- const textValue = document.getElementById('field_' + to);
98
-
99
- if (textValue) {
100
- if (result) {
101
- textValue.innerHTML = result;
102
- } else {
103
- textValue.innerHTML = '';
104
- }
105
- }
106
- })
107
- .catch(error => console.log('error', error));
108
- }
109
- }
110
-
111
- function getPathFromUrl(url) {
112
- return url.split(/[?#]/)[0];
113
- }
114
-
115
- function searchDataByProperyName(api, from, to) {
116
- api = window.location.origin + api + encodeURIComponent(from.value);
117
- var myHeaders = new Headers();
118
- myHeaders.append('Accept', '*/*');
119
- myHeaders.append('Accept-Language', 'en');
120
- myHeaders.append('Accept-Encoding', 'gzip, deflate, br');
121
- myHeaders.append('Connection', 'keep-alive');
122
- var requestOptions = {
123
- method: 'GET',
124
- headers: myHeaders,
125
- redirect: 'follow',
126
- };
127
-
128
- fetch(api, requestOptions)
129
- .then(response => response.json())
130
- .then(result => {
131
- mapArrayIntoChoiceProperty(to, result);
132
- })
133
- .catch(error => console.log('error', error));
134
- }
135
-
136
- function _searchDataAndMapIntoDropdown(api, from, to) {
137
- searchDataAndMapIntoDropdown(api, from, to);
138
- }
139
-
140
- function searchDataAndMapIntoDropdown(api, from, to) {
141
- if (from && !isHtmlCollection(from)) {
142
- api = window.location.origin + api + encodeURIComponent(from.value);
143
- var myHeaders = new Headers();
144
- myHeaders.append('Accept', '*/*');
145
- myHeaders.append('Accept-Language', 'en');
146
- myHeaders.append('Accept-Encoding', 'gzip, deflate, br');
147
- myHeaders.append('Connection', 'keep-alive');
148
- var requestOptions = {
149
- method: 'GET',
150
- headers: myHeaders,
151
- redirect: 'follow',
152
- };
153
-
154
- fetch(api, requestOptions)
155
- .then(response => {
156
- if (response.ok) {
157
- return response.json();
158
- }
159
- console.log('Error: searchDataAndMapIntoDropdown');
160
- throw new Error();
161
- })
162
- .then(result => {
163
- mapDropDownValueIntoProperty(to, result);
164
- });
165
- }
166
- }
167
-
168
- function _searchDataFromMDAndMapIntoMD(api, from, to, fromName) {
169
- searchDataFromMDAndMapIntoMD(api, from, to, fromName);
170
- }
171
-
172
- function mapMDFromMD({
173
- from,
174
- fromName = 'value',
175
- masterDetailId,
176
- fromMDName,
177
- filterName = 'UserWorkflowId',
178
- toMDName,
179
- }) {
180
- searchDataFromMDAndMapIntoMD(
181
- `/api/v2/workflowReport/SearchDataFromMDAndMapIntoMD/${masterDetailId}?filterName=${filterName}&mdName=${fromMDName}&filterValue=`,
182
- from,
183
- `${toMDName}`,
184
- fromName
185
- );
186
- }
187
-
188
- function searchDataFromMDAndMapIntoMD(api, from, to, fromName) {
189
- if (from) {
190
- api =
191
- window.location.origin +
192
- api +
193
- encodeURIComponent(from[fromName ?? 'value']);
194
-
195
- var myHeaders = new Headers();
196
-
197
- myHeaders.append('Accept', '*/*');
198
- myHeaders.append('Accept-Language', 'en');
199
- myHeaders.append('Accept-Encoding', 'gzip, deflate, br');
200
- myHeaders.append('Connection', 'keep-alive');
201
-
202
- var requestOptions = {
203
- method: 'GET',
204
- headers: myHeaders,
205
- redirect: 'follow',
206
- };
207
-
208
- fetch(api, requestOptions)
209
- .then(response => response.json())
210
- .then(result => {
211
- mapMdValueIntoMD(to, result);
212
- })
213
- .catch(error => console.log('error', error));
214
- }
215
- }
216
-
217
- // function reSearchDataByProperyName(api, from, fromProperty, to) {
218
- // console.log('searchDataByProperyName');
219
- // api = window.location.origin + api + from[fromProperty];
220
- // var myHeaders = new Headers();
221
- // myHeaders.append('Accept', '*/*');
222
- // myHeaders.append('Accept-Language', 'en');
223
- // myHeaders.append('Accept-Encoding', 'gzip, deflate, br');
224
- // myHeaders.append('Connection', 'keep-alive');
225
- // var requestOptions = {
226
- // method: 'GET',
227
- // headers: myHeaders,
228
- // redirect: 'follow',
229
- // };
230
-
231
- // fetch(api, requestOptions)
232
- // .then(response => response.json())
233
- // .then(result => {
234
- // console.log(result);
235
- // mapArrayIntoChoiceProperty(to, result);
236
- // })
237
- // .catch(error => console.log('error', error));
238
- // }
239
-
240
- function fromSelectToText(dataFrom, dataTo) {
241
- const selectElement = document.getElementById(dataFrom);
242
- if (selectElement) {
243
- const selectItems = selectElement.getElementsByClassName(
244
- 'ant-select-selection-item'
245
- );
246
- if (selectItems && selectItems.length > 0) {
247
- const title = selectItems[0].title;
248
- const textValue = document.getElementById('field_' + dataTo);
249
- if (textValue) {
250
- const value = title.split('=')[0].trim();
251
- textValue.innerHTML = value;
252
- }
253
- }
254
- }
255
- }
256
-
257
- function _numberToText(dataFrom, dataTo, unitId, locale) {
258
- numberToText(dataFrom, dataTo, unitId, locale);
259
- }
260
-
261
- function numberToText(dataFrom, dataTo, unitId, locale) {
262
- if (isDetail === undefined || isDetail === null || isDetail === false) {
263
- let numberValue = getValue(dataFrom);
264
- if (numberValue !== undefined && numberValue !== null) {
265
- // numberValue = formatNumberString(numberValue, locale);
266
-
267
- const textValueElement = getElementById(dataTo);
268
- if (textValueElement) {
269
- if (numberValue !== undefined && numberValue !== null) {
270
- let unit = DEFAULT_MONEY_UNIT;
271
-
272
- if (unitId) {
273
- const unitElement = getElementById(unitId);
274
-
275
- if (unitElement) {
276
- const itemValue = getValue(unitId);
277
- if (itemValue !== undefined) {
278
- const unitName = getMoneyUnitName(itemValue);
279
- unit = unitName;
280
- }
281
- } else {
282
- unit = unitId;
283
- }
284
- }
285
- let text = docSoTien(numberValue.toString(), unit, locale);
286
- text = text?.replaceAll(' ', ' ');
287
- textValueElement.innerHTML = text;
288
- } else {
289
- textValueElement.innerHTML = '';
290
- }
291
- }
292
- }
293
- } else {
294
- numberToTextDetail(dataFrom, dataTo, unitId, locale);
295
- }
296
- }
297
-
298
- function numberToTextEN(n) {
299
- if (n < 0) return false;
300
-
301
- // Arrays to hold words for single-digit, double-digit, and below-hundred numbers
302
- single_digit = [
303
- '',
304
- 'One',
305
- 'Two',
306
- 'Three',
307
- 'Four',
308
- 'Five',
309
- 'Six',
310
- 'Seven',
311
- 'Eight',
312
- 'Nine',
313
- ];
314
- double_digit = [
315
- 'Ten',
316
- 'Eleven',
317
- 'Twelve',
318
- 'Thirteen',
319
- 'Fourteen',
320
- 'Fifteen',
321
- 'Sixteen',
322
- 'Seventeen',
323
- 'Eighteen',
324
- 'Nineteen',
325
- ];
326
- below_hundred = [
327
- 'Twenty',
328
- 'Thirty',
329
- 'Forty',
330
- 'Fifty',
331
- 'Sixty',
332
- 'Seventy',
333
- 'Eighty',
334
- 'Ninety',
335
- ];
336
-
337
- if (n === 0) return 'Zero';
338
-
339
- // Recursive function to translate the number into words
340
- function translate(n) {
341
- let word = '';
342
- if (n < 10) {
343
- word = single_digit[n] + ' ';
344
- } else if (n < 20) {
345
- word = double_digit[n - 10] + ' ';
346
- } else if (n < 100) {
347
- let rem = translate(n % 10);
348
- word = below_hundred[(n - (n % 10)) / 10 - 2] + ' ' + rem;
349
- } else if (n < 1000) {
350
- word =
351
- single_digit[Math.trunc(n / 100)] + ' Hundred ' + translate(n % 100);
352
- } else if (n < 1000000) {
353
- word =
354
- translate(parseInt(n / 1000)).trim() +
355
- ' Thousand ' +
356
- translate(n % 1000);
357
- } else if (n < 1000000000) {
358
- word =
359
- translate(parseInt(n / 1000000)).trim() +
360
- ' Million ' +
361
- translate(n % 1000000);
362
- } else {
363
- word =
364
- translate(parseInt(n / 1000000000)).trim() +
365
- ' Billion ' +
366
- translate(n % 1000000000);
367
- }
368
- return word;
369
- }
370
-
371
- // Get the result by translating the given number
372
- let result = translate(n);
373
- return result.trim();
374
- }
375
-
376
- function readNumber(dataFrom, unitId, locale, dataTo = colName) {
377
- if (isDetail === undefined || isDetail === null || isDetail === false) {
378
- let numberValue = getFieldValue(dataFrom);
379
- if (numberValue !== undefined && numberValue !== null) {
380
- numberValue = formatNumberString(numberValue, locale);
381
- const textValueElement = getElementById(dataTo);
382
- if (textValueElement) {
383
- if (numberValue !== undefined && numberValue !== null) {
384
- let unit = DEFAULT_MONEY_UNIT;
385
- if (unitId) {
386
- const unitElement = getElementById(unitId);
387
- if (unitElement) {
388
- const itemValue = getValue(unitId);
389
- if (itemValue !== undefined) {
390
- const unitName = getMoneyUnitName(itemValue);
391
- unit = unitName;
392
- }
393
- } else {
394
- unit = unitId;
395
- }
396
- }
397
- let text = docSoTien(numberValue.toString(), unit, locale);
398
- text = text?.replaceAll(' ', ' ');
399
- // textValueElement.innerHTML = text;
400
- setValue(dataTo, text);
401
- } else {
402
- // textValueElement.innerHTML = '';
403
- setValue(dataTo, '');
404
- }
405
- }
406
- }
407
- } else {
408
- numberToTextDetail(dataFrom, dataTo, unitId, locale);
409
- }
410
- }
411
-
412
- function numberToTextDetail(dataFrom, dataTo, unitId, locale) {
413
- let unit = DEFAULT_MONEY_UNIT;
414
- if (unitId) {
415
- const unitElement = document.querySelector(`#${unitId}`);
416
- if (unitElement) {
417
- const itemElement = unitElement.querySelector(
418
- '.ant-select-selection-item'
419
- );
420
- if (itemElement && itemElement.title) {
421
- const unitName = getMoneyUnitName(itemElement.title);
422
- unit = unitName;
423
- }
424
- } else {
425
- unit = unitId;
426
- }
427
- }
428
-
429
- const numberValue = getValueMD(dataFrom);
430
- if (numberValue) {
431
- const value = formatNumberString(numberValue);
432
- const textValue = getElementById(dataTo, true);
433
- if (textValue) {
434
- if (value !== undefined && value !== null) {
435
- let text = docSoTien(value, unit, locale);
436
- text = text?.replaceAll(' ', ' ');
437
- textValue.innerHTML = text;
438
- } else {
439
- textValue.innerHTML = '';
440
- }
441
- }
442
- }
443
- }
444
-
445
- function textNumberToText(dataFrom, dataTo, unitId) {
446
- const fromElement = document.getElementById('field_' + dataFrom);
447
- if (fromElement) {
448
- const fromValue = fromElement.innerHTML;
449
- const numberValue = formatNumberString(fromValue);
450
- const toElement = document.getElementById('field_' + dataTo);
451
- if (toElement) {
452
- if (numberValue) {
453
- let unit = DEFAULT_MONEY_UNIT;
454
- if (unitId) {
455
- const unitElement = document.querySelector(`#${unitId}`);
456
- if (unitElement) {
457
- const itemElement = unitElement.querySelector(
458
- '.ant-select-selection-item'
459
- );
460
- if (itemElement && itemElement.title) {
461
- const unitName = getMoneyUnitName(itemElement.title);
462
- unit = unitName;
463
- }
464
- } else {
465
- unit = unitId;
466
- }
467
- }
468
- let text = docSoTien(numberValue.toString(), unit);
469
- text = text?.replaceAll(' ', ' ');
470
- toElement.innerHTML = text;
471
- } else {
472
- toElement.innerHTML = '';
473
- }
474
- }
475
- }
476
- }
477
-
478
- function _textNumberToText(dataFrom, dataTo, unitId) {
479
- textNumberToText(dataFrom, dataTo, unitId);
480
- }
481
-
482
- // Locale: "vi" | "en"
483
- function formatNumberString(number, locale = 'vi') {
484
- let result = '0';
485
- if (locale === 'vi') {
486
- result = number
487
- ? number?.toString().replaceAll('.', '').replaceAll('= ', '')
488
- : '0';
489
- result = result.replaceAll(',', '.');
490
- } else {
491
- result = number;
492
- }
493
-
494
- return Number(result);
495
- }
496
-
497
- function setValue(toId, value, isMD = false) {
498
- const name = toId ?? getCurrentId();
499
- window.setFieldValue(name, value, isMD ? masterDetailId : undefined);
500
- }
501
-
502
- function setValueMD(name, value, mdId) {
503
- window.setFieldValue(name, value, mdId);
504
- }
505
-
506
- function calc(name, string) {
507
- try {
508
- if (string && string.length > 0) {
509
- const split = string.split(`'`);
510
- for (let i in split) {
511
- const splitItem = split[i].trim();
512
-
513
- if (splitItem.length > 0 && isStringValid(splitItem)) {
514
- string = calcSub(splitItem, string);
515
- }
516
- }
517
- const money = eval(string);
518
- setValue(name, money);
519
- // const ele = document.getElementById('field_' + name);
520
- // if (ele) {
521
- // if (ele.innerHTML.includes(' %')) {
522
- // result += ' %';
523
- // }
524
- // ele.innerHTML = result;
525
- // }
526
- }
527
- } catch (e) {
528
- console.log(e);
529
- }
530
- }
531
-
532
- const getFieldValue = (name, isMD) => {
533
- return window.getFieldValue(name, isMD);
534
- };
535
-
536
- const handleFormular = (formularString, isMD) => {
537
- if (formularString?.length > 0) {
538
- formularString = formularString.replace(/\s/g, '');
539
- let name = '';
540
- let adding = false;
541
- const ids = [];
542
-
543
- for (let i = 0; i < formularString.length; i++) {
544
- if (formularString[i] === '[') {
545
- adding = true;
546
- } else if (formularString[i] === ']') {
547
- ids.push(name);
548
- adding = false;
549
- name = '';
550
- } else if (adding === true) {
551
- name += formularString[i];
552
- }
553
- }
554
-
555
- let formular = formularString;
556
-
557
- if (ids.length > 0) {
558
- ids.forEach(id => {
559
- const value = getFieldValue(id, isMD) ?? 0;
560
- formular = formular.replaceAll(`[${id}]`, value);
561
- });
562
- }
563
-
564
- return { math: formular, elementIds: ids };
565
- } else {
566
- return { math: formularString, elementIds: [] };
567
- }
568
- };
569
-
570
- function calculate(calcText, to = colName) {
571
- try {
572
- if (calcText && calcText.length > 0) {
573
- const formular = handleFormular(calcText, isMasterDetail);
574
- const result = eval(formular.math);
575
- setValue(to, result, masterDetailId);
576
- }
577
- } catch (e) {
578
- console.log(e);
579
- }
580
- }
581
-
582
- function _calculate(calcText, to) {
583
- calculate(calcText, to);
584
- }
585
-
586
- function _calc(calcText, to) {
587
- calc(calcText, to);
588
- }
589
-
590
- function calcSub(name, string) {
591
- try {
592
- let element =
593
- getElementById(name) ??
594
- document.getElementById(`dynamicWorkflowForm_${name}`);
595
- if (element) {
596
- const num = getValue(name) ?? 0;
597
- string = string.replaceAll(
598
- `'${name}'`,
599
- `
600
- ${num}
601
- `
602
- );
603
- }
604
- } catch (e) {
605
- console.log('calcSub', e);
606
- }
607
- return string;
608
- }
609
-
610
- function isHtmlCollection(element) {
611
- return HTMLCollection.prototype.isPrototypeOf(element);
612
- }
613
-
614
- function mapData(name, from, to, type) {
615
- if (isHtmlCollection(from)) return;
616
-
617
- let value = from ? from[name] : undefined;
618
-
619
- if (value && type === 'number') {
620
- value = convertNumberToText(value);
621
- }
622
- setValue(to, value);
623
- // const toElement = getElementById(to);
624
- // if (toElement) {
625
- // toElement.innerHTML = value ?? '';
626
- // }
627
- }
628
-
629
- function _mapData(name, from, to, type) {
630
- mapData(name, from, to, type);
631
- }
632
-
633
- function mapDataMasterDetail(
634
- from,
635
- fromProperty,
636
- to,
637
- id,
638
- type,
639
- isEditMasterDetail
640
- ) {
641
- try {
642
- if (!isEditMasterDetail) {
643
- if (fromProperty && to && id !== undefined) {
644
- let value = '';
645
- if (from) {
646
- value = from[fromProperty];
647
- // if (value && type === 'number') {
648
- // value = '= ' + convertNumberToText(value);
649
- // }
650
- }
651
- // toElement.innerHTML = value ?? '';
652
- setValueMD(to, value ?? '', id);
653
- }
654
- }
655
- } catch (e) {
656
- console.log('mapDataMasterDetailError:', e);
657
- }
658
- }
659
-
660
- function _mapDataMasterDetail(from, fromProperty, to, id, isEditMasterDetail) {
661
- mapDataMasterDetail(from, fromProperty, to, id, isEditMasterDetail);
662
- }
663
-
664
- function sendLinkToWebView(path, fileName) {
665
- try {
666
- let pathSendToWebView =
667
- window.location.protocol +
668
- '//' +
669
- window.location.host +
670
- path.replace('downloadFile', 'downloadFileAnonymous');
671
- let data = {
672
- path: pathSendToWebView,
673
- fileName: fileName,
674
- };
675
- window.parent.postMessage(JSON.stringify(data), window.parent.origin);
676
- window.postMessage(JSON.stringify(data), window.parent.origin);
677
- window.ReactNativeWebView.postMessage(JSON.stringify(data));
678
- } catch (error) {
679
- console.log(error);
680
- }
681
- }
682
-
683
- function fromSelectToTextMasterDetail(from, fromProperty, to, id) {
684
- if (from) {
685
- let value = from[fromProperty];
686
- const toId = id.toString() + '_' + to;
687
- const toElement = document.getElementById(toId);
688
- if (toElement) {
689
- if (value) {
690
- const textValue = value.split('=')[0].trim();
691
- toElement.innerHTML = textValue;
692
- }
693
- }
694
- }
695
- }
696
-
697
- function isStringValid(string) {
698
- let format = /[!@#$%^&*()+\-=\[\]{};':"\\|,.<>\/?]+/;
699
- return !format.test(string);
700
- }
701
-
702
- function _mapNumberMD2F(fromId, toNumberId, toTextId) {
703
- const num = _mapFromMasterDetail(fromId, toNumberId);
704
-
705
- _numberToTextFromMD(num, toTextId);
706
- }
707
-
708
- function _mapFromMasterDetail(fromId, toId) {
709
- let result;
710
- const fromElement = getElementById(fromId, true);
711
- if (fromElement) {
712
- const fromValue = getValueMD(fromId) ?? 0;
713
- const toElement = document.querySelector(`#field_${toId}`);
714
- if (toElement) {
715
- toElement.innerHTML = fromValue;
716
- result = fromValue;
717
- }
718
- }
719
- return result;
720
- }
721
-
722
- function _numberToTextFromMD(num, dataTo) {
723
- const toElement = document.querySelector(`#field_${dataTo}`);
724
- if (toElement) {
725
- if (num) {
726
- let number = formatNumberString(num);
727
- if (toElement) {
728
- if (number) {
729
- toElement.innerHTML = docTien.doc(number);
730
- } else {
731
- toElement.innerHTML = '';
732
- }
733
- }
734
- } else {
735
- toElement.innerHTML = '';
736
- }
737
- }
738
- }
739
-
740
- function removeDuplicates(arr) {
741
- return arr.filter((item, index) => arr.indexOf(item) === index);
742
- }
743
-
744
- function calcMD(calcText, to, id) {
745
- try {
746
- // const toElement = document.getElementById(`${id}_${to}`);
747
- const toElement = to ? getElementById(`${to}`, true) : getCurrentElement();
748
- let text = calcText.replace(/[^a-zA-Z0-9 ]/g, ' ');
749
-
750
- text = text.trim().replace(/\s+/g, ' ');
751
- let variables = text.split(' ');
752
-
753
- if (toElement && variables.length > 0) {
754
- variables = removeDuplicates(variables);
755
-
756
- const names = [];
757
-
758
- variables.forEach(variable => {
759
- if (isNaN(variable)) {
760
- names.push(variable);
761
- }
762
- });
763
-
764
- let calc = calcText;
765
- names.forEach(name => {
766
- try {
767
- const numberValue = getValueMD(name) ?? 0;
768
- // const num = numberElement
769
- // ? Number(
770
- // formatNumberString(
771
- // numberElement.replace('= ', '').replace(' %', '')
772
- // )
773
- // )
774
- // : 0;
775
-
776
- calc = calc.replaceAll(`'${name}'`, numberValue);
777
- } catch (e) {
778
- throw 'Not found element: ' + name;
779
- }
780
- });
781
- const result = eval(calc);
782
-
783
- // toElement.innerHTML = result;
784
- // toElement.dataValue = result;
785
- setValueMD(to, result, id ?? masterDetailId);
786
- // toElement.innerHTML = `= ${Intl.NumberFormat('vi-VN', {}).format(
787
- // result
788
- // )}`;
789
- }
790
- } catch (e) {
791
- console.log(e);
792
- }
793
- }
794
-
795
- function map(from, to) {}
796
-
797
- function _calcMMD(calcText, to) {
798
- calcMMD(calcText, to);
799
- }
800
-
801
- function calcMMD(calcText, to) {
802
- try {
803
- const toElement = to ? getElementById(`${to}`) : getCurrentElement();
804
-
805
- // const calcText = `('num1_mdsum' - 'num2_mdsum')`;
806
- let calc = calcText;
807
- let text = calcText.replaceAll('+', ' ');
808
- text = text.replaceAll('-', ' ');
809
- text = text.replaceAll('*', ' ');
810
- text = text.replaceAll('/', ' ');
811
- text = text.replaceAll('(', ' ');
812
- text = text.replaceAll(')', ' ');
813
- text = text.replaceAll("'", ' ');
814
- text = text.replaceAll('"', ' ');
815
-
816
- text = text.trim().replace(/\s+/g, ' ');
817
-
818
- let variables = text.split(' ');
819
-
820
- if (toElement && variables.length > 0) {
821
- variables = removeDuplicates(variables);
822
-
823
- const names = [];
824
-
825
- variables.forEach(variable => {
826
- if (isNaN(variable)) {
827
- names.push(variable);
828
- }
829
- });
830
-
831
- names.forEach(name => {
832
- let val = 0;
833
- const nameSplit = name.split('_');
834
- if (nameSplit.length === 2) {
835
- const tableElement = document.getElementById(`${nameSplit[0]}`);
836
- if (tableElement) {
837
- const valueElement = tableElement.querySelector(
838
- `.sum-${nameSplit[1]}`
839
- );
840
-
841
- if (valueElement) {
842
- val = valueElement.innerHTML;
843
- }
844
- }
845
- }
846
- if (val !== 0) {
847
- val = formatNumberString(val);
848
- }
849
- calc = calc.replaceAll(`'${name}'`, val ?? 0);
850
- });
851
- const result = eval(calc !== '()' ? calc : '');
852
- setValue(to, result);
853
- // toElement.innerHTML = Intl.NumberFormat('vi-VN', {}).format(result);
854
- }
855
- } catch (e) {
856
- console.log(e);
857
- }
858
- }
859
-
860
- const getElementById = (name, isMD) => {
861
- if (name) {
862
- let isMasterDetailT = isMD;
863
- if (!isMasterDetailT) {
864
- const splitName = name.split('-');
865
- if (splitName.length === 2 && splitName[0] === 'md') {
866
- isMasterDetailT = true;
867
- }
868
- }
869
- // check if master detail
870
- if (isMasterDetailT && mdCellId) {
871
- const ids = mdCellId.split('_');
872
- if (ids.length === 3) {
873
- const id = `${ids[0]}_${ids[1]}_${name}`;
874
- const ele = document.getElementById(id);
875
- if (ele) {
876
- const element = ele.querySelector(`#${name}`);
877
- if (element) {
878
- return element;
879
- } else {
880
- return ele;
881
- }
882
- }
883
- }
884
- } else {
885
- const ele = document.getElementById('field_' + name);
886
-
887
- if (ele) {
888
- return ele;
889
- } else {
890
- const classEle = document.querySelector(`.field_${name}`);
891
- if (classEle) {
892
- return classEle;
893
- }
894
- return document.getElementById('dynamicWorkflowForm_' + name);
895
- }
896
- }
897
- }
898
- };
899
-
900
- const getValueMD = (name, mdId) => {
901
- return getValue(name, mdId ?? masterDetailId ?? true);
902
- };
903
-
904
- const getValue = (name, mdId) => {
905
- return window.getFieldValue(name, mdId);
906
- // const element = getElementById(name, isMD);
907
-
908
- // if (element) {
909
- // if (element.role === 'combobox') {
910
- // const parentElement = element.parentElement?.parentElement;
911
- // if (parentElement) {
912
- // const selectItem = parentElement.querySelector(
913
- // '.ant-select-selection-item'
914
- // );
915
- // if (selectItem) {
916
- // return selectItem.title;
917
- // }
918
- // }
919
- // }
920
-
921
- // if (element.value) {
922
- // return element.value;
923
- // }
924
- // return element.innerHTML;
925
- // }
926
- };
927
-
928
- const getCurrentElement = isMD => {
929
- let isMasterDetailT = isMasterDetail;
930
- if (isMD !== undefined) {
931
- isMasterDetailT = isMD;
932
- }
933
- if (isMasterDetailT) {
934
- return document.getElementById(mdCellId);
935
- } else {
936
- return document.getElementById('field_' + colName);
937
- }
938
- };
939
-
940
- const getCurrentId = isMD => {
941
- let isMasterDetailT = isMasterDetail;
942
- if (isMD !== undefined) {
943
- isMasterDetailT = isMD;
944
- }
945
- if (isMasterDetailT) {
946
- return mdCellId;
947
- } else {
948
- return colName;
949
- }
950
- };
951
-
952
- function isValidDate(str) {
953
- return dayjs(str, 'YYYY-MM-DD', true).isValid();
954
- }
955
-
956
- const datetime = {
957
- formatDayjs(date) {
958
- if (date) {
959
- if (dayjs.isDayjs(date)) {
960
- return date;
961
- }
962
- let dateTime;
963
- if (date.length === 10) {
964
- let dateSplit = date.split('/');
965
-
966
- if (dateSplit[2].length === 4) {
967
- dateSplit = dateSplit.reverse();
968
- }
969
- dateTime = dateSplit.join('/') + ' 00:00';
970
- } else if (date.length === 16) {
971
- const dateTimes = date.split(' ');
972
- const dateSplit = dateTimes[0].split('/');
973
- dateTime = dateSplit.reverse().join('/') + ` ${dateTimes[1]}`;
974
- } else if (date.length === 19) {
975
- return dayjs(date, 'YYYY-MM-DDTHH:mm:ss');
976
- }
977
- if (dateTime) {
978
- return dayjs(dateTime, 'YYYY/MM/DD HH:mm');
979
- } else if (isValidDate(date)) {
980
- return dayjs(date);
981
- }
982
- }
983
- },
984
-
985
- count(type, fromDateName, toDateName, toId = colName) {
986
- let result = '';
987
-
988
- const fromDateValue = getFieldValue(fromDateName, isMasterDetail);
989
- const toDateValue = getFieldValue(toDateName, isMasterDetail);
990
-
991
- if (
992
- fromDateValue &&
993
- fromDateValue !== 'Invalid Date' &&
994
- toDateValue &&
995
- toDateValue !== 'Invalid Date'
996
- ) {
997
- let fromDate = this.formatDayjs(fromDateValue);
998
- let toDate = this.formatDayjs(toDateValue);
999
-
1000
- let diff = '';
1001
- switch (type) {
1002
- case 'minutes':
1003
- diff = toDate.diff(fromDate, 'minutes');
1004
- break;
1005
- case 'hours':
1006
- diff = toDate.diff(fromDate, 'hours');
1007
- break;
1008
- case 'days':
1009
- diff = toDate.diff(fromDate, 'days') + 1;
1010
- break;
1011
- case 'months':
1012
- diff = toDate.diff(fromDate, 'months');
1013
- break;
1014
- case 'years':
1015
- diff = toDate.diff(fromDate, 'years');
1016
- break;
1017
-
1018
- default:
1019
- break;
1020
- }
1021
- result = diff.toString();
1022
- }
1023
-
1024
- setValue(toId, result, isMasterDetail);
1025
- // toElement.innerHTML = result;
1026
- },
1027
- };
1028
-
1029
- const countYears = (fromDateName, toDateName, toId) => {
1030
- datetime.count('years', fromDateName, toDateName, toId);
1031
- };
1032
-
1033
- const countMonths = (fromDateName, toDateName, toId) => {
1034
- datetime.count('months', fromDateName, toDateName, toId);
1035
- };
1036
-
1037
- const countDays = (fromDateName, toDateName, toId) => {
1038
- datetime.count('days', fromDateName, toDateName, toId);
1039
- };
1040
-
1041
- const countHours = (fromDateName, toDateName, toId) => {
1042
- datetime.count('hours', fromDateName, toDateName, toId);
1043
- };
1044
-
1045
- const countMinutes = (fromDateName, toDateName, toId) => {
1046
- datetime.count('minutes', fromDateName, toDateName, toId);
1047
- };
1048
-
1049
- const validateDatesRange = (startDate, toDate, dateType, count) => {
1050
- window.validateDatesRange(startDate, toDate, dateType, count);
1051
- };
1052
-
1053
- const validatePhoneNumber = name => {
1054
- window.validatePhoneNumber(name);
1055
- };
1056
-
1057
- const validateEmail = name => {
1058
- window.validateEmail(name);
1059
- };
1060
-
1061
- const convertNumberToText = value => {
1062
- return new Intl.NumberFormat('vi-VN').format(Number(value));
1063
- };
1064
-
1065
- const displayNumber = elementId => {
1066
- const id = elementId ?? colName;
1067
- const element = getElementById(id);
1068
- if (element) {
1069
- const value = getValue(id) ?? 0;
1070
- if (!value.includes('.')) {
1071
- element.innerHTML = new Intl.NumberFormat('vi-VN').format(Number(value));
1072
- }
1073
- }
1074
- };
1075
-
1076
- const _displayNumber = elementId => {
1077
- displayNumber(elementId);
1078
- };
1079
-
1080
- const validateForm = (isValid, elementIds, isMD) => {
1081
- window.handleActionButtons(isValid, elementIds, isMD);
1082
- };
1083
-
1084
- const compareNumbers = (compareString, isMD) => {
1085
- const formular = handleFormularString(compareString, isMD);
1086
-
1087
- window.handleActionButtons(eval(formular.math), formular.elementIds, isMD);
1088
- };
1089
-
1090
- const compareNumbersMD = compareString => {
1091
- compareNumbers(compareString, true);
1092
- };
1093
-
1094
- const handleFormularString = (formularString, isMD) => {
1095
- if (formularString?.length > 0) {
1096
- formularString = formularString.replace(/\s/g, '');
1097
- let name = '';
1098
- let adding = false;
1099
- const ids = [];
1100
-
1101
- for (let i = 0; i < formularString.length; i++) {
1102
- if (formularString[i] === '[') {
1103
- adding = true;
1104
- } else if (formularString[i] === ']') {
1105
- ids.push(name);
1106
- adding = false;
1107
- name = '';
1108
- } else if (adding === true) {
1109
- name += formularString[i];
1110
- }
1111
- }
1112
-
1113
- let formular = formularString;
1114
- if (ids.length > 0) {
1115
- ids.forEach(id => {
1116
- const value = formatNumberString(
1117
- isMD ? getValueMD(id) : getValue(id) ?? '0'
1118
- );
1119
- formular = formular.replaceAll(`[${id}]`, value);
1120
- });
1121
- }
1122
- return { math: formular, elementIds: ids };
1123
- } else {
1124
- return { math: formularString, elementIds: [] };
1125
- }
1126
- };
1127
-
1128
- const valid = () => {
1129
- window.handleActionButtons(true);
1130
- };
1131
-
1132
- const invalid = () => {
1133
- window.handleActionButtons(false);
1134
- };
1135
-
1136
- const convertVIToENNumber = num => {
1137
- num = num.replaceAll(',', '-');
1138
- num = num.replaceAll('.', ',');
1139
- num = num.replaceAll('-', '.');
1140
- return num;
1141
- };