ui-soxo-bootstrap-core 2.4.25-dev.41 → 2.4.25-dev.46
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.
- package/.babelrc +8 -8
- package/.github/workflows/npm-publish.yml +52 -55
- package/.husky/pre-commit +11 -11
- package/.prettierrc.json +10 -10
- package/babel.config.js +2 -2
- package/core/components/component-loader/component-loader.js +125 -125
- package/core/components/component-wrapper/component-wrapper.js +121 -121
- package/core/components/external-window/external-window.js +236 -236
- package/core/components/external-window/external-window.test.js +80 -80
- package/core/components/extra-info/extra-info-details.js +155 -155
- package/core/components/extra-info/extra-info-details.scss +26 -26
- package/core/components/extra-info/extra-info.js +134 -134
- package/core/components/index.js +20 -20
- package/core/components/landing-api/landing-api.js +492 -492
- package/core/components/landing-api/landing-api.scss +19 -19
- package/core/components/menu-template-api/menu-template-api.js +321 -321
- package/core/components/root-application-api/root-application-api.js +174 -174
- package/core/index.js +13 -13
- package/core/lib/Store.js +365 -365
- package/core/lib/components/application-bootstrap/application-bootstrap.js +115 -115
- package/core/lib/components/approval-form/approval-form.js +280 -280
- package/core/lib/components/approval-form/approval-form.scss +183 -183
- package/core/lib/components/approval-list/approval-list.js +143 -143
- package/core/lib/components/approval-list/approval-list.scss +2 -2
- package/core/lib/components/approval-list/components/request-card/request-card.js +42 -42
- package/core/lib/components/approval-list/components/request-card/request-card.scss +30 -30
- package/core/lib/components/camera/camera.js +230 -230
- package/core/lib/components/camera/camera.scss +86 -86
- package/core/lib/components/comment-block/comment-block.js +138 -138
- package/core/lib/components/comment-block/comment-block.scss +3 -3
- package/core/lib/components/confirm-modal/confirm-modal.js +82 -82
- package/core/lib/components/confirm-modal/confirm-modal.scss +2 -2
- package/core/lib/components/consent/consent.js +67 -67
- package/core/lib/components/consent/pdf-signature.js +299 -299
- package/core/lib/components/consent/signature-pad.js +90 -90
- package/core/lib/components/consent/signature-pad.scss +14 -14
- package/core/lib/components/file-upload/file-upload.js +133 -133
- package/core/lib/components/finger-print-reader/finger-print-reader.js +295 -295
- package/core/lib/components/finger-print-reader/finger-print-reader.scss +47 -47
- package/core/lib/components/finger-print-search/finger-print-search.js +200 -200
- package/core/lib/components/finger-print-search/finger-print-search.scss +47 -47
- package/core/lib/components/global-header/animations.js +18 -18
- package/core/lib/components/global-header/global-header.js +412 -412
- package/core/lib/components/global-header/global-header.scss +369 -369
- package/core/lib/components/header/generic-header.js +76 -76
- package/core/lib/components/header/generic-header.scss +99 -99
- package/core/lib/components/image-preview/image-preview.js +33 -33
- package/core/lib/components/image-wrapper/image-wrapper.js +108 -108
- package/core/lib/components/image-wrapper/image-wrapper.scss +12 -12
- package/core/lib/components/index.js +206 -206
- package/core/lib/components/landing/landing.js +403 -403
- package/core/lib/components/language-switcher/language-switcher.js +49 -49
- package/core/lib/components/menu-context/menu-context.js +69 -69
- package/core/lib/components/menu-template/menu-template.js +249 -249
- package/core/lib/components/menu-template/menu-template.scss +9 -9
- package/core/lib/components/modal-search/modal-search.js +153 -153
- package/core/lib/components/modal-search/modal-search.scss +78 -78
- package/core/lib/components/modal-wrapper/modal-manager.js +15 -15
- package/core/lib/components/modal-wrapper/modal-wrapper.js +108 -108
- package/core/lib/components/modal-wrapper/modal-wrapper.scss +13 -13
- package/core/lib/components/notice-board/notice-board.js +132 -132
- package/core/lib/components/notice-board/notice-board.scss +65 -65
- package/core/lib/components/page-container/page-container.js +55 -55
- package/core/lib/components/page-container/page-container.scss +8 -8
- package/core/lib/components/page-header/page-header.js +23 -23
- package/core/lib/components/page-header/page-header.scss +17 -17
- package/core/lib/components/pdf-viewer/pdf-viewer.js +56 -56
- package/core/lib/components/portlet-table/components/table-actions/table-actions.js +58 -58
- package/core/lib/components/portlet-table/components/table-actions/table-actions.scss +1 -1
- package/core/lib/components/portlet-table/components/table-data/table-data.js +106 -106
- package/core/lib/components/portlet-table/portlet-table.js +63 -63
- package/core/lib/components/portlet-table/portlet-table.scss +90 -90
- package/core/lib/components/progress-bar/progress-bar.js +58 -58
- package/core/lib/components/progress-bar/progress-bar.scss +15 -15
- package/core/lib/components/request-form/request-form.js +110 -110
- package/core/lib/components/root-application/root-application.js +70 -70
- package/core/lib/components/rupee/rupee.js +14 -14
- package/core/lib/components/script-input/script-input.js +169 -169
- package/core/lib/components/script-input/script-input.scss +8 -8
- package/core/lib/components/sidemenu/animations.js +51 -51
- package/core/lib/components/sidemenu/sidemenu.js +572 -572
- package/core/lib/components/sidemenu/sidemenu.scss +277 -277
- package/core/lib/components/spotlight-search/spotlight-search.component.js +635 -635
- package/core/lib/components/spotlight-search/spotlight-search.component.scss +78 -78
- package/core/lib/components/table-wrapper/table-wrapper.js +135 -135
- package/core/lib/components/table-wrapper/table-wrapper.scss +72 -72
- package/core/lib/components/ui_elements/Loader.js +12 -12
- package/core/lib/components/ui_elements/Notify.js +12 -12
- package/core/lib/components/ui_elements/PlaceHolder.js +33 -33
- package/core/lib/components/web-camera/web-camera.js +161 -161
- package/core/lib/components/web-camera/web-camera.scss +28 -28
- package/core/lib/core.md +9 -9
- package/core/lib/elements/Elements.md +2 -2
- package/core/lib/elements/basic/LoggedUserRedirect.js +21 -21
- package/core/lib/elements/basic/PrivateRoute.js +16 -16
- package/core/lib/elements/basic/button/Button.md +43 -43
- package/core/lib/elements/basic/button/button.js +170 -170
- package/core/lib/elements/basic/card/Card.md +15 -15
- package/core/lib/elements/basic/card/card.js +40 -40
- package/core/lib/elements/basic/card/card.scss +13 -13
- package/core/lib/elements/basic/checkbox/checkbox.js +23 -23
- package/core/lib/elements/basic/col/col.js +15 -15
- package/core/lib/elements/basic/copy-to-clipboard/Readme.md +40 -40
- package/core/lib/elements/basic/copy-to-clipboard/copy-to-clipboard.js +61 -61
- package/core/lib/elements/basic/country-phone-input/Readme.md +98 -98
- package/core/lib/elements/basic/country-phone-input/country-phone-input.js +106 -106
- package/core/lib/elements/basic/country-phone-input/phone-input.scss +61 -61
- package/core/lib/elements/basic/datepicker/datepicker.js +33 -33
- package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +136 -136
- package/core/lib/elements/basic/empty/empty.js +14 -14
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.js +118 -118
- package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.scss +10 -10
- package/core/lib/elements/basic/form/form.js +70 -70
- package/core/lib/elements/basic/form/form.scss +3 -3
- package/core/lib/elements/basic/image/image.js +45 -45
- package/core/lib/elements/basic/image/image.scss +17 -17
- package/core/lib/elements/basic/image/readme.md +26 -26
- package/core/lib/elements/basic/image-viewer/image-viewer.js +108 -108
- package/core/lib/elements/basic/image-viewer/image-viewer.scss +7 -7
- package/core/lib/elements/basic/input/input.js +81 -81
- package/core/lib/elements/basic/input/readme.md +77 -77
- package/core/lib/elements/basic/json-input/json-input.js +51 -51
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.js +216 -216
- package/core/lib/elements/basic/menu-dashboard/menu-dashboard.scss +28 -28
- package/core/lib/elements/basic/menu-tree/menu-tree.js +114 -114
- package/core/lib/elements/basic/modal/modal.js +64 -64
- package/core/lib/elements/basic/modal/readme.md +62 -62
- package/core/lib/elements/basic/popconfirm/popconfirm.js +17 -17
- package/core/lib/elements/basic/popover/popover.js +12 -12
- package/core/lib/elements/basic/radio/radio.js +18 -18
- package/core/lib/elements/basic/rangepicker/rangepicker.js +141 -141
- package/core/lib/elements/basic/rangepicker/rangepicker.scss +24 -24
- package/core/lib/elements/basic/rangepicker/readme.md +81 -81
- package/core/lib/elements/basic/reference-select/readme.md +18 -18
- package/core/lib/elements/basic/reference-select/reference-select.js +337 -337
- package/core/lib/elements/basic/row/row.js +15 -15
- package/core/lib/elements/basic/select/select.js +46 -46
- package/core/lib/elements/basic/select-box/readme.md +52 -52
- package/core/lib/elements/basic/select-box/select-box.js +63 -63
- package/core/lib/elements/basic/skeleton/readme.md +35 -35
- package/core/lib/elements/basic/skeleton/skeleton.js +35 -35
- package/core/lib/elements/basic/skeleton/skeleton.scss +53 -53
- package/core/lib/elements/basic/space/space.js +12 -12
- package/core/lib/elements/basic/switch/readme.md +29 -29
- package/core/lib/elements/basic/switch/switch.js +67 -67
- package/core/lib/elements/basic/tab/tab.js +14 -14
- package/core/lib/elements/basic/table/readme.md +8 -8
- package/core/lib/elements/basic/table/table.js +100 -100
- package/core/lib/elements/basic/tag/tag.js +63 -63
- package/core/lib/elements/basic/tag/tag.scss +2 -2
- package/core/lib/elements/basic/timeline/timeline.js +13 -13
- package/core/lib/elements/basic/title/readme.md +20 -20
- package/core/lib/elements/basic/title/title.js +37 -37
- package/core/lib/elements/basic/user-search/user-search.js +192 -192
- package/core/lib/elements/complex/barcode/barcode.js +27 -27
- package/core/lib/elements/complex/bargraph/bar-graph.js +262 -262
- package/core/lib/elements/complex/basic-table/basic-table.js +110 -110
- package/core/lib/elements/complex/basic-table/basic-table.scss +4 -4
- package/core/lib/elements/complex/date-display/date-display.js +37 -37
- package/core/lib/elements/complex/error-boundary/error-boundary.js +29 -29
- package/core/lib/elements/complex/google-location-input/map-container-library-load.js +92 -92
- package/core/lib/elements/complex/google-map/google-map.js +230 -230
- package/core/lib/elements/complex/google-map/google-map.scss +13 -13
- package/core/lib/elements/complex/line-graph/line-graph.js +108 -108
- package/core/lib/elements/complex/location-search-input/location-search-input.js +100 -100
- package/core/lib/elements/complex/pie-chart/pie-chart.js +202 -202
- package/core/lib/elements/complex/qr-code/qr-code.js +27 -27
- package/core/lib/elements/complex/qrscanner/qrscanner.js +57 -57
- package/core/lib/elements/complex/search-debounce/search-debounce.js +37 -37
- package/core/lib/elements/complex/statistic-card/dashboard-statistic-card.js +75 -75
- package/core/lib/elements/complex/statistic-card/statistic-card.js +28 -28
- package/core/lib/elements/index.js +226 -226
- package/core/lib/hooks/device-detect.js +25 -25
- package/core/lib/hooks/index.js +9 -9
- package/core/lib/hooks/use-location.js +33 -33
- package/core/lib/hooks/use-otp-timer.js +80 -80
- package/core/lib/hooks/use-window-size.js +34 -34
- package/core/lib/i18n.js +69 -69
- package/core/lib/index.js +106 -106
- package/core/lib/introduction.md +73 -73
- package/core/lib/js-styleguide.md +4112 -4112
- package/core/lib/models/actions/actions.js +127 -127
- package/core/lib/models/actions/components/action-detail/action-detail.js +190 -190
- package/core/lib/models/actions/components/custom-actions/custom-actions.js +185 -185
- package/core/lib/models/attachments/attachments.js +231 -231
- package/core/lib/models/base-loader.js +99 -99
- package/core/lib/models/base.js +716 -716
- package/core/lib/models/branches/branches.js +125 -125
- package/core/lib/models/checklists/checklists.js +114 -114
- package/core/lib/models/columns/columns.js +169 -169
- package/core/lib/models/columns/components/columns-add/columns-add.js +171 -171
- package/core/lib/models/comments/comments.js +213 -213
- package/core/lib/models/departments/departments.js +107 -107
- package/core/lib/models/financial-years/financial_years.js +127 -127
- package/core/lib/models/forms/components/form-creator/form-creator.js +590 -590
- package/core/lib/models/forms/components/form-creator/form-creator.scss +29 -29
- package/core/lib/models/forms/components/form-detail/form-detail.js +224 -224
- package/core/lib/models/forms/forms.js +121 -121
- package/core/lib/models/index.js +203 -203
- package/core/lib/models/invoice-numbers/invoice_numbers.js +204 -204
- package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.js +145 -145
- package/core/lib/models/lookup-types/lookup-types.js +113 -113
- package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.js +126 -126
- package/core/lib/models/lookup-values/lookup-values.js +107 -107
- package/core/lib/models/menu-roles/menu-roles.js +127 -127
- package/core/lib/models/menus/components/menu-add/menu-add.js +228 -228
- package/core/lib/models/menus/components/menu-detail/menu-detail.js +170 -170
- package/core/lib/models/menus/components/menu-list/menu-list.js +593 -593
- package/core/lib/models/menus/components/menu-list/menu-list.scss +5 -5
- package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.js +183 -183
- package/core/lib/models/menus/menus.js +499 -499
- package/core/lib/models/models/components/model-detail/model-detail.js +137 -137
- package/core/lib/models/models/components/models.js +128 -128
- package/core/lib/models/modules/modules.js +204 -204
- package/core/lib/models/outbox/outbox.js +73 -73
- package/core/lib/models/pages/pages.js +107 -107
- package/core/lib/models/permissions/permissions.js +71 -71
- package/core/lib/models/process/components/process-add/process-add.js +181 -181
- package/core/lib/models/process/components/process-dashboard/process-dashboard.js +601 -601
- package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +62 -62
- package/core/lib/models/process/components/process-detail/process-detail.js +140 -140
- package/core/lib/models/process/components/process-timeline/process-timeline.js +139 -139
- package/core/lib/models/process/components/task-detail/task-detail.js +240 -240
- package/core/lib/models/process/components/task-detail/task-detail.scss +27 -27
- package/core/lib/models/process/components/task-form/task-form.js +528 -528
- package/core/lib/models/process/components/task-form/task-form.scss +7 -7
- package/core/lib/models/process/components/task-list/task-list.js +221 -221
- package/core/lib/models/process/components/task-list/task-list.scss +14 -14
- package/core/lib/models/process/components/task-overview/task-overview.js +299 -299
- package/core/lib/models/process/components/task-overview-legacy/task-overview-legacy.js +192 -192
- package/core/lib/models/process/components/task-routes/task-routes.js +45 -45
- package/core/lib/models/process/components/task-status/task-status.js +175 -175
- package/core/lib/models/process/components/task-status/task-status.scss +11 -11
- package/core/lib/models/process/process.js +780 -780
- package/core/lib/models/process-transactions/process-transactions.js +123 -123
- package/core/lib/models/roles/roles.js +106 -106
- package/core/lib/models/scripts/scripts.js +111 -111
- package/core/lib/models/step-transactions/step-transcations.js +147 -147
- package/core/lib/models/steps/components/step-add/step-add.js +261 -261
- package/core/lib/models/steps/components/step-detail/step-detail.js +157 -157
- package/core/lib/models/steps/steps.js +356 -356
- package/core/lib/models/user-preferences/user-preferences.js +83 -83
- package/core/lib/models/users/components/user-add/user-add.js +226 -226
- package/core/lib/models/users/users.js +119 -119
- package/core/lib/modules/business/launch-page/launch-page.js +29 -29
- package/core/lib/modules/business/launch-page/launch-page.scss +5 -5
- package/core/lib/modules/business/slots/slots.js +231 -231
- package/core/lib/modules/business/slots/slots.scss +108 -108
- package/core/lib/modules/forms/components/field-customizer/field-customizer.js +138 -138
- package/core/lib/modules/forms/components/field-selector/field-selector.js +157 -157
- package/core/lib/modules/forms/components/field-selector/field-selector.scss +25 -25
- package/core/lib/modules/forms/components/form-display/form-display.js +203 -203
- package/core/lib/modules/forms/components/form-display/form-display.scss +9 -9
- package/core/lib/modules/forms/components/tab-customizer/tab-customizer.js +124 -124
- package/core/lib/modules/generic/generic-add/generic-add.js +213 -213
- package/core/lib/modules/generic/generic-detail/generic-detail.js +199 -199
- package/core/lib/modules/generic/generic-edit/generic-edit.js +120 -120
- package/core/lib/modules/generic/generic-list/ExportReactCSV.js +62 -62
- package/core/lib/modules/generic/generic-list/generic-list.js +705 -705
- package/core/lib/modules/generic/generic-list/generic-list.scss +34 -34
- package/core/lib/modules/generic/generic-upload/generic-upload.js +483 -483
- package/core/lib/modules/generic/table-settings/table-settings.js +226 -226
- package/core/lib/modules/generic/table-settings/table-settings.scss +37 -37
- package/core/lib/modules/index.js +52 -52
- package/core/lib/modules/modules-routes/module-routes.js +35 -35
- package/core/lib/pages/change-password/change-password.js +211 -211
- package/core/lib/pages/change-password/change-password.scss +76 -76
- package/core/lib/pages/homepage/homepage.js +53 -53
- package/core/lib/pages/index.js +19 -19
- package/core/lib/pages/login/login.js +735 -735
- package/core/lib/pages/login/login.scss +458 -458
- package/core/lib/pages/manage-users/manage-users.js +429 -429
- package/core/lib/pages/manage-users/manage-users.scss +25 -25
- package/core/lib/pages/profile/profile.js +247 -247
- package/core/lib/pages/profile/profile.scss +107 -107
- package/core/lib/pages/profile/theme-config.js +18 -18
- package/core/lib/pages/profile/themes-backup.json +310 -310
- package/core/lib/pages/profile/themes.json +254 -254
- package/core/lib/pages/register/register.js +176 -176
- package/core/lib/pages/register/register.scss +128 -128
- package/core/lib/react-styleguide.md +756 -756
- package/core/lib/utils/api/api.utils.js +188 -188
- package/core/lib/utils/api/readme.md +426 -426
- package/core/lib/utils/async.js +35 -35
- package/core/lib/utils/common/common.utils.js +123 -123
- package/core/lib/utils/common/readme.md +30 -30
- package/core/lib/utils/date/date.utils.js +295 -295
- package/core/lib/utils/date/readme.md +2 -2
- package/core/lib/utils/firebase.support.utils.js +98 -98
- package/core/lib/utils/firebase.utils.js +808 -808
- package/core/lib/utils/form/form.utils.js +255 -255
- package/core/lib/utils/generic/generic.utils.js +69 -69
- package/core/lib/utils/http/auth.helper.js +95 -95
- package/core/lib/utils/http/http.utils.js +157 -157
- package/core/lib/utils/http/readme.md +14 -14
- package/core/lib/utils/index.js +45 -45
- package/core/lib/utils/location/location.utils.js +137 -137
- package/core/lib/utils/location/readme.md +18 -18
- package/core/lib/utils/modal.utils.js +15 -15
- package/core/lib/utils/notification.utils.js +34 -34
- package/core/lib/utils/pwa/pwa.utils.js +88 -88
- package/core/lib/utils/script.utils.js +235 -235
- package/core/lib/utils/setting.utils.js +68 -68
- package/core/lib/utils/upload.utils.js +29 -29
- package/core/models/Preference/Preferences.js +46 -46
- package/core/models/base/base.js +399 -399
- package/core/models/base-clone-loader.js +107 -107
- package/core/models/base-clone.js +187 -187
- package/core/models/base-loader.js +97 -97
- package/core/models/core-scripts/core-scripts.js +150 -150
- package/core/models/dashboard/dashboard.js +201 -201
- package/core/models/detail-loader.js +88 -88
- package/core/models/doctor/components/doctor-add/doctor-add.js +422 -422
- package/core/models/doctor/components/doctor-add/doctor-add.scss +32 -32
- package/core/models/groups.js +82 -82
- package/core/models/index.js +100 -100
- package/core/models/lookup-types/components/lookup-detail/lookup-detail.js +129 -129
- package/core/models/lookup-types/lookup-types.js +96 -96
- package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.js +95 -95
- package/core/models/lookup-values/lookup-values.js +92 -92
- package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.js +153 -153
- package/core/models/menu-roles/menu-roles.js +158 -158
- package/core/models/menus/components/menu-add/menu-add.js +288 -288
- package/core/models/menus/components/menu-add/menu-add.scss +31 -31
- package/core/models/menus/components/menu-detail/menu-detail.js +263 -263
- package/core/models/menus/components/menu-list/menu-list.js +392 -392
- package/core/models/menus/components/menu-lists/menu-lists.js +585 -585
- package/core/models/menus/components/menu-lists/menu-lists.scss +46 -46
- package/core/models/menus/menus.js +291 -291
- package/core/models/model-columns.js +121 -121
- package/core/models/models/components/model-detail/model-add.js +120 -120
- package/core/models/models/components/model-detail/model-detail.js +133 -133
- package/core/models/models/models.js +154 -154
- package/core/models/pages/components/page-add/page-add.js +163 -163
- package/core/models/pages/components/page-add/page-add.scss +30 -30
- package/core/models/pages/components/page-details/page-details.js +209 -209
- package/core/models/pages/components/page-list/page-list.js +248 -248
- package/core/models/pages/pages.js +142 -142
- package/core/models/pages.js +142 -142
- package/core/models/roles/components/role-add/role-add.js +312 -312
- package/core/models/roles/components/role-add/role-add.scss +4 -4
- package/core/models/roles/components/role-list/role-list.js +386 -386
- package/core/models/roles/roles.js +205 -205
- package/core/models/staff/components/staff-add/staff-add.js +468 -464
- package/core/models/user-roles/components/user-roles-add/user-roles-add.js +149 -149
- package/core/models/user-roles/user-roles.js +99 -99
- package/core/models/users/components/assign-role/assign-role.js +300 -298
- package/core/models/users/components/assign-role/assign-role.scss +117 -117
- package/core/models/users/components/user-add/user-add.js +853 -853
- package/core/models/users/components/user-add/user-edit.js +89 -89
- package/core/models/users/components/user-detail/user-detail.js +236 -236
- package/core/models/users/components/user-list/user-list.js +397 -397
- package/core/models/users/users.js +353 -353
- package/core/modules/Informations/change-info/change-info.js +618 -618
- package/core/modules/Informations/change-info/change-info.scss +134 -134
- package/core/modules/dashboard/components/dashboard-card/animations.js +64 -64
- package/core/modules/dashboard/components/dashboard-card/dashboard-card.js +197 -197
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +430 -430
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.scss +59 -59
- package/core/modules/dashboard/components/pop-query-dashboard/pop-query-dashboard.js +66 -66
- package/core/modules/generic/components/generic-add/generic-add.js +121 -121
- package/core/modules/generic/components/generic-add/generic-add.scss +13 -13
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.js +125 -125
- package/core/modules/generic/components/generic-add-modal/generic-add-modal.scss +13 -13
- package/core/modules/generic/components/generic-detail/generic-detail.js +184 -184
- package/core/modules/generic/components/generic-detail/generic-detail.scss +25 -25
- package/core/modules/generic/components/generic-edit/generic-edit.js +123 -123
- package/core/modules/generic/components/generic-list/generic-list.js +335 -335
- package/core/modules/generic/components/generic-list/generic-list.scss +35 -35
- package/core/modules/index.js +42 -42
- package/core/modules/module-routes/module-routes.js +37 -37
- package/core/modules/reporting/components/index.js +6 -6
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +1223 -1223
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +171 -171
- package/core/modules/steps/action-buttons.js +76 -76
- package/core/modules/steps/action-buttons.scss +15 -15
- package/core/modules/steps/steps.js +379 -379
- package/core/modules/steps/steps.scss +159 -159
- package/core/modules/steps/timeline.js +54 -54
- package/core/pages/homepage-api/homepage-api.js +106 -106
- package/core/pages/homepage-api/homepage-api.scss +233 -233
- package/core/pages/homepage-api/menu-dashboard.js +169 -169
- package/core/pages/homepage-api/menu-dashboard.scss +11 -11
- package/core/translation.json +53 -53
- package/core/translations.json +19 -19
- package/core/utils/script.utils.js +129 -129
- package/core/utils/settings.utils.js +25 -25
- package/eslint.config.mjs +79 -79
- package/index.js +35 -35
- package/jest.config.js +7 -7
- package/jest.setup.js +1 -1
- package/package.json +123 -123
- package/tsconfig.json +26 -26
- package/webpack.config.js +173 -173
|
@@ -1,529 +1,529 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import React, { useEffect, useState, Fragment, useContext } from "react";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { Link, useParams } from 'react-router-dom';
|
|
10
|
-
|
|
11
|
-
import { SettingOutlined, PlayCircleOutlined } from '@ant-design/icons'
|
|
12
|
-
|
|
13
|
-
import { Button, Skeleton, Typography } from 'antd';
|
|
14
|
-
|
|
15
|
-
import { Forms, Columns, Scripts, Process, ProcessTransactions, StepTransactions, Pages, Menus } from './../../../../models/';
|
|
16
|
-
|
|
17
|
-
import { ExecuteScript } from "../../../../utils/script.utils";
|
|
18
|
-
|
|
19
|
-
import FormCreator from "../../../forms/components/form-creator/form-creator";
|
|
20
|
-
|
|
21
|
-
import { Location } from "../../../../utils/location/location.utils";
|
|
22
|
-
|
|
23
|
-
import { GlobalContext } from './../../../../Store';
|
|
24
|
-
|
|
25
|
-
import './task-form.scss';
|
|
26
|
-
|
|
27
|
-
import DateUtils from "../../../../utils/date/date.utils";
|
|
28
|
-
|
|
29
|
-
import * as Utils from './../../../../utils/'
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const { Title } = Typography
|
|
33
|
-
//
|
|
34
|
-
/**
|
|
35
|
-
* Generic Form
|
|
36
|
-
*
|
|
37
|
-
* @returns
|
|
38
|
-
*/
|
|
39
|
-
export default function TaskForm({ record_id, step, callback = () => {
|
|
40
|
-
|
|
41
|
-
} }) {
|
|
42
|
-
|
|
43
|
-
let params = useParams();
|
|
44
|
-
|
|
45
|
-
const { CustomModels, user } = useContext(GlobalContext);
|
|
46
|
-
|
|
47
|
-
let process_transaction_id = null;
|
|
48
|
-
|
|
49
|
-
// This is when it is used inside process dashboard
|
|
50
|
-
// This component can also be individually used to complete any process
|
|
51
|
-
if (step.process_transaction) {
|
|
52
|
-
|
|
53
|
-
process_transaction_id = step.process_transaction.id;
|
|
54
|
-
|
|
55
|
-
} else {
|
|
56
|
-
|
|
57
|
-
process_transaction_id = Location.search().process_transaction_id;
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// let businessModels = require('../');
|
|
62
|
-
|
|
63
|
-
let baseModels = require('../../../../../lib/models/')
|
|
64
|
-
|
|
65
|
-
let models = {
|
|
66
|
-
...baseModels,
|
|
67
|
-
...CustomModels
|
|
68
|
-
// ...businessModels
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Get the firestore app
|
|
72
|
-
const app = Process.getFireStoreApp();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
let model = models[step.model_identifier];
|
|
76
|
-
|
|
77
|
-
let submitModel = models[step.submit_model_identifier];
|
|
78
|
-
|
|
79
|
-
const [form, setForm] = useState({});
|
|
80
|
-
|
|
81
|
-
const [script, setScript] = useState('');
|
|
82
|
-
|
|
83
|
-
const [prescript, setPrescript] = useState('');
|
|
84
|
-
|
|
85
|
-
const [loading, setLoading] = useState(true);
|
|
86
|
-
|
|
87
|
-
const [config, setConfig] = useState({});
|
|
88
|
-
|
|
89
|
-
const [fields, setFields] = useState([]);
|
|
90
|
-
|
|
91
|
-
const [menu, setMenu] = useState({});
|
|
92
|
-
|
|
93
|
-
useEffect(() => {
|
|
94
|
-
|
|
95
|
-
if (step.page_id) {
|
|
96
|
-
|
|
97
|
-
loadPage(step);
|
|
98
|
-
|
|
99
|
-
} else if (step.form_id) {
|
|
100
|
-
|
|
101
|
-
loadForm(step).then(() => {
|
|
102
|
-
|
|
103
|
-
loadColumns(step);
|
|
104
|
-
|
|
105
|
-
})
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return () => {
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
}, [])
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Load the form
|
|
115
|
-
*
|
|
116
|
-
* @param {*} step
|
|
117
|
-
* @returns
|
|
118
|
-
*/
|
|
119
|
-
function loadForm(step) {
|
|
120
|
-
|
|
121
|
-
return Forms.getRecord(step.form_id).then((result) => {
|
|
122
|
-
|
|
123
|
-
setForm(result);
|
|
124
|
-
|
|
125
|
-
// load Scripts on submit
|
|
126
|
-
result.on_submit_script_id && loadScript(result.on_submit_script_id);
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
// load Scripts on submit
|
|
130
|
-
result.before_submit_script_id && loadPreScript(result.before_submit_script_id);
|
|
131
|
-
|
|
132
|
-
})
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* @param {*} step
|
|
139
|
-
*/
|
|
140
|
-
function loadPage(step) {
|
|
141
|
-
|
|
142
|
-
let menus = null;
|
|
143
|
-
|
|
144
|
-
Pages.getRecord(step.page_id).then((result) => {
|
|
145
|
-
|
|
146
|
-
var queries = [{
|
|
147
|
-
field: 'page_id',
|
|
148
|
-
value: step.page_id
|
|
149
|
-
}]
|
|
150
|
-
|
|
151
|
-
Menus.get(queries).then(({ menus }) => {
|
|
152
|
-
|
|
153
|
-
if (menus.length) {
|
|
154
|
-
|
|
155
|
-
menus = menus[0];
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
let menu = {
|
|
159
|
-
step,
|
|
160
|
-
page: result,
|
|
161
|
-
...menus
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
setMenu(menu);
|
|
165
|
-
|
|
166
|
-
setLoading(false);
|
|
167
|
-
})
|
|
168
|
-
})
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Load columns of the form
|
|
173
|
-
*
|
|
174
|
-
* @param {*} step
|
|
175
|
-
*/
|
|
176
|
-
const loadColumns = (step) => {
|
|
177
|
-
|
|
178
|
-
var queries = [{
|
|
179
|
-
field: 'form_id',
|
|
180
|
-
value: step.form_id,
|
|
181
|
-
}]
|
|
182
|
-
|
|
183
|
-
Columns.getColumns(queries).then((result) => {
|
|
184
|
-
|
|
185
|
-
setFields(result);
|
|
186
|
-
|
|
187
|
-
setConfig({
|
|
188
|
-
fields: result
|
|
189
|
-
})
|
|
190
|
-
|
|
191
|
-
setLoading(false);
|
|
192
|
-
})
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Load the Script statement
|
|
197
|
-
*
|
|
198
|
-
* @param {*} script_id
|
|
199
|
-
*/
|
|
200
|
-
const loadScript = (script_id) => {
|
|
201
|
-
|
|
202
|
-
Scripts.getRecord(script_id).then((result) => {
|
|
203
|
-
|
|
204
|
-
setScript(result.value);
|
|
205
|
-
|
|
206
|
-
})
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Load the Script statement
|
|
211
|
-
*
|
|
212
|
-
* @param {*} script_id
|
|
213
|
-
*/
|
|
214
|
-
const loadPreScript = (script_id) => {
|
|
215
|
-
|
|
216
|
-
Scripts.getRecord(script_id).then((result) => {
|
|
217
|
-
|
|
218
|
-
setPrescript(result.value);
|
|
219
|
-
|
|
220
|
-
})
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* On Submit of Task
|
|
225
|
-
*
|
|
226
|
-
* @param {*} values
|
|
227
|
-
*/
|
|
228
|
-
async function onSubmit(values) {
|
|
229
|
-
|
|
230
|
-
// Starting a batched write
|
|
231
|
-
let batch = app.batch();
|
|
232
|
-
|
|
233
|
-
return new Promise(async (resolve) => {
|
|
234
|
-
|
|
235
|
-
// Submit the model , First level of submission
|
|
236
|
-
// Instead of submitting to a model
|
|
237
|
-
// We have to update to the route
|
|
238
|
-
// If the route is passed
|
|
239
|
-
console.log("Submission of form Started");
|
|
240
|
-
|
|
241
|
-
// Before Submit of form , execute the script
|
|
242
|
-
values = await executeScript(values, null, prescript);
|
|
243
|
-
|
|
244
|
-
let modelRef = {};
|
|
245
|
-
|
|
246
|
-
if (submitModel) {
|
|
247
|
-
|
|
248
|
-
// Get the model reference to start with write
|
|
249
|
-
modelRef = submitModel.getRecordReference();
|
|
250
|
-
|
|
251
|
-
// Update the reference with values
|
|
252
|
-
const result = await batch.set(modelRef, model.appendDefaultValues(values));
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
console.log("Submission of form Completed");
|
|
256
|
-
|
|
257
|
-
// console.log(result);
|
|
258
|
-
|
|
259
|
-
console.log("Script execution started");
|
|
260
|
-
|
|
261
|
-
// On Submit of form , execute the script
|
|
262
|
-
await executeScript(values, { id: modelRef.id }, script);
|
|
263
|
-
|
|
264
|
-
console.log("Script execution ended");
|
|
265
|
-
|
|
266
|
-
// const result = await Process.onStepCompletion({ batch, process_transaction_id, step });
|
|
267
|
-
|
|
268
|
-
// The first Step transaction
|
|
269
|
-
let step_transaction = step.step_transactions[0];
|
|
270
|
-
|
|
271
|
-
// We have to forward the process transaction to the next sub process
|
|
272
|
-
//
|
|
273
|
-
// await triggerSubProcess(step, process_transaction_id)
|
|
274
|
-
|
|
275
|
-
// console.log("Triggering Subprocesses", step.trigger_sub_process_ids.map((record) => record.id));
|
|
276
|
-
|
|
277
|
-
// Trigger the sub process
|
|
278
|
-
if (step.trigger_sub_process_ids && step.trigger_sub_process_ids.length)
|
|
279
|
-
|
|
280
|
-
await Promise.all(step.trigger_sub_process_ids.map(async (step_id) => {
|
|
281
|
-
|
|
282
|
-
let params = {
|
|
283
|
-
step_id: step_id
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
console.log("Updating Process Transaction started", process_transaction_id);
|
|
287
|
-
|
|
288
|
-
// Reference for process transaction
|
|
289
|
-
var processTransactionReference = ProcessTransactions.getRecordReference(process_transaction_id)
|
|
290
|
-
|
|
291
|
-
console.log(`Got process transaction`, processTransactionReference);
|
|
292
|
-
|
|
293
|
-
// Move the process transaction to next step
|
|
294
|
-
// await batch.update(processTransactionReference, model.appendDefaultValues(params));
|
|
295
|
-
await batch.set(processTransactionReference, model.appendDefaultValues(params));
|
|
296
|
-
|
|
297
|
-
console.log("Updating Process Transaction ended");
|
|
298
|
-
|
|
299
|
-
// If there is a step transaction record ,
|
|
300
|
-
// We have to update that its completed
|
|
301
|
-
|
|
302
|
-
// We have to record a step transaction record for every event
|
|
303
|
-
let body = {
|
|
304
|
-
step_id: step_id,
|
|
305
|
-
process_id: step.process_id,
|
|
306
|
-
process_transaction_id: process_transaction_id,
|
|
307
|
-
record_id: record_id,
|
|
308
|
-
start_time: new Date()
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// Record the Step Transaction
|
|
312
|
-
var stepTransactionReference = StepTransactions.getRecordReference()
|
|
313
|
-
|
|
314
|
-
console.log("Step Transaction Add started");
|
|
315
|
-
|
|
316
|
-
return await batch.set(stepTransactionReference, model.appendDefaultValues(body));
|
|
317
|
-
|
|
318
|
-
console.log("Step Transaction Add Completed");
|
|
319
|
-
|
|
320
|
-
}));
|
|
321
|
-
|
|
322
|
-
// console.log("Triggering Process started", step.trigger_process_ids.map((record) => record.id));
|
|
323
|
-
|
|
324
|
-
if (step.trigger_process_ids && step.trigger_process_ids.length)
|
|
325
|
-
|
|
326
|
-
// We also have to trigger any process that this step would trigger
|
|
327
|
-
await Promise.all(step.trigger_process_ids.map((process_id) => {
|
|
328
|
-
|
|
329
|
-
let body = {
|
|
330
|
-
record_id: record_id,
|
|
331
|
-
model_identifier: 'Candidates'
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
console.log("Trigger Process Started");
|
|
335
|
-
|
|
336
|
-
return Process.triggerProcessBatch(batch, process_id, body, process_transaction_id).catch((error) => {
|
|
337
|
-
|
|
338
|
-
console.log(error, "Trigger process failed");
|
|
339
|
-
})
|
|
340
|
-
|
|
341
|
-
}));
|
|
342
|
-
|
|
343
|
-
console.log("Step Transaction Update Started");
|
|
344
|
-
|
|
345
|
-
if (step_transaction) {
|
|
346
|
-
|
|
347
|
-
console.log("Found Step Transaction to Update");
|
|
348
|
-
|
|
349
|
-
// We have to record a step transaction record for every event
|
|
350
|
-
let body = {
|
|
351
|
-
end_time: new Date(),
|
|
352
|
-
// end_time: DateUtils.getTime(),
|
|
353
|
-
completed: true,
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// Record the Step Transaction
|
|
357
|
-
let stepTransactionReference = StepTransactions.getRecordReference(step_transaction.id);
|
|
358
|
-
|
|
359
|
-
await batch.update(stepTransactionReference, model.appendDefaultValues(body));
|
|
360
|
-
|
|
361
|
-
console.log("Step Transaction Update Completed");
|
|
362
|
-
|
|
363
|
-
// Commit the batch
|
|
364
|
-
batch.commit().then(() => {
|
|
365
|
-
|
|
366
|
-
console.log("Commit of records completed");
|
|
367
|
-
|
|
368
|
-
callback();
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
} else {
|
|
372
|
-
|
|
373
|
-
// Commit the batch
|
|
374
|
-
batch.commit().then(() => {
|
|
375
|
-
|
|
376
|
-
console.log("Commit of records completed");
|
|
377
|
-
|
|
378
|
-
callback();
|
|
379
|
-
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
})
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
* Trigger the Sub Process
|
|
388
|
-
*
|
|
389
|
-
* @param {*} step
|
|
390
|
-
* @param {*} process_transaction_id
|
|
391
|
-
* @returns
|
|
392
|
-
*/
|
|
393
|
-
async function triggerSubProcess(step, process_transaction_id) {
|
|
394
|
-
|
|
395
|
-
if (step.trigger_sub_process_ids.length) {
|
|
396
|
-
|
|
397
|
-
return step.trigger_sub_process_ids.map((step_id) => {
|
|
398
|
-
|
|
399
|
-
let params = {
|
|
400
|
-
|
|
401
|
-
step_id: step_id
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
return ProcessTransactions.update(process_transaction_id, params)
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
} else {
|
|
408
|
-
|
|
409
|
-
return new Promise(function (resolve, reject) {
|
|
410
|
-
resolve('start of new Promise');
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
/**
|
|
417
|
-
*
|
|
418
|
-
*
|
|
419
|
-
* @param {*} values
|
|
420
|
-
* @returns
|
|
421
|
-
*/
|
|
422
|
-
async function executeScript(values, response, script) {
|
|
423
|
-
|
|
424
|
-
var scripts = [];
|
|
425
|
-
|
|
426
|
-
if (script) {
|
|
427
|
-
scripts.push(script);
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
if (script) {
|
|
431
|
-
|
|
432
|
-
return await ExecuteScript({
|
|
433
|
-
formContent: values,
|
|
434
|
-
scripts,
|
|
435
|
-
context: {
|
|
436
|
-
...models,
|
|
437
|
-
...Utils,
|
|
438
|
-
params
|
|
439
|
-
},
|
|
440
|
-
contextName: 'models',
|
|
441
|
-
executionType: '',
|
|
442
|
-
response
|
|
443
|
-
});
|
|
444
|
-
|
|
445
|
-
} else {
|
|
446
|
-
|
|
447
|
-
return new Promise(function (resolve, reject) {
|
|
448
|
-
resolve('start of new Promise');
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
return (<div className="task-form">
|
|
456
|
-
|
|
457
|
-
{
|
|
458
|
-
loading
|
|
459
|
-
?
|
|
460
|
-
<Skeleton />
|
|
461
|
-
:
|
|
462
|
-
<>
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
{/*
|
|
466
|
-
|
|
467
|
-
A Task can be completed either with a form or with a checklist
|
|
468
|
-
or with a custom page , in case of which we redirect the user to that particular page
|
|
469
|
-
On completion of the step , we update the status of the record
|
|
470
|
-
|
|
471
|
-
*/}
|
|
472
|
-
|
|
473
|
-
{
|
|
474
|
-
menu.id
|
|
475
|
-
?
|
|
476
|
-
<>
|
|
477
|
-
|
|
478
|
-
<p>
|
|
479
|
-
{menu.step && menu.step.description}
|
|
480
|
-
</p>
|
|
481
|
-
|
|
482
|
-
<Link to={`${menu.path.replace(':id', record_id)}?process_transaction_id=${process_transaction_id}`} className={'configure-button'}>
|
|
483
|
-
<Button size={'small'}>
|
|
484
|
-
<PlayCircleOutlined />
|
|
485
|
-
Go to Menu
|
|
486
|
-
</Button>
|
|
487
|
-
</Link>
|
|
488
|
-
|
|
489
|
-
</>
|
|
490
|
-
:
|
|
491
|
-
<>
|
|
492
|
-
|
|
493
|
-
<Title level={4}>Task Form</Title>
|
|
494
|
-
|
|
495
|
-
<p>
|
|
496
|
-
To complete this step , Please fill the below form .
|
|
497
|
-
</p>
|
|
498
|
-
|
|
499
|
-
{/* Form Creator */}
|
|
500
|
-
<FormCreator
|
|
501
|
-
onSubmit={onSubmit}
|
|
502
|
-
model={config}
|
|
503
|
-
config={{
|
|
504
|
-
fields
|
|
505
|
-
}}
|
|
506
|
-
fields={fields}
|
|
507
|
-
/>
|
|
508
|
-
|
|
509
|
-
<div className="form-footer">
|
|
510
|
-
|
|
511
|
-
{
|
|
512
|
-
user.isAdmin
|
|
513
|
-
&&
|
|
514
|
-
<Link to={`/forms/${form.id}`} className={'configure-button'}>
|
|
515
|
-
<Button size={'small'}>
|
|
516
|
-
<SettingOutlined />
|
|
517
|
-
Configure
|
|
518
|
-
</Button>
|
|
519
|
-
</Link>
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
</div>
|
|
523
|
-
</>
|
|
524
|
-
}
|
|
525
|
-
</>
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
</div>)
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import React, { useEffect, useState, Fragment, useContext } from "react";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
import { Link, useParams } from 'react-router-dom';
|
|
10
|
+
|
|
11
|
+
import { SettingOutlined, PlayCircleOutlined } from '@ant-design/icons'
|
|
12
|
+
|
|
13
|
+
import { Button, Skeleton, Typography } from 'antd';
|
|
14
|
+
|
|
15
|
+
import { Forms, Columns, Scripts, Process, ProcessTransactions, StepTransactions, Pages, Menus } from './../../../../models/';
|
|
16
|
+
|
|
17
|
+
import { ExecuteScript } from "../../../../utils/script.utils";
|
|
18
|
+
|
|
19
|
+
import FormCreator from "../../../forms/components/form-creator/form-creator";
|
|
20
|
+
|
|
21
|
+
import { Location } from "../../../../utils/location/location.utils";
|
|
22
|
+
|
|
23
|
+
import { GlobalContext } from './../../../../Store';
|
|
24
|
+
|
|
25
|
+
import './task-form.scss';
|
|
26
|
+
|
|
27
|
+
import DateUtils from "../../../../utils/date/date.utils";
|
|
28
|
+
|
|
29
|
+
import * as Utils from './../../../../utils/'
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
const { Title } = Typography
|
|
33
|
+
//
|
|
34
|
+
/**
|
|
35
|
+
* Generic Form
|
|
36
|
+
*
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
export default function TaskForm({ record_id, step, callback = () => {
|
|
40
|
+
|
|
41
|
+
} }) {
|
|
42
|
+
|
|
43
|
+
let params = useParams();
|
|
44
|
+
|
|
45
|
+
const { CustomModels, user } = useContext(GlobalContext);
|
|
46
|
+
|
|
47
|
+
let process_transaction_id = null;
|
|
48
|
+
|
|
49
|
+
// This is when it is used inside process dashboard
|
|
50
|
+
// This component can also be individually used to complete any process
|
|
51
|
+
if (step.process_transaction) {
|
|
52
|
+
|
|
53
|
+
process_transaction_id = step.process_transaction.id;
|
|
54
|
+
|
|
55
|
+
} else {
|
|
56
|
+
|
|
57
|
+
process_transaction_id = Location.search().process_transaction_id;
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// let businessModels = require('../');
|
|
62
|
+
|
|
63
|
+
let baseModels = require('../../../../../lib/models/')
|
|
64
|
+
|
|
65
|
+
let models = {
|
|
66
|
+
...baseModels,
|
|
67
|
+
...CustomModels
|
|
68
|
+
// ...businessModels
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Get the firestore app
|
|
72
|
+
const app = Process.getFireStoreApp();
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
let model = models[step.model_identifier];
|
|
76
|
+
|
|
77
|
+
let submitModel = models[step.submit_model_identifier];
|
|
78
|
+
|
|
79
|
+
const [form, setForm] = useState({});
|
|
80
|
+
|
|
81
|
+
const [script, setScript] = useState('');
|
|
82
|
+
|
|
83
|
+
const [prescript, setPrescript] = useState('');
|
|
84
|
+
|
|
85
|
+
const [loading, setLoading] = useState(true);
|
|
86
|
+
|
|
87
|
+
const [config, setConfig] = useState({});
|
|
88
|
+
|
|
89
|
+
const [fields, setFields] = useState([]);
|
|
90
|
+
|
|
91
|
+
const [menu, setMenu] = useState({});
|
|
92
|
+
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
|
|
95
|
+
if (step.page_id) {
|
|
96
|
+
|
|
97
|
+
loadPage(step);
|
|
98
|
+
|
|
99
|
+
} else if (step.form_id) {
|
|
100
|
+
|
|
101
|
+
loadForm(step).then(() => {
|
|
102
|
+
|
|
103
|
+
loadColumns(step);
|
|
104
|
+
|
|
105
|
+
})
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return () => {
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
}, [])
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Load the form
|
|
115
|
+
*
|
|
116
|
+
* @param {*} step
|
|
117
|
+
* @returns
|
|
118
|
+
*/
|
|
119
|
+
function loadForm(step) {
|
|
120
|
+
|
|
121
|
+
return Forms.getRecord(step.form_id).then((result) => {
|
|
122
|
+
|
|
123
|
+
setForm(result);
|
|
124
|
+
|
|
125
|
+
// load Scripts on submit
|
|
126
|
+
result.on_submit_script_id && loadScript(result.on_submit_script_id);
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
// load Scripts on submit
|
|
130
|
+
result.before_submit_script_id && loadPreScript(result.before_submit_script_id);
|
|
131
|
+
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
*
|
|
137
|
+
*
|
|
138
|
+
* @param {*} step
|
|
139
|
+
*/
|
|
140
|
+
function loadPage(step) {
|
|
141
|
+
|
|
142
|
+
let menus = null;
|
|
143
|
+
|
|
144
|
+
Pages.getRecord(step.page_id).then((result) => {
|
|
145
|
+
|
|
146
|
+
var queries = [{
|
|
147
|
+
field: 'page_id',
|
|
148
|
+
value: step.page_id
|
|
149
|
+
}]
|
|
150
|
+
|
|
151
|
+
Menus.get(queries).then(({ menus }) => {
|
|
152
|
+
|
|
153
|
+
if (menus.length) {
|
|
154
|
+
|
|
155
|
+
menus = menus[0];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
let menu = {
|
|
159
|
+
step,
|
|
160
|
+
page: result,
|
|
161
|
+
...menus
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
setMenu(menu);
|
|
165
|
+
|
|
166
|
+
setLoading(false);
|
|
167
|
+
})
|
|
168
|
+
})
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Load columns of the form
|
|
173
|
+
*
|
|
174
|
+
* @param {*} step
|
|
175
|
+
*/
|
|
176
|
+
const loadColumns = (step) => {
|
|
177
|
+
|
|
178
|
+
var queries = [{
|
|
179
|
+
field: 'form_id',
|
|
180
|
+
value: step.form_id,
|
|
181
|
+
}]
|
|
182
|
+
|
|
183
|
+
Columns.getColumns(queries).then((result) => {
|
|
184
|
+
|
|
185
|
+
setFields(result);
|
|
186
|
+
|
|
187
|
+
setConfig({
|
|
188
|
+
fields: result
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
setLoading(false);
|
|
192
|
+
})
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Load the Script statement
|
|
197
|
+
*
|
|
198
|
+
* @param {*} script_id
|
|
199
|
+
*/
|
|
200
|
+
const loadScript = (script_id) => {
|
|
201
|
+
|
|
202
|
+
Scripts.getRecord(script_id).then((result) => {
|
|
203
|
+
|
|
204
|
+
setScript(result.value);
|
|
205
|
+
|
|
206
|
+
})
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Load the Script statement
|
|
211
|
+
*
|
|
212
|
+
* @param {*} script_id
|
|
213
|
+
*/
|
|
214
|
+
const loadPreScript = (script_id) => {
|
|
215
|
+
|
|
216
|
+
Scripts.getRecord(script_id).then((result) => {
|
|
217
|
+
|
|
218
|
+
setPrescript(result.value);
|
|
219
|
+
|
|
220
|
+
})
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* On Submit of Task
|
|
225
|
+
*
|
|
226
|
+
* @param {*} values
|
|
227
|
+
*/
|
|
228
|
+
async function onSubmit(values) {
|
|
229
|
+
|
|
230
|
+
// Starting a batched write
|
|
231
|
+
let batch = app.batch();
|
|
232
|
+
|
|
233
|
+
return new Promise(async (resolve) => {
|
|
234
|
+
|
|
235
|
+
// Submit the model , First level of submission
|
|
236
|
+
// Instead of submitting to a model
|
|
237
|
+
// We have to update to the route
|
|
238
|
+
// If the route is passed
|
|
239
|
+
console.log("Submission of form Started");
|
|
240
|
+
|
|
241
|
+
// Before Submit of form , execute the script
|
|
242
|
+
values = await executeScript(values, null, prescript);
|
|
243
|
+
|
|
244
|
+
let modelRef = {};
|
|
245
|
+
|
|
246
|
+
if (submitModel) {
|
|
247
|
+
|
|
248
|
+
// Get the model reference to start with write
|
|
249
|
+
modelRef = submitModel.getRecordReference();
|
|
250
|
+
|
|
251
|
+
// Update the reference with values
|
|
252
|
+
const result = await batch.set(modelRef, model.appendDefaultValues(values));
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
console.log("Submission of form Completed");
|
|
256
|
+
|
|
257
|
+
// console.log(result);
|
|
258
|
+
|
|
259
|
+
console.log("Script execution started");
|
|
260
|
+
|
|
261
|
+
// On Submit of form , execute the script
|
|
262
|
+
await executeScript(values, { id: modelRef.id }, script);
|
|
263
|
+
|
|
264
|
+
console.log("Script execution ended");
|
|
265
|
+
|
|
266
|
+
// const result = await Process.onStepCompletion({ batch, process_transaction_id, step });
|
|
267
|
+
|
|
268
|
+
// The first Step transaction
|
|
269
|
+
let step_transaction = step.step_transactions[0];
|
|
270
|
+
|
|
271
|
+
// We have to forward the process transaction to the next sub process
|
|
272
|
+
//
|
|
273
|
+
// await triggerSubProcess(step, process_transaction_id)
|
|
274
|
+
|
|
275
|
+
// console.log("Triggering Subprocesses", step.trigger_sub_process_ids.map((record) => record.id));
|
|
276
|
+
|
|
277
|
+
// Trigger the sub process
|
|
278
|
+
if (step.trigger_sub_process_ids && step.trigger_sub_process_ids.length)
|
|
279
|
+
|
|
280
|
+
await Promise.all(step.trigger_sub_process_ids.map(async (step_id) => {
|
|
281
|
+
|
|
282
|
+
let params = {
|
|
283
|
+
step_id: step_id
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
console.log("Updating Process Transaction started", process_transaction_id);
|
|
287
|
+
|
|
288
|
+
// Reference for process transaction
|
|
289
|
+
var processTransactionReference = ProcessTransactions.getRecordReference(process_transaction_id)
|
|
290
|
+
|
|
291
|
+
console.log(`Got process transaction`, processTransactionReference);
|
|
292
|
+
|
|
293
|
+
// Move the process transaction to next step
|
|
294
|
+
// await batch.update(processTransactionReference, model.appendDefaultValues(params));
|
|
295
|
+
await batch.set(processTransactionReference, model.appendDefaultValues(params));
|
|
296
|
+
|
|
297
|
+
console.log("Updating Process Transaction ended");
|
|
298
|
+
|
|
299
|
+
// If there is a step transaction record ,
|
|
300
|
+
// We have to update that its completed
|
|
301
|
+
|
|
302
|
+
// We have to record a step transaction record for every event
|
|
303
|
+
let body = {
|
|
304
|
+
step_id: step_id,
|
|
305
|
+
process_id: step.process_id,
|
|
306
|
+
process_transaction_id: process_transaction_id,
|
|
307
|
+
record_id: record_id,
|
|
308
|
+
start_time: new Date()
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Record the Step Transaction
|
|
312
|
+
var stepTransactionReference = StepTransactions.getRecordReference()
|
|
313
|
+
|
|
314
|
+
console.log("Step Transaction Add started");
|
|
315
|
+
|
|
316
|
+
return await batch.set(stepTransactionReference, model.appendDefaultValues(body));
|
|
317
|
+
|
|
318
|
+
console.log("Step Transaction Add Completed");
|
|
319
|
+
|
|
320
|
+
}));
|
|
321
|
+
|
|
322
|
+
// console.log("Triggering Process started", step.trigger_process_ids.map((record) => record.id));
|
|
323
|
+
|
|
324
|
+
if (step.trigger_process_ids && step.trigger_process_ids.length)
|
|
325
|
+
|
|
326
|
+
// We also have to trigger any process that this step would trigger
|
|
327
|
+
await Promise.all(step.trigger_process_ids.map((process_id) => {
|
|
328
|
+
|
|
329
|
+
let body = {
|
|
330
|
+
record_id: record_id,
|
|
331
|
+
model_identifier: 'Candidates'
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
console.log("Trigger Process Started");
|
|
335
|
+
|
|
336
|
+
return Process.triggerProcessBatch(batch, process_id, body, process_transaction_id).catch((error) => {
|
|
337
|
+
|
|
338
|
+
console.log(error, "Trigger process failed");
|
|
339
|
+
})
|
|
340
|
+
|
|
341
|
+
}));
|
|
342
|
+
|
|
343
|
+
console.log("Step Transaction Update Started");
|
|
344
|
+
|
|
345
|
+
if (step_transaction) {
|
|
346
|
+
|
|
347
|
+
console.log("Found Step Transaction to Update");
|
|
348
|
+
|
|
349
|
+
// We have to record a step transaction record for every event
|
|
350
|
+
let body = {
|
|
351
|
+
end_time: new Date(),
|
|
352
|
+
// end_time: DateUtils.getTime(),
|
|
353
|
+
completed: true,
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// Record the Step Transaction
|
|
357
|
+
let stepTransactionReference = StepTransactions.getRecordReference(step_transaction.id);
|
|
358
|
+
|
|
359
|
+
await batch.update(stepTransactionReference, model.appendDefaultValues(body));
|
|
360
|
+
|
|
361
|
+
console.log("Step Transaction Update Completed");
|
|
362
|
+
|
|
363
|
+
// Commit the batch
|
|
364
|
+
batch.commit().then(() => {
|
|
365
|
+
|
|
366
|
+
console.log("Commit of records completed");
|
|
367
|
+
|
|
368
|
+
callback();
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
} else {
|
|
372
|
+
|
|
373
|
+
// Commit the batch
|
|
374
|
+
batch.commit().then(() => {
|
|
375
|
+
|
|
376
|
+
console.log("Commit of records completed");
|
|
377
|
+
|
|
378
|
+
callback();
|
|
379
|
+
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
})
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Trigger the Sub Process
|
|
388
|
+
*
|
|
389
|
+
* @param {*} step
|
|
390
|
+
* @param {*} process_transaction_id
|
|
391
|
+
* @returns
|
|
392
|
+
*/
|
|
393
|
+
async function triggerSubProcess(step, process_transaction_id) {
|
|
394
|
+
|
|
395
|
+
if (step.trigger_sub_process_ids.length) {
|
|
396
|
+
|
|
397
|
+
return step.trigger_sub_process_ids.map((step_id) => {
|
|
398
|
+
|
|
399
|
+
let params = {
|
|
400
|
+
|
|
401
|
+
step_id: step_id
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return ProcessTransactions.update(process_transaction_id, params)
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
} else {
|
|
408
|
+
|
|
409
|
+
return new Promise(function (resolve, reject) {
|
|
410
|
+
resolve('start of new Promise');
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
*
|
|
418
|
+
*
|
|
419
|
+
* @param {*} values
|
|
420
|
+
* @returns
|
|
421
|
+
*/
|
|
422
|
+
async function executeScript(values, response, script) {
|
|
423
|
+
|
|
424
|
+
var scripts = [];
|
|
425
|
+
|
|
426
|
+
if (script) {
|
|
427
|
+
scripts.push(script);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
if (script) {
|
|
431
|
+
|
|
432
|
+
return await ExecuteScript({
|
|
433
|
+
formContent: values,
|
|
434
|
+
scripts,
|
|
435
|
+
context: {
|
|
436
|
+
...models,
|
|
437
|
+
...Utils,
|
|
438
|
+
params
|
|
439
|
+
},
|
|
440
|
+
contextName: 'models',
|
|
441
|
+
executionType: '',
|
|
442
|
+
response
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
} else {
|
|
446
|
+
|
|
447
|
+
return new Promise(function (resolve, reject) {
|
|
448
|
+
resolve('start of new Promise');
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
return (<div className="task-form">
|
|
456
|
+
|
|
457
|
+
{
|
|
458
|
+
loading
|
|
459
|
+
?
|
|
460
|
+
<Skeleton />
|
|
461
|
+
:
|
|
462
|
+
<>
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
{/*
|
|
466
|
+
|
|
467
|
+
A Task can be completed either with a form or with a checklist
|
|
468
|
+
or with a custom page , in case of which we redirect the user to that particular page
|
|
469
|
+
On completion of the step , we update the status of the record
|
|
470
|
+
|
|
471
|
+
*/}
|
|
472
|
+
|
|
473
|
+
{
|
|
474
|
+
menu.id
|
|
475
|
+
?
|
|
476
|
+
<>
|
|
477
|
+
|
|
478
|
+
<p>
|
|
479
|
+
{menu.step && menu.step.description}
|
|
480
|
+
</p>
|
|
481
|
+
|
|
482
|
+
<Link to={`${menu.path.replace(':id', record_id)}?process_transaction_id=${process_transaction_id}`} className={'configure-button'}>
|
|
483
|
+
<Button size={'small'}>
|
|
484
|
+
<PlayCircleOutlined />
|
|
485
|
+
Go to Menu
|
|
486
|
+
</Button>
|
|
487
|
+
</Link>
|
|
488
|
+
|
|
489
|
+
</>
|
|
490
|
+
:
|
|
491
|
+
<>
|
|
492
|
+
|
|
493
|
+
<Title level={4}>Task Form</Title>
|
|
494
|
+
|
|
495
|
+
<p>
|
|
496
|
+
To complete this step , Please fill the below form .
|
|
497
|
+
</p>
|
|
498
|
+
|
|
499
|
+
{/* Form Creator */}
|
|
500
|
+
<FormCreator
|
|
501
|
+
onSubmit={onSubmit}
|
|
502
|
+
model={config}
|
|
503
|
+
config={{
|
|
504
|
+
fields
|
|
505
|
+
}}
|
|
506
|
+
fields={fields}
|
|
507
|
+
/>
|
|
508
|
+
|
|
509
|
+
<div className="form-footer">
|
|
510
|
+
|
|
511
|
+
{
|
|
512
|
+
user.isAdmin
|
|
513
|
+
&&
|
|
514
|
+
<Link to={`/forms/${form.id}`} className={'configure-button'}>
|
|
515
|
+
<Button size={'small'}>
|
|
516
|
+
<SettingOutlined />
|
|
517
|
+
Configure
|
|
518
|
+
</Button>
|
|
519
|
+
</Link>
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
</div>
|
|
523
|
+
</>
|
|
524
|
+
}
|
|
525
|
+
</>
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
</div>)
|
|
529
529
|
}
|